<?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>124613</bug_id>
          
          <creation_ts>2013-11-19 15:36:05 -0800</creation_ts>
          <short_desc>Web Inspector: Push Remote Inspector debugging connection management into JavaScriptCore</short_desc>
          <delta_ts>2013-12-04 10:47:00 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>burg</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>ggaren</cc>
    
    <cc>graouts</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>952276</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-19 15:36:05 -0800</bug_when>
    <thetext>In order to make a JSContext a remote debug target, like a WebKit1 WebView is right now, we would need to make it possible to set up a Remote Inspector connection (ENABLE(REMOTE_INSPECTOR)) to an application that only links JavaScriptCore.framework (containing JSContext). To make this possible, we should move the ENABLE(REMOTE_INSPECTOR) remote debugging connection management that currently exists in WebKit/mac down into JavaScriptCore.

At the same time we can improve it:

    • allow for different types of remote debuggable targets, e.g. a JSContext, WebView, WKView
    • allow debuggables to be registered and debugged on any thread, unlike WebViews, JSContexts may be run entirely off of the main thread.
    • move the remote connection (XPC connection) itself off of the main thread, it doesn&apos;t need to be on the main thread.

Note: Part of this bug will include removing the old WebKit1 implementation and replacing it with this new implementation. So that will imply either removing or replacing the existing SPI (Private API) with something similar / compatible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952291</commentid>
    <comment_count>1</comment_count>
      <attachid>217350</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-19 16:16:09 -0800</bug_when>
    <thetext>Created attachment 217350
[PATCH] Part 1 - JSC remote inspector debugging connection management</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952293</commentid>
    <comment_count>2</comment_count>
      <attachid>217351</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-19 16:16:38 -0800</bug_when>
    <thetext>Created attachment 217351
[PATCH] Part 2 - Make JSContext and WebCore::Page remote debuggables</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952294</commentid>
    <comment_count>3</comment_count>
      <attachid>217352</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-19 16:17:06 -0800</bug_when>
    <thetext>Created attachment 217352
[PATCH] Part 3 - Remove old WebInspector/mac implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952296</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-19 16:20:16 -0800</bug_when>
    <thetext>This is the first set of patches. I put r- on each of them because, at least for the APIs included in them because they include FIXMEs and new APIs that I&apos;ll need to get reviewed separately.

But really, I don&apos;t want to go even further than this without some kind of high level review. I&apos;m open to suggestion to redesign sections of this before it gets into the tree.

I&apos;ve tested this on both iOS and OS X, and on OS X with apps that only link JavaScriptCore to make sure they would show up as debuggable targets. Actually opening up a remote inspector window will be the next step, followed by piecewise including features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953122</commentid>
    <comment_count>5</comment_count>
      <attachid>217350</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-21 09:11:53 -0800</bug_when>
    <thetext>Comment on attachment 217350
[PATCH] Part 1 - JSC remote inspector debugging connection management

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

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:87
&gt; +    do {
&gt; +        nextValidIdentifier = m_nextAvailableIdentifier++;
&gt; +    } while (!nextValidIdentifier || nextValidIdentifier == std::numeric_limits&lt;unsigned&gt;::max() || m_debuggableMap.contains(nextValidIdentifier));

Should this reset m_nextAvailableIdentifier back to 1 when std::numeric_limits&lt;unsigned&gt;::max() is reached? Maybe use size_t to have more identifiers?

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:211
&gt; +    m_xpcConnection-&gt;sendMessage(@&quot;syn&quot;, nil);

Every time I see @&quot;syn&quot; I wonder about it. A comment that this can be any string would help I think.

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:279
&gt; +        [debuggableDetails setObject:name forKey:WIRURLKey];
&gt; +        [debuggableDetails setObject:name forKey:WIRTitleKey];

Can&apos;t you do: debuggableDetails[WIRURLKey] = url; now?

Ditto for any setObject:forKey:.

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:355
&gt; +        [[NSNotificationCenter defaultCenter] postNotificationName:@&quot;_WebViewRemoteInspectorHasSessionChangedNotification&quot; object:nil];

Move @&quot;_WebViewRemoteInspectorHasSessionChangedNotification&quot; into a constant?

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:365
&gt; +    NSNumber *pageId = [userInfo objectForKey:WIRPageIdentifierKey];
&gt; +    if (!pageId)
&gt; +        return;

pageId in JSC? This should be a different name even if the constant can&apos;t change. Still, the content name could change and the value stays the old for compat.

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h:34
&gt; +#define WIRSimulatorTCPPortNumber               27753
&gt; +#define WIRXPCMachPortName                      &quot;com.apple.webinspector&quot;

Would be nice to not use #define. const unsigned and const char* const!

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h:47
&gt; +#define WIRPageIdentifierKey                    @&quot;WIRPageIdentifierKey&quot;

WIRContextIdentifierKey? WIRDebuggableIdentifierKey?

&gt; Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.h:57
&gt; +    virtual String name() const { return String(); } // JavaScript
&gt; +    virtual String title() const { return String(); } // Web

I figured these would share name().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953125</commentid>
    <comment_count>6</comment_count>
      <attachid>217351</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-21 09:20:26 -0800</bug_when>
    <thetext>Comment on attachment 217351
[PATCH] Part 2 - Make JSContext and WebCore::Page remote debuggables

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

&gt; Source/JavaScriptCore/API/JSContext.mm:183
&gt; +    return [(NSString *)JSStringCopyCFString(kCFAllocatorDefault, name) autorelease];

static_cast?

&gt; Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm:205
&gt; +void WebInspectorClient::hideIndicate()

Odd wording here. hideIndication?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953126</commentid>
    <comment_count>7</comment_count>
      <attachid>217352</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-21 09:20:45 -0800</bug_when>
    <thetext>Comment on attachment 217352
[PATCH] Part 3 - Remove old WebInspector/mac implementation

Woot!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953127</commentid>
    <comment_count>8</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-21 09:21:01 -0800</bug_when>
    <thetext>Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953186</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-21 11:26:41 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 217350 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217350&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:87
&gt; &gt; +    do {
&gt; &gt; +        nextValidIdentifier = m_nextAvailableIdentifier++;
&gt; &gt; +    } while (!nextValidIdentifier || nextValidIdentifier == std::numeric_limits&lt;unsigned&gt;::max() || m_debuggableMap.contains(nextValidIdentifier));
&gt; 
&gt; Should this reset m_nextAvailableIdentifier back to 1 when std::numeric_limits&lt;unsigned&gt;::max() is reached? Maybe use size_t to have more identifiers?

I don&apos;t really expect an app to have eventually opened UINT_MAX WebViews/JSContexts. Setting back to 1 when reaching max would just save a cycle and lookup (being unsigned it would overflow back to 0). I&apos;d prefer this simple implementation.


&gt; &gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:211
&gt; &gt; +    m_xpcConnection-&gt;sendMessage(@&quot;syn&quot;, nil);
&gt; 
&gt; Every time I see @&quot;syn&quot; I wonder about it. A comment that this can be any string would help I think.

Good idea! Will do.


&gt; &gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:279
&gt; &gt; +        [debuggableDetails setObject:name forKey:WIRURLKey];
&gt; &gt; +        [debuggableDetails setObject:name forKey:WIRTitleKey];
&gt; 
&gt; Can&apos;t you do: debuggableDetails[WIRURLKey] = url; now?
&gt; 
&gt; Ditto for any setObject:forKey:.

I probably could. I haven&apos;t seen anyone else using this syntax, but it would be nice here.


&gt; &gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:355
&gt; &gt; +        [[NSNotificationCenter defaultCenter] postNotificationName:@&quot;_WebViewRemoteInspectorHasSessionChangedNotification&quot; object:nil];
&gt; 
&gt; Move @&quot;_WebViewRemoteInspectorHasSessionChangedNotification&quot; into a constant?

I&apos;m actually going to leave this a FIXME and address it later. This can&apos;t fulfill it&apos;s legacy task as written (imagine if this was in a WebProcess, the notification is intended to be useful by the UIProcess).


&gt; &gt; Source/JavaScriptCore/inspector/remote/RemoteInspector.mm:365
&gt; &gt; +    NSNumber *pageId = [userInfo objectForKey:WIRPageIdentifierKey];
&gt; &gt; +    if (!pageId)
&gt; &gt; +        return;
&gt; 
&gt; pageId in JSC? This should be a different name even if the constant can&apos;t change. Still, the content name could change and the value stays the old for compat.

I agree, I planned to do some naming cleanup now that things are even more generic.


&gt; &gt; Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h:34
&gt; &gt; +#define WIRSimulatorTCPPortNumber               27753
&gt; &gt; +#define WIRXPCMachPortName                      &quot;com.apple.webinspector&quot;
&gt; 
&gt; Would be nice to not use #define. const unsigned and const char* const!

I&apos;ll see what I can do, I&apos;ll ask you about this off list.


&gt; &gt; Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h:47
&gt; &gt; +#define WIRPageIdentifierKey                    @&quot;WIRPageIdentifierKey&quot;
&gt; 
&gt; WIRContextIdentifierKey? WIRDebuggableIdentifierKey?

I like Debuggable!


&gt; &gt; Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.h:57
&gt; &gt; +    virtual String name() const { return String(); } // JavaScript
&gt; &gt; +    virtual String title() const { return String(); } // Web
&gt; 
&gt; I figured these would share name().

This is a great idea!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953217</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-21 12:09:42 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 217351 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217351&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/API/JSContext.mm:183
&gt; &gt; +    return [(NSString *)JSStringCopyCFString(kCFAllocatorDefault, name) autorelease];
&gt; 
&gt; static_cast?

Apparently this doesn&apos;t work for bridged types:

Source/JavaScriptCore/API/JSContext.mm:183:13: error: static_cast from &apos;CFStringRef&apos; (aka &apos;const __CFString *&apos;) to &apos;NSString *&apos; is not allowed


&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm:205
&gt; &gt; +void WebInspectorClient::hideIndicate()
&gt; 
&gt; Odd wording here. hideIndication?

Will do</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953223</commentid>
    <comment_count>11</comment_count>
      <attachid>217593</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-21 12:25:43 -0800</bug_when>
    <thetext>Created attachment 217593
[PATCH] Part 1 - JSC remote inspector debugging connection management</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953224</commentid>
    <comment_count>12</comment_count>
      <attachid>217594</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-21 12:26:19 -0800</bug_when>
    <thetext>Created attachment 217594
[PATCH] Part 2 - Make JSContext and WebCore::Page remote debuggables</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953225</commentid>
    <comment_count>13</comment_count>
      <attachid>217595</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-21 12:26:44 -0800</bug_when>
    <thetext>Created attachment 217595
[PATCH] Part 3 - Remove old WebInspector/mac implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953229</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-21 12:28:22 -0800</bug_when>
    <thetext>Attachment 217593 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.mm&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.cpp&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.h:50:  The parameter name &quot;allowed&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.h:44:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/ChangeLog:9:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:11:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:13:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/inspector/remote/RemoteInspector.h:69:  The parameter name &quot;debuggableInfo&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.h:59:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.h:60:  The parameter name &quot;object&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 8 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953238</commentid>
    <comment_count>15</comment_count>
      <attachid>217593</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-21 12:36:42 -0800</bug_when>
    <thetext>Comment on attachment 217593
[PATCH] Part 1 - JSC remote inspector debugging connection management

Attachment 217593 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/32578038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953248</commentid>
    <comment_count>16</comment_count>
      <attachid>217593</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-21 13:00:01 -0800</bug_when>
    <thetext>Comment on attachment 217593
[PATCH] Part 1 - JSC remote inspector debugging connection management

Attachment 217593 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/32518034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953644</commentid>
    <comment_count>17</comment_count>
      <attachid>217706</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-22 12:31:43 -0800</bug_when>
    <thetext>Created attachment 217706
[PATCH] Part 1 - JSC remote inspector debugging connection management

Fix style issues. Maybe fixed the build issue... but I don&apos;t really know why LD doesn&apos;t find the symbol. It is there in -framework CoreFoundation in 10.8. This code was fine in WebKit, but not fine in JavaScriptCore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953646</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-22 12:33:03 -0800</bug_when>
    <thetext>Attachment 217706 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.mm&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.cpp&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/ChangeLog:9:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:11:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:13:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 3 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953659</commentid>
    <comment_count>19</comment_count>
      <attachid>217706</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-22 13:05:54 -0800</bug_when>
    <thetext>Comment on attachment 217706
[PATCH] Part 1 - JSC remote inspector debugging connection management

Attachment 217706 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/34508048</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953665</commentid>
    <comment_count>20</comment_count>
      <attachid>217706</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-22 13:30:05 -0800</bug_when>
    <thetext>Comment on attachment 217706
[PATCH] Part 1 - JSC remote inspector debugging connection management

Attachment 217706 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/33858061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953723</commentid>
    <comment_count>21</comment_count>
      <attachid>217725</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-22 16:16:40 -0800</bug_when>
    <thetext>Created attachment 217725
[PATCH] Part 1 - JSC remote inspector debugging connection management

Now with extern &quot;C&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953725</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-22 16:19:13 -0800</bug_when>
    <thetext>Attachment 217725 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.mm&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.cpp&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/ChangeLog:9:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:11:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:13:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 3 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955520</commentid>
    <comment_count>23</comment_count>
      <attachid>217594</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-12-02 12:34:35 -0800</bug_when>
    <thetext>Comment on attachment 217594
[PATCH] Part 2 - Make JSContext and WebCore::Page remote debuggables

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

&gt; Source/JavaScriptCore/API/JSContextRef.cpp:234
&gt; +    }
&gt; +    ExecState* exec = toJS(ctx);

I&apos;d put a newline in-between these lines.

&gt; Source/JavaScriptCore/API/JSContextRef.cpp:246
&gt; +    }
&gt; +    ExecState* exec = toJS(ctx);

Ditto.

&gt; Source/JavaScriptCore/API/JSContextRef.cpp:258
&gt; +    }
&gt; +    ExecState* exec = toJS(ctx);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955675</commentid>
    <comment_count>24</comment_count>
      <attachid>218236</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-02 16:37:08 -0800</bug_when>
    <thetext>Created attachment 218236
[PATCH] Combined For Bots

Going to try to catch any platform issues before landing, here is a combined rebased patch for the bots to chew on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955679</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-02 16:38:26 -0800</bug_when>
    <thetext>Attachment 218236 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSContext.h&apos;, u&apos;Source/JavaScriptCore/API/JSContext.mm&apos;, u&apos;Source/JavaScriptCore/API/JSContextRef.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSContextRef.h&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.mm&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.h&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.cpp&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObject.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorClient.h&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/WebCore/loader/FrameLoader.cpp&apos;, u&apos;Source/WebCore/page/ContextMenuController.cpp&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/page/PageDebuggable.cpp&apos;, u&apos;Source/WebCore/page/PageDebuggable.h&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/WebKit.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit/cf/ChangeLog&apos;, u&apos;Source/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp&apos;, u&apos;Source/WebKit/ios/ChangeLog&apos;, u&apos;Source/WebKit/ios/WebCoreSupport/WebInspectorClientIOS.mm&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorClientRegistry.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorClientRegistry.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRelayDefinitions.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRemoteChannel.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRemoteChannel.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServer.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServer.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnection.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnection.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnectionController.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnectionController.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.m&apos;, u&apos;Source/WebKit/mac/WebKit.exp&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebViewData.h&apos;, u&apos;Source/WebKit/mac/WebView/WebViewData.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebViewInternal.h&apos;, u&apos;Source/WebKit/mac/WebView/WebViewPrivate.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/com.apple.WebProcess.sb.in&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/page/Page.h:184:  The parameter name &quot;allowed&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/page/PageDebuggable.h:53:  The parameter name &quot;indicating&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorFrontendChannel.h:27:  #ifndef header guard has wrong style, please use: InspectorFrontendChannel_h  [build/header_guard] [5]
ERROR: Source/JavaScriptCore/ChangeLog:49:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:51:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:53:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/inspector/InspectorController.h:113:  The parameter name &quot;indicating&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSGlobalObject.h:430:  The parameter name &quot;enabled&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSGlobalObject.h:433:  The parameter name &quot;name&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 9 in 48 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955696</commentid>
    <comment_count>26</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-02 16:58:29 -0800</bug_when>
    <thetext>GTK build fails:

In file included from ../../Source/WebCore/testing/Internals.cpp:62:0:
../../Source/WebCore/inspector/InspectorFrontendChannel.h:30:53: fatal error: JavaScriptCore/InspectorFrontendChannel.h: No such file or directory
 #include &lt;JavaScriptCore/InspectorFrontendChannel.h&gt;

Oops, I may have missed some project files.

I have a set of future patches which did this, and which also create forwarding headers for these and includes via &lt;inspector/InspectorFrontendChannel.h&gt;. I&apos;ll roll that into this and see if that gets things building on these ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955697</commentid>
    <comment_count>27</comment_count>
      <attachid>218236</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-02 16:59:47 -0800</bug_when>
    <thetext>Comment on attachment 218236
[PATCH] Combined For Bots

Attachment 218236 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/42298045</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955700</commentid>
    <comment_count>28</comment_count>
      <attachid>218243</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-02 17:08:20 -0800</bug_when>
    <thetext>Created attachment 218243
[PATCH] Combined For Bots 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955703</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-02 17:10:31 -0800</bug_when>
    <thetext>Attachment 218243 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSContext.h&apos;, u&apos;Source/JavaScriptCore/API/JSContext.mm&apos;, u&apos;Source/JavaScriptCore/API/JSContextRef.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSContextRef.h&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.am&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.mm&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.h&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.cpp&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObject.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorClient.h&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/WebCore/loader/FrameLoader.cpp&apos;, u&apos;Source/WebCore/page/ContextMenuController.cpp&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/page/PageDebuggable.cpp&apos;, u&apos;Source/WebCore/page/PageDebuggable.h&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/WebKit.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit/cf/ChangeLog&apos;, u&apos;Source/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp&apos;, u&apos;Source/WebKit/ios/ChangeLog&apos;, u&apos;Source/WebKit/ios/WebCoreSupport/WebInspectorClientIOS.mm&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorClientRegistry.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorClientRegistry.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRelayDefinitions.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRemoteChannel.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRemoteChannel.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServer.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServer.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnection.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnection.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnectionController.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnectionController.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.m&apos;, u&apos;Source/WebKit/mac/WebKit.exp&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebViewData.h&apos;, u&apos;Source/WebKit/mac/WebView/WebViewData.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebViewInternal.h&apos;, u&apos;Source/WebKit/mac/WebView/WebViewPrivate.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/com.apple.WebProcess.sb.in&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/page/Page.h:184:  The parameter name &quot;allowed&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ChangeLog:49:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:51:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:53:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/page/PageDebuggable.h:53:  The parameter name &quot;indicating&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorFrontendChannel.h:27:  #ifndef header guard has wrong style, please use: InspectorFrontendChannel_h  [build/header_guard] [5]
ERROR: Source/WebCore/inspector/InspectorController.h:113:  The parameter name &quot;indicating&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSGlobalObject.h:430:  The parameter name &quot;enabled&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSGlobalObject.h:433:  The parameter name &quot;name&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 9 in 54 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955704</commentid>
    <comment_count>30</comment_count>
      <attachid>218243</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-02 17:15:40 -0800</bug_when>
    <thetext>Comment on attachment 218243
[PATCH] Combined For Bots 2

Attachment 218243 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/42258046</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955721</commentid>
    <comment_count>31</comment_count>
      <attachid>218248</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-02 17:54:26 -0800</bug_when>
    <thetext>Created attachment 218248
[PATCH] Combined For Bots 3

Updating CMakeLists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955722</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-02 17:56:15 -0800</bug_when>
    <thetext>Attachment 218248 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSContext.h&apos;, u&apos;Source/JavaScriptCore/API/JSContext.mm&apos;, u&apos;Source/JavaScriptCore/API/JSContextRef.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSContextRef.h&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.am&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.mm&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.h&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.cpp&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObject.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorClient.h&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/WebCore/loader/FrameLoader.cpp&apos;, u&apos;Source/WebCore/page/ContextMenuController.cpp&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/page/PageDebuggable.cpp&apos;, u&apos;Source/WebCore/page/PageDebuggable.h&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/WebKit.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit/cf/ChangeLog&apos;, u&apos;Source/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp&apos;, u&apos;Source/WebKit/ios/ChangeLog&apos;, u&apos;Source/WebKit/ios/WebCoreSupport/WebInspectorClientIOS.mm&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorClientRegistry.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorClientRegistry.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRelayDefinitions.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRemoteChannel.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRemoteChannel.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServer.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServer.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnection.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnection.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnectionController.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnectionController.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.m&apos;, u&apos;Source/WebKit/mac/WebKit.exp&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebViewData.h&apos;, u&apos;Source/WebKit/mac/WebView/WebViewData.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebViewInternal.h&apos;, u&apos;Source/WebKit/mac/WebView/WebViewPrivate.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/com.apple.WebProcess.sb.in&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/page/Page.h:184:  The parameter name &quot;allowed&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/page/PageDebuggable.h:53:  The parameter name &quot;indicating&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ChangeLog:49:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:51:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:53:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/inspector/InspectorFrontendChannel.h:27:  #ifndef header guard has wrong style, please use: InspectorFrontendChannel_h  [build/header_guard] [5]
ERROR: Source/WebCore/inspector/InspectorController.h:113:  The parameter name &quot;indicating&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSGlobalObject.h:430:  The parameter name &quot;enabled&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSGlobalObject.h:433:  The parameter name &quot;name&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 9 in 55 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955725</commentid>
    <comment_count>33</comment_count>
      <attachid>218250</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-02 18:05:08 -0800</bug_when>
    <thetext>Created attachment 218250
[PATCH] Combined For Bots (Test Different File Names)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955727</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-02 18:08:21 -0800</bug_when>
    <thetext>Attachment 218250 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSContext.h&apos;, u&apos;Source/JavaScriptCore/API/JSContext.mm&apos;, u&apos;Source/JavaScriptCore/API/JSContextRef.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSContextRef.h&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.am&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/inspector/FrontendChannel.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.mm&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.h&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.cpp&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/FrontendChannel.h&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObject.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorClient.h&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/WebCore/loader/FrameLoader.cpp&apos;, u&apos;Source/WebCore/page/ContextMenuController.cpp&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/page/PageDebuggable.cpp&apos;, u&apos;Source/WebCore/page/PageDebuggable.h&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/WebKit.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit/cf/ChangeLog&apos;, u&apos;Source/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp&apos;, u&apos;Source/WebKit/ios/ChangeLog&apos;, u&apos;Source/WebKit/ios/WebCoreSupport/WebInspectorClientIOS.mm&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorClientRegistry.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorClientRegistry.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRelayDefinitions.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRemoteChannel.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRemoteChannel.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServer.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServer.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnection.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnection.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnectionController.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnectionController.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.m&apos;, u&apos;Source/WebKit/mac/WebKit.exp&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebViewData.h&apos;, u&apos;Source/WebKit/mac/WebView/WebViewData.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebViewInternal.h&apos;, u&apos;Source/WebKit/mac/WebView/WebViewPrivate.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/com.apple.WebProcess.sb.in&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/page/Page.h:184:  The parameter name &quot;allowed&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/page/PageDebuggable.h:53:  The parameter name &quot;indicating&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ChangeLog:49:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:51:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:53:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/inspector/InspectorFrontendChannel.h:27:  #ifndef header guard has wrong style, please use: InspectorFrontendChannel_h  [build/header_guard] [5]
ERROR: Source/WebCore/inspector/InspectorController.h:113:  The parameter name &quot;indicating&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSGlobalObject.h:430:  The parameter name &quot;enabled&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSGlobalObject.h:433:  The parameter name &quot;name&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 9 in 55 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955738</commentid>
    <comment_count>35</comment_count>
      <attachid>218248</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-02 18:28:21 -0800</bug_when>
    <thetext>Comment on attachment 218248
[PATCH] Combined For Bots 3

Attachment 218248 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/41588019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955752</commentid>
    <comment_count>36</comment_count>
      <attachid>218248</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-12-02 19:55:43 -0800</bug_when>
    <thetext>Comment on attachment 218248
[PATCH] Combined For Bots 3

Attachment 218248 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/42418010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955767</commentid>
    <comment_count>37</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-02 21:46:49 -0800</bug_when>
    <thetext>Looks like I can&apos;t have two files with the same name even if they have different include paths. I&apos;ll look into cleaning that up then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955967</commentid>
    <comment_count>38</comment_count>
      <attachid>218305</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-03 10:30:40 -0800</bug_when>
    <thetext>Created attachment 218305
[PATCH] Combined For Bots 5

Rename&apos;s WebCore/inspector/InspectorFrontendChannel.h to InspectorForwarding.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956000</commentid>
    <comment_count>39</comment_count>
      <attachid>218315</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-03 11:25:35 -0800</bug_when>
    <thetext>Created attachment 218315
[PATCH] Combined For Bots 6

Rebaselined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956001</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-03 11:27:17 -0800</bug_when>
    <thetext>Attachment 218315 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSContext.h&apos;, u&apos;Source/JavaScriptCore/API/JSContext.mm&apos;, u&apos;Source/JavaScriptCore/API/JSContextRef.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSContextRef.h&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.am&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.mm&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.h&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.cpp&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObject.cpp&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspectorStrings.py&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorClient.h&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorForwarding.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.cpp&apos;, u&apos;Source/WebCore/loader/FrameLoader.cpp&apos;, u&apos;Source/WebCore/page/ContextMenuController.cpp&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/page/PageDebuggable.cpp&apos;, u&apos;Source/WebCore/page/PageDebuggable.h&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/WebKit.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/InspectorClientBlackBerry.h&apos;, u&apos;Source/WebKit/cf/ChangeLog&apos;, u&apos;Source/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/InspectorClientEfl.h&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h&apos;, u&apos;Source/WebKit/ios/ChangeLog&apos;, u&apos;Source/WebKit/ios/WebCoreSupport/WebInspectorClientIOS.mm&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorClientRegistry.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorClientRegistry.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRelayDefinitions.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRemoteChannel.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRemoteChannel.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServer.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServer.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnection.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnection.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnectionController.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnectionController.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.m&apos;, u&apos;Source/WebKit/mac/WebKit.exp&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebViewData.h&apos;, u&apos;Source/WebKit/mac/WebView/WebViewData.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebViewInternal.h&apos;, u&apos;Source/WebKit/mac/WebView/WebViewPrivate.h&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebInspectorClient.h&apos;, u&apos;Source/WebKit/wince/ChangeLog&apos;, u&apos;Source/WebKit/wince/WebCoreSupport/InspectorClientWinCE.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/com.apple.WebProcess.sb.in&apos;]&quot; exit_code: 1
ERROR: Source/JavaScriptCore/ChangeLog:11:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:13:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:15:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 3 in 72 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956045</commentid>
    <comment_count>41</comment_count>
      <attachid>218324</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-03 12:14:59 -0800</bug_when>
    <thetext>Created attachment 218324
[PATCH] Combined For Bots 7

Now with WebKit2 include updates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956064</commentid>
    <comment_count>42</comment_count>
      <attachid>218329</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-03 13:00:32 -0800</bug_when>
    <thetext>Created attachment 218329
[PATCH] Combined For Bots 8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956066</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-03 13:02:22 -0800</bug_when>
    <thetext>Attachment 218329 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSContext.h&apos;, u&apos;Source/JavaScriptCore/API/JSContext.mm&apos;, u&apos;Source/JavaScriptCore/API/JSContextRef.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSContextRef.h&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.am&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspector.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.cpp&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorDebuggableConnection.mm&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.h&apos;, u&apos;Source/JavaScriptCore/inspector/remote/RemoteInspectorXPCConnection.mm&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectDebuggable.h&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.cpp&apos;, u&apos;Source/WTF/wtf/ios/WebCoreThread.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/ForwardingHeaders/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObject.cpp&apos;, u&apos;Source/WebCore/inspector/CodeGeneratorInspectorStrings.py&apos;, u&apos;Source/WebCore/inspector/InspectorBackendDispatcher.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorClient.h&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorForwarding.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendChannel.h&apos;, u&apos;Source/WebCore/inspector/InspectorWorkerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.cpp&apos;, u&apos;Source/WebCore/loader/FrameLoader.cpp&apos;, u&apos;Source/WebCore/page/ContextMenuController.cpp&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/page/PageDebuggable.cpp&apos;, u&apos;Source/WebCore/page/PageDebuggable.h&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/WebKit.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/InspectorClientBlackBerry.h&apos;, u&apos;Source/WebKit/cf/ChangeLog&apos;, u&apos;Source/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/InspectorClientEfl.h&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h&apos;, u&apos;Source/WebKit/ios/ChangeLog&apos;, u&apos;Source/WebKit/ios/WebCoreSupport/WebInspectorClientIOS.mm&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorClientRegistry.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorClientRegistry.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRelayDefinitions.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRemoteChannel.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRemoteChannel.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServer.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServer.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnection.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnection.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnectionController.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnectionController.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.m&apos;, u&apos;Source/WebKit/mac/WebKit.exp&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebViewData.h&apos;, u&apos;Source/WebKit/mac/WebView/WebViewData.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebViewInternal.h&apos;, u&apos;Source/WebKit/mac/WebView/WebViewPrivate.h&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebInspectorClient.h&apos;, u&apos;Source/WebKit/wince/ChangeLog&apos;, u&apos;Source/WebKit/wince/WebCoreSupport/InspectorClientWinCE.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/com.apple.WebProcess.sb.in&apos;]&quot; exit_code: 1
ERROR: Source/JavaScriptCore/ChangeLog:11:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:13:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:15:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 3 in 74 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956357</commentid>
    <comment_count>44</comment_count>
      <attachid>218329</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-04 04:43:47 -0800</bug_when>
    <thetext>Comment on attachment 218329
[PATCH] Combined For Bots 8

Attachment 218329 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/43208018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956424</commentid>
    <comment_count>45</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-04 10:06:03 -0800</bug_when>
    <thetext>(In reply to comment #44)
&gt; (From update of attachment 218329 [details])
&gt; Attachment 218329 [details] did not pass efl-wk2-ews (efl-wk2):
&gt; Output: http://webkit-queues.appspot.com/results/43208018

This actually doesn&apos;t look related to this patch. I&apos;m going to forge ahead and land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956430</commentid>
    <comment_count>46</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-04 10:18:49 -0800</bug_when>
    <thetext>Landed &lt;http://trac.webkit.org/changeset/160099&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956439</commentid>
    <comment_count>47</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-04 10:38:50 -0800</bug_when>
    <thetext>Attempted Windows Build Fix: &lt;http://trac.webkit.org/changeset/160102&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956447</commentid>
    <comment_count>48</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-04 10:47:00 -0800</bug_when>
    <thetext>Attempted Windows Build Fix 2: &lt;http://trac.webkit.org/changeset/160103&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217350</attachid>
            <date>2013-11-19 16:16:09 -0800</date>
            <delta_ts>2013-11-21 12:25:43 -0800</delta_ts>
            <desc>[PATCH] Part 1 - JSC remote inspector debugging connection management</desc>
            <filename>part1.patch</filename>
            <type>text/plain</type>
            <size>73742</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDgwYmExMzcuLjFmZjQ0MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2gg
UmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2
YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNDYxMworCisgICAgICAgIE1vdmUgdGhlIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSBy
ZW1vdGUgZGVidWdnZXIgY29ubmVjdGlvbiBtYW5hZ2VtZW50CisgICAgICAgIGludG8gSmF2YVNj
cmlwdENvcmUgKG9yaWdpbmFsbHkgZnJvbSBXZWJLaXQvbWFjKS4gSW5jbHVkZSBlbmhhbmNlbWVu
dHM6CisKKyAgICAgICAgICAqIGFsbG93IGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgcmVtb3RlIGRl
YnVnZ2FibGUgdGFyZ2V0cywKKyAgICAgICAgICAgIGV2ZW50dWFsbHkgYXQgbGVhc3QgYSBKU0Nv
bnRleHQsIFdlYlZpZXcsIFdLVmlldy4KKyAgICAgICAgICAqIGFsbG93IGRlYnVnZ2FibGVzIHRv
IGJlIHJlZ2lzdGVyZWQgYW5kIGRlYnVnZ2VkIG9uIGFueSB0aHJlYWQuIFVubGlrZQorICAgICAg
ICAgICAgV2ViVmlld3MsIEpTQ29udGV4dHMgbWF5IGJlIHJ1biBlbnRpcmVseSBvZmYgb2YgdGhl
IG1haW4gdGhyZWFkLgorICAgICAgICAgICogbW92ZSB0aGUgcmVtb3RlIGNvbm5lY3Rpb24gKFhQ
QyBjb25uZWN0aW9uKSBpdHNlbGYgb2ZmIG9mIHRoZSBtYWluIHRocmVhZCwKKyAgICAgICAgICAg
IGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6flJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlOjppbml0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6dXBkYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluZm8pOgorICAgICAgICBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlIGRlZmluZXMgYSBkZWJ1Z2dhYmxlIHRhcmdldC4gQXMgbG9uZyBhcwor
ICAgICAgICBzb21ldGhpbmcgY3JlYXRlcyBhIGRlYnVnZ2FibGUgYW5kIGlzIHNldCB0byBhbGxv
dyByZW1vdGUgaW5zcGVjdGlvbgorICAgICAgICBpdCB3aWxsIGJlIGxpc3RlZCBpbiByZW1vdGUg
ZGVidWdnZXJzLiBGb3IgdGhlIGRpZmZlcmVudCB0eXBlcyBvZgorICAgICAgICBkZWJ1Z2dhYmxl
cyAoSmF2YVNjcmlwdCBhbmQgV2ViKSB0aGVyZSBpcyBkaWZmZXJlbnQgYmFzaWMgaW5mb3JtYXRp
b24KKyAgICAgICAgdGhhdCBtYXkgYmUgbGlzdGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsOjp+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKToKKyAgICAg
ICAgVGhlIG9ubHkgdGhpbmcgYSBkZWJ1Z2dhYmxlIG5lZWRzIGZvciByZW1vdGUgZGVidWdnaW5n
IGlzIGFuCisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBhIHdheSB0byBzZW5kIG1l
c3NhZ2VzIHRvIGEgcmVtb3RlIGZyb250ZW5kLgorICAgICAgICBUaGlzIGNsYXNzIHByb3ZpZGVz
IHRoYXQgbWV0aG9kLCBhbmQgaXMgdmVuZGVkIHRvIHRoZQorICAgICAgICBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlIHdoZW4gYSByZW1vdGUgY29ubmVjdGlvbiBpcyBzZXR1cC4KKworICAgICAg
ICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOiBBZGRlZC4KKyAgICAgICAgU2lu
Z2xldG9uLCBjcmVhdGVkIGF0IGxlYXN0IHdoZW4gdGhlIGZpcnN0IERlYnVnZ2FibGUgaXMgY3Jl
YXRlZC4KKyAgICAgICAgVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBsaXN0IG9mIGRlYnVnZ2FibGVz
LCBhbnkgY29ubmVjdGlvbiB0byBhCisgICAgICAgIHJlbW90ZSBkZWJ1Z2dlciBwcm94eSAoWFBD
IHNlcnZpY2UgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiKS4KKworICAgICAgICAoSW5zcGVjdG9y
OjpkaXNwYXRjaEFzeW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3Rvcjo6bmV4dEF2YWlsYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlckRlYnVnZ2FibGUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGUpOgorICAgICAgICBE
ZWJ1Z2dhYmxlIG1hbmFnZW1lbnQuIFdoZW4gZGVidWdnYWJsZXMgYXJlIGFkZGVkLCByZW1vdmVk
LCBvciB1cGRhdGVkCisgICAgICAgIHdlIHN0YXNoIGEgY29weSBvZiB0aGUgZGVidWdnYWJsZSBp
bmZvcm1hdGlvbiBhbmQgcHVzaCBhbiB1cGRhdGUgdG8KKyAgICAgICAgZGVidWdnZXJzLiBTdGFz
aGluZyBhIGNvcHkgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBSZW1vdGVJbnNwZWN0b3IKKyAg
ICAgICAgaXMgYSB0aHJlYWQgc2FmZSB3YXkgdG8gYXZvaWQgd2Fsa2luZyBvdmVyIGFsbCBkZWJ1
Z2dhYmxlcyB0byBnYXRoZXIKKyAgICAgICAgdGhlIGluZm9ybWF0aW9uIHdoZW4gaXQgaXMgbmVl
ZGVkLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0b3ApOgorICAgICAgICBSdW50aW1l
IEFQSSB0byBlbmFibGUgLyBkaXNhYmxlIHRoZSBmZWF0dXJlLgorCisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nTm93KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ1Nvb24pOgorICAgICAgICBQdXNoaW5n
IGEgbGlzdGluZyB0byByZW1vdGUgZGVidWdnZXJzLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVk
TWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVj
dGlvbkZhaWxlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29u
bmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UpOgorICAgICAgICBYUEMgc2V0dXAsIHNlbmQsIGFuZCBy
ZWNlaXZlIGhhbmRsaW5nLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKToKKyAgICAgICAgQXBwbGljYXRpb25zIGJlaW5n
IGRlYnVnZ2VkIG1heSB3YW50IHRvIGtub3cgd2hlbiBhIGRlYnVnCisgICAgICAgIHNlc3Npb24g
aXMgYWN0aXZlLiBUaGlzIHByb3ZpZGVzIHRoYXQgbm90aWZpY2F0aW9uLgorCisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldExpc3Rp
bmdNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZl
ZEluZGljYXRlTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
cmVjZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UpOgorICAgICAgICBEaXNwYXRjaGluZyBpbmNv
bWluZyByZW1vdGUgZGVidWdnaW5nIHByb3RvY29sIG1lc3NhZ2VzLgorICAgICAgICBUaGVzZSBh
cmUgd3JhcHBpbmcgYWJvdmUgdGhlIGluc3BlY3RvciBwcm90b2NvbCBtZXNzYWdlcy4KKworICAg
ICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg6IEFkZGVk
LgorICAgICAgICBQcm90b2NvbCBtZXNzYWdlcyBhbmQgZGljdGlvbmFyeSBrZXlzIGluc2lkZSB0
aGUgbWVzc2FnZXMuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUluZm86OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg6IEFkZGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb24ubW06IEFkZGVkLgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVu
IHRoZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb246OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246On5SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbik6CisgICAgICAgIEFsbG93IGZvciBkaXNwYXRj
aGluZyBtZXNzYWdlcyBvbiBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzIG9uIGEgZGlzcGF0Y2hfcXVl
dWUKKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgbWFpbiBxdWV1ZS4KKworICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGVzdGluYXRpb24pOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBOZWVkZWQgaW4gdGhlIHJlbW90ZSBkZWJ1
Z2dpbmcgcHJvdG9jb2wgdG8gaWRlbnRpZnkgdGhlIHJlbW90ZSBkZWJ1Z2dlci4KKworICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0
Y2hTeW5jT25EZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXAp
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bjo6Y2xvc2VGcm9tRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICBUaGUgY29ubmVjdGlvbiBpcyBhIHRo
aW4gY2hhbm5lbCBiZXR3ZWVuIHRoZSB0d28gc2lkZXMgdGhhdCBjYW4gYmUgY2xvc2VkCisgICAg
ICAgIGZyb20gZWl0aGVyIHNpZGUsIHNvIHRoZXJlIGlzIHNvbWUgbG9naWMgYXJvdW5kIG11bHRp
LXRocmVhZGVkIGFjY2Vzcy4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50Ojp+Q2xpZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06IEFkZGVkLgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24pOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVz
c2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246
OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3
ZWVuIHRoZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhbiBYUEMgc2VydmljZQorICAg
ICAgICBuYW1lZCAiY29tLmFwcGxlLndlYmluc3BlY3RvciIuIFRoaXMgaGFuZGxlcyBzZXJpYWxp
emF0aW9uIG9mIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1lc3NhZ2VzIHRvIGFuZCBmcm9tIHRo
ZSBzZXJ2aWNlLiBUaGUgcmVjZWl2aW5nIGlzIGRvbmUgb24gYSBub24tbWFpbiBxdWV1ZS4KKwog
MjAxMy0xMS0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIHB1
dF90b19zY29wZVs1XSBzaG91bGQgbm90IHBvaW50IHRvIHRoZSBzdHJ1Y3R1cmUgaWYgaXQncyBh
IHZhcmlhYmxlIGFjY2VzcywgYnV0IGl0IHNob3VsZCBwb2ludCB0byB0aGUgV2F0Y2hwb2ludFNl
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZDE4ZTRhLi5kOWViMzhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODgzLDYgKzg4MywxNiBAQAogCQlBMTcxMkI0
MTExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhw
S2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5MjNDMTU2RUVEM0Iw
MDU2NkNCMiAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFS
TTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTk0NTU4RjE4MjQ1
RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU4RTE4MjQ1RURFMDBDQzM4
NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgKi87IH07CisJCUE1OTQ1NTk1MTgy
NDc5RUIwMENDMzg0MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1NTk0MTgyNDc5RUIwMENDMzg0
MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNUJBMTVFODE4MjM0MEIzMDBBODJFNjkgLyogUmVt
b3RlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVCQTE1RTkxODIz
NDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1v
dGVJbnNwZWN0b3IubW0gKi87IH07CisJCUE1QkExNUVBMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1v
dGVJbnNwZWN0b3JDb25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1QkExNUUzMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JD
b25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBNUJBMTVFQjE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1QkExNUU0MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbi5oICovOyB9OworCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gKi87IH07CisJCUE1QkExNUVEMTgyMzQw
QjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNjE4MjM0MEIzMDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oICovOyB9OworCQlBNUJBMTVFRTE4
MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUU3MTgyMzQwQjMw
MEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICovOyB9OworCQlBNUJB
MTVGMDE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RUYxODIzNDVB
RjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzAwODczOTE3Q0JFODUzMDBDM0U2
NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTcwMDg3MzcxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9y
LmNwcCAqLzsgfTsKIAkJQTcwMDg3M0ExN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODcz
ODE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJQTcwMDg3M0Qx
N0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFw
UHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTIxODksNiArMjE5OSwxNiBAQAogCQlBMTcxMkIzQTEx
QzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVnRXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTU5NDU1OEUxODI0NUVERTAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA7IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
NTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
OyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5z
cGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3Rv
ci5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTIxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUlu
c3BlY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90
ZUluc3BlY3Rvci5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFMzE4MjM0MEIzMDBBODJFNjkg
LyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTVCQTE1RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVD
b25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg7IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE1QkExNUU1MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tOyBwYXRoID0gaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE1QkExNUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVC
QTE1RUYxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5o
OyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBN
YXBDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
YXBDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDA4NzM4
MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNYXBDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNzAwODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcFByb3RvdHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjg2LDYgKzI3MDYsNyBAQAogCQkJCTA4NjdENjlBRkU4
NDAyOEZDMDJBQUMwNyAvKiBGcmFtZXdvcmtzICovLAogCQkJCTBGRUEwOUZDMTcwNTEzN0YwMEJC
NzIyQyAvKiBmdGwgKi8sCiAJCQkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8qIGhlYXAgKi8s
CisJCQkJQTVCQTE1REYxODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAqLywKIAkJCQkxNDI5
RDc3QTBFRDIwRDczMDBCODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8sCiAJCQkJMTQyOUQ5MkMwRUQy
MkQ3MDAwQjg5NjE5IC8qIGppdCAqLywKIAkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyog
bGxpbnQgKi8sCkBAIC00MTMzLDYgKzQxNTQsMzEgQEAKIAkJCXBhdGggPSBieXRlY29kZTsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE1QkExNURGMTgyMzQwOTIwMEE4MkU2
OSAvKiBpbnNwZWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCUE1QkExNUUwMTgyMzQwOUQwMEE4MkU2OSAvKiByZW1vdGUgKi8sCisJCQkJQTU5NDU1
OTQxODI0NzlFQjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovLAorCQkJ
KTsKKwkJCW5hbWUgPSBpbnNwZWN0b3I7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQlBNUJBMTVFMDE4MjM0MDlEMDBBODJFNjkgLyogcmVtb3RlICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkg
LyogUmVtb3RlSW5zcGVjdG9yLmggKi8sCisJCQkJQTVCQTE1RTIxODIzNDBCMzAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3Rvci5tbSAqLywKKwkJCQlBNUJBMTVFMzE4MjM0MEIzMDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8sCisJCQkJQTVCQTE1RUYxODIzNDVBRjAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCAqLywKKwkJCQlBNTk0NTU4RTE4MjQ1
RURFMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgKi8sCisJCQkJQTVC
QTE1RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uLmggKi8sCisJCQkJQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tICovLAorCQkJCUE1QkExNUU2MTgyMzQwQjMwMEE4MkU2
OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmggKi8sCisJCQkJQTVCQTE1RTcxODIz
NDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gKi8sCisJCQkp
OworCQkJbmFtZSA9IHJlbW90ZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAv
KiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCkBAIC00MTk5LDYgKzQyNDUsNyBAQAogCQkJCTg2NjczOUQyMTNCRkRFNzEw
MDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDgxNkUxQzE1NEND
NTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
M0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBNUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5NzE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5ODE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVy
Zmx5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRC
IC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLApAQCAtNDI2OCw2ICs0MzE1
LDcgQEAKIAkJCQkwRjE2MDE1RTE1NjE5OEM5MDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxp
ZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwNUMzQjQxNjgzQ0Y5MjAwQkFG
NDVCIC8qIERGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNjM5NDg1MTVFNDgxMUIwMDZBNTk3QyAvKiBERkdBcnJheU1vZGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE1QkExNUVCMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEOUEyOTUxN0EwQkM3NDAwRUUy
NjE4IC8qIERGR0F0VGFpbEFic3RyYWN0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzE0
Q0E1MTZFQTkyRjIwMEYzRUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjYyMDE3NjE0M0ZDRDNCMDA2OEI3N0MgLyogREZHQmFzaWNCbG9j
ay5oIGluIEhlYWRlcnMgKi8sCkBAIC00MzQ0LDYgKzQzOTIsNyBAQAogCQkJCTBGRDhBMzI2MTdE
NTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0QmFz
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RUQxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFDMTZE
MDJGMTEwMDU1QTVEQiAvKiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkMwOTc3MTE0NjkzQUY1MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjcwMjVBQTE3MTRCMEZDMDAzODJDMEUgLyogREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTQ0OTMsNiArNDU0Miw3IEBACiAJ
CQkJODZDQ0VGREUwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERpc2Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRC
QTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIx
NEUxRjE4MTI0QUNFMDA5QjZCNEQgLyogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKQEAgLTQ2NjQsNiArNDcxNCw3IEBACiAJCQkJMTREMkYzREIxMzlGNEJFMjAw
NDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJENkYxMjEzNTM5
QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjExMjJFMzE1
REQ5QUIzMDA3OTBFM0EgLyogTWFya1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTU5NDU1OTUxODI0NzlFQjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODYxMkU0Q0QxNTIzODlFQzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzQzBFMTZGNUNEMDBCMzQ0NjAgLyogTWF0aE9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNBNDBDMjAwRDQyMkYzIC8qIE1l
bW9yeVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLApAQCAtNDgzNCw2ICs0ODg1LDcgQEAKIAkJ
CQkxNDJFMzEzQzEzNEZGMEE2MDBBRkFEQjUgLyogV2Vhay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTRFODRGOUYxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRGNzI1NjYxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVPd25l
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRFODRGQTIxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtJ
bXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEJFN0QzMzE3MTM1Q0Y0MDBEMTgwN0EgLyogV2Vh
a0lubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTU4OCw2ICs1NjQwLDcgQEAKIAkJCQkxNDQ2
OURERTEwN0VDN0U3MDA2NTA0NDYgLyogTG9va3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0QjcyM0IyMTJEN0RBNDYwMDNCRDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJr
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU5NDU1OEYxODI0NUVGRDAwQ0MzODQzIC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQjNFQ0Yx
NjIzN0Y2QzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNzI5MDA5QzE3OTc2QzYwMDAzMTcyOTggLyogTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU3MTUsNiArNTc2OCw5IEBACiAJCQkJQTdDQTNB
RTUxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTRFODRGQTAxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtTZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZDODE1MEIxNDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTVCQTE1RTkxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90
ZUluc3BlY3Rvci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUE1QkExNUVDMTgyMzQwQjQwMEE4MkU2
OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICov
LAorCQkJCUE1QkExNUVFMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdFNUFCM0ExNzk5RTRCMjAwRDI4MzNEIC8q
IFg4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjNDNkQ5QzE1MjExMTFB
MDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmZhMGE4ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbF9oCisjZGVmaW5lIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oCisK
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7
CisKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKCkgeyB9CisgICAgdmlydHVhbCBib29sIHNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKK307CisKK30gLy8g
bmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmJmZjIzNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAtMCwwICsxLDEwNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKworI2lmbmRlZiBSZW1vdGVJbnNwZWN0b3JfaAorI2RlZmluZSBSZW1v
dGVJbnNwZWN0b3JfaAorCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbi5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIgorI2ltcG9y
dCA8d3RmL0ZvcndhcmQuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KKworT0JKQ19DTEFT
UyBOU1N0cmluZzsKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OworCituYW1lc3BhY2UgSW5zcGVj
dG9yIHsKKworY2xhc3MgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTsKK3N0cnVjdCBSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbzsKKworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3Rl
SW5zcGVjdG9yIEZJTkFMIDogcHVibGljIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OkNs
aWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlbW90ZUluc3BlY3RvciYgc2hhcmVkKCk7Cisg
ICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj47CisKKyAgICB2
b2lkIHJlZ2lzdGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7CisgICAg
dm9pZCB1bnJlZ2lzdGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7Cisg
ICAgdm9pZCB1cGRhdGVEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqKTsKKyAg
ICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZCh1bnNpZ25lZCBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpOworCisgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9lbmFibGVkOyB9CisgICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKSBjb25zdCB7
IHJldHVybiBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbjsgfQorCisgICAgdm9pZCBzdGFydCgpOwor
ICAgIHZvaWQgc3RvcCgpOworCitwcml2YXRlOgorICAgIFJlbW90ZUluc3BlY3RvcigpOworCisg
ICAgdW5zaWduZWQgbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIoKTsKKworICAgIHZvaWQgc2V0dXBY
UENDb25uZWN0aW9uSWZOZWVkZWQoKTsKKworICAgIE5TRGljdGlvbmFyeSAqbGlzdGluZ0ZvckRl
YnVnZ2FibGUoY29uc3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8mIGRlYnVnZ2FibGVJ
bmZvKSBjb25zdDsKKyAgICB2b2lkIHB1c2hMaXN0aW5nTm93KCk7CisgICAgdm9pZCBwdXNoTGlz
dGluZ1Nvb24oKTsKKworICAgIHZvaWQgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisK
KyAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uKiwgTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkg
KnVzZXJJbmZvKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvbkZhaWxl
ZChSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24qLCB4cGNfb2JqZWN0X3QpIE9WRVJSSURFOworCisgICAgdm9pZCByZWNlaXZlZFNldHVw
TWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkRGF0YU1l
c3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZERpZENsb3Nl
TWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkR2V0TGlz
dGluZ01lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZElu
ZGljYXRlTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVk
Q29ubmVjdGlvbkRpZWRNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworCisgICAgLy8g
RGVidWdnYWJsZXMgY2FuIGJlIHJlZ2lzdGVyZWQgZnJvbSBhbnkgdGhyZWFkIGF0IGFueSB0aW1l
LgorICAgIC8vIEFueSBkZWJ1Z2dhYmxlIGNhbiBzZW5kIG1lc3NhZ2VzIG92ZXIgdGhlIFhQQyBj
b25uZWN0aW9uLgorICAgIC8vIFNvIGxvY2sgYWNjZXNzIHRvIGFsbCBtYXBzIGFuZCBzdGF0ZSBh
cyB0aGV5IGNhbiBjaGFuZ2UKKyAgICAvLyBmcm9tIGFueSB0aHJlYWQuCisgICAgTXV0ZXggbV9s
b2NrOworCisgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjpwYWlyPFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUqLCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbz4+IG1fZGVidWdnYWJsZU1h
cDsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUNvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25NYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24+IG1feHBjQ29ubmVjdGlvbjsKKyAgICB1bnNpZ25lZCBt
X25leHRBdmFpbGFibGVJZGVudGlmaWVyOworICAgIGludCBtX25vdGlmeVRva2VuOworICAgIGJv
b2wgbV9lbmFibGVkOworICAgIGJvb2wgbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247CisgICAgYm9v
bCBtX3B1c2hTY2hlZHVsZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2Vu
ZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gV2ViSW5zcGVjdG9y
U2VydmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3Rvci5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41OGIzNjAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCkBAIC0wLDAgKzEsNDkyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3IuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQorCisjaW1wb3J0ICJJbml0aWFsaXplVGhyZWFkaW5nLmgiCisjaW1wb3J0ICJSZW1v
dGVJbnNwZWN0b3JDb25zdGFudHMuaCIKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGUuaCIKKyNpbXBvcnQgPG5vdGlmeS5oPgorI2ltcG9ydCA8eHBjL3hwYy5oPgorI2ltcG9ydCA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2lt
cG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCA8d3RmL2lvcy9XZWJDb3JlVGhyZWFkLmg+Cisj
ZW5kaWYKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNoQXN5
bmNPblF1ZXVlU2FmZUZvckFueURlYnVnZ2FibGUodm9pZCAoXmJsb2NrKSgpKQoreworI2lmIFBM
QVRGT1JNKElPUykKKyAgICBpZiAoV2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCAmJiBXZWJDb3Jl
V2ViVGhyZWFkSXNFbmFibGVkKCkpIHsKKyAgICAgICAgV2ViQ29yZVdlYlRocmVhZFJ1bihibG9j
ayk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKK30KKworUmVtb3RlSW5zcGVjdG9y
JiBSZW1vdGVJbnNwZWN0b3I6OnNoYXJlZCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJlbW90ZUluc3BlY3Rvcj4gc2hhcmVkOworCisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBv
bmNlOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2UsIF57CisgICAgICAgIEpTQzo6aW5pdGlhbGl6
ZVRocmVhZGluZygpOworICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisgICAg
ICAgIHNoYXJlZC5nZXQoKS5zdGFydCgpOworICAgIH0pOworCisgICAgcmV0dXJuIHNoYXJlZDsK
K30KKworUmVtb3RlSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3IoKQorICAgIDogbV9uZXh0QXZh
aWxhYmxlSWRlbnRpZmllcigxKQorICAgICwgbV9ub3RpZnlUb2tlbigwKQorICAgICwgbV9lbmFi
bGVkKGZhbHNlKQorICAgICwgbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oZmFsc2UpCisgICAgLCBt
X3B1c2hTY2hlZHVsZWQoZmFsc2UpCit7Cit9CisKK3Vuc2lnbmVkIFJlbW90ZUluc3BlY3Rvcjo6
bmV4dEF2YWlsYWJsZUlkZW50aWZpZXIoKQoreworICAgIHVuc2lnbmVkIG5leHRWYWxpZElkZW50
aWZpZXI7CisgICAgZG8geworICAgICAgICBuZXh0VmFsaWRJZGVudGlmaWVyID0gbV9uZXh0QXZh
aWxhYmxlSWRlbnRpZmllcisrOworICAgIH0gd2hpbGUgKCFuZXh0VmFsaWRJZGVudGlmaWVyIHx8
IG5leHRWYWxpZElkZW50aWZpZXIgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpIHx8IG1fZGVidWdnYWJsZU1hcC5jb250YWlucyhuZXh0VmFsaWRJZGVudGlmaWVyKSk7Cisg
ICAgcmV0dXJuIG5leHRWYWxpZElkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpyZWdpc3RlckRlYnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJs
ZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIHVuc2lnbmVkIGlk
ZW50aWZpZXIgPSBuZXh0QXZhaWxhYmxlSWRlbnRpZmllcigpOworICAgIGRlYnVnZ2FibGUtPnNl
dElkZW50aWZpZXIoaWRlbnRpZmllcik7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fZGVidWdnYWJs
ZU1hcC5zZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3BhaXIoZGVidWdnYWJsZSwgZGVidWdnYWJs
ZS0+aW5mbygpKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5
KTsKKworICAgIGlmIChkZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkpCisgICAg
ICAgIHB1c2hMaXN0aW5nU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dW5yZWdp
c3RlckRlYnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSkKK3sK
KyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIHVuc2lnbmVkIGlkZW50aWZp
ZXIgPSBkZWJ1Z2dhYmxlLT5pZGVudGlmaWVyKCk7CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBib29sIHdhc1JlbW92ZWQgPSBtX2RlYnVnZ2FibGVNYXAucmVt
b3ZlKGlkZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3Zl
ZCk7CisKKyAgICBpZiAoUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
PiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLnRha2UoaWRlbnRpZmllcikpCisgICAgICAg
IGNvbm5lY3Rpb24tPmNsb3NlRnJvbURlYnVnZ2FibGUoKTsKKworICAgIGlmIChkZWJ1Z2dhYmxl
LT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkpCisgICAgICAgIHB1c2hMaXN0aW5nU29vbigpOwor
fQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xv
Y2spOworCisgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IGRlYnVnZ2FibGUtPmlkZW50aWZpZXIo
KTsKKyAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmVz
dWx0ID0gbV9kZWJ1Z2dhYmxlTWFwLnNldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfcGFpcihkZWJ1
Z2dhYmxlLCBkZWJ1Z2dhYmxlLT5pbmZvKCkpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
IXJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgIGlmIChkZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dp
bmdBbGxvd2VkKCkpCisgICAgICAgIHB1c2hMaXN0aW5nU29vbigpOworfQorCit2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKHVuc2lnbmVkIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9s
b2NrKTsKKworICAgIGlmICghbV94cGNDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24g
PSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghY29ubmVjdGlvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IEB7CisgICAg
ICAgIFdJUlJhd0RhdGFLZXk6IFtzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihtZXNzYWdlKSBkYXRh
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10sCisgICAgICAgIFdJUkNvbm5lY3Rp
b25JZGVudGlmaWVyS2V5OiBjb25uZWN0aW9uLT5jb25uZWN0aW9uSWRlbnRpZmllcigpLAorICAg
ICAgICBXSVJEZXN0aW5hdGlvbktleTogY29ubmVjdGlvbi0+ZGVzdGluYXRpb24oKQorICAgIH07
CisKKyAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJUlJhd0RhdGFNZXNzYWdlLCB1
c2VySW5mbyk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydCgpCit7CisgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2VuYWJsZWQgPSB0cnVlOworCisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rp
c3BhdGNoKFdJUlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRpb24sICZtX25vdGlmeVRva2VuLCBk
aXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQs
IDApLCBeKGludCkgeworICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OnNoYXJlZCgpLnNldHVwWFBD
Q29ubmVjdGlvbklmTmVlZGVkKCk7CisgICAgfSk7CisKKyAgICBub3RpZnlfcG9zdChXSVJTZXJ2
aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24pOworfQorCit2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RvcCgpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBp
ZiAoIW1fZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9lbmFibGVkID0gZmFsc2U7
CisKKyAgICBtX3B1c2hTY2hlZHVsZWQgPSBmYWxzZTsKKworICAgIGZvciAoYXV0byBpdCA9IG1f
Y29ubmVjdGlvbk1hcC5iZWdpbigpLCBlbmQgPSBtX2Nvbm5lY3Rpb25NYXAuZW5kKCk7IGl0ICE9
IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT5jbG9zZSgpOworICAgIG1fY29ubmVjdGlv
bk1hcC5jbGVhcigpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAg
ICBpZiAobV94cGNDb25uZWN0aW9uKSB7CisgICAgICAgIG1feHBjQ29ubmVjdGlvbi0+Y2xvc2Uo
KTsKKyAgICAgICAgbV94cGNDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBub3Rp
ZnlfY2FuY2VsKG1fbm90aWZ5VG9rZW4pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0
dXBYUENDb25uZWN0aW9uSWZOZWVkZWQoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xv
Y2spOworCisgICAgaWYgKG1feHBjQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
eHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uID0geHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hf
c2VydmljZShXSVJYUENNYWNoUG9ydE5hbWUsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIDAp
OworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV94cGNDb25u
ZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uPihj
b25uZWN0aW9uLCB0aGlzKTsKKyAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKEAic3lu
IiwgbmlsKTsKKyAgICB4cGNfcmVsZWFzZShjb25uZWN0aW9uKTsKKworICAgIHB1c2hMaXN0aW5n
U29vbigpOworfQorCisjcHJhZ21hIG1hcmsgLSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
OjpDbGllbnQKKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1l
c3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICptZXNzYWdlTmFt
ZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9s
b2NrKTsKKworICAgIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlBlcm1pc3Np
b25EZW5pZWRdKSB7CisgICAgICAgIHN0b3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlNvY2tldERhdGFNZXNzYWdl
XSkKKyAgICAgICAgcmVjZWl2ZWREYXRhTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAo
W21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJTb2NrZXRTZXR1cE1lc3NhZ2VdKQorICAg
ICAgICByZWNlaXZlZFNldHVwTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3Nh
Z2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJXZWJQYWdlQ2xvc2VNZXNzYWdlXSkKKyAgICAgICAg
cmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYgKFttZXNzYWdl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSQXBwbGljYXRpb25HZXRMaXN0aW5nTWVzc2FnZV0pCisg
ICAgICAgIHJlY2VpdmVkR2V0TGlzdGluZ01lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYg
KFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSSW5kaWNhdGVNZXNzYWdlXSkKKyAgICAg
ICAgcmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYgKFttZXNz
YWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSQ29ubmVjdGlvbkRpZWRNZXNzYWdlXSkKKyAgICAg
ICAgcmVjZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UKKyAg
ICAgICAgTlNMb2coQCJVbnJlY29nbml6ZWQgUmVtb3RlSW5zcGVjdG9yIFhQQyBNZXNzYWdlOiAl
QCIsIG1lc3NhZ2VOYW1lKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rp
b25GYWlsZWQoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiopCit7CisgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBtX3B1c2hTY2hlZHVsZWQgPSBmYWxzZTsKKworICAg
IGZvciAoYXV0byBpdCA9IG1fY29ubmVjdGlvbk1hcC5iZWdpbigpLCBlbmQgPSBtX2Nvbm5lY3Rp
b25NYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT5jbG9zZSgp
OworICAgIG1fY29ubmVjdGlvbk1hcC5jbGVhcigpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVi
dWdTZXNzaW9uKCk7CisKKyAgICBpZiAobV94cGNDb25uZWN0aW9uKSB7CisgICAgICAgIG1feHBj
Q29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICAgICAgbV94cGNDb25uZWN0aW9uID0gbnVsbHB0cjsK
KyAgICB9Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uVW5oYW5kbGVk
TWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgeHBjX29iamVjdF90KQorewor
ICAgIC8vIEludGVudGlvbmFsbHkgaWdub3JlZC4KK30KKworI3ByYWdtYSBtYXJrIC0gTGlzdGlu
Z3MKKworTlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0b3I6Omxpc3RpbmdGb3JEZWJ1Z2dhYmxl
KGNvbnN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvJiBkZWJ1Z2dhYmxlSW5mbykgY29u
c3QKK3sKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkZWJ1Z2dhYmxlRGV0YWlscyA9IFtOU011
dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOworCisgICAgW2RlYnVnZ2FibGVEZXRhaWxzIHNl
dE9iamVjdDpAKGRlYnVnZ2FibGVJbmZvLmlkZW50aWZpZXIpIGZvcktleTpXSVJQYWdlSWRlbnRp
ZmllcktleV07CisKKyAgICBzd2l0Y2ggKGRlYnVnZ2FibGVJbmZvLnR5cGUpIHsKKyAgICBjYXNl
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkphdmFTY3JpcHQ6IHsKKyAgICAgICAgTlNTdHJp
bmcgKm5hbWUgPSBkZWJ1Z2dhYmxlSW5mby5uYW1lOworICAgICAgICBbZGVidWdnYWJsZURldGFp
bHMgc2V0T2JqZWN0Om5hbWUgZm9yS2V5OldJUlVSTEtleV07CisgICAgICAgIFtkZWJ1Z2dhYmxl
RGV0YWlscyBzZXRPYmplY3Q6bmFtZSBmb3JLZXk6V0lSVGl0bGVLZXldOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpXZWI6IHsKKyAg
ICAgICAgTlNTdHJpbmcgKnVybCA9IGRlYnVnZ2FibGVJbmZvLnVybDsKKyAgICAgICAgTlNTdHJp
bmcgKnRpdGxlID0gZGVidWdnYWJsZUluZm8udGl0bGU7CisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0
YWlscyBzZXRPYmplY3Q6dXJsIGZvcktleTpXSVJVUkxLZXldOworICAgICAgICBbZGVidWdnYWJs
ZURldGFpbHMgc2V0T2JqZWN0OnRpdGxlIGZvcktleTpXSVJUaXRsZUtleV07CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQoZGVi
dWdnYWJsZUluZm8uaWRlbnRpZmllcikpCisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBzZXRP
YmplY3Q6Y29ubmVjdGlvbi0+Y29ubmVjdGlvbklkZW50aWZpZXIoKSBmb3JLZXk6V0lSQ29ubmVj
dGlvbklkZW50aWZpZXJLZXldOworCisgICAgaWYgKGRlYnVnZ2FibGVJbmZvLmhhc0xvY2FsRGVi
dWdnZXIpCisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6
V0lSSGFzTG9jYWxEZWJ1Z2dlcktleV07CisKKyAgICByZXR1cm4gZGVidWdnYWJsZURldGFpbHM7
Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ05vdygpCit7CisgICAgQVNT
RVJUKG1feHBjQ29ubmVjdGlvbik7CisgICAgaWYgKCFtX3hwY0Nvbm5lY3Rpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIG1fcHVzaFNjaGVkdWxlZCA9IGZhbHNlOworCisgICAgUmV0YWluUHRy
PE5TTXV0YWJsZURpY3Rpb25hcnk+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rp
b25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBtX2RlYnVnZ2FibGVNYXAu
YmVnaW4oKSwgZW5kID0gbV9kZWJ1Z2dhYmxlTWFwLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgY29uc3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8mIGRlYnVnZ2FibGVJ
bmZvID0gaXQtPnZhbHVlLnNlY29uZDsKKyAgICAgICAgaWYgKGRlYnVnZ2FibGVJbmZvLnJlbW90
ZURlYnVnZ2luZ0FsbG93ZWQpIHsKKyAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZGV0YWlscyA9
IGxpc3RpbmdGb3JEZWJ1Z2dhYmxlKGRlYnVnZ2FibGVJbmZvKTsKKyAgICAgICAgICAgIFtyZXNw
b25zZSBzZXRPYmplY3Q6ZGV0YWlscyBmb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCIldSIsIGRlYnVnZ2FibGVJbmZvLmlkZW50aWZpZXJdXTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBvdXRnb2luZyA9IGFkb3B0TlMoW1tO
U011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgW291dGdvaW5nIHNldE9iamVj
dDpyZXNwb25zZS5nZXQoKSBmb3JLZXk6V0lSTGlzdGluZ0tleV07CisKKyAgICBtX3hwY0Nvbm5l
Y3Rpb24tPnNlbmRNZXNzYWdlKFdJUkxpc3RpbmdNZXNzYWdlLCBvdXRnb2luZy5nZXQoKSk7Cit9
CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ1Nvb24oKQoreworICAgIGlmICgh
bV94cGNDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9wdXNoU2NoZWR1
bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3B1c2hTY2hlZHVsZWQgPSB0cnVlOworICAg
IGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDAuMDIgKiBO
U0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BS
SU9SSVRZX0RFRkFVTFQsIDApLCBeeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICAgICAgaWYgKG1fcHVzaFNjaGVkdWxlZCkKKyAgICAgICAgICAgIHB1c2hMaXN0aW5n
Tm93KCk7CisgICAgfSk7Cit9CisKKyNwcmFnbWEgbWFyayAtIEFjdGl2ZSBEZWJ1Z2dlciBTZXNz
aW9ucworCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9u
KCkKK3sKKyAgICBib29sIGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbiA9ICFtX2Nvbm5lY3Rpb25N
YXAuaXNFbXB0eSgpOworICAgIGlmIChoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb24gPT0gbV9oYXNB
Y3RpdmVEZWJ1Z1Nlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1faGFzQWN0aXZlRGVi
dWdTZXNzaW9uID0gaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uOworCisgICAgLy8gRklYTUU6IFRo
aXMgbm90aWZpY2F0aW9uIGlzIGxlZ2FjeSwgYW5kIGNhbWUgZnJvbSBpT1MgV2ViS2l0MS4gV2Ug
c3RpbGwgd2FudCB0byBleHBvc2Ugc29tZSBub3RpZmljYXRpb24KKyAgICAvLyBmb3IgYW4gYXBw
bGljYXRpb24gd2hlbiBpdCBoYXMgYW5kIG5vIGxvbmdlciBoYXMgYWN0aXZlIGRlYnVnIHNlc3Np
b25zLiBXaGF0IGlzIHRoZSBiZXN0IHdheSB0byBleHBvc2UgdGhpcyBub3c/CisgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIl9XZWJW
aWV3UmVtb3RlSW5zcGVjdG9ySGFzU2Vzc2lvbkNoYW5nZWROb3RpZmljYXRpb24iIG9iamVjdDpu
aWxdOworICAgIH0pOworfQorCisjcHJhZ21hIG1hcmsgLSBSZWNlaXZlZCBYUEMgTWVzc2FnZXMK
Kwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKE5TRGljdGlvbmFy
eSAqdXNlckluZm8pCit7CisgICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFt1c2VySW5mbyBvYmplY3RG
b3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOworICAgIGlmICghcGFnZUlkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbdXNlckluZm8g
b2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIWNvbm5l
Y3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmluZyAqc2VuZGVy
ID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJTZW5kZXJLZXldOworICAgIGlmICghc2VuZGVy
KQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gW3BhZ2VJZCB1
bnNpZ25lZEludFZhbHVlXTsKKyAgICBpZiAobV9jb25uZWN0aW9uTWFwLmNvbnRhaW5zKGlkZW50
aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGl0ID0gbV9kZWJ1Z2dhYmxlTWFw
LmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ID09IG1fZGVidWdnYWJsZU1hcC5lbmQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQXR0ZW1wdCB0byBjcmVhdGUgYSBjb25uZWN0aW9u
LiBUaGlzIG1heSBmYWlsIGlmIHRoZSBwYWdlIGFscmVhZHkgaGFzIGFuIGluc3BlY3RvciBvciBp
ZiBpdCBkaXNhbGxvd3MgaW5zcGVjdGlvbi4KKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
KiBkZWJ1Z2dhYmxlID0gaXQtPnZhbHVlLmZpcnN0OworICAgIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVJbmZvIGRlYnVnZ2FibGVJbmZvID0gaXQtPnZhbHVlLnNlY29uZDsKKyAgICBSZWZQdHI8
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9wdFJl
ZihuZXcgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oZGVidWdnYWJsZSwgY29u
bmVjdGlvbklkZW50aWZpZXIsIHNlbmRlciwgZGVidWdnYWJsZUluZm8udHlwZSkpOworICAgIGlm
ICghY29ubmVjdGlvbi0+c2V0dXAoKSkgeworICAgICAgICBjb25uZWN0aW9uLT5jbG9zZSgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb25uZWN0aW9uTWFwLnNldChpZGVudGlm
aWVyLCBjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisKKyAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nl
c3Npb24oKTsKKworICAgIHB1c2hMaXN0aW5nU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6cmVjZWl2ZWREYXRhTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAg
IE5TTnVtYmVyICpwYWdlSWQgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlBhZ2VJZGVudGlm
aWVyS2V5XTsKKyAgICBpZiAoIXBhZ2VJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWdu
ZWQgcGFnZUlkZW50aWZpZXIgPSBbcGFnZUlkIHVuc2lnbmVkSW50VmFsdWVdOworICAgIFJlZlB0
cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG1fY29u
bmVjdGlvbk1hcC5nZXQocGFnZUlkZW50aWZpZXIpOworICAgIGlmICghY29ubmVjdGlvbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTlNEYXRhICpkYXRhID0gW3VzZXJJbmZvIG9iamVjdEZvcktl
eTpXSVJTb2NrZXREYXRhS2V5XTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1lc3NhZ2UgPSBh
ZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIGVuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXSk7CisgICAgY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2VUb0JhY2tlbmQo
bWVzc2FnZS5nZXQoKSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERpZENs
b3NlTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAgIE5TTnVtYmVyICpwYWdl
SWQgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsKKyAgICBp
ZiAoIXBhZ2VJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25J
ZGVudGlmaWVyID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmll
cktleV07CisgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IFtwYWdlSWQgdW5zaWduZWRJbnRWYWx1ZV07Cisg
ICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9u
ID0gbV9jb25uZWN0aW9uTWFwLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICghW2Nvbm5lY3Rpb25JZGVudGlmaWVyIGlzRXF1
YWxUb1N0cmluZzpjb25uZWN0aW9uLT5jb25uZWN0aW9uSWRlbnRpZmllcigpXSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgY29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICBtX2Nvbm5lY3Rpb25NYXAu
cmVtb3ZlKGlkZW50aWZpZXIpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7
CisKKyAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJl
Y2VpdmVkR2V0TGlzdGluZ01lc3NhZ2UoTlNEaWN0aW9uYXJ5ICopCit7CisgICAgcHVzaExpc3Rp
bmdOb3coKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkSW5kaWNhdGVNZXNz
YWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFt1
c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOworICAgIGlmICghcGFn
ZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gW3BhZ2VJ
ZCB1bnNpZ25lZEludFZhbHVlXTsKKyAgICBCT09MIGluZGljYXRlRW5hYmxlZCA9IFtbdXNlcklu
Zm8gb2JqZWN0Rm9yS2V5OldJUkluZGljYXRlRW5hYmxlZEtleV0gYm9vbFZhbHVlXTsKKworICAg
IGRpc3BhdGNoQXN5bmNPblF1ZXVlU2FmZUZvckFueURlYnVnZ2FibGUoXnsKKyAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICAgICAgYXV0byBpdCA9IG1fZGVidWdnYWJs
ZU1hcC5maW5kKGlkZW50aWZpZXIpOworICAgICAgICBpZiAoaXQgPT0gbV9kZWJ1Z2dhYmxlTWFw
LmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUqIGRlYnVnZ2FibGUgPSBpdC0+dmFsdWUuZmlyc3Q7CisgICAgICAgIGRlYnVnZ2Fi
bGUtPnNldEluZGljYXRpbmcoaW5kaWNhdGVFbmFibGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKE5TRGljdGlvbmFy
eSAqdXNlckluZm8pCit7CisgICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyID0gW3Vz
ZXJJbmZvIG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07CisgICAgaWYg
KCFjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpdCA9
IG1fY29ubmVjdGlvbk1hcC5iZWdpbigpOworICAgIGF1dG8gZW5kID0gbV9jb25uZWN0aW9uTWFw
LmVuZCgpOworICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKFtjb25u
ZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6aXQtPnZhbHVlLT5jb25uZWN0aW9uSWRl
bnRpZmllcigpXSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChpdCA9PSBl
bmQpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IGl0LT52YWx1ZTsKKyAgICBjb25uZWN0aW9uLT5j
bG9zZSgpOworICAgIG1fY29ubmVjdGlvbk1hcC5yZW1vdmUoaXQpOworCisgICAgdXBkYXRlSGFz
QWN0aXZlRGVidWdTZXNzaW9uKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisj
ZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNv
bnN0YW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YTFmOTYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSZW1vdGVJbnNwZWN0b3JD
b25zdGFudHNfaAorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHNfaAorCisvLyBXSVJD
b25zdGFudHMgYXJlICJXZWIgSW5zcGVjdG9yIFJlbGF5IiBjb25zdGFudHMgc2hhcmVkIGJldHdl
ZW4KKy8vIHRoZSBXZWJJbnNwZWN0b3IgZnJhbWV3b3JrIG9uIHRoZSBPUyBYIHNpZGUsIHdlYmlu
c3BlY3RvcmQsIGFuZAorLy8gaU9TIFdlYktpdCBvbiB0aGUgZGV2aWNlIHNpZGUuCisKKyNkZWZp
bmUgV0lSU2ltdWxhdG9yVENQUG9ydE51bWJlciAgICAgICAgICAgICAgIDI3NzUzCisjZGVmaW5l
IFdJUlhQQ01hY2hQb3J0TmFtZSAgICAgICAgICAgICAgICAgICAgICAiY29tLmFwcGxlLndlYmlu
c3BlY3RvciIKKyNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJsZU5vdGlmaWNhdGlvbiAgICAgICAg
ICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFibGUiCisjZGVmaW5lIFdJUlNlcnZpY2VB
dmFpbGFiaWxpdHlDaGVja05vdGlmaWNhdGlvbiAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXZh
aWxhYmlsaXR5X2NoZWNrIgorI2RlZmluZSBXSVJTZXJ2aWNlRW5hYmxlZE5vdGlmaWNhdGlvbiAg
ICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmVuYWJsZWQiCisjZGVmaW5lIFdJUlNl
cnZpY2VEaXNhYmxlZE5vdGlmaWNhdGlvbiAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3Rv
cmQuZGlzYWJsZWQiCisKKworI2RlZmluZSBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkgICAg
ICAgICAgICAgQCJXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiCisjZGVmaW5lIFdJUkFwcGxp
Y2F0aW9uTmFtZUtleSAgICAgICAgICAgICAgICAgICBAIldJUkFwcGxpY2F0aW9uTmFtZUtleSIK
KyNkZWZpbmUgV0lSSXNBcHBsaWNhdGlvblByb3h5S2V5ICAgICAgICAgICAgICAgIEAiV0lSSXNB
cHBsaWNhdGlvblByb3h5S2V5IgorI2RlZmluZSBXSVJIb3N0QXBwbGljYXRpb25JZGVudGlmaWVy
S2V5ICAgICAgICAgQCJXSVJIb3N0QXBwbGljYXRpb25JZGVudGlmaWVyS2V5IgorI2RlZmluZSBX
SVJIb3N0QXBwbGljYXRpb25OYW1lS2V5ICAgICAgICAgICAgICAgQCJXSVJIb3N0QXBwbGljYXRp
b25OYW1lS2V5IgorI2RlZmluZSBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleSAgICAgICAgICAg
ICAgQCJXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleSIKKyNkZWZpbmUgV0lSUGFnZUlkZW50aWZp
ZXJLZXkgICAgICAgICAgICAgICAgICAgIEAiV0lSUGFnZUlkZW50aWZpZXJLZXkiCisjZGVmaW5l
IFdJUkhhc0xvY2FsRGVidWdnZXJLZXkgICAgICAgICAgICAgICAgICBAIldJUkhhc0xvY2FsRGVi
dWdnZXJLZXkiCisjZGVmaW5lIFdJUlRpdGxlS2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBAIldJUlRpdGxlS2V5IgorI2RlZmluZSBXSVJVUkxLZXkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQCJXSVJVUkxLZXkiCisjZGVmaW5lIFdJUlVzZXJJbmZvS2V5ICAgICAgICAgICAg
ICAgICAgICAgICAgICBAIldJUlVzZXJJbmZvS2V5IgorI2RlZmluZSBXSVJBcHBsaWNhdGlvbkRp
Y3Rpb25hcnlLZXkgICAgICAgICAgICAgQCJXSVJBcHBsaWNhdGlvbkRpY3Rpb25hcnlLZXkiCisj
ZGVmaW5lIFdJUk1lc3NhZ2VEYXRhS2V5ICAgICAgICAgICAgICAgICAgICAgICBAIldJUk1lc3Nh
Z2VEYXRhS2V5IgorI2RlZmluZSBXSVJBcHBsaWNhdGlvbkdldExpc3RpbmdNZXNzYWdlICAgICAg
ICAgQCJXSVJBcHBsaWNhdGlvbkdldExpc3RpbmdNZXNzYWdlIgorI2RlZmluZSBXSVJJbmRpY2F0
ZU1lc3NhZ2UgICAgICAgICAgICAgICAgICAgICAgQCJXSVJJbmRpY2F0ZU1lc3NhZ2UiCisjZGVm
aW5lIFdJUkluZGljYXRlRW5hYmxlZEtleSAgICAgICAgICAgICAgICAgICBAIldJUkluZGljYXRl
RW5hYmxlZEtleSIKKyNkZWZpbmUgV0lSU2VuZGVyS2V5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEAiV0lSU2VuZGVyS2V5IgorI2RlZmluZSBXSVJTb2NrZXREYXRhS2V5ICAgICAgICAgICAg
ICAgICAgICAgICAgQCJXSVJTb2NrZXREYXRhS2V5IgorI2RlZmluZSBXSVJTb2NrZXREYXRhTWVz
c2FnZSAgICAgICAgICAgICAgICAgICAgQCJXSVJTb2NrZXREYXRhTWVzc2FnZSIKKyNkZWZpbmUg
V0lSU29ja2V0U2V0dXBNZXNzYWdlICAgICAgICAgICAgICAgICAgIEAiV0lSU29ja2V0U2V0dXBN
ZXNzYWdlIgorI2RlZmluZSBXSVJXZWJQYWdlQ2xvc2VNZXNzYWdlICAgICAgICAgICAgICAgICAg
QCJXSVJXZWJQYWdlQ2xvc2VNZXNzYWdlIgorI2RlZmluZSBXSVJSYXdEYXRhTWVzc2FnZSAgICAg
ICAgICAgICAgICAgICAgICAgQCJXSVJSYXdEYXRhTWVzc2FnZSIKKyNkZWZpbmUgV0lSUmF3RGF0
YUtleSAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSUmF3RGF0YUtleSIKKyNkZWZpbmUg
V0lSTGlzdGluZ01lc3NhZ2UgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSTGlzdGluZ01lc3Nh
Z2UiCisjZGVmaW5lIFdJUkxpc3RpbmdLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJ
Ukxpc3RpbmdLZXkiCisjZGVmaW5lIFdJUkRlc3RpbmF0aW9uS2V5ICAgICAgICAgICAgICAgICAg
ICAgICBAIldJUkRlc3RpbmF0aW9uS2V5IgorI2RlZmluZSBXSVJDb25uZWN0aW9uRGllZE1lc3Nh
Z2UgICAgICAgICAgICAgICAgQCJXSVJDb25uZWN0aW9uRGllZE1lc3NhZ2UiCisKKy8vIFRoZXNl
IGRlZmluaXRpb25zIGFyZSBzaGFyZWQgd2l0aCBhIFNpbXVsYXRvciB3ZWJpbnNwZWN0b3JkIGFu
ZAorLy8gT1MgWCBwcm9jZXNzIGNvbW11bmljYXRpbmcgd2l0aCBpdC4KKworI2RlZmluZSBXSVJT
aW11bGF0b3JCdWlsZEtleSAgICAgICAgICAgICAgICAgICAgQCJXSVJTaW11bGF0b3JCdWlsZEtl
eSIKKyNkZWZpbmUgV0lSU2ltdWxhdG9yUHJvZHVjdFZlcnNpb25LZXkgICAgICAgICAgIEAiV0lS
U2ltdWxhdG9yUHJvZHVjdFZlcnNpb25LZXkiCisjZGVmaW5lIFdJUlNpbXVsYXRvck5hbWVLZXkg
ICAgICAgICAgICAgICAgICAgICBAIldJUlNpbXVsYXRvck5hbWVLZXkiCisKKy8vIFRoZXNlIGRl
ZmluaXRpb25zIGFyZSBzaGFyZWQgYmV0d2VlbiB3ZWJpbnNwZWN0b3JkIGFuZCBXZWJLaXQuCisK
KyNkZWZpbmUgV0lSUGVybWlzc2lvbkRlbmllZCAgICAgICAgICAgICAgICAgICAgIEAiV0lSUGVy
bWlzc2lvbkRlbmllZCIKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYjY3ZDIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCIKKworI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5j
bHVkZSAiUmVtb3RlSW5zcGVjdG9yLmgiCisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCkKKyAgICA6
IG1faWRlbnRpZmllcigwKQorICAgICwgbV9hbGxvd2VkKGZhbHNlKQoreworfQorCitSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlOjp+UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSgpCit7CisgICAg
UmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS51bnJlZ2lzdGVyRGVidWdnYWJsZSh0aGlzKTsKK30K
Kwordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjppbml0KCkKK3sKKyAgICBSZW1vdGVJ
bnNwZWN0b3I6OnNoYXJlZCgpLnJlZ2lzdGVyRGVidWdnYWJsZSh0aGlzKTsKK30KKwordm9pZCBS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjp1cGRhdGUoKQoreworICAgIFJlbW90ZUluc3BlY3Rv
cjo6c2hhcmVkKCkudXBkYXRlRGVidWdnYWJsZSh0aGlzKTsKK30KKwordm9pZCBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlOjpzZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKGJvb2wgYWxsb3dlZCkK
K3sKKyAgICBpZiAobV9hbGxvd2VkID09IGFsbG93ZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fYWxsb3dlZCA9IGFsbG93ZWQ7CisKKyAgICB1cGRhdGUoKTsKK30KKworUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUluZm8gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6aW5mbygpIGNvbnN0
Cit7CisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gaW5mbzsKKyAgICBpbmZvLmlk
ZW50aWZpZXIgPSBpZGVudGlmaWVyKCk7CisgICAgaW5mby50eXBlID0gdHlwZSgpOworICAgIGlu
Zm8ubmFtZSA9IG5hbWUoKTsKKyAgICBpbmZvLnRpdGxlID0gdGl0bGUoKTsKKyAgICBpbmZvLnVy
bCA9IHVybCgpOworICAgIGluZm8uaGFzTG9jYWxEZWJ1Z2dlciA9IGhhc0xvY2FsRGVidWdnZXIo
KTsKKyAgICBpbmZvLnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQgPSByZW1vdGVEZWJ1Z2dpbmdBbGxv
d2VkKCk7CisgICAgcmV0dXJuIGluZm87Cit9CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3Rvcgor
CisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE3ZmI3
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaApAQCAtMCwwICsxLDkzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorCisjaWZuZGVmIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVfaAorI2RlZmlu
ZSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlX2gKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsOworc3RydWN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvOworCitjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlIHsKK3B1YmxpYzoK
KyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCk7CisgICAgdmlydHVhbCB+UmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZSgpOworCisgICAgdm9pZCBpbml0KCk7CisgICAgdm9pZCB1cGRhdGUo
KTsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KKyAgICB2b2lkIHNldElkZW50aWZpZXIodW5zaWduZWQgaWRlbnRpZmllcikgeyBtX2lk
ZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CisKKyAgICBib29sIHJlbW90ZURlYnVnZ2luZ0FsbG93
ZWQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWQ7IH0KKyAgICB2b2lkIHNldFJlbW90ZURlYnVn
Z2luZ0FsbG93ZWQoYm9vbCBhbGxvd2VkKTsKKworICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVJbmZvIGluZm8oKSBjb25zdDsKKworICAgIGVudW0gRGVidWdnYWJsZVR5cGUgeyBKYXZhU2Ny
aXB0LCBXZWIgfTsKKyAgICB2aXJ0dWFsIERlYnVnZ2FibGVUeXBlIHR5cGUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8v
IEphdmFTY3JpcHQKKyAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9IC8vIFdlYgorICAgIHZpcnR1YWwgU3RyaW5nIHVybCgpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZygpOyB9IC8vIFdlYgorICAgIHZpcnR1YWwgYm9vbCBoYXNMb2NhbERlYnVnZ2VyKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCkgeyB9
IC8vIERlZmF1bHQgaXMgdG8gZG8gbm90aGluZy4KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBt
X2lkZW50aWZpZXI7CisgICAgYm9vbCBtX2FsbG93ZWQ7Cit9OworCitzdHJ1Y3QgUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUluZm8geworICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZv
KCkKKyAgICAgICAgOiBpZGVudGlmaWVyKDApCisgICAgICAgICwgdHlwZShSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlOjpKYXZhU2NyaXB0KQorICAgICAgICAsIGhhc0xvY2FsRGVidWdnZXIoZmFs
c2UpCisgICAgICAgICwgcmVtb3RlRGVidWdnaW5nQWxsb3dlZChmYWxzZSkKKyAgICB7CisgICAg
fQorCisgICAgdW5zaWduZWQgaWRlbnRpZmllcjsKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlOjpEZWJ1Z2dhYmxlVHlwZSB0eXBlOworICAgIFN0cmluZyBuYW1lOworICAgIFN0cmluZyB0
aXRsZTsKKyAgICBTdHJpbmcgdXJsOworICAgIGJvb2wgaGFzTG9jYWxEZWJ1Z2dlcjsKKyAgICBi
b29sIHJlbW90ZURlYnVnZ2luZ0FsbG93ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0
b3IKKworI2VuZGlmIC8vIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVfaAorCisjZW5kaWYgLy8g
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5kNDZiMzViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaApAQCAtMCww
ICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaWZuZGVmIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uX2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb25faAorCisjaW1wb3J0ICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbXBv
cnQgIlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCIKKyNpbXBvcnQgPGRpc3BhdGNoL2Rpc3Bh
dGNoLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVGhyZWFkaW5n
Lmg+CisjaW1wb3J0IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworT0JKQ19DTEFTUyBO
U1N0cmluZzsKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uIEZJTkFMIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiwgcHVibGljIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCB7CitwdWJsaWM6CisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb24oUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSosIE5TU3RyaW5nICpjb25uZWN0aW9u
SWRlbnRpZmllciwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uLCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlOjpEZWJ1Z2dhYmxlVHlwZSB0eXBlKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlQ29ubmVjdGlvbigpOworCisgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKCkgY29u
c3Q7CisgICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CisgICAgdW5z
aWduZWQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAg
Ym9vbCBzZXR1cCgpOworCisgICAgdm9pZCBjbG9zZSgpOworICAgIHZvaWQgY2xvc2VGcm9tRGVi
dWdnYWJsZSgpOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChOU1N0cmluZyAqKTsK
KyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIE9W
RVJSSURFOworCitwcml2YXRlOgorICAgIHZvaWQgZGlzcGF0Y2hTeW5jT25EZWJ1Z2dhYmxlKHZv
aWQgKF5ibG9jaykoKSk7CisgICAgdm9pZCBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKHZvaWQg
KF5ibG9jaykoKSk7CisKKyAgICAvLyBUaGlzIGNvbm5lY3Rpb24gZnJvbSB0aGUgUmVtb3RlSW5z
cGVjdG9yIHNpbmdsZXRvbiB0byB0aGUgRGVidWdnYWJsZQorICAgIC8vIGNhbiBiZSB1c2VkIG9u
IG11bHRpcGxlIHRocmVhZHMuIFNvIGFueSBhY2Nlc3MgdG8gdGhlIGRlYnVnZ2FibGUKKyAgICAv
LyBpdHNlbGYgbXVzdCB0YWtlIHRoaXMgbG9jayB0byBlbnN1cmUgbV9kZWJ1Z2dhYmxlIGlzIHZh
bGlkLgorICAgIE11dGV4IG1fZGVidWdnYWJsZUxvY2s7CisKKyAgICBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlKiBtX2RlYnVnZ2FibGU7CisgICAgZGlzcGF0Y2hfcXVldWVfdCBtX3F1ZXVlRm9y
RGVidWdnYWJsZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fY29ubmVjdGlvbklkZW50aWZp
ZXI7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2Rlc3RpbmF0aW9uOworICAgIHVuc2lnbmVk
IG1faWRlbnRpZmllcjsKKyAgICBib29sIG1fY29ubmVjdGVkOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbl9oCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZmZmVhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uLm1tCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCisKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3Rvci5oIgorCisjaWYgUExBVEZPUk0o
SU9TKQorI2ltcG9ydCA8d3RmL2lvcy9XZWJDb3JlVGhyZWFkLmg+CisjZW5kaWYKKworbmFtZXNw
YWNlIEluc3BlY3RvciB7CisKK1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbihSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlKiBkZWJ1Z2dhYmxlLCBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIsIE5TU3RyaW5n
ICpkZXN0aW5hdGlvbiwgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUg
dHlwZSkKKyAgICA6IG1fZGVidWdnYWJsZShkZWJ1Z2dhYmxlKQorICAgICwgbV9xdWV1ZUZvckRl
YnVnZ2FibGUoTlVMTCkKKyAgICAsIG1fY29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvbklk
ZW50aWZpZXIpCisgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgICwgbV9pZGVu
dGlmaWVyKGRlYnVnZ2FibGUtPmlkZW50aWZpZXIoKSkKKyAgICAsIG1fY29ubmVjdGVkKGZhbHNl
KQoreworICAgIC8vIFdlYiBkZWJ1Z2dhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIG9uIHRoZSBtYWlu
IHF1ZXVlIChvciB0aGUgV2ViVGhyZWFkIG9uIGlPUykuIFNpZ25hbCB0aGF0IHdpdGggYSBOVUxM
IG1fcXVldWVGb3JEZWJ1Z2dhYmxlLgorICAgIC8vIEhvd2V2ZXIsIEphdmFTY3JpcHQgZGVidWdn
YWJsZXMgY2FuIGJlIGFjY2Vzc2VkIGZyb20gYW55IHRocmVhZC9xdWV1ZSwgc28gd2UgY3JlYXRl
IGEgcXVldWUgZm9yIGVhY2ggSmF2YVNjcmlwdCBkZWJ1Z2dhYmxlLgorICAgIGlmICh0eXBlID09
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkphdmFTY3JpcHQpCisgICAgICAgIG1fcXVldWVG
b3JEZWJ1Z2dhYmxlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuSmF2YVNjcmlw
dENvcmUucmVtb3RlLWluc3BlY3Rvci14cGMtY29ubmVjdGlvbiIsIERJU1BBVENIX1FVRVVFX1NF
UklBTCk7Cit9CisKK1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjp+UmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oKQoreworICAgIGlmIChtX3F1ZXVlRm9yRGVi
dWdnYWJsZSkgeworICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fcXVldWVGb3JEZWJ1Z2dhYmxl
KTsKKyAgICAgICAgbV9xdWV1ZUZvckRlYnVnZ2FibGUgPSBOVUxMOworICAgIH0KK30KKworTlNT
dHJpbmcgKlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpkZXN0aW5hdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFtbbV9kZXN0aW5hdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07
Cit9CisKK05TU3RyaW5nICpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y29u
bmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBbW21fY29ubmVjdGlvbklk
ZW50aWZpZXIgY29weV0gYXV0b3JlbGVhc2VdOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNPbkRlYnVnZ2FibGUodm9pZCAoXmJsb2Nr
KSgpKQoreworICAgIGlmIChtX3F1ZXVlRm9yRGVidWdnYWJsZSkKKyAgICAgICAgZGlzcGF0Y2hf
c3luYyhtX3F1ZXVlRm9yRGVidWdnYWJsZSwgYmxvY2spOworI2lmIFBMQVRGT1JNKElPUykKKyAg
ICBlbHNlIGlmIChXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJ
c0VuYWJsZWQoKSkKKyAgICAgICAgV2ViQ29yZVdlYlRocmVhZFJ1blN5bmMoYmxvY2spOworI2Vu
ZGlmCisgICAgZWxzZQorICAgICAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIGJsb2NrKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbjo6ZGlzcGF0Y2hBc3luY09uRGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpCit7CisgICAg
aWYgKG1fcXVldWVGb3JEZWJ1Z2dhYmxlKQorICAgICAgICBkaXNwYXRjaF9hc3luYyhtX3F1ZXVl
Rm9yRGVidWdnYWJsZSwgYmxvY2spOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBlbHNlIGlmIChX
ZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQoKSkK
KyAgICAgICAgV2ViQ29yZVdlYlRocmVhZFJ1bihibG9jayk7CisjZW5kaWYKKyAgICBlbHNlCisg
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGJsb2NrKTsK
K30KKworYm9vbCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXAoKQor
eworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2FibGVMb2NrKTsKKworICAgIGlmICgh
bV9kZWJ1Z2dhYmxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkaXNwYXRjaFN5bmNP
bkRlYnVnZ2FibGUoXnsKKyAgICAgICAgaWYgKCFtX2RlYnVnZ2FibGUtPnJlbW90ZURlYnVnZ2lu
Z0FsbG93ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobV9kZWJ1Z2dh
YmxlLT5oYXNMb2NhbERlYnVnZ2VyKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
bV9kZWJ1Z2dhYmxlLT5jb25uZWN0KHRoaXMpOworICAgICAgICBtX2Nvbm5lY3RlZCA9IHRydWU7
CisgICAgfSk7CisKKyAgICByZXR1cm4gbV9jb25uZWN0ZWQ7Cit9CisKK3ZvaWQgUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmNsb3NlRnJvbURlYnVnZ2FibGUoKQoreworICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2FibGVMb2NrKTsKKworICAgIG1fZGVidWdnYWJs
ZSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b246OmNsb3NlKCkKK3sKKyAgICByZWYoKTsKKyAgICBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxl
KF57CisgICAgICAgIHsKKyAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2Fi
bGVMb2NrKTsKKworICAgICAgICAgICAgaWYgKG1fZGVidWdnYWJsZSkgeworICAgICAgICAgICAg
ICAgIGlmIChtX2Nvbm5lY3RlZCkKKyAgICAgICAgICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlLT5k
aXNjb25uZWN0KCk7CisKKyAgICAgICAgICAgICAgICBtX2RlYnVnZ2FibGUgPSBudWxscHRyOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGRlcmVmKCk7CisgICAgfSk7Cit9CisK
K3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNlbmRNZXNzYWdlVG9C
YWNrZW5kKE5TU3RyaW5nICptZXNzYWdlKQoreworICAgIHJlZigpOworICAgIGRpc3BhdGNoQXN5
bmNPbkRlYnVnZ2FibGUoXnsKKyAgICAgICAgeworICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fZGVidWdnYWJsZUxvY2spOworCisgICAgICAgICAgICBpZiAobV9kZWJ1Z2dhYmxlKQor
ICAgICAgICAgICAgICAgIG1fZGVidWdnYWJsZS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZy
b250ZW5kKG1lc3NhZ2UpOworICAgICAgICB9CisgICAgICAgIGRlcmVmKCk7CisgICAgfSk7Cit9
CisKK2Jvb2wgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgUmVtb3RlSW5zcGVjdG9y
OjpzaGFyZWQoKS5zZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoaWRlbnRpZmllcigpLCBtZXNz
YWdlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
KworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmQ3MTkwNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2lmbmRlZiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uX2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbl9oCisKKyNpbXBvcnQg
PGRpc3BhdGNoL2Rpc3BhdGNoLmg+CisjaW1wb3J0IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbXBv
cnQgPHhwYy94cGMuaD4KKworT0JKQ19DTEFTUyBOU1N0cmluZzsKK09CSkNfQ0xBU1MgTlNEaWN0
aW9uYXJ5OworCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbik7CisKK3B1YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB4
cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24q
LCBOU1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25GYWlsZWQoUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbiopID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25Vbmhh
bmRsZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3Qp
ID0gMDsKKyAgICB9OworCisgICAgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbih4cGNfY29u
bmVjdGlvbl90LCBDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uKCk7CisKKyAgICB2b2lkIGNsb3NlKCk7CisgICAgdm9pZCBzZW5kTWVzc2FnZShOU1N0
cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworCitwcml2YXRlOgor
ICAgIE5TRGljdGlvbmFyeSAqZGVzZXJpYWxpemVNZXNzYWdlKHhwY19vYmplY3RfdCBvYmplY3Qp
OworICAgIHZvaWQgaGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG9iamVjdCk7CisKKyAgICB4cGNf
Y29ubmVjdGlvbl90IG1fY29ubmVjdGlvbjsKKyAgICBkaXNwYXRjaF9xdWV1ZV90IG1fcXVldWU7
CisgICAgQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3Rvcgor
CisjZW5kaWYgLy8gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbl9oCisKKyNlbmRpZiAvLyBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyNzkwNjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Cisj
aW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorCisjaWYgX19oYXNfaW5jbHVkZSg8Q29yZUZvdW5k
YXRpb24vQ0ZYUENCcmlkZ2UuaD4pCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZYUENCcmlk
Z2UuaD4KKyNlbHNlCitleHRlcm4geHBjX29iamVjdF90IF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VX
aXRoQ0ZPYmplY3QoQ0ZUeXBlUmVmKTsKK2V4dGVybiBDRlR5cGVSZWYgX0NGWFBDQ3JlYXRlQ0ZP
YmplY3RGcm9tWFBDTWVzc2FnZSh4cGNfb2JqZWN0X3QpOworI2VuZGlmCisKK25hbWVzcGFjZSBJ
bnNwZWN0b3IgeworCisvLyBDb25zdGFudHMgcHJpdmF0ZSB0byB0aGlzIGZpbGUgZm9yIG1lc3Nh
Z2Ugc2VyaWFsaXphdGlvbiBvbiBib3RoIGVuZHMuCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb25NZXNzYWdlTmFtZUtleSBAIm1lc3NhZ2VOYW1lIgorI2RlZmluZSBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uVXNlckluZm9LZXkgQCJ1c2VySW5mbyIKKyNkZWZpbmUgUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5ICJtc2dEYXRhIgor
CitSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgQ2xpZW50KiBjbGllbnQpCisgICAgOiBt
X2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fcXVldWUoZGlzcGF0Y2hfcXVldWVfY3Jl
YXRlKCJjb20uYXBwbGUuSmF2YVNjcmlwdENvcmUucmVtb3RlLWluc3BlY3Rvci14cGMtY29ubmVj
dGlvbiIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpCisgICAgLCBtX2NsaWVudChjbGllbnQpCit7
CisgICAgeHBjX3JldGFpbihtX2Nvbm5lY3Rpb24pOworICAgIHhwY19jb25uZWN0aW9uX3NldF90
YXJnZXRfcXVldWUobV9jb25uZWN0aW9uLCBtX3F1ZXVlKTsKKyAgICBSZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uKiB3ZWFrVGhpcyA9IHRoaXM7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2
ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKKyAgICAg
ICAgd2Vha1RoaXMtPmhhbmRsZUV2ZW50KG9iamVjdCk7CisgICAgfSk7CisgICAgeHBjX2Nvbm5l
Y3Rpb25fcmVzdW1lKG1fY29ubmVjdGlvbik7Cit9CisKK1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb246On5SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQoIW1f
Y2xpZW50KTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAgIGlmICghbV9jb25uZWN0aW9uKQor
ICAgICAgICByZXR1cm47CisKKyAgICB4cGNfY29ubmVjdGlvbl9jYW5jZWwobV9jb25uZWN0aW9u
KTsKKyAgICB4cGNfcmVsZWFzZShtX2Nvbm5lY3Rpb24pOworICAgIG1fY29ubmVjdGlvbiA9IE5V
TEw7CisKKyAgICBkaXNwYXRjaF9yZWxlYXNlKG1fcXVldWUpOworICAgIG1fcXVldWUgPSBOVUxM
OworCisgICAgbV9jbGllbnQgPSBudWxscHRyOworfQorCitOU0RpY3Rpb25hcnkgKlJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSh4cGNfb2JqZWN0X3Qgb2Jq
ZWN0KQoreworICAgIGlmICh4cGNfZ2V0X3R5cGUob2JqZWN0KSAhPSBYUENfVFlQRV9ESUNUSU9O
QVJZKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgeHBjX29iamVjdF90IHhwY0RpY3Rpb25h
cnkgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUob2JqZWN0LCBSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXkpOworICAgIGlmICgheHBjRGljdGlvbmFyeSB8
fCB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkgewor
ICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+eHBjQ29ubmVjdGlv
blVuaGFuZGxlZE1lc3NhZ2UodGhpcywgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICB9CisKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxOU0RpY3Rp
b25hcnkgKj4oX0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4cGNEaWN0aW9uYXJ5
KSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkaWN0aW9uYXJ5LCAiVW5hYmxlIHRvIGRlc2Vy
aWFsaXplIHhwYyBtZXNzYWdlIik7CisgICAgcmV0dXJuIFtkaWN0aW9uYXJ5IGF1dG9yZWxlYXNl
XTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpoYW5kbGVFdmVudCh4
cGNfb2JqZWN0X3Qgb2JqZWN0KQoreworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoeHBjX2dldF90eXBlKG9iamVjdCkgPT0gWFBDX1RZUEVfRVJST1Ip
IHsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPnhwY0Nvbm5l
Y3Rpb25GYWlsZWQodGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBOU0RpY3Rp
b25hcnkgKmRhdGFEaWN0aW9uYXJ5ID0gZGVzZXJpYWxpemVNZXNzYWdlKG9iamVjdCk7CisgICAg
aWYgKCFkYXRhRGljdGlvbmFyeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNTdHJpbmcgKm1l
c3NhZ2UgPSBbZGF0YURpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OlJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb25NZXNzYWdlTmFtZUtleV07CisgICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtk
YXRhRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblVz
ZXJJbmZvS2V5XTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT54cGNDb25u
ZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKHRoaXMsIG1lc3NhZ2UsIHVzZXJJbmZvKTsKK30KKwordm9p
ZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShOU1N0cmluZyAqbWVz
c2FnZU5hbWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgaWYgKCFtX2Nvbm5lY3Rp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25h
cnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptZXNzYWdlTmFt
ZSBmb3JLZXk6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1lc3NhZ2VOYW1lS2V5XTsKKyAg
ICBpZiAodXNlckluZm8pCisgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp1c2VySW5mbyBm
b3JLZXk6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5XTsKKworICAgIHhw
Y19vYmplY3RfdCB4cGNEaWN0aW9uYXJ5ID0gX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9i
amVjdCgoQ0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkpOworICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoeHBjRGljdGlvbmFyeSAmJiB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgPT0gWFBDX1RZ
UEVfRElDVElPTkFSWSwgIlVuYWJsZSB0byBzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKKyAgICBp
ZiAoIXhwY0RpY3Rpb25hcnkpCisgICAgICAgIHJldHVybjsKKworICAgIHhwY19vYmplY3RfdCBt
c2cgPSB4cGNfZGljdGlvbmFyeV9jcmVhdGUoTlVMTCwgTlVMTCwgMCk7CisgICAgeHBjX2RpY3Rp
b25hcnlfc2V0X3ZhbHVlKG1zZywgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6
ZWRNZXNzYWdlS2V5LCB4cGNEaWN0aW9uYXJ5KTsKKyAgICB4cGNfcmVsZWFzZSh4cGNEaWN0aW9u
YXJ5KTsKKworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShtX2Nvbm5lY3Rpb24sIG1z
Zyk7CisKKyAgICB4cGNfcmVsZWFzZShtc2cpOworfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0
b3IKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyZmMxMTJlLi5i
Yzk4Y2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1v
dGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2Ny
aXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvaW9zL1dlYkNvcmVUaHJlYWQuY3BwOgorICAgICAgICAqIHd0Zi9pb3MvV2ViQ29yZVRo
cmVhZC5oOgorICAgICAgICBFeHBvc2UgV2ViVGhyZWFkUnVuL1dlYlRocmVhZFJ1blN5bmMgaU9T
IG1ldGhvZHMgZGVmaW5lZCBpbiBXZWJDb3JlIHRocm91Z2gKKyAgICAgICAgV1RGIHNvIHRoYXQg
SmF2YVNjcmlwdENvcmUgY2FuIHVzZSBpdC4gQW5vdGhlciBzdWNoIG1ldGhvZCBhbHJlYWR5IGV4
aXN0ZWQuCisKIDIwMTMtMTEtMTggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBbGxvdyB0aGUgRlRMIGRlYnVnIGR1bXBzIHRvIGluY2x1ZGUgdGhlIG5ldyBzaXpl
IGZpZWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5jcHAKaW5kZXggNDI3NDQ2Ni4uZjA3
ZGMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvaW9zL1dlYkNvcmVUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmNwcApAQCAtMjgsNCArMjgsNyBA
QAogCiAjaWYgVVNFKFdFQl9USFJFQUQpCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCAoKldlYkNv
cmVXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQpKHZvaWQpOworV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKSh2b2lkKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSB2b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1bikodm9pZCAoXmJsb2NrKSgpKTsKK1dURl9F
WFBPUlRfUFJJVkFURSB2b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1blN5bmMpKHZvaWQgKF5ibG9j
aykoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhy
ZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5oCmluZGV4IDEwZTI2YTcu
LjgxOWNlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmgK
KysrIGIvU291cmNlL1dURi93dGYvaW9zL1dlYkNvcmVUaHJlYWQuaApAQCAtMzMsNiArMzMsOSBA
QCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiBleHRlcm4gYm9vbCAoKldlYkNvcmVXZWJUaHJlYWRJ
c0xvY2tlZE9yRGlzYWJsZWQpKHZvaWQpOworZXh0ZXJuIGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFk
SXNFbmFibGVkKSh2b2lkKTsKK2V4dGVybiB2b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1bikodm9p
ZCAoXmJsb2NrKSgpKTsKK2V4dGVybiB2b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1blN5bmMpKHZv
aWQgKF5ibG9jaykoKSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQo=
</data>
<flag name="review"
          id="240465"
          type_id="1"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217351</attachid>
            <date>2013-11-19 16:16:38 -0800</date>
            <delta_ts>2013-11-21 12:26:19 -0800</delta_ts>
            <desc>[PATCH] Part 2 - Make JSContext and WebCore::Page remote debuggables</desc>
            <filename>part2.patch</filename>
            <type>text/plain</type>
            <size>48630</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5oCmluZGV4IDM4MzRmODkuLjdlNzM0OGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaApAQCAtMTAxLDYgKzEwMSwxMiBA
QCBPQkpDX1ZJU0lCTEUKIC8vIHZpcnR1YWwgbWFjaGluZSBwcm92aWRlcyBhbiAib2JqZWN0IHNw
YWNlIiBvciBzZXQgb2YgZXhlY3V0aW9uIHJlc291cmNlcy4KIEBwcm9wZXJ0eShyZWFkb25seSwg
cmV0YWluKSBKU1ZpcnR1YWxNYWNoaW5lICp2aXJ0dWFsTWFjaGluZTsKIAorLy8gRW5hYmxlIG9y
IGRpc2FibGUgcmVtb3RlIGRlYnVnZ2luZyBvZiB0aGlzIEpTQ29udGV4dC4gRGVmYXVsdHMgdG8g
Tk8uCitAcHJvcGVydHkgQk9PTCByZW1vdGVEZWJ1Z2dpbmdFbmFibGVkOworCisvLyBOYW1lIHRo
ZSBKU0NvbnRleHQuIEV4cG9zZWQgd2hlbiByZW1vdGUgZGVidWdnaW5nIHRoZSBjb250ZXh0Lgor
QHByb3BlcnR5KGNvcHkpIE5TU3RyaW5nICpuYW1lOworCiBAZW5kCiAKIC8vIEluc3RhbmNlcyBv
ZiBKU0NvbnRleHQgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbiBvcmRlciB0byBl
bmFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1t
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggZWY5ZTg1Yi4u
ZTU2NDIyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQu
bW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTE2Nyw2
ICsxNjcsMjkgQEAKICAgICByZXR1cm4gbV92aXJ0dWFsTWFjaGluZTsKIH0KIAorLSAoQk9PTCly
ZW1vdGVEZWJ1Z2dpbmdFbmFibGVkCit7CisgICAgcmV0dXJuIEpTR2xvYmFsQ29udGV4dEdldFJl
bW90ZURlYnVnZ2luZ0VuYWJsZWQobV9jb250ZXh0KTsKK30KKworLSAodm9pZClzZXRSZW1vdGVE
ZWJ1Z2dpbmdFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAgICBKU0dsb2JhbENvbnRleHRTZXRS
ZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKG1fY29udGV4dCwgZW5hYmxlZCk7Cit9CisKKy0gKE5TU3Ry
aW5nICopbmFtZQoreworICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU0dsb2JhbENvbnRleHRHZXRO
YW1lKG1fY29udGV4dCk7CisgICAgcmV0dXJuIFsoTlNTdHJpbmcgKilKU1N0cmluZ0NvcHlDRlN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBuYW1lKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKHZv
aWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZUpTID0g
SlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKVtuYW1lIGNvcHldKTsKKyAg
ICBKU0dsb2JhbENvbnRleHRTZXROYW1lKG1fY29udGV4dCwgbmFtZUpTKTsKKyAgICBKU1N0cmlu
Z1JlbGVhc2UobmFtZUpTKTsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gSlNDb250ZXh0
KFN1YnNjcmlwdFN1cHBvcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJl
Zi5jcHAKaW5kZXggMTA4ZmQ1OS4uODYxYTE3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMjA2LDYgKzIwNiw1NSBAQCBKU0dsb2JhbENvbnRleHRS
ZWYgSlNDb250ZXh0R2V0R2xvYmFsQ29udGV4dChKU0NvbnRleHRSZWYgY3R4KQogICAgIHJldHVy
biB0b0dsb2JhbFJlZihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSk7
CiB9CiAKK2Jvb2wgSlNHbG9iYWxDb250ZXh0R2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChKU0ds
b2JhbENvbnRleHRSZWYgY3R4KQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwor
CisgICAgcmV0dXJuIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+cmVtb3RlRGVidWdnaW5n
RW5hYmxlZCgpOworfQorCit2b2lkIEpTR2xvYmFsQ29udGV4dFNldFJlbW90ZURlYnVnZ2luZ0Vu
YWJsZWQoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgYm9vbCBlbmFibGVkKQoreworICAgIGlmICgh
Y3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBBUElFbnRyeVNoaW0g
ZW50cnlTaGltKGV4ZWMpOworCisgICAgZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5zZXRS
ZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGVuYWJsZWQpOworfQorCitKU1N0cmluZ1JlZiBKU0dsb2Jh
bENvbnRleHRHZXROYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCit7CisgICAgaWYgKCFjdHgp
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgQVBJRW50cnlTaGltIGVu
dHJ5U2hpbShleGVjKTsKKworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGV4ZWMt
PmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+bmFtZSgpKS5sZWFrUmVmKCk7Cit9CisKK3ZvaWQgSlNH
bG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBu
YW1lKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsK
KyAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworCisgICAgZXhlYy0+ZHluYW1pY0ds
b2JhbE9iamVjdCgpLT5zZXROYW1lKG5hbWUgPyBuYW1lLT5zdHJpbmcoKSA6IFN0cmluZygpKTsK
K30KKworCiBjbGFzcyBCYWNrdHJhY2VGdW5jdG9yIHsKIHB1YmxpYzoKICAgICBCYWNrdHJhY2VG
dW5jdG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIHJlbWFpbmluZ0NhcGFjaXR5
Rm9yRnJhbWVDYXB0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NvbnRleHRSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgK
aW5kZXggNzcwNTk1NS4uNGY0MmVmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NvbnRleHRSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5oCkBAIC0xMzMsNiArMTMzLDQwIEBAIEpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJl
ZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KSBBVkFJTEFCTEVfSU5fV0VCCiAq
LwogSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxDb250ZXh0
KEpTQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF83LCA0XzApOwogCisvKiEKK0BmdW5j
dGlvbgorQGFic3RyYWN0IEdldHMgdGhlIHJlbW90ZSBkZWJ1Z2dpbmcgY2FwYWJpbGl0eSBvbiBh
IGNvbnRleHQuCitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgd2hvc2UgY2FwYWJpbGl0
eSB5b3Ugd2FudCB0byBnZXQuCitAcmVzdWx0IGN0eCdzIHJlbW90ZSBkZWJ1Z2dpbmcgY2FwYWJp
bGl0eS4KKyovCitKU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRleHRHZXRSZW1vdGVEZWJ1Z2dp
bmdFbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpOworCisvKiEKK0BmdW5jdGlvbgorQGFi
c3RyYWN0IFNldHMgdGhlIHJlbW90ZSBkZWJ1Z2dpbmcgY2FwYWJpbGl0eSBvbiBhIGNvbnRleHQu
CitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgd2hvc2UgY2FwYWJpbGl0eSB5b3Ugd2Fu
dCB0byBjaGFuZ2UuCitAcGFyYW0gYWxsb3cgU2V0IHRydWUgdG8gZW5hYmxlIHJlbW90ZSBkZWJ1
Z2dpbmcsIGZhbHNlIHRvIGRpc2FibGUuCisqLworSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250
ZXh0U2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBib29s
IGVuYWJsZSk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyB0aGUgbmFtZSBvZiBh
IGNvbnRleHQuCitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgd2hvc2UgbmFtZSB5b3Ug
d2FudCB0byBnZXQuCitAcmVzdWx0IFRoZSBuYW1lIGZvciBjdHguCitAZGlzY3Vzc2lvbiBBIEpT
R2xvYmFsQ29udGV4dCdzIG5hbWUgaXMgZXhwb3NlZCBmb3IgcmVtb3RlIGRlYnVnZ2luZyB0byBt
YWtlIGl0CitlYXNpZXIgdG8gaWRlbnRpZnkgdGhlIGNvbnRleHQgeW91IHdvdWxkIGxpa2UgdG8g
YXR0YWNoIHRvLgorKi8KK0pTX0VYUE9SVCBKU1N0cmluZ1JlZiBKU0dsb2JhbENvbnRleHRHZXRO
YW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpOworCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0
IFNldHMgdGhlIHJlbW90ZSBkZWJ1Z2dpbmcgbmFtZSBmb3IgYSBjb250ZXh0LgorQHBhcmFtIGN0
eCBUaGUgSlNHbG9iYWxDb250ZXh0IHRoYXQgeW91IHdhbnQgdG8gbmFtZS4KK0BwYXJhbSBuYW1l
IFRoZSByZW1vdGUgZGVidWdnaW5nIG5hbWUgdG8gc2V0IG9uIGN0eC4KKyovCitKU19FWFBPUlQg
dm9pZCBKU0dsb2JhbENvbnRleHRTZXROYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTU3Ry
aW5nUmVmIG5hbWUpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKaW5kZXggMWZmNDQzMS4uOTIxZGU4YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCkBAIC0zLDYgKzMsNTQgQEAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUg
SW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0
Q29yZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0
NjEzCiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSBKU0NvbnRleHQgQGNsYXNzIGFuZCBKYXZhU2NyaXB0Q29yZTo6SlNDb250ZXh0UmVmCisgICAg
ICAgICJKYXZhU2NyaXB0IiBSZW1vdGUgRGVidWdnYWJsZXMuCisKKyAgICAgICAgRklYTUU6IEFQ
SSBuZWVkcyB0byBiZSByZXZpZXdlZCBiZWZvcmUgbGFuZGluZy4KKworICAgICAgICAqIEFQSS9K
U0NvbnRleHQuaDoKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAoLVtKU0Nv
bnRleHQgcmVtb3RlRGVidWdnaW5nRW5hYmxlZF0pOgorICAgICAgICAoLVtKU0NvbnRleHQgc2V0
UmVtb3RlRGVidWdnaW5nRW5hYmxlZDpdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IG5hbWVdKToK
KyAgICAgICAgKC1bSlNDb250ZXh0IHNldE5hbWU6XSk6CisgICAgICAgIE9iakMgQVBJIHRvIGVu
YWJsZS9kaXNhYmxlIEpTQ29udGV4dCByZW1vdGUgaW5zcGVjdGlvbiBhbmQgZ2l2ZSBhIG5hbWUu
CisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmg6CisgICAgICAgICogQVBJL0pTQ29udGV4
dFJlZi5jcHA6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRHZXRSZW1vdGVEZWJ1Z2dpbmdFbmFi
bGVkKToKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dFNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQp
OgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0R2V0TmFtZSk6CisgICAgICAgIChKU0dsb2JhbENv
bnRleHRTZXROYW1lKToKKyAgICAgICAgQyBBUEkgdG8gZW5hYmxlL2Rpc2FibGUgSlNDb250ZXh0
IHJlbW90ZSBpbnNwZWN0aW9uIGFuZCBnaXZlIGEgbmFtZS4KKworICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRSZW1vdGVE
ZWJ1Z2dpbmdFbmFibGVkKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlbW90ZURl
YnVnZ2luZ0VuYWJsZWQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c2V0TmFtZSk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6bmFtZSk6CisgICAgICAgIFNoYXJlZCBoYW5kbGluZyBvZiB0aGUgQVBJcyBh
Ym92ZS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6SlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
OjpuYW1lKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpjb25uZWN0
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNwYXRjaE1lc3NhZ2VG
cm9tUmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmg6IEFkZGVkLgorICAgICAgICBTdHViIGZvciB0aGUgYWN0dWFsIHJlbW90ZSBkZWJ1
Z2dpbmcgaW1wbGVtZW50YXRpb24uIFdlIHdpbGwgcHVzaAorICAgICAgICBkb3duIHRoZSBhcHBy
b3ByaWF0ZSBXZWJDb3JlL2luc3BlY3RvciBwZWljZXMgc3VpdGFibGUgZm9yIGRlYnVnZ2luZwor
ICAgICAgICBqdXN0IGEgSmF2YVNjcmlwdCBjb250ZXh0LgorCisyMDEzLTExLTE5ICBKb3NlcGgg
UGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
UHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50
byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI0NjEzCisKICAgICAgICAgTW92ZSB0aGUgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpIHJlbW90ZSBkZWJ1Z2dlciBjb25uZWN0aW9uIG1hbmFnZW1lbnQKICAgICAgICAgaW50byBK
YXZhU2NyaXB0Q29yZSAob3JpZ2luYWxseSBmcm9tIFdlYktpdC9tYWMpLiBJbmNsdWRlIGVuaGFu
Y2VtZW50czoKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkOWViMzhkLi42YzIy
M2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODg0LDYgKzg4NCw4IEBACiAJ
CUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQzE1NkVFRDNC
MDA1NjZDQjIgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBB
Uk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU5NDU1OEYxODI0
NUVGRDAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OEUxODI0NUVERTAwQ0Mz
ODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwICovOyB9OworCQlBNTk0NTU5MjE4
MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1NTkwMTgyNDc0NDcwMEND
Mzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwICovOyB9OworCQlBNTk0NTU5MzE4
MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4
NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggKi87IH07CiAJCUE1OTQ1NTk1MTgyNDc5
RUIwMENDMzg0MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1NTk0MTgyNDc5RUIwMENDMzg0MyAv
KiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBNUJBMTVFODE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3Rl
SW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVCQTE1RTkxODIzNDBC
MzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJ
bnNwZWN0b3IubW0gKi87IH07CkBAIC0yMjAwLDYgKzIyMDIsOCBAQAogCQlBMTcxMkIzRTExQzdC
MjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJC
NDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5
NDU1OEUxODI0NUVERTAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZS5jcHA7IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTk0NTU5MDE4MjQ3NDQ3MDBD
QzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTQ1NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
OTQ1NTk0MTgyNDc5RUIwMENDMzg0MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg7
IHBhdGggPSBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1QkExNUUxMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNw
ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9y
Lmg7IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5z
cGVjdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVtb3Rl
SW5zcGVjdG9yLm1tOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDkwLDYgKzM0OTQsOCBAQAogCQkJCTBG
MkI2NkM4MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZUlubGluZXMuaCAqLywKIAkJCQkxNERFMEQ2ODBEMDI0MzE0MDBBQUNDQTIgLyogSlNHbG9iYWxP
YmplY3QuY3BwICovLAogCQkJCUE4RTg5NDMzMENEMDYwM0YwMDM2NzE3OSAvKiBKU0dsb2JhbE9i
amVjdC5oICovLAorCQkJCUE1OTQ1NTkwMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVj
dERlYnVnZ2FibGUuY3BwICovLAorCQkJCUE1OTQ1NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0ds
b2JhbE9iamVjdERlYnVnZ2FibGUuaCAqLywKIAkJCQlCQzc1NkZDNjBFMjAzMUIyMDBERTdEMTIg
LyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwICovLAogCQkJCUJDNzU2RkM3MEUyMDMxQjIw
MERFN0QxMiAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oICovLAogCQkJCTBGMkI2NkNBMTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2QXJyYXkuaCAqLywKQEAgLTQ0NTAsNiArNDQ1Niw3IEBA
CiAJCQkJMEZFQTBBMDgxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTEFiYnJldmlhdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRUEwQTFEMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhl
YXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTFGMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTk0NTU5MzE4MjQ3
NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVBMEEwQTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMgLyogRlRMQ29tbW9uVmFsdWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEwQzE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29t
cGlsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC01NDgwLDYgKzU0ODcsNyBAQAogCQkJCUE3QjQ4RjQ5
MEVFODkzNkYwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2REI2NDY0MEY5NUM2RkMwMEQ3RDkyMSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yRml4
ZWRWTVBvb2wuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NkExRDUxNTAwMUNGNDAwMjk5MkIx
IC8qIEV4ZWN1dGlvbkNvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU5NDU1OTIxODI0
NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkIxMDU4NTE2NzU0ODBGMDBGOEFCNkUgLyogRXhpdEtpbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQTBBMUMxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExRTE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA4M2ZmNjFlLi5jZjJk
MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC0xMjUsNiArMTI1LDExIEBACiAjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXJQ
cm90b3R5cGUuaCIKICNlbmRpZiAvLyBFTkFCTEUoUFJPTUlTRVMpCiAKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCIKKyNp
bmNsdWRlICJSZW1vdGVJbnNwZWN0b3IuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QubHV0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNzcwLDQgKzc3NSw0MCBAQCBVbmxp
bmtlZEV2YWxDb2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29kZUJsb2NrKENh
bGxGcmFtZSogY2FsbEZyYW1lLAogICAgIHJldHVybiB1bmxpbmtlZENvZGU7CiB9CiAKK3ZvaWQg
SlNHbG9iYWxPYmplY3Q6OnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQor
eworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlmIChlbmFibGVkICYmICFtX2lu
c3BlY3RvckRlYnVnZ2FibGUpIHsKKyAgICAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlID0gc3Rk
OjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsKKyAgICAgICAg
bV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5pbml0KCk7CisgICAgICAgIG1faW5zcGVjdG9yRGVidWdn
YWJsZS0+c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChlbmFibGVkKTsKKyAgICB9IGVsc2UgaWYg
KCFlbmFibGVkICYmIG1faW5zcGVjdG9yRGVidWdnYWJsZSkKKyAgICAgICAgbV9pbnNwZWN0b3JE
ZWJ1Z2dhYmxlID0gbnVsbHB0cjsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwor
I2VuZGlmCit9CisKK2Jvb2wgSlNHbG9iYWxPYmplY3Q6OnJlbW90ZURlYnVnZ2luZ0VuYWJsZWQo
KSBjb25zdAoreworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlmICghbV9pbnNw
ZWN0b3JEZWJ1Z2dhYmxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9p
bnNwZWN0b3JEZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCk7CisjZWxzZQorICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXROYW1l
KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBtX25hbWUgPSBuYW1lOworCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisgICAgaWYgKG1faW5zcGVjdG9yRGVidWdnYWJsZSkKKyAgICAg
ICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT51cGRhdGUoKTsKKyNlbmRpZgorfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCmluZGV4IDE2M2QxOGYuLmQyMDBjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNTgsNiArNTgsNyBAQCBjbGFzcyBGdW5j
dGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKIGNsYXNzIEdldHRlclNl
dHRlcjsKIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0RGVidWdn
YWJsZTsKIGNsYXNzIEpTUHJvbWlzZVByb3RvdHlwZTsKIGNsYXNzIEpTUHJvbWlzZVJlc29sdmVy
UHJvdG90eXBlOwogY2xhc3MgSlNTdGFjazsKQEAgLTIyOSw4ICsyMzAsMTQgQEAgcHJvdGVjdGVk
OgogICAgICAgICAKICAgICB2b2lkKiBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpUYWJsZVNp
emVdOyAvLyBTcGVjaWFsIHBvaW50ZXJzIHVzZWQgYnkgdGhlIExMSW50IGFuZCBKSVQuCiAKKyAg
ICBTdHJpbmcgbV9uYW1lOworCiAgICAgRGVidWdnZXIqIG1fZGVidWdnZXI7CiAKKyNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlPiBtX2luc3BlY3RvckRlYnVnZ2FibGU7CisjZW5kaWYKKwogICAgIFJlZlB0cjxX
YXRjaHBvaW50U2V0PiBtX21hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50OwogICAgIFJl
ZlB0cjxXYXRjaHBvaW50U2V0PiBtX2hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludDsKICAgICBSZWZQ
dHI8V2F0Y2hwb2ludFNldD4gbV92YXJJbmplY3Rpb25XYXRjaHBvaW50OwpAQCAtNDIyLDYgKzQy
OSwxMiBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBwcm9taXNlV3JhcHBlckNhbGxiYWNrU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJl
LmdldCgpOyB9CiAjZW5kaWYgLy8gRU5BQkxFKFBST01JU0VTKQogCisgICAgdm9pZCBzZXRSZW1v
dGVEZWJ1Z2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisgICAgYm9vbCByZW1vdGVEZWJ1Z2dp
bmdFbmFibGVkKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1l
KTsKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKwog
ICAgIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUqIGFycmF5QnVmZmVyUHJvdG90eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9hcnJheUJ1ZmZlclByb3RvdHlwZS5nZXQoKTsgfQogCiAjZGVmaW5lIERFRklO
RV9BQ0NFU1NPUlNfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Bl
ck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjhmMzEyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNw
cApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZS5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIlJlbW90ZUluc3BlY3Rvci5oIgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OworCituYW1lc3BhY2UgSlNDIHsKKworSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpKU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGUoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKKyAgICA6IG1f
Z2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKK3sKK30KKworU3RyaW5nIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgU3RyaW5nIG5hbWUgPSBtX2dsb2JhbE9i
amVjdC5uYW1lKCk7CisgICAgcmV0dXJuIG5hbWUuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJK
U0NvbnRleHQiKSA6IG5hbWU7Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpj
b25uZWN0KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopCit7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudC4KKyAgICAvLyBDcmVhdGUgYW4gSW5zcGVjdG9yQ29udHJvbGxlciwgSW5zcGVjdG9yRnJv
bnRlbmQsIEluc3BlY3RvckJhY2tlbmQsIGFuZCBBZ2VudHMuCisgICAgLy8gIkluc3BlY3RvckNv
bnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCIuCit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlOjpkaXNjb25uZWN0KCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIC8v
ICJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQiLgorfQorCit2b2lkIEpT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5k
KGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICAvLyAiSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kIgorfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERl
YnVnZ2FibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjJkOWVlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
X2gKKyNkZWZpbmUgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlX2gKKworI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oIgor
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZSBGSU5BTCA6
IHB1YmxpYyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZSk7CitwdWJsaWM6CisgICAg
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlKEpTR2xvYmFsT2JqZWN0Jik7CisgICAgfkpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZSgpIHsgfQorCisgICAgdmlydHVhbCBJbnNwZWN0b3I6OlJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGU6OkRlYnVnZ2FibGVUeXBlIHR5cGUoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkphdmFTY3JpcHQ7
IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgaGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNl
OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIEpTR2xv
YmFsT2JqZWN0JiBtX2dsb2JhbE9iamVjdDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChK
U0dsb2JhbE9iamVjdERlYnVnZ2FibGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyODBhY2NiLi45NDk2ZTE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJl
bW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFT
Y3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIGEgV2ViQ29yZTo6UGFnZSBhICJXZWIiIFJlbW90ZSBEZWJ1Z2dhYmxlLgorCisgICAg
ICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6cmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6c2V0UmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6cmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UpOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUuaDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
YWdlRGVidWdnYWJsZTo6UGFnZURlYnVnZ2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURl
YnVnZ2FibGU6OnRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjp1cmwp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6Omhhc0xvY2FsRGVidWdnZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmNvbm5lY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZURlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6c2V0SW5kaWNhdGluZyk6CisgICAgICAgIE1ha2Ug
YSBwYWdlIGEgIldlYiIgZGVidWdnYWJsZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgTWlz
Yy4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNsaWVudDo6aW5kaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50OjpoaWRlSW5kaWNhdGUpOgorICAgICAgICBGb3J3YXJkIGluZGljYXRlIG1l
dGhvZHMgdG8gV2ViS2l0IGNsaWVudHMuCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZENoYW5nZVRpdGxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgorICAg
ICAgICBQdXNoIHVwZGF0ZXMgd2hlbiByZW1vdGUgZGVidWdnYWJsZSBpbmZvcm1hdGlvbiBsaWtl
IHRoZSBQYWdlJ3MKKyAgICAgICAgVVJMIG9yIHRpdGxlIGNoYW5nZS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaDoKKyAgICAgICAgUmUtZXhwb3J0IElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIGFzIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbAorICAgICAgICB0byBhdm9pZCBuZWVkbGVzc2x5IHVwZGF0aW5nIGNvZGUg
YWxsIG92ZXIgdGhlIHBsYWNlLgorCisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0
ZSk6CisgICAgICAgIE1ha2UgdGhlICJJbnNwZWN0IEVsZW1lbnQiIGNvbnRleHQgbWVudSB3b3Jr
IGNvcnJlY3RseSB3aGVuIHRoZXJlIGlzIGEKKyAgICAgICAgcmVtb3RlIGluc3BlY3RvciBpbnN0
ZWFkIG9mIGEgbG9jYWwgaW5zcGVjdG9yLgorCiAyMDEzLTExLTE4ICBEYXZpZCBIeWF0dCAgPGh5
YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBxdWlyayB0byBub3QgcmVzcGVjdCBjZW50
ZXIgdGV4dC1hbGlnbiB3aGVuIHBvc2l0aW9uaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDhj
ZGQxZmYuLmQ2MTVjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yODAyLDYgKzI4MDIsNyBA
QCBfX1pON1dlYkNvcmUzM1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldEV2CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorX19aTjdXZWJDb3JlNFBhZ2UyNnNl
dFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkRWIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJv
bGxlcjI3ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kRVJLTjNXVEY2U3RyaW5nRQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAxZGRkMTdlLi5iYTE0NjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNTE0LDYgKzM1MTQsOCBAQAogCQlBNTU2
QzI4OTE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NkMyODcxODMyMDZBODAw
OENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTczMkIwQTEzNkExNjFEMDA1QzhEN0MgLyog
RGF0ZUNvbXBvbmVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAq
LzsgfTsKIAkJQTU3MzJCMEIxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTczMkIwOTEzNkEx
NjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLzsgfTsKKwkJQTVBMkFGMEIxODI5NzM0
MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjA5MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVi
dWdnYWJsZS5jcHAgKi87IH07CisJCUE1QTJBRjBDMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVi
dWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi87IH07CiAJCUE1
QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUJCNzg2MTNCOTA0
QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLzsgfTsKIAkJQTVBQzRB
RUYxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUM0QUVEMTgzMzY5
NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCUE1
QUM0QUYwMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQzRBRUUxODMz
Njk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjk2LDYgKzEwMjk4LDgg
QEAKIAkJQTU1NkMyODcxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTczMkIwODEzNkExNjFEMDA1QzhE
N0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGF0ZUNvbXBvbmVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVBMkFGMEExODI5NzM0MzAwREUxNzI5
IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBh
Z2VEZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUJCNzg2MTNC
OTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1QUM0QUVFMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU2MzksNiAr
MTU2NDMsOCBAQAogCQkJCUNEMDgyODVCMTc1NzI1MDgwMEVDNUZCNyAvKiBQYWdlQWN0aXZpdHlB
c3NlcnRpb25Ub2tlbi5oICovLAogCQkJCURBQUNCM0Q5MTZGMjQxNjQwMDY2NjEzNSAvKiBQYWdl
Q29uc29sZS5jcHAgKi8sCiAJCQkJREFBQ0IzREExNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25z
b2xlLmggKi8sCisJCQkJQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxl
LmNwcCAqLywKKwkJCQlBNUEyQUYwQTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUu
aCAqLywKIAkJCQk5MzAyQjBCQzBENzlGODI5MDBDN0VFODMgLyogUGFnZUdyb3VwLmNwcCAqLywK
IAkJCQk5MzAyQjBCRTBENzlGODJDMDBDN0VFODMgLyogUGFnZUdyb3VwLmggKi8sCiAJCQkJN0E2
NzRCRDkwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5jcHAgKi8sCkBA
IC0yMjk3NSw2ICsyMjk4MSw3IEBACiAJCQkJRDAwMEVCQTMxMUJEQUZENDAwQzQ3NzI2IC8qIEZy
YW1lTG9hZGVyU3RhdGVNYWNoaW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEQ1OEVCQjE3QjhG
MTI4MDBDQkRDQTggLyogRWxlbWVudFRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNC
NzdBMzgwQURENzkyNTAwRUE0QjgxIC8qIEZyYW1lTG9hZGVyVHlwZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE1QTJBRjBDMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjU4NDM2ODYwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVl
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyOEQyMTRFMTIxMzFFRjQwMDU1RENGQyAvKiBGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTcyQUY3MDE4MEYyODk1
MDBGQkFEQjkgLyogQ3J5cHRvS2V5VXNhZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjc2OTksNiAr
Mjc3MDYsNyBAQAogCQkJCUIyQUZGQzdGMEQwMEE1QzEwMDMwMDc0RCAvKiBTaW1wbGVGb250RGF0
YU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM1QTFFQTdDMTUyQkNGMDQwMDREMDBCNiAvKiBT
aW1wbGlmeU1hcmt1cENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQwMEQ3QTQxNEEz
RjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTVB
MkFGMEIxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxMzI3RDYxMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDlFOTExQ0MwRUY4NkQ0NzAwOUQwQ0FGIC8qIFNrZXdUcmFuc2Zvcm1P
cGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1MEY5RjIxMkI2RTBFNzAwMDhDODYw
IC8qIFNsaWRlclRodW1iRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA3MGExOWM5Li41YmVlZmJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCkBAIC01Miw2ICs1Miw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIGluZGljYXRl
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGhpZGVJbmRpY2F0ZSgpIHsgfQorCiAgICAgdmlydHVh
bCBib29sIGNhbkNsZWFyQnJvd3NlckNhY2hlKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJCcm93c2VyQ2FjaGUoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2xl
YXJCcm93c2VyQ29va2llcygpIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKaW5kZXggYjMyMTRlZi4u
YTM5NjZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaApAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
MjAsMjIgKzIxLDE2IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsX2gKLSNkZWZpbmUgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsX2gKKyNp
Zm5kZWYgV0VCQ09SRV9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAorI2RlZmluZSBXRUJDT1JF
X0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oCiAKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgOiBwdWJs
aWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgeyB9OworfQogCi1jbGFzcyBJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwgewotcHVibGljOgotICAgIHZpcnR1YWwgfkluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaCkK
KyNlbmRpZiAvLyAhZGVmaW5lZChXRUJDT1JFX0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNGVlYjFkMC4uYzEzYjQwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMzE5LDYgKzMzMTksMTEg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikKICAgICAgICAgbV9jbGllbnQuc2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeSh0cnVlKTsgLy8g
dXBkYXRlIG9ic2VydmVycyB3aXRoIG5ldyBET01Eb2N1bWVudAogICAgICAgICBtX2NsaWVudC5k
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShsb2FkZXItPnRpdGxlKCkpOwogICAgIH0KKworI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpCisg
ICAgICAgIG1fZnJhbWUucGFnZSgpLT5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5n
ZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZUljb25zKEljb25U
eXBlIHR5cGUpCkBAIC0zMzQwLDkgKzMzNDUsMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0
Y2hEaWRDb21taXRMb2FkKCkKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29t
bWl0TG9hZCgmbV9mcmFtZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSk7CiAKLSAgICBpZiAobV9m
cmFtZS5pc01haW5GcmFtZSgpKQorICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAg
ICAgICAgbV9mcmFtZS5wYWdlKCktPmZlYXR1cmVPYnNlcnZlcigpLT5kaWRDb21taXRMb2FkKCk7
Ci0KKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICAgICAgbV9mcmFtZS5wYWdlKCkt
PnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CisjZW5kaWYKKyAgICB9CiB9
CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnRlbGxDbGllbnRBYm91dFBhc3RNZW1vcnlDYWNoZUxvYWRz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRl
eCBjN2EzY2QyLi5hNWVhMTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwCkBAIC04OTIsNyArODkyLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRy
b2xsZXI6OnBvcHVsYXRlKCkKICNlbmRpZiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgICAgICAgICBpZiAoIShmcmFt
ZS0+cGFnZSgpICYmIGZyYW1lLT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aGFzSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIShmcmFtZS0+
cGFnZSgpICYmIChmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmhhc0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KCkgfHwgZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5oYXNSZW1vdGVGcm9udGVuZCgpKSkpIHsKICNlbmRpZgogCiAgICAgICAgICAgICAgICAg
Ly8gSW4gR1RLKyB1bmF2YWlsYWJsZSBpdGVtcyBhcmUgbm90IGhpZGRlbiBidXQgaW5zZW5zaXRp
dmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA4ZDkyOTk3Li5hZTcyMDNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJQYWdlQWN0aXZpdHlBc3NlcnRpb25U
b2tlbi5oIgogI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlLmgi
CisjaW5jbHVkZSAiUGFnZURlYnVnZ2FibGUuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUGx1Z0luQ2xpZW50LmgiCkBAIC0x
ODYsNiArMTg3LDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAg
LCBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZChmYWxzZSkKICAgICAsIG1fcGFnZVRocm90
dGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VUaHJvdHRsZXI+KCp0aGlzKSkKICAgICAsIG1fY29u
c29sZShzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb25zb2xlPigqdGhpcykpCisjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCisgICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQorI2VuZGlmCiAgICAgLCBtX2xhc3RTcGF0aWFs
TmF2aWdhdGlvbkNhbmRpZGF0ZXNDb3VudCgwKSAvLyBOT1RFOiBPbmx5IGNhbGxlZCBmcm9tIElu
dGVybmFscyBmb3IgU3BhdGlhbCBOYXZpZ2F0aW9uIHRlc3RpbmcuCiAgICAgLCBtX2ZyYW1lc0hh
bmRsaW5nQmVmb3JlVW5sb2FkRXZlbnQoMCkKIHsKQEAgLTIwMyw2ICsyMDcsMTAgQEAgUGFnZTo6
UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAjaWZuZGVmIE5ERUJVRwogICAgIHBhZ2VD
b3VudGVyLmluY3JlbWVudCgpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPmluaXQoKTsKKyNlbmRpZgogfQogCiBQYWdl
Ojp+UGFnZSgpCkBAIC0xMjkxLDYgKzEyOTksMjMgQEAgdm9pZCBQYWdlOjphZGRGb290ZXJXaXRo
SGVpZ2h0KGludCBmb290ZXJIZWlnaHQpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorYm9vbCBQYWdlOjpyZW1vdGVJbnNwZWN0aW9uQWxsb3dlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+cmVtb3RlRGVidWdnaW5nQWxsb3dl
ZCgpOworfQorCit2b2lkIFBhZ2U6OnNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKGJvb2wgYWxs
b3dlZCkKK3sKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0Fs
bG93ZWQoYWxsb3dlZCk7Cit9CisKK3ZvaWQgUGFnZTo6cmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRp
b25EaWRDaGFuZ2UoKSBjb25zdAoreworICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+dXBkYXRl
KCk7Cit9CisjZW5kaWYKKwogdm9pZCBQYWdlOjphZGRMYXlvdXRNaWxlc3RvbmVzKExheW91dE1p
bGVzdG9uZXMgbWlsZXN0b25lcykKIHsKICAgICAvLyBJbiB0aGUgZnV0dXJlLCB3ZSBtYXkgd2Fu
dCBhIGZ1bmN0aW9uIHRoYXQgcmVwbGFjZXMgbV9sYXlvdXRNaWxlc3RvbmVzIGluc3RlYWQgb2Yg
anVzdCBhZGRpbmcgdG8gaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGI2NzgzODguLjQ1Y2Q0MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCkBAIC04MCw2ICs4MCw3IEBAIGNsYXNzIE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
cjsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbjsKIGNsYXNz
IFBhZ2VDb25zb2xlOworY2xhc3MgUGFnZURlYnVnZ2FibGU7CiBjbGFzcyBQYWdlR3JvdXA7CiBj
bGFzcyBQYWdlVGhyb3R0bGVyOwogY2xhc3MgUGx1Z0luQ2xpZW50OwpAQCAtMTc4LDYgKzE3OSwx
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNyZW1lbnRTdWJmcmFtZUNvdW50KCkgeyBBU1NFUlQo
bV9zdWJmcmFtZUNvdW50KTsgLS1tX3N1YmZyYW1lQ291bnQ7IH0KICAgICBpbnQgc3ViZnJhbWVD
b3VudCgpIGNvbnN0IHsgY2hlY2tTdWJmcmFtZUNvdW50Q29uc2lzdGVuY3koKTsgcmV0dXJuIG1f
c3ViZnJhbWVDb3VudDsgfQogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgYm9v
bCByZW1vdGVJbnNwZWN0aW9uQWxsb3dlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0UmVtb3RlSW5z
cGVjdGlvbkFsbG93ZWQoYm9vbCBhbGxvd2VkKTsKKyAgICB2b2lkIHJlbW90ZUluc3BlY3Rvcklu
Zm9ybWF0aW9uRGlkQ2hhbmdlKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIENocm9tZSYgY2hyb21l
KCkgY29uc3QgeyByZXR1cm4gKm1fY2hyb21lOyB9CiAgICAgRHJhZ0NhcmV0Q29udHJvbGxlciYg
ZHJhZ0NhcmV0Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICptX2RyYWdDYXJldENvbnRyb2xs
ZXI7IH0KICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtNTMyLDYgKzUzOSwxMCBAQCBwcml2
YXRlOgogICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxQYWdlVGhyb3R0bGVyPiBtX3BhZ2VUaHJv
dHRsZXI7CiAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFBhZ2VDb25zb2xlPiBtX2NvbnNvbGU7
CiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBjb25zdCBzdGQ6OnVuaXF1ZV9w
dHI8UGFnZURlYnVnZ2FibGU+IG1faW5zcGVjdG9yRGVidWdnYWJsZTsKKyNlbmRpZgorCiAgICAg
SGFzaFNldDxTdHJpbmc+IG1fc2VlblBsdWdpbnM7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2Vl
bk1lZGlhRW5naW5lczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVi
dWdnYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDIxZTNlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKQEAgLTAsMCArMSw5NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQYWdlRGVidWdnYWJsZS5oIgorCisjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIK
KyNpbmNsdWRlICJNYWluRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFnZURlYnVnZ2FibGU6
OlBhZ2VEZWJ1Z2dhYmxlKFBhZ2UmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKwor
U3RyaW5nIFBhZ2VEZWJ1Z2dhYmxlOjp0aXRsZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BhZ2Uu
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAg
cmV0dXJuIG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT50aXRsZSgpOworfQorCitTdHJp
bmcgUGFnZURlYnVnZ2FibGU6OnVybCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BhZ2UubWFpbkZy
YW1lKCkuZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgU3RyaW5n
IHVybCA9IG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKKyAg
ICByZXR1cm4gdXJsLmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgiYWJvdXQ6YmxhbmsiKSA6IHVy
bDsKK30KKworYm9vbCBQYWdlRGVidWdnYWJsZTo6aGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCktPmhhc0xvY2FsRnJvbnRl
bmQoKTsKK30KKwordm9pZCBQYWdlRGVidWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCkKK3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyID0gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAg
ICBpbnNwZWN0b3JDb250cm9sbGVyLT5zZXRIYXNSZW1vdGVGcm9udGVuZCh0cnVlKTsKKyAgICBp
bnNwZWN0b3JDb250cm9sbGVyLT5jb25uZWN0RnJvbnRlbmQocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqPihjaGFubmVsKSk7Cit9CisKK3ZvaWQgUGFn
ZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoKQoreworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIgPSBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIGlu
c3BlY3RvckNvbnRyb2xsZXItPmRpc2Nvbm5lY3RGcm9udGVuZCgpOworICAgIGluc3BlY3RvckNv
bnRyb2xsZXItPnNldEhhc1JlbW90ZUZyb250ZW5kKGZhbHNlKTsKK30KKwordm9pZCBQYWdlRGVi
dWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRjaE1l
c3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2FibGU6OnNl
dEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKQoreworICAgIG1fcGFnZS5pbnNwZWN0b3JDb250
cm9sbGVyKCktPnNldEluZGljYXRpbmcoaW5kaWNhdGluZyk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKc2ltaWxhcml0eSBpbmRleCA1MCUKY29w
eSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwu
aApjb3B5IHRvIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaAppbmRleCBiMzIx
NGVmLi42MWM0MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdn
YWJsZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTEwLDMyICsxMCw1NCBAQAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
ICAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiAgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKICAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAogICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAogICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
X2gKLSNkZWZpbmUgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsX2gKKyNpZm5kZWYgUGFnZURlYnVn
Z2FibGVfaAorI2RlZmluZSBQYWdlRGVidWdnYWJsZV9oCiAKLSNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCB7CitjbGFzcyBQYWdlOworCitjbGFzcyBQYWdlRGVidWdnYWJsZSBGSU5BTCA6IHB1
YmxpYyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFBhZ2VEZWJ1Z2dhYmxlKTsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwoKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOworICAgIFBhZ2VEZWJ1Z2dhYmxl
KFBhZ2UmKTsKKyAgICB+UGFnZURlYnVnZ2FibGUoKSB7IH0KKworICAgIHZpcnR1YWwgSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpEZWJ1Z2dhYmxlVHlwZSB0eXBlKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
OjpXZWI7IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBTdHJpbmcgdXJsKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBj
b25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5n
KSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBQYWdlJiBtX3BhZ2U7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWxfaCkKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2VuZGlmIC8v
ICFkZWZpbmVkKFBhZ2VEZWJ1Z2dhYmxlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggODUxNTJiOS4u
MjdlYTQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTExLTE5ICBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1l
bnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6OmluZGljYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVu
dDo6aGlkZUluZGljYXRlKToKKyAgICAgICAgSG9vayB1cCBXZWJWaWV3IGluZGljYXRpb24gdGhy
b3VnaCB0aGlzIG5ldyBwYXRoLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lmg6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3
IHJlbW90ZURlYnVnZ2luZ0VuYWJsZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRSZW1vdGVE
ZWJ1Z2dpbmdFbmFibGVkOl0pOgorICAgICAgICBGSVhNRTogSW5jb21wbGV0ZSBXZWJWaWV3IEFQ
SSB0byBlbmFibGUvZGlzYWJsZSByZW1vdGUgZGVidWdnaW5nLgorCiAyMDEzLTExLTE4ICBEYXZp
ZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBxdWlyayB0byBub3Qg
cmVzcGVjdCBjZW50ZXIgdGV4dC1hbGlnbiB3aGVuIHBvc2l0aW9uaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4
IDU1MWFmN2YuLjgxODFmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC03Myw2ICs3Myw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGhpZGVIaWdobGlnaHQoKSBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgdm9pZCBpbmRpY2F0ZSgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBoaWRlSW5kaWNhdGUoKSBPVkVSUklERTsKKwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wpIE9WRVJSSURFOwog
CiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKSBP
VkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbQppbmRleCBlNDM4YzZkLi41NGIyZjI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1t
CkBAIC0xOTcsNiArMTk3LDE2IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWRlSGlnaGxp
Z2h0KCkKICAgICBbbV9oaWdobGlnaHRlci5nZXQoKSBoaWRlSGlnaGxpZ2h0XTsKIH0KIAordm9p
ZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmluZGljYXRlKCkKK3sKKyAgICBbbV93ZWJWaWV3IHNldElu
ZGljYXRpbmdGb3JSZW1vdGVJbnNwZWN0b3I6WUVTXTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6OmhpZGVJbmRpY2F0ZSgpCit7CisgICAgW21fd2ViVmlldyBzZXRJbmRpY2F0aW5nRm9y
UmVtb3RlSW5zcGVjdG9yOk5PXTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNl
dFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQogewogICAgIFdlYkluc3BlY3RvciAqaW5z
cGVjdG9yID0gW21fd2ViVmlldyBpbnNwZWN0b3JdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcuaAppbmRleCA1MDNlZjNhLi5hYTRlYWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcuaApAQCAtNjU3LDYgKzY1NywxOSBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlZpZXdQcm9ncmVz
c0ZpbmlzaGVkTm90aWZpY2F0aW9uOwogKi8KIC0gKE5TSW1hZ2UgKiltYWluRnJhbWVJY29uOwog
CisvKiEKKyAgICBAbWV0aG9kIHJlbW90ZURlYnVnZ2luZ0VuYWJsZWQKKyAgICBAcmVzdWx0IFJl
dHVybnMgd2hldGhlciBvciBub3QgdGhpcyBXZWJWaWV3IGNhbiBiZSByZW1vdGVseSBkZWJ1Z2dl
ZC4KKyovCistIChCT09MKXJlbW90ZURlYnVnZ2luZ0VuYWJsZWQ7CisKKy8qIQorICAgIEBtZXRo
b2Qgc2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbjoKKyAgICBAcGFyYW0gZW5hYmxlIFRoZSBuZXcg
cmVtb3RlIGRlYnVnZ2luZyBwZXJtaXNzaW9uIGZvciB0aGlzIFdlYlZpZXcuCisgICAgQGFic3Ry
YWN0IFNldHMgdGhlIHJlbW90ZSBkZWJ1Z2dpbmcgcGVybWlzc2lvbiBvZiB0aGlzIFdlYlZpZXcu
CisqLworLSAodm9pZClzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkOihCT09MKWVuYWJsZWQ7CisK
IEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYWFiNDYzNy4u
NTVjMWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzkyLDcgKzM5
Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIHdlYlZpZXdJc09wZW5bXSA9ICJBdCBsZWFzdCBvbmUg
V2ViVmlldyBpcyBzdGlsbCBvcGVuLiI7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQotc3RhdGljIEJPT0wgYXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yID0gWUVTOworc3Rh
dGljIEJPT0wgYXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yID0gTk87CiAjZW5kaWYKIAogQGludGVy
ZmFjZSBOU09iamVjdCAoV2ViVmFsaWRhdGVXaXRob3V0RGVsZWdhdGUpCkBAIC03OTgsNiArNzk4
LDEwIEBAIHN0YXRpYyBib29sIHNob3VsZFVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5k
QmVoYXZpb3IoKQogICAgIFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyhfcHJpdmF0ZS0+cGFn
ZSwgbmV3IFdlYlVzZXJNZWRpYUNsaWVudChzZWxmKSk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQorICAgIF9wcml2YXRlLT5wYWdlLT5zZXRSZW1vdGVJbnNwZWN0aW9u
QWxsb3dlZCh0cnVlKTsKKyNlbmRpZgorCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldENhblN0YXJ0
TWVkaWEoW3NlbGYgd2luZG93XSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0
TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKFtbc2VsZiBwcmVmZXJlbmNlc10gX2xvY2FsU3RvcmFn
ZURhdGFiYXNlUGF0aF0pOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFVzZUxl
Z2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3Ioc2hvdWxkVXNlTGVnYWN5QmFja2dy
b3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpKTsKQEAgLTQ4MjcsNiArNDgzMSwxNyBAQCBzdGF0
aWMgV2ViRnJhbWUgKmluY3JlbWVudEZyYW1lKFdlYkZyYW1lICpmcmFtZSwgV2ViRmluZE9wdGlv
bnMgb3B0aW9ucyA9IDApCiAgICAgcmV0dXJuIFtwcmV2aW91c1ZpZXcgcHJldmlvdXNWYWxpZEtl
eVZpZXddOwogfQogCistIChCT09MKXJlbW90ZURlYnVnZ2luZ0VuYWJsZWQKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHZpYSBXZWJDb3JlOjpwYWdlIC8gc2V0dGluZ3MgQVBJLgorICAgIHJl
dHVybiBOTzsKK30KKworLSAodm9pZClzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkOihCT09MKWVu
YWJsZWQKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHZpYSBXZWJDb3JlOjpwYWdlIC8gc2V0
dGluZ3MgQVBJLgorfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJJQkFj
dGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggODk2ZDZiZi4uMmJkMTUzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVn
Z2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW46CisgICAgICAgIEFs
bG93IHRoZSBXZWJQcm9jZXNzIHRvIGFjY2VzcyB0aGUgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3Ii
IG5hbWVkCisgICAgICAgIFhQQyBzZXJ2aWNlIHRvIGV4cG9zZSBpdHMgV2ViQ29yZTo6UGFnZSdz
IHRvIHJlbW90ZSBkZWJ1Z2dlcnMuCisKIDIwMTMtMTEtMTggIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgV2ViTmF2aWdhdGlvbkRhdGEgdG8g
QVBJOjpOYXZpZ2F0aW9uRGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDM1NWViOWIuLmY3ZTQyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM0MSw2ICszNDEsMTAgQEAgV2Vi
UGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgV2ViQ29yZTo6cHJvdmlkZURldmljZVByb3hpbWl0eVRv
KG1fcGFnZS5nZXQoKSwgbmV3IFdlYkRldmljZVByb3hpbWl0eUNsaWVudCh0aGlzKSk7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIG1fcGFnZS0+c2V0UmVtb3Rl
SW5zcGVjdGlvbkFsbG93ZWQodHJ1ZSk7CisjZW5kaWYKKwogICAgIG1fcGFnZS0+c2V0Q2FuU3Rh
cnRNZWRpYShmYWxzZSk7CiAgICAgbV9tYXlTdGFydE1lZGlhV2hlbkluV2luZG93ID0gcGFyYW1l
dGVycy5tYXlTdGFydE1lZGlhV2hlbkluV2luZG93OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgppbmRleCA5MGJiMGU2Li5j
NDcyYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5X
ZWJQcm9jZXNzLnNiLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29tLmFwcGxl
LldlYlByb2Nlc3Muc2IuaW4KQEAgLTEzOSw2ICsxMzksMTAgQEAKIAogI2VuZGlmCiAKKzs7IFJl
bW90ZSBXZWIgSW5zcGVjdG9yCisoYWxsb3cgbWFjaC1sb29rdXAKKyAgICAgICAoZ2xvYmFsLW5h
bWUgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiKSkKKwogOzsgVmFyaW91cyBzZXJ2aWNlcyByZXF1
aXJlZCBieSBBcHBLaXQgYW5kIG90aGVyIGZyYW1ld29ya3MKIChhbGxvdyBtYWNoLWxvb2t1cAog
ICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLkRpc2tBcmJpdHJhdGlvbi5kaXNrYXJiaXRy
YXRpb25kIikK
</data>
<flag name="review"
          id="240466"
          type_id="1"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217352</attachid>
            <date>2013-11-19 16:17:06 -0800</date>
            <delta_ts>2013-11-21 12:26:44 -0800</delta_ts>
            <desc>[PATCH] Part 3 - Remove old WebInspector/mac implementation</desc>
            <filename>part3.patch</filename>
            <type>text/plain</type>
            <size>95575</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggOTg4ODE4OC4uNmVlN2MwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVj
dGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYxMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKIDIwMTMtMTEtMTggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtFRkxdIEFkZCBFV2ViS2l0Q29uZmlnLmNtYWtlIGFuZCBFV2ViS2l0MkNv
bmZpZy5jbWFrZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYjZiNGJiNy4uNGNkNGNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzcsMjQgKzM3NywxMSBAQAogCQlBMTBD
MUQ4RDE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld1BsYWNlaG9sZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTBDMUQ4ODE4MjAzMDVFMDAz
Njg4M0EgLyogV2ViUERGVmlld1BsYWNlaG9sZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTEwQzFEOEUxODIwMzA1RTAwMzY4ODNBIC8qIFdl
YlBERlZpZXdQbGFjZWhvbGRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExMEMxRDg5MTgyMDMwNUUwMDM2ODgzQSAvKiBXZWJQREZWaWV3UGxhY2Vo
b2xkZXIubW0gKi87IH07CiAJCUExN0ExMUIxMTgwREM4NDgwMEU1NDk4QyAvKiBXZWJQbHVnaW5Q
YWNrYWdlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE3QTExQjAxODBEQzg0ODAwRTU0OThDIC8qIFdlYlBsdWdpblBhY2thZ2VQcml2YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTUy
MTRGQzcxM0I5NzVDODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MjE0RkMxMTNCOTc1
QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmggKi87IH07Ci0JCUE1MjE0
RkM4MTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUyMTRGQzIxM0I5NzVD
ODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gKi87IH07Ci0JCUE1MjIw
OUY4MTNDNTNFNzUwMDRCQTdCMSAvKiBXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTIyMDlGNzEzQzUz
RTc1MDA0QkE3QjEgLyogV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1NUUyMEZGMTRENzI2NEMw
MDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NUUyMEZE
MTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNv
bnRyb2xsZXIuaCAqLzsgfTsKLQkJQTU1RTIxMDAxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3Bl
Y3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NUUyMEZFMTRENzI2NEMwMDMxNTQ5RSAv
KiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gKi87IH07
CiAJCUE1NjA5NDY2MTREOEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRpY2F0ZUxheWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTYwOTQ2NDE0RDhBRDI2
MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVMYXllci5oICovOyB9OwogCQlBNTYwOTQ2NzE0RDhBRDI2
MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVMYXllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NjA5NDY1MTREOEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRp
Y2F0ZUxheWVyLm1tICovOyB9OwogCQlBNTY4N0JEQTEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9k
ZUhpZ2hsaWdodGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTY4N0JEODEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLmggKi87
IH07CiAJCUE1Njg3QkRCMTM1Qjc5MUEwMDc0Q0JDQiAvKiBXZWJOb2RlSGlnaGxpZ2h0ZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTY4N0JEOTEz
NUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLm1tICovOyB9OwotCQlBNTdDMjhB
NzEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0MyOEEx
MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5o
ICovOyB9OwotCQlBNTdDMjhBODEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTdDMjhBMjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb24ubW0gKi87IH07Ci0JCUE1N0MyOEE5MTNCQUE1QUQwMDcwQUNBQiAv
KiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1N0MyOEEzMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2
ZXIuaCAqLzsgfTsKLQkJQTU3QzI4QUExM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNl
cnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
N0MyOEE0MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gKi87IH07Ci0J
CUE1N0MyOEFCMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhBNTEzQkFB
NUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1N0MyOEFDMTNCQUE1QUQwMDcwQUNB
QiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhBNjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVj
dG9yWFBDV3JhcHBlci5tICovOyB9OwogCQlBNTdFMkYyNDEyMDc0OUU2MDAwNDhERjMgLyogV2Vi
UXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTdFMkYyMjEyMDc0OUU2MDAwNDhERjMgLyogV2ViUXVvdGFNYW5hZ2VyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTU3RUI3OEYxM0I5
N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdFQjc4RDEzQjk3QTRFMDA4RDY5
MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCAqLzsgfTsKLQkJQTU3RUI3OTAxM0I5
N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RUI3OEUxM0I5N0E0RTAwOEQ2
OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tICovOyB9OwogCQlBNThBNTc5OTE0
M0U3MjcwMDAxMjVGNTAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OEE1Nzk3MTQzRTcyNzAwMDEy
NUY1MCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oICovOyB9OwogCQlBNThBNTc5QTE0
M0U3MjcwMDAxMjVGNTAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNThBNTc5ODE0M0U3MjcwMDAx
MjVGNTAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0gKi87IH07CiAJCUE1REVGQzBB
MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbi5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVGQzA3MTFENTMzMUMwMDg4NTI3MyAv
KiBXZWJTZWN1cml0eU9yaWdpbi5tbSAqLzsgfTsKQEAgLTc3NiwyNCArNzYzLDExIEBACiAJCUEx
MEMxRDg5MTgyMDMwNUUwMDM2ODgzQSAvKiBXZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJQREZWaWV3UGxhY2Vob2xkZXIu
bW07IHBhdGggPSBpb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW07IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQTEwQzFEOEYxODIwMzA3RDAwMzY4ODNBIC8qIFdlYktp
dC5pT1MuZXhwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5leHBvcnRzOyBuYW1lID0gV2ViS2l0LmlP
Uy5leHA7IHBhdGggPSBpb3MvV2ViS2l0LmlPUy5leHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExN0ExMUIwMTgwREM4NDgwMEU1NDk4QyAvKiBXZWJQbHVnaW5QYWNrYWdlUHJpdmF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQbHVnaW5QYWNrYWdlUHJp
dmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTIxNEZDMTEzQjk3NUM4MDAw
MDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmg7IHBhdGggPSByZW1vdGUv
V2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlBNTIxNEZDMjEzQjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclJl
bW90ZUNoYW5uZWwubW07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUyMjA5RjcxM0M1M0U3NTAwNEJBN0Ix
IC8qIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oOyBwYXRoID0gcmVtb3Rl
L1dlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQTU1RTIwRkQxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaDsgcGF0aCA9
IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU1RTIwRkUxNEQ3MjY0QzAwMzE1NDlFIC8q
IFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1NjA5NDY0MTREOEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRpY2F0ZUxheWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluZGljYXRlTGF5ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU2MDk0NjUxNEQ4QUQyNjAwNzk5QThBIC8qIFdlYklu
ZGljYXRlTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJJbmRpY2F0ZUxheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTY4N0JE
ODEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vZGVIaWdobGlnaHRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNTY4N0JEOTEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdo
dGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTm9kZUhp
Z2hsaWdodGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdDMjhBMTEzQkFB
NUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nv
bm5lY3Rpb24uaDsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdDMjhBMjEzQkFBNUFEMDA3
MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbi5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTMxM0JBQTVB
RDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXIuaDsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0
b3JTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTQxM0JBQTVB
RDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclNlcnZlci5tbTsgcGF0aCA9IHJlbW90ZS9X
ZWJJbnNwZWN0b3JTZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0My
OEE1MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclhQQ1dyYXBwZXIuaDsgcGF0aCA9
IHJlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUE1N0MyOEE2MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVy
Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgbmFtZSA9IFdlYkluc3BlY3RvclhQQ1dy
YXBwZXIubTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLm07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0UyRjIyMTIwNzQ5RTYwMDA0OERGMyAvKiBXZWJRdW90
YU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUXVvdGFNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0VCNzhEMTNCOTdBNEUwMDhE
NjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oOyBwYXRoID0gcmVtb3Rl
L1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUE1N0VCNzhFMTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3Ry
eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3Rv
ckNsaWVudFJlZ2lzdHJ5Lm1tOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lz
dHJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNThBNTc5NzE0M0U3MjcwMDAx
MjVGNTAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTU4QTU3OTgxNDNFNzI3MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1REVGQzA3MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNlY3VyaXR5T3JpZ2lu
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1MCw3ICsxMDI0LDYgQEAKIAkJ
MUM2OEY2M0YwOTVCNUY5QzAwQzI5ODRFIC8qIFdlYkluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTUyMTRGQkYxM0I5NzU5NjAwMDAxNUVG
IC8qIHJlbW90ZSAqLywKIAkJCQk1RDdCRjgxMjBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVj
dG9yLmggKi8sCiAJCQkJNUQ3QkY4MTMwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5t
bSAqLywKIAkJCQlCODA0MTc2RDEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRl
bmQuaCAqLywKQEAgLTE1MDYsMjYgKzE0NzksNiBAQAogCQkJbmFtZSA9IGlvczsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCUE1MjE0RkJGMTNCOTc1OTYwMDAwMTVFRiAvKiBy
ZW1vdGUgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUE1
N0VCNzhEMTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oICov
LAotCQkJCUE1N0VCNzhFMTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdp
c3RyeS5tbSAqLywKLQkJCQlBNTIyMDlGNzEzQzUzRTc1MDA0QkE3QjEgLyogV2ViSW5zcGVjdG9y
UmVsYXlEZWZpbml0aW9ucy5oICovLAotCQkJCUE1MjE0RkMxMTNCOTc1QzgwMDAwMTVFRiAvKiBX
ZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmggKi8sCi0JCQkJQTUyMTRGQzIxM0I5NzVDODAwMDAx
NUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gKi8sCi0JCQkJQTU3QzI4QTMxM0JB
QTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlci5oICovLAotCQkJCUE1N0MyOEE0MTNC
QUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gKi8sCi0JCQkJQTU3QzI4QTEx
M0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmgg
Ki8sCi0JCQkJQTU3QzI4QTIxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uLm1tICovLAotCQkJCUE1NUUyMEZEMTRENzI2NEMwMDMxNTQ5RSAvKiBX
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCAqLywKLQkJCQlB
NTVFMjBGRTE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb25Db250cm9sbGVyLm1tICovLAotCQkJCUE1N0MyOEE1MTNCQUE1QUQwMDcwQUNBQiAvKiBX
ZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggKi8sCi0JCQkJQTU3QzI4QTYxM0JBQTVBRDAwNzBBQ0FC
IC8qIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIubSAqLywKLQkJCSk7Ci0JCQluYW1lID0gcmVtb3Rl
OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJRjUyQ0E2QkQwMkRGOUQwRjAx
ODYzNUNBIC8qIEhUTUwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtMTgyMiwxNSArMTc3NSw4IEBACiAJCQkJQTEwQzFENjQxODIwMzAwRTAwMzY4ODNBIC8q
IFdlYkNocm9tZUNsaWVudElPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ3QkY4MTQwQzJBMUQ5
MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDY2OTNEREMw
QkZCQTg1MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQTU3RUI3OEYxM0I5N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCODA0MTc2RjEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5z
cGVjdG9yRnJvbnRlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBOEZGMEQxMTA3NTAyNEEwMEE4
MEEwOCAvKiBXZWJJbnNwZWN0b3JQcml2YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTIyMDlG
ODEzQzUzRTc1MDA0QkE3QjEgLyogV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJQTUyMTRGQzcxM0I5NzVDODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJl
bW90ZUNoYW5uZWwuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1N0MyOEE5MTNCQUE1QUQwMDcwQUNB
QiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1N0MyOEE3MTNC
QUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQTU1RTIwRkYxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3Rv
clNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QTU3QzI4QUIxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzOTgxMDQyMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJKYXZhU2NyaXB0
VGV4dElucHV0UGFuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RDFEQ0E4MTA2NTkyOEMwMDY4
RjdFRiAvKiBXZWJKU1BERkRvYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwODUwODI0QkYw
MTAwOERGMDM4IC8qIFdlYktleUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjcyLDEz
ICsyMjE4LDcgQEAKIAkJCQk1RDdCRjgxNTBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9y
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDY2OTNEREQwQkZCQTg1MjAwMjE2MDcyIC8qIFdlYklu
c3BlY3RvckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDN0IwQzY2MEVCMjQ2NEQwMEEy
ODUwMiAvKiBXZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNTdF
Qjc5MDEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0gaW4g
U291cmNlcyAqLywKIAkJCQlCODA0MTc3MDEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9y
RnJvbnRlbmQubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNTIxNEZDODEzQjk3NUM4MDAwMDE1RUYg
LyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbSBpbiBTb3VyY2VzICovLAotCQkJCUE1N0My
OEFBMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gaW4gU291cmNlcyAq
LywKLQkJCQlBNTdDMjhBODEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNTVFMjEwMDE0RDcyNjRDMDAz
MTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1t
IGluIFNvdXJjZXMgKi8sCi0JCQkJQTU3QzI4QUMxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3Bl
Y3RvclhQQ1dyYXBwZXIubSBpbiBTb3VyY2VzICovLAogCQkJCUExMEMxRDE5MTgyMDJGOUMwMDM2
ODgzQSAvKiBXZWJEZWZhdWx0Rm9ybURlbGVnYXRlLm0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4
MTBFNDA4MjRCRjAxMDA4REYwMzggLyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm0gaW4g
U291cmNlcyAqLywKIAkJCQlBMTBDMUQ4QjE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld0lP
Uy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwppbmRleCA1NTJlNzZiLi41NGFhY2JiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBS
ZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZh
U2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisKIDIwMTMtMTAtMjUg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVh
bSBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikgYW5kIGVuYWJsZSBvbiBpT1MgYW5kIE1hYwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudENGLmNwcAppbmRleCBjYTIyZmRlLi4xMjBlMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAt
OTEsMTIgKzkxLDEwIEBAIHN0YXRpYyB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgU3RyaW5nJiBzZXR0aW5nKQogICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShj
cmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpLmdldCgpLCBzZXR0aW5nLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKIH0KIAotI2lmICFF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVz
c2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiBkb0Rp
c3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKG1fZnJvbnRlbmRQYWdlLCBtZXNzYWdlKTsKIH0K
LSNlbmRpZgogCiBib29sIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yQXR0YWNoRGlzYWJs
ZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IGQwYTc4OTYuLjhkOGI2ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVj
b3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIElu
c3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENv
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYx
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViSW5zcGVj
dG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xp
ZW50OjppbnNwZWN0b3JEZXN0cm95ZWQpOgorCiAyMDEzLTExLTE4ICBCcmlhbiBKLiBCdXJnICA8
YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KIAogICAgICAgICBDb25zb2xpZGF0ZSB2YXJpb3VzIGZy
YW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQppbmRleCA1YWNjMmVl
Li5jYTc1ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCkBAIC00MiwxMSArNDIsNiBAQAogI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgog
Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGll
bnRSZWdpc3RyeS5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oIgotI2Vu
ZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXZWJJbnNwZWN0b3JDbGllbnQ6Oldl
Ykluc3BlY3RvckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQpAQCAtNTQsMjMgKzQ5LDExIEBAIFdl
Ykluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAg
ICAgLCBtX2hpZ2hsaWdodGVyKEFkb3B0TlMsIFtbV2ViTm9kZUhpZ2hsaWdodGVyIGFsbG9jXSBp
bml0V2l0aEluc3BlY3RlZFdlYlZpZXc6d2ViVmlld10pCiAgICAgLCBtX2Zyb250ZW5kUGFnZSgw
KQogICAgICwgbV9mcm9udGVuZENsaWVudCgwKQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotICAgICwgbV9yZW1vdGVDaGFubmVsKDApCi0gICAgLCBtX3BhZ2VJZCgwKQotI2VuZGlmCiB7
Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRS
ZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gcmVnaXN0ZXJDbGllbnQ6dGhpc107Ci0jZW5kaWYKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiB7Ci0jaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3Ry
eSBzaGFyZWRSZWdpc3RyeV0gdW5yZWdpc3RlckNsaWVudDp0aGlzXTsKLSAgICB0ZWFyZG93blJl
bW90ZUNvbm5lY3Rpb24odHJ1ZSk7Ci0jZW5kaWYKLQogICAgIGRlbGV0ZSB0aGlzOwogfQogCkBA
IC0xMTYsOTQgKzk5LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGlu
Z0Zvck5vZGUoYm9vbCBlbmFibGVkKQogICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25Pbk1haW5UaHJlYWRXaXRoTmFtZTpXZWJJbnNw
ZWN0b3JEaWRTdG9wU2VhcmNoaW5nRm9yTm9kZSBvYmplY3Q6aW5zcGVjdG9yXTsKIH0KIAotI3By
YWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBSZW1vdGUgV2ViIEluc3BlY3RvciBJbXBsZW1lbnRh
dGlvbgotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi1ib29sIFdlYkluc3BlY3RvckNs
aWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAg
ICBpZiAobV9yZW1vdGVDaGFubmVsKSB7Ci0gICAgICAgIFttX3JlbW90ZUNoYW5uZWwgc2VuZE1l
c3NhZ2VUb0Zyb250ZW5kOm1lc3NhZ2VdOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0K
LSAgICAvLyBpT1MgZG9lcyBub3QgaGF2ZSBhIGxvY2FsIGluc3BlY3Rvci4gVGhlcmUgc2hvdWxk
IGJlIG5vIHdheSB0byByZWFjaCB0aGlzLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0KLSAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250
ZW5kUGFnZShtX2Zyb250ZW5kUGFnZSwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9y
Q2xpZW50OjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0g
ICAgQVNTRVJUKG1fcmVtb3RlQ2hhbm5lbCk7Ci0KLSAgICBQYWdlKiBwYWdlID0gY29yZShtX3dl
YlZpZXcpOwotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kKG1lc3NhZ2UpOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2V0
dXBSZW1vdGVDb25uZWN0aW9uKFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKnJlbW90ZUNoYW5u
ZWwpCi17Ci0gICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIGxvY2FsIHNlc3Npb24sIGRvIG5vdCBh
bGxvdyBhIHJlbW90ZSBzZXNzaW9uLgotICAgIGlmIChoYXNMb2NhbFNlc3Npb24oKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIHJlbW90ZSBzZXNz
aW9uLCBkbyBub3QgYWxsb3cgYSBuZXcgcmVtb3RlIHNlc3Npb24uCi0gICAgaWYgKG1fcmVtb3Rl
Q2hhbm5lbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9yZW1vdGVDaGFubmVsID0g
cmVtb3RlQ2hhbm5lbDsKLQotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmlldyk7Ci0gICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25uZWN0RnJvbnRlbmQodGhpcyk7Ci0KLSAg
ICAvLyBGb3JjZSBkZXZlbG9wZXIgZXh0cmFzIHRvIGJlIGVuYWJsZWQgaW4gV2ViQ29yZSB3aGVu
IGEgcmVtb3RlIGNvbm5lY3Rpb24gc3RhcnRzLgotICAgIGlmIChwYWdlLT5zZXR0aW5ncygpKQot
ICAgICAgICBwYWdlLT5zZXR0aW5ncygpLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUp
OwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojp0ZWFy
ZG93blJlbW90ZUNvbm5lY3Rpb24oYm9vbCBmcm9tTG9jYWxTaWRlKQotewotICAgIEFTU0VSVChX
ZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7Ci0gICAgaWYgKCFtX3JlbW90ZUNoYW5uZWwp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChmcm9tTG9jYWxTaWRlKQotICAgICAgICBbbV9y
ZW1vdGVDaGFubmVsIGNsb3NlRnJvbUxvY2FsU2lkZV07Ci0KLSAgICBQYWdlKiBwYWdlID0gY29y
ZShtX3dlYlZpZXcpOwotICAgIGlmIChwYWdlKSB7Ci0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7Ci0KLSAgICAgICAgLy8gUmVzdG9yZSBk
ZXZlbG9wZXIgZXh0cmFzIHNldHRpbmcgaW4gV2ViQ29yZS4KLSAgICAgICAgaWYgKHBhZ2UgJiYg
cGFnZS0+c2V0dGluZ3MoKSkKLSAgICAgICAgICAgIHBhZ2UtPnNldHRpbmdzKCktPnNldERldmVs
b3BlckV4dHJhc0VuYWJsZWQoW1ttX3dlYlZpZXcgcHJlZmVyZW5jZXNdIGRldmVsb3BlckV4dHJh
c0VuYWJsZWRdKTsKLSAgICB9Ci0KLSAgICBpZiAoZnJvbUxvY2FsU2lkZSkKLSAgICAgICAgW21f
cmVtb3RlQ2hhbm5lbCByZWxlYXNlXTsKLQotICAgIG1fcmVtb3RlQ2hhbm5lbCA9IDA7Ci19Ci0K
LWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpoYXNMb2NhbFNlc3Npb24oKSBjb25zdAotewotICAg
IHJldHVybiBtX2Zyb250ZW5kUGFnZSAhPSAwOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVu
dDo6Y2FuQmVSZW1vdGVseUluc3BlY3RlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX3dlYlZp
ZXcgY2FuQmVSZW1vdGVseUluc3BlY3RlZF07Ci19Ci0KLVdlYlZpZXcgKldlYkluc3BlY3RvckNs
aWVudDo6aW5zcGVjdGVkV2ViVmlldygpCi17Ci0gICAgcmV0dXJuIG1fd2ViVmlldzsKLX0KLSNl
bmRpZgotCiAKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQgSW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAyN2VhNDhkLi41N2Jj
YjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0zLDYgKzMsNTQgQEAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1l
bnQgaW50byBKYXZhU2NyaXB0Q29yZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCiAKKyAgICAgICAgUmVtb3ZlIHRoZSBvbGQgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbXBsZW1lbnRhdGlvbi4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3Rv
ckNsaWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3ll
ZCk6CisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdp
c3RyeS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVj
dG9yQ2xpZW50UmVnaXN0cnkubW06IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3Jl
bW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmg6IFJlbW92ZWQuCisgICAgICAgICog
V2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmg6IFJlbW92ZWQu
CisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVs
Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
U2VydmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNw
ZWN0b3JTZXJ2ZXIubW06IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9X
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24u
bW06IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JT
ZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29u
dHJvbGxlci5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYklu
c3BlY3RvclhQQ1dyYXBwZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVt
b3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIubTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXQu
ZXhwOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
Y29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAg
KCtbV2ViVmlldyBfZW5hYmxlUmVtb3RlSW5zcGVjdG9yXSk6CisgICAgICAgICgrW1dlYlZpZXcg
X2Rpc2FibGVSZW1vdGVJbnNwZWN0b3JdKToKKyAgICAgICAgKCtbV2ViVmlldyBfZGlzYWJsZUF1
dG9TdGFydFJlbW90ZUluc3BlY3Rvcl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9pc1JlbW90ZUlu
c3BlY3RvckVuYWJsZWRdKToKKyAgICAgICAgKCtbV2ViVmlldyBfaGFzUmVtb3RlSW5zcGVjdG9y
U2Vzc2lvbl0pOgorICAgICAgICAoLVtXZWJWaWV3IGFsbG93c1JlbW90ZUluc3BlY3Rpb25dKToK
KyAgICAgICAgKC1bV2ViVmlldyBzZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uOl0pOgorICAgICAg
ICAoLVtXZWJWaWV3IHNldEluZGljYXRpbmdGb3JSZW1vdGVJbnNwZWN0b3I6XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgc2V0SG9zdEFwcGxpY2F0aW9uQnVuZGxlSWQ6bmFtZTpdKToKKyAgICAgICAg
KC1bV2ViVmlldyBfZGlkQ29tbWl0TG9hZEZvckZyYW1lOl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlld0RhdGEuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAg
ICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGRl
YWxsb2NdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKworMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVt
b3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNj
cmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDYxMworCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCiAgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmlu
ZGV4IDE4NzVhYzAuLjZlNzhhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMzgsMTAgKzEzOCw2
IEBACiAjaW1wb3J0ICJXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcuaCIKICNlbmRpZgogCi0j
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXIu
aCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKQEAgLTYyMSwxMiArNjE3LDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGkK
ICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1bmMpCiAg
ICAgICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgICAgICBDYWxsRnJh
bWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1
bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTop
LCAoTlNTdHJpbmcgKil0aXRsZS5zdHJpbmcoKSwgbV93ZWJGcmFtZS5nZXQoKSk7Ci0KLSNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBCT09MIGlzTWFpbkZyYW1lID0gW3dlYlZpZXcg
bWFpbkZyYW1lXSA9PSBtX3dlYkZyYW1lLmdldCgpOwotICAgIGlmIChpc01haW5GcmFtZSkKLSAg
ICAgICAgW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gcHVzaExpc3RpbmddOwot
I2VuZGlmCiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDgxODFmYjQuLmY5MTg3OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oCkBAIC04OCwyMiArODgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbGVh
c2VGcm9udGVuZCgpOwogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgdm9pZCBz
ZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKTsKLQotICAgIGJvb2wgc2V0dXBSZW1v
dGVDb25uZWN0aW9uKFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKnJlbW90ZUNoYW5uZWwpOwot
ICAgIHZvaWQgdGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKGJvb2wgZnJvbUxvY2FsU2lkZSk7Ci0K
LSAgICB1bnNpZ25lZCBwYWdlSWQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJZDsgfQotICAgIHZv
aWQgc2V0UGFnZUlkKHVuc2lnbmVkIHBhZ2VJZCkgeyBtX3BhZ2VJZCA9IHBhZ2VJZDsgfQotCi0g
ICAgYm9vbCBoYXNMb2NhbFNlc3Npb24oKSBjb25zdDsKLQotICAgIGJvb2wgY2FuQmVSZW1vdGVs
eUluc3BlY3RlZCgpIGNvbnN0OwotCi0gICAgV2ViVmlldyAqaW5zcGVjdGVkV2ViVmlldygpOwot
I2VuZGlmCi0KIHByaXZhdGU6CiAgICAgUGFzc093blB0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4gY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpOwogCkBA
IC0xMTEsMTEgKzk1LDYgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8V2ViTm9kZUhpZ2hsaWdo
dGVyPiBtX2hpZ2hsaWdodGVyOwogICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQYWdlOwog
ICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50OwotCi0jaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAq
bV9yZW1vdGVDaGFubmVsOwotICAgIHVuc2lnbmVkIG1fcGFnZUlkOwotI2VuZGlmCiB9OwogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbQppbmRleCA1NGIyZjI1Li5iNDMxOTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC01NSwx
MSArNTUsNiBAQAogI2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L0Jhc2U2NC5oPgogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0jaW1wb3J0ICJXZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hh
bm5lbC5oIgotI2VuZGlmCi0KIFNPRlRfTElOS19TVEFHRURfRlJBTUVXT1JLKFdlYkluc3BlY3Rv
clVJLCBQcml2YXRlRnJhbWV3b3JrcywgQSkKIAogLy8gVGhlIG1hcmdpbiBmcm9tIHRoZSB0b3Ag
YW5kIHJpZ2h0IG9mIHRoZSBkb2NrIGJ1dHRvbiAoc2FtZSBhcyB0aGUgZnVsbCBzY3JlZW4gYnV0
dG9uKS4KQEAgLTEzNSwyMyArMTMwLDExIEBAIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVj
dG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgLCBtX2hpZ2hsaWdodGVyKGFkb3B0TlMo
W1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzp3ZWJW
aWV3XSkpCiAgICAgLCBtX2Zyb250ZW5kUGFnZSgwKQogICAgICwgbV9mcm9udGVuZENsaWVudCgw
KQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9yZW1vdGVDaGFubmVsKDAp
Ci0gICAgLCBtX3BhZ2VJZCgwKQotI2VuZGlmCiB7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gcmVn
aXN0ZXJDbGllbnQ6dGhpc107Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6
Omluc3BlY3RvckRlc3Ryb3llZCgpCiB7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0g
ICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gdW5yZWdpc3Rl
ckNsaWVudDp0aGlzXTsKLSAgICB0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24odHJ1ZSk7Ci0jZW5k
aWYKLQogICAgIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKICAgICBkZWxldGUgdGhpczsKIH0K
QEAgLTIyNSw3OCArMjA4LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnJlbGVhc2VGcm9u
dGVuZCgpCiAgICAgbV9mcm9udGVuZFBhZ2UgPSAwOwogfQogCi0jaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBpZiAobV9yZW1vdGVDaGFubmVsKSB7Ci0g
ICAgICAgIFttX3JlbW90ZUNoYW5uZWwgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOm1lc3NhZ2VdOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3Nh
Z2VPbkZyb250ZW5kUGFnZShtX2Zyb250ZW5kUGFnZSwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCi17Ci0gICAgQVNTRVJUKG1fcmVtb3RlQ2hhbm5lbCk7Ci0KLSAgICBQYWdlKiBwYWdlID0g
Y29yZShtX3dlYlZpZXcpOwotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNs
aWVudDo6c2V0dXBSZW1vdGVDb25uZWN0aW9uKFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKnJl
bW90ZUNoYW5uZWwpCi17Ci0gICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIGxvY2FsIHNlc3Npb24s
IGRvIG5vdCBhbGxvdyBhIHJlbW90ZSBzZXNzaW9uLgotICAgIGlmIChoYXNMb2NhbFNlc3Npb24o
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIHJl
bW90ZSBzZXNzaW9uLCBkbyBub3QgYWxsb3cgYSBuZXcgcmVtb3RlIHNlc3Npb24uCi0gICAgaWYg
KG1fcmVtb3RlQ2hhbm5lbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQVNTRVJUKFtb
bV93ZWJWaWV3IHByZWZlcmVuY2VzXSBkZXZlbG9wZXJFeHRyYXNFbmFibGVkXSk7Ci0KLSAgICBt
X3JlbW90ZUNoYW5uZWwgPSByZW1vdGVDaGFubmVsOwotCi0gICAgUGFnZSogcGFnZSA9IGNvcmUo
bV93ZWJWaWV3KTsKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9u
dGVuZCh0aGlzKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6dGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKGJvb2wgZnJvbUxvY2FsU2lkZSkKLXsKLSAg
ICBpZiAoIW1fcmVtb3RlQ2hhbm5lbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGZyb21M
b2NhbFNpZGUpCi0gICAgICAgIFttX3JlbW90ZUNoYW5uZWwgY2xvc2VGcm9tTG9jYWxTaWRlXTsK
LQotICAgIGlmIChQYWdlKiBwYWdlID0gY29yZShtX3dlYlZpZXcpKQotICAgICAgICBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2Nvbm5lY3RGcm9udGVuZCgpOwotCi0gICAgaWYgKGZy
b21Mb2NhbFNpZGUpCi0gICAgICAgIFttX3JlbW90ZUNoYW5uZWwgcmVsZWFzZV07Ci0KLSAgICBt
X3JlbW90ZUNoYW5uZWwgPSAwOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6aGFzTG9j
YWxTZXNzaW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UgIT0gMDsKLX0K
LQotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQoKSBjb25z
dAotewotICAgIHJldHVybiBbbV93ZWJWaWV3IGNhbkJlUmVtb3RlbHlJbnNwZWN0ZWRdOwotfQot
Ci1XZWJWaWV3ICpXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RlZFdlYlZpZXcoKQotewotICAg
IHJldHVybiBtX3dlYlZpZXc7Ci19Ci0jZW5kaWYKLQogCiBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmll
dywgV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciogd2luZG93Q29udHJvbGxlciwgSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgUGFnZSogZnJvbnRlbmRQYWdlLCBX
VEY6OlBhc3NPd25QdHI8U2V0dGluZ3M+IHNldHRpbmdzKQogICAgIDogSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbChpbnNwZWN0b3JDb250cm9sbGVyLCAgZnJvbnRlbmRQYWdlLCBzZXR0aW5n
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rv
ci9yZW1vdGUvV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZWE1YjJlMy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJ
bnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KLQotY2xhc3MgV2ViSW5zcGVjdG9yQ2xp
ZW50OwotCi1AcHJvdG9jb2wgV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnlEZWxlZ2F0ZQotLSAo
dm9pZClkaWRSZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQ7Ci0tICh2
b2lkKWRpZFVucmVnaXN0ZXJDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVudCopY2xpZW50OwotQGVu
ZAotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IDogTlNPYmplY3Qgewot
QHByaXZhdGUKLSAgICB1bnNpZ25lZCBfbmV4dEF2YWlsYWJsZVBhZ2VJZDsKLSAgICBIYXNoTWFw
PHVuc2lnbmVkLCBXZWJJbnNwZWN0b3JDbGllbnQqPiBfcGFnZUNsaWVudE1hcDsKLSAgICBpZCA8
V2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnlEZWxlZ2F0ZT4gX2RlbGVnYXRlOwotfQotCi1AcHJv
cGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpZCA8V2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnlE
ZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0KLSsgKFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ICopc2hh
cmVkUmVnaXN0cnk7Ci0KLS0gKHZvaWQpcmVnaXN0ZXJDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVu
dCopY2xpZW50OwotLSAodm9pZCl1bnJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQq
KWNsaWVudDsKLS0gKFdlYkluc3BlY3RvckNsaWVudCopY2xpZW50Rm9yUGFnZUlkOih1bnNpZ25l
ZClwYWdlSWQ7Ci0tIChOU0RpY3Rpb25hcnkgKilpbnNwZWN0YWJsZVdlYlZpZXdzOwotCi1AZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYklu
c3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODA5NDhkNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJ
bnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tCisrKyAvZGV2L251
bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLSNpbXBvcnQgIldlYklu
c3BlY3RvckNsaWVudFJlZ2lzdHJ5LmgiCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVudC5o
IgotI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKLQotQGltcGxlbWVudGF0aW9uIFdlYkluc3Bl
Y3RvckNsaWVudFJlZ2lzdHJ5Ci0KLUBzeW50aGVzaXplIGRlbGVnYXRlID0gX2RlbGVnYXRlOwot
Ci0rIChXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSAqKXNoYXJlZFJlZ2lzdHJ5Ci17Ci0gICAg
c3RhdGljIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ICpzaGFyZWRSZWdpc3RyeSA9IFtbV2Vi
SW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgYWxsb2NdIGluaXRdOwotICAgIHJldHVybiBzaGFyZWRS
ZWdpc3RyeTsKLX0KLQotLSAoaWQpaW5pdAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0g
ICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX25leHRBdmFpbGFibGVQ
YWdlSWQgPSAxOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHVuc2lnbmVkKV9nZXROZXh0
QXZhaWxhYmxlUGFnZUlkCi17Ci0gICAgLy8gQm91bmRhcnkgdmFsdWVzLCAwIGFuZCBVSU5UX01B
WCwgYXJlIGludmFsaWQgSGFzaE1hcCBrZXlzLgotICAgIHVuc2lnbmVkIG5leHRWYWxpZFBhZ2VJ
ZDsKLSAgICBkbyB7Ci0gICAgICAgIG5leHRWYWxpZFBhZ2VJZCA9IF9uZXh0QXZhaWxhYmxlUGFn
ZUlkKys7Ci0gICAgfSB3aGlsZSAoIW5leHRWYWxpZFBhZ2VJZCB8fCBuZXh0VmFsaWRQYWdlSWQg
PT0gVUlOVF9NQVggfHwgX3BhZ2VDbGllbnRNYXAuY29udGFpbnMobmV4dFZhbGlkUGFnZUlkKSk7
Ci0gICAgcmV0dXJuIG5leHRWYWxpZFBhZ2VJZDsKLX0KLQotLSAodm9pZClyZWdpc3RlckNsaWVu
dDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQKLXsKLSAgICB1bnNpZ25lZCBwYWdlSWQgPSBb
c2VsZiBfZ2V0TmV4dEF2YWlsYWJsZVBhZ2VJZF07Ci0gICAgX3BhZ2VDbGllbnRNYXAuc2V0KHBh
Z2VJZCwgY2xpZW50KTsKLSAgICBjbGllbnQtPnNldFBhZ2VJZChwYWdlSWQpOwotICAgIFtfZGVs
ZWdhdGUgZGlkUmVnaXN0ZXJDbGllbnQ6Y2xpZW50XTsKLX0KLQotLSAodm9pZCl1bnJlZ2lzdGVy
Q2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudAotewotICAgIHVuc2lnbmVkIHBhZ2VJ
ZCA9IGNsaWVudC0+cGFnZUlkKCk7Ci0gICAgX3BhZ2VDbGllbnRNYXAucmVtb3ZlKHBhZ2VJZCk7
Ci0gICAgW19kZWxlZ2F0ZSBkaWRVbnJlZ2lzdGVyQ2xpZW50OmNsaWVudF07Ci19Ci0KLS0gKFdl
Ykluc3BlY3RvckNsaWVudCopY2xpZW50Rm9yUGFnZUlkOih1bnNpZ25lZClwYWdlSWQKLXsKLSAg
ICByZXR1cm4gX3BhZ2VDbGllbnRNYXAuZ2V0KHBhZ2VJZCk7Ci19Ci0KLS0gKE5TRGljdGlvbmFy
eSAqKWluc3BlY3RhYmxlV2ViVmlld3MKLXsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0
aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhDYXBhY2l0eTpfcGFn
ZUNsaWVudE1hcC5zaXplKCldOwotCi0gICAgSGFzaE1hcDx1bnNpZ25lZCwgV2ViSW5zcGVjdG9y
Q2xpZW50Kj46Oml0ZXJhdG9yIGVuZCA9IF9wYWdlQ2xpZW50TWFwLmVuZCgpOwotICAgIGZvciAo
SGFzaE1hcDx1bnNpZ25lZCwgV2ViSW5zcGVjdG9yQ2xpZW50Kj46Oml0ZXJhdG9yIGl0ID0gX3Bh
Z2VDbGllbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFdlYlZpZXcg
KndlYlZpZXcgPSBpdC0+dmFsdWUtPmluc3BlY3RlZFdlYlZpZXcoKTsKLSAgICAgICAgaWYgKCFb
d2ViVmlldyBjYW5CZVJlbW90ZWx5SW5zcGVjdGVkXSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVk
SW50Oml0LT5rZXldOwotICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6d2ViVmlldyBmb3JL
ZXk6cGFnZUlkXTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZGljdGlvbmFyeTsKLX0KLQotQGVuZAot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1v
dGUvV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
SW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmM2JjMzIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25z
X2gKLSNkZWZpbmUgV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9uc19oCi0KLS8vIFdJUkNvbnN0
YW50cyBhcmUgIldlYiBJbnNwZWN0b3IgUmVsYXkiIGNvbnN0YW50cyBzaGFyZWQgYmV0d2Vlbgot
Ly8gdGhlIFdlYkluc3BlY3RvciBmcmFtZXdvcmsgb24gdGhlIGRlYnVnZ2VyIHNpZGUsIHdlYmlu
c3BlY3RvcmQsCi0vLyBhbmQgV2ViS2l0IG9uIHRoZSBkZWJ1Z2dhYmxlIGFwcGxpY2F0aW9uIHNp
ZGUuCi0KLSNkZWZpbmUgV0lSU2ltdWxhdG9yVENQUG9ydE51bWJlciAgICAgICAgICAgICAgIDI3
NzUzCi0jZGVmaW5lIFdJUlhQQ01hY2hQb3J0TmFtZSAgICAgICAgICAgICAgICAgICAgICAiY29t
LmFwcGxlLndlYmluc3BlY3RvciIKLSNkZWZpbmUgV0lSWFBDRGVidWdnZXJTZXJ2aWNlTmFtZSAg
ICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yLmRlYnVnZ2VyIgotI2RlZmluZSBX
SVJTZXJ2aWNlQXZhaWxhYmxlTm90aWZpY2F0aW9uICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNw
ZWN0b3JkLmF2YWlsYWJsZSIKLSNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90
aWZpY2F0aW9uICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFiaWxpdHlfY2hlY2siCi0j
ZGVmaW5lIFdJUlNlcnZpY2VFbmFibGVkTm90aWZpY2F0aW9uICAgICAgICAgICAiY29tLmFwcGxl
LndlYmluc3BlY3RvcmQuZW5hYmxlZCIKLSNkZWZpbmUgV0lSU2VydmljZURpc2FibGVkTm90aWZp
Y2F0aW9uICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5kaXNhYmxlZCIKLQotCi0j
ZGVmaW5lIFdJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSAgICAgICAgICAgICBAIldJUkFwcGxp
Y2F0aW9uSWRlbnRpZmllcktleSIKLSNkZWZpbmUgV0lSQXBwbGljYXRpb25OYW1lS2V5ICAgICAg
ICAgICAgICAgICAgIEAiV0lSQXBwbGljYXRpb25OYW1lS2V5IgotI2RlZmluZSBXSVJJc0FwcGxp
Y2F0aW9uUHJveHlLZXkgICAgICAgICAgICAgICAgQCJXSVJJc0FwcGxpY2F0aW9uUHJveHlLZXki
Ci0jZGVmaW5lIFdJUkhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkgICAgICAgICBAIldJUkhv
c3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiCi0jZGVmaW5lIFdJUkhvc3RBcHBsaWNhdGlvbk5h
bWVLZXkgICAgICAgICAgICAgICBAIldJUkhvc3RBcHBsaWNhdGlvbk5hbWVLZXkiCi0jZGVmaW5l
IFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5ICAgICAgICAgICAgICBAIldJUkNvbm5lY3Rpb25J
ZGVudGlmaWVyS2V5IgotI2RlZmluZSBXSVJQYWdlSWRlbnRpZmllcktleSAgICAgICAgICAgICAg
ICAgICAgQCJXSVJQYWdlSWRlbnRpZmllcktleSIKLSNkZWZpbmUgV0lSSGFzTG9jYWxEZWJ1Z2dl
cktleSAgICAgICAgICAgICAgICAgIEAiV0lSSGFzTG9jYWxEZWJ1Z2dlcktleSIKLSNkZWZpbmUg
V0lSVGl0bGVLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSVGl0bGVLZXkiCi0j
ZGVmaW5lIFdJUlVSTEtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJUlVSTEtl
eSIKLSNkZWZpbmUgV0lSVXNlckluZm9LZXkgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lS
VXNlckluZm9LZXkiCi0jZGVmaW5lIFdJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleSAgICAgICAg
ICAgICBAIldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleSIKLSNkZWZpbmUgV0lSTWVzc2FnZURh
dGFLZXkgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSTWVzc2FnZURhdGFLZXkiCi0jZGVmaW5l
IFdJUkFwcGxpY2F0aW9uR2V0TGlzdGluZ01lc3NhZ2UgICAgICAgICBAIldJUkFwcGxpY2F0aW9u
R2V0TGlzdGluZ01lc3NhZ2UiCi0jZGVmaW5lIFdJUkluZGljYXRlTWVzc2FnZSAgICAgICAgICAg
ICAgICAgICAgICBAIldJUkluZGljYXRlTWVzc2FnZSIKLSNkZWZpbmUgV0lSSW5kaWNhdGVFbmFi
bGVkS2V5ICAgICAgICAgICAgICAgICAgIEAiV0lSSW5kaWNhdGVFbmFibGVkS2V5IgotI2RlZmlu
ZSBXSVJTZW5kZXJLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJTZW5kZXJLZXki
Ci0jZGVmaW5lIFdJUlNvY2tldERhdGFLZXkgICAgICAgICAgICAgICAgICAgICAgICBAIldJUlNv
Y2tldERhdGFLZXkiCi0jZGVmaW5lIFdJUlNvY2tldERhdGFNZXNzYWdlICAgICAgICAgICAgICAg
ICAgICBAIldJUlNvY2tldERhdGFNZXNzYWdlIgotI2RlZmluZSBXSVJTb2NrZXRTZXR1cE1lc3Nh
Z2UgICAgICAgICAgICAgICAgICAgQCJXSVJTb2NrZXRTZXR1cE1lc3NhZ2UiCi0jZGVmaW5lIFdJ
UldlYlBhZ2VDbG9zZU1lc3NhZ2UgICAgICAgICAgICAgICAgICBAIldJUldlYlBhZ2VDbG9zZU1l
c3NhZ2UiCi0jZGVmaW5lIFdJUlJhd0RhdGFNZXNzYWdlICAgICAgICAgICAgICAgICAgICAgICBA
IldJUlJhd0RhdGFNZXNzYWdlIgotI2RlZmluZSBXSVJSYXdEYXRhS2V5ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQCJXSVJSYXdEYXRhS2V5IgotI2RlZmluZSBXSVJMaXN0aW5nTWVzc2FnZSAg
ICAgICAgICAgICAgICAgICAgICAgQCJXSVJMaXN0aW5nTWVzc2FnZSIKLSNkZWZpbmUgV0lSTGlz
dGluZ0tleSAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSTGlzdGluZ0tleSIKLSNkZWZp
bmUgV0lSRGVzdGluYXRpb25LZXkgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSRGVzdGluYXRp
b25LZXkiCi0jZGVmaW5lIFdJUkNvbm5lY3Rpb25EaWVkTWVzc2FnZSAgICAgICAgICAgICAgICBA
IldJUkNvbm5lY3Rpb25EaWVkTWVzc2FnZSIKLQotLy8gVGhlc2UgZGVmaW5pdGlvbnMgYXJlIHNo
YXJlZCB3aXRoIGEgU2ltdWxhdG9yIHdlYmluc3BlY3RvcmQgYW5kCi0vLyBPUyBYIHByb2Nlc3Mg
Y29tbXVuaWNhdGluZyB3aXRoIGl0LgotCi0jZGVmaW5lIFdJUlNpbXVsYXRvckJ1aWxkS2V5ICAg
ICAgICAgICAgICAgICAgICBAIldJUlNpbXVsYXRvckJ1aWxkS2V5IgotI2RlZmluZSBXSVJTaW11
bGF0b3JQcm9kdWN0VmVyc2lvbktleSAgICAgICAgICAgQCJXSVJTaW11bGF0b3JQcm9kdWN0VmVy
c2lvbktleSIKLSNkZWZpbmUgV0lSU2ltdWxhdG9yTmFtZUtleSAgICAgICAgICAgICAgICAgICAg
IEAiV0lSU2ltdWxhdG9yTmFtZUtleSIKLQotLy8gVGhlc2UgZGVmaW5pdGlvbnMgYXJlIHNoYXJl
ZCBiZXR3ZWVuIHdlYmluc3BlY3RvcmQgYW5kIFdlYktpdC4KLQotI2RlZmluZSBXSVJQZXJtaXNz
aW9uRGVuaWVkICAgICAgICAgICAgICAgICAgICAgQCJXSVJQZXJtaXNzaW9uRGVuaWVkIgotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUv
V2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVj
dG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGMzMjBmZGUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
SW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50OwotQGNsYXNzIFdlYkluc3BlY3RvclNl
cnZlcldlYlZpZXdDb25uZWN0aW9uOwotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclJlbW90ZUNo
YW5uZWwgOiBOU09iamVjdCB7Ci1AcHJpdmF0ZQotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uICpfcmVtb3RlOwotICAgIFdlYkluc3BlY3RvckNsaWVudCogX2xvY2FsOwot
fQotCi0rIChXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICopY3JlYXRlQ2hhbm5lbEZvclBhZ2VJ
ZDoodW5zaWduZWQpcGFnZUlkIGNvbm5lY3Rpb246KFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uICopY29ubmVjdGlvbjsKLQotLSAodm9pZCljbG9zZUZyb21Mb2NhbFNpZGU7Ci0t
ICh2b2lkKWNsb3NlRnJvbVJlbW90ZVNpZGU7Ci0tICh2b2lkKXNlbmRNZXNzYWdlVG9Gcm9udGVu
ZDooTlNTdHJpbmcgKiltZXNzYWdlOwotLSAodm9pZClzZW5kTWVzc2FnZVRvQmFja2VuZDooTlNT
dHJpbmcgKiltZXNzYWdlOwotCi1AZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwu
bW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4ZmZjZDYuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVD
aGFubmVsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCIKLQotI2ltcG9ydCAi
V2ViSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3Ry
eS5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCIKLSNp
bXBvcnQgIldlYktpdExvZ2dpbmcuaCIKLSNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQot
QGludGVyZmFjZSBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICgpCi0tIChpZClpbml0V2l0aFJl
bW90ZTooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKilyZW1vdGUgbG9jYWw6
KFdlYkluc3BlY3RvckNsaWVudCopbG9jYWw7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJJ
bnNwZWN0b3JSZW1vdGVDaGFubmVsCi0KLSsgKFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKilj
cmVhdGVDaGFubmVsRm9yUGFnZUlkOih1bnNpZ25lZClwYWdlSWQgY29ubmVjdGlvbjooV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKiljb25uZWN0aW9uCi17Ci0gICAgLy8gR2V0
IHRoZSBJbnNwZWN0b3IgY2xpZW50LiBJdHMgcG9zc2libGUgdGhlIHBhZ2UgY2xvc2VkIGJlZm9y
ZSB0aGUgcmVtb3RlIGNsaWVudCByZXF1ZXN0ZWQgaXQuCi0gICAgV2ViSW5zcGVjdG9yQ2xpZW50
ICppbnNwZWN0b3JDbGllbnQgPSBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJl
Z2lzdHJ5XSBjbGllbnRGb3JQYWdlSWQ6cGFnZUlkXTsKLSAgICBpZiAoIWluc3BlY3RvckNsaWVu
dCkgewotICAgICAgICBMT0coUmVtb3RlSW5zcGVjdG9yLCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hh
bm5lbDogUGFnZSByZXF1ZXN0ZWQgbm8gbG9uZ2VyIGV4aXN0czogKCV1KSIsIHBhZ2VJZCk7Ci0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgLy8gVGhlIFdlYlZpZXcgZG9lcyBub3Qg
YWxsb3cgcmVtb3RlIGluc3BlY3Rpb24uCi0gICAgaWYgKCFpbnNwZWN0b3JDbGllbnQtPmNhbkJl
UmVtb3RlbHlJbnNwZWN0ZWQoKSkgewotICAgICAgICBMT0coUmVtb3RlSW5zcGVjdG9yLCAiV2Vi
SW5zcGVjdG9yUmVtb3RlQ2hhbm5lbDogV2ViVmlldyBmb3IgUGFnZSAoJXUpIGRvZXMgbm90IGFs
bG93IHJlbW90ZSBpbnNwZWN0aW9uLiIsIHBhZ2VJZCk7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgfQotCi0gICAgLy8gVGhlIGNoYW5uZWwgaXMgcmVsZWFzZWQgYnkgd2hpY2hldmVyIHNpZGUg
Y2xvc2VzIHRoZSBjaGFubmVsLiBUaGUgY2hhbm5lbCBjb3VsZCBiZSBjbG9zZWQKLSAgICAvLyBy
ZW1vdGVseSBieSB0aGUgc29ja2V0IGNsb3NpbmcgKHRoZSB1c2VyIG5hdmlnYXRpbmcgYXdheSBm
cm9tIHRoZSByZW1vdGUgaW5zcGVjdG9yIHBhZ2UpLgotICAgIC8vIEl0IGNvdWxkIGJlIGNsb3Nl
ZCBsb2NhbGx5IGJ5IHRoZSBQYWdlIGJlaW5nIGRlc3Ryb3llZCwgbGlrZSB0aGUgYnJvd3NlciBv
ciB0YWIgYmVpbmcgY2xvc2VkLgotICAgIC8vIFNldHRpbmcgdXAgdGhlIGNvbm5lY3Rpb24gY2Fu
IGZhaWwgaWYgdGhlcmUgaXMgYWxyZWFkeSBhbiBleGlzdGluZyBzZXNzaW9uLgotICAgIFdlYklu
c3BlY3RvclJlbW90ZUNoYW5uZWwgKmNoYW5uZWwgPSBbW1dlYkluc3BlY3RvclJlbW90ZUNoYW5u
ZWwgYWxsb2NdIGluaXRXaXRoUmVtb3RlOmNvbm5lY3Rpb24gbG9jYWw6aW5zcGVjdG9yQ2xpZW50
XTsKLSAgICBpZiAoIWluc3BlY3RvckNsaWVudC0+c2V0dXBSZW1vdGVDb25uZWN0aW9uKGNoYW5u
ZWwpKSB7Ci0gICAgICAgIExPRyhSZW1vdGVJbnNwZWN0b3IsICJXZWJJbnNwZWN0b3JSZW1vdGVD
aGFubmVsOiBTZXR0aW5nIHVwIGEgcmVtb3RlIHNlc3Npb24gZmFpbGVkLiBQcm9iYWJseSBhbHJl
YWR5IGEgbG9jYWwgc2Vzc2lvbi4iKTsKLSAgICAgICAgW2NoYW5uZWwgcmVsZWFzZV07Ci0gICAg
ICAgIGNoYW5uZWwgPSBuaWw7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgcmV0
dXJuIGNoYW5uZWw7Ci19Ci0KLS0gKGlkKWluaXRXaXRoUmVtb3RlOihXZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbiAqKXJlbW90ZSBsb2NhbDooV2ViSW5zcGVjdG9yQ2xpZW50Kils
b2NhbAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgX3JlbW90ZSA9IHJlbW90ZTsKLSAgICBfbG9jYWwgPSBsb2Nh
bDsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWNsb3NlRnJvbUxvY2FsU2lkZQot
ewotICAgIC8vIExvY2FsIHNpZGUgd2lsbCByZWxlYXNlLiBNYWtlIHN1cmUgdGhlIHJlbW90ZSBz
aWRlIGNsZWFycyBpdHMgcmVmZXJlbmNlIHRvIHRoZSBjaGFubmVsLgotICAgIFtfcmVtb3RlIGNs
ZWFyQ2hhbm5lbF07Ci19Ci0KLS0gKHZvaWQpY2xvc2VGcm9tUmVtb3RlU2lkZQotewotICAgIC8v
IFJlbW90ZSBzaWRlIHdpbGwgcmVsZWFzZS4gTWFrZSBzdXJlIHRoZSBsb2NhbCBzaWRlIGNsZWFy
cyBpdHMgcmVmZXJlbmNlIHRvIHRoZSBjaGFubmVsLgotICAgIF9sb2NhbC0+dGVhcmRvd25SZW1v
dGVDb25uZWN0aW9uKGZhbHNlKTsKLX0KLQotLSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6
KE5TU3RyaW5nICopbWVzc2FnZQotewotICAgIFtfcmVtb3RlIHNlbmRNZXNzYWdlVG9Gcm9udGVu
ZDptZXNzYWdlXTsKLX0KLQotLSAodm9pZClzZW5kTWVzc2FnZVRvQmFja2VuZDooTlNTdHJpbmcg
KiltZXNzYWdlCi17Ci0gICAgX2xvY2FsLT5zZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKTsK
LX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYklu
c3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjZjY3OTBmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
Ykluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCIKLQotQGNsYXNzIFdlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlcjsKLUBjbGFzcyBXZWJJbnNw
ZWN0b3JYUENXcmFwcGVyOwotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclNlcnZlciA6IE5TT2Jq
ZWN0IDxXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeURlbGVnYXRlPiB7Ci1AcHJpdmF0ZQotICAg
IEJPT0wgX2lzRW5hYmxlZDsKLSAgICBCT09MIF9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247Ci0gICAg
aW50IF9ub3RpZnlUb2tlbjsKLSAgICBXZWJJbnNwZWN0b3JYUENXcmFwcGVyICpfeHBjQ29ubmVj
dGlvbjsKLSAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIg
Kl9jb25uZWN0aW9uQ29udHJvbGxlcjsKLX0KLQotLSAodm9pZClzdGFydDsKLS0gKHZvaWQpc3Rv
cDsKLS0gKEJPT0wpaXNFbmFibGVkOwotLSAodm9pZClwdXNoTGlzdGluZzsKLQotLSAoQk9PTClo
YXNBY3RpdmVEZWJ1Z1Nlc3Npb247Ci0tICh2b2lkKXNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjoo
Qk9PTCloYXNTZXNzaW9uOwotCi0tIChXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopeHBjQ29ubmVj
dGlvbjsKLQotQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNw
ZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYmM5YTczYS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNw
ZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDIw
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2
ZXIuaCIKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW1wb3J0ICJXZWJJbnNw
ZWN0b3JSZWxheURlZmluaXRpb25zLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJW
aWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBw
ZXIuaCIKLSNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCi0jaW1wb3J0IDxub3RpZnkuaD4KLSNp
bXBvcnQgPHhwYy94cGMuaD4KLQotCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIFByaXZh
dGUgQ2xhc3MgRGV0YWlscwotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclNlcnZlciAoKSA8V2Vi
SW5zcGVjdG9yWFBDV3JhcHBlckRlbGVnYXRlPgotLSAodm9pZClzZXR1cFhQQ0Nvbm5lY3Rpb25J
Zk5lZWRlZDsKLS0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAq
KWNvbm5lY3Rpb24gcmVjZWl2ZWRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJ
bmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKLS0gKHZvaWQpeHBjQ29ubmVjdGlvbkZhaWxl
ZDooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb247Ci1AZW5kCi0KLQotI3ByYWdt
YSBtYXJrIC0KLSNwcmFnbWEgbWFyayBTZXJ2ZXIgSW1wbGVtZW50YXRpb24KLQotQGltcGxlbWVu
dGF0aW9uIFdlYkluc3BlY3RvclNlcnZlcgotCi0tIChpZClpbml0Ci17Ci0gICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBf
Y29ubmVjdGlvbkNvbnRyb2xsZXIgPSBbW1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhTZXJ2ZXI6c2VsZl07Ci0KLSAgICBbW1dlYklu
c3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XSBzZXREZWxlZ2F0ZTpzZWxmXTsK
LQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICAvLyBTaW5n
bGV0b24gaXMgbm90IGV4cGVjdGVkIHRvIGJlIHJlbGVhc2VkLgotCi0gICAgW3NlbGYgc3RvcF07
Ci0KLSAgICBBU1NFUlQoIV94cGNDb25uZWN0aW9uKTsKLSAgICBbX2Nvbm5lY3Rpb25Db250cm9s
bGVyIHJlbGVhc2VdOwotCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRS
ZWdpc3RyeV0gc2V0RGVsZWdhdGU6bmlsXTsKLQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQot
LSAodm9pZClzdGFydAotewotICAgIGlmIChfaXNFbmFibGVkKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBfaXNFbmFibGVkID0gWUVTOwotCi0gICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKFdJ
UlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRpb24sICZfbm90aWZ5VG9rZW4sIGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIF4oaW50IHRva2VuKSB7Ci0gICAgICAgIFtzZWxmIHNldHVwWFBDQ29u
bmVjdGlvbklmTmVlZGVkXTsKLSAgICB9KTsKLQotICAgIG5vdGlmeV9wb3N0KFdJUlNlcnZpY2VB
dmFpbGFiaWxpdHlDaGVja05vdGlmaWNhdGlvbik7Ci19Ci0KLS0gKHZvaWQpc3RvcAotewotICAg
IGlmICghX2lzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2lzRW5hYmxlZCA9IE5P
OwotCi0gICAgW19jb25uZWN0aW9uQ29udHJvbGxlciBjbG9zZUFsbENvbm5lY3Rpb25zXTsKLQot
ICAgIGlmIChfeHBjQ29ubmVjdGlvbikgewotICAgICAgICBbX3hwY0Nvbm5lY3Rpb24gY2xvc2Vd
OwotICAgICAgICBfeHBjQ29ubmVjdGlvbi5kZWxlZ2F0ZSA9IG5pbDsKLSAgICAgICAgW194cGND
b25uZWN0aW9uIHJlbGVhc2VdOwotICAgICAgICBfeHBjQ29ubmVjdGlvbiA9IG5pbDsKLSAgICB9
Ci0KLSAgICBub3RpZnlfY2FuY2VsKF9ub3RpZnlUb2tlbik7Ci19Ci0KLS0gKEJPT0wpaXNFbmFi
bGVkCi17Ci0gICAgcmV0dXJuIF9pc0VuYWJsZWQ7Ci19Ci0KLS0gKFdlYkluc3BlY3RvclhQQ1dy
YXBwZXIgKil4cGNDb25uZWN0aW9uCi17Ci0gICAgcmV0dXJuIF94cGNDb25uZWN0aW9uOwotfQot
Ci0tICh2b2lkKXNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkCi17Ci0gICAgaWYgKF94cGNDb25u
ZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rp
b24gPSB4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFt
ZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgMCk7Ci0gICAgaWYgKGNvbm5lY3Rpb24pIHsK
LSAgICAgICAgX3hwY0Nvbm5lY3Rpb24gPSBbW1dlYkluc3BlY3RvclhQQ1dyYXBwZXIgYWxsb2Nd
IGluaXRXaXRoQ29ubmVjdGlvbjpjb25uZWN0aW9uXTsKLSAgICAgICAgX3hwY0Nvbm5lY3Rpb24u
ZGVsZWdhdGUgPSBzZWxmOwotICAgICAgICBbX3hwY0Nvbm5lY3Rpb24gc2VuZE1lc3NhZ2U6QCJz
eW4iIHVzZXJJbmZvOm5pbF07Ci0gICAgICAgIHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwotICAg
IH0KLX0KLQotLSAodm9pZClwdXNoTGlzdGluZwotewotICAgIGlmICghX2lzRW5hYmxlZCB8fCAh
X3hwY0Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIFtfY29ubmVjdGlvbkNvbnRy
b2xsZXIgcHVzaExpc3RpbmddOwotfQotCi0tIChCT09MKWhhc0FjdGl2ZURlYnVnU2Vzc2lvbgot
ewotICAgIHJldHVybiBfaGFzQWN0aXZlRGVidWdTZXNzaW9uOwotfQotCi0tICh2b2lkKXNldEhh
c0FjdGl2ZURlYnVnU2Vzc2lvbjooQk9PTCloYXNTZXNzaW9uCi17Ci0gICAgaWYgKF9oYXNBY3Rp
dmVEZWJ1Z1Nlc3Npb24gPT0gaGFzU2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2hh
c0FjdGl2ZURlYnVnU2Vzc2lvbiA9IGhhc1Nlc3Npb247Ci0KLSAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOl9XZWJWaWV3UmVtb3Rl
SW5zcGVjdG9ySGFzU2Vzc2lvbkNoYW5nZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci19Ci0K
LQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVs
ZWdhdGUgSW1wbGVtZW50YXRpb24KLQotLSAodm9pZCl4cGNDb25uZWN0aW9uOihXZWJJbnNwZWN0
b3JYUENXcmFwcGVyICopeHBjQ29ubmVjdGlvbiByZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICop
bWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvCi17Ci0gICAgQVNT
RVJUKHhwY0Nvbm5lY3Rpb24gPT0gX3hwY0Nvbm5lY3Rpb24pOwotCi0gICAgaWYgKFttZXNzYWdl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSUGVybWlzc2lvbkRlbmllZF0pCi0gICAgICAgIFtzZWxm
IHN0b3BdOwotICAgIGVsc2UKLSAgICAgICAgW19jb25uZWN0aW9uQ29udHJvbGxlciByZWNlaXZl
ZE1lc3NhZ2U6bWVzc2FnZU5hbWUgdXNlckluZm86dXNlckluZm9dOwotfQotCi0tICh2b2lkKXhw
Y0Nvbm5lY3Rpb25GYWlsZWQ6KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uCi17
Ci0gICAgW19jb25uZWN0aW9uQ29udHJvbGxlciBjbG9zZUFsbENvbm5lY3Rpb25zXTsKLQotICAg
IGlmIChfeHBjQ29ubmVjdGlvbikgewotICAgICAgICBfeHBjQ29ubmVjdGlvbi5kZWxlZ2F0ZSA9
IG5pbDsKLSAgICAgICAgW194cGNDb25uZWN0aW9uIHJlbGVhc2VdOwotICAgICAgICBfeHBjQ29u
bmVjdGlvbiA9IG5pbDsKLSAgICB9Ci19Ci0KLQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFy
ayBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeURlbGVnYXRlIGltcGxlbWVudGF0aW9uCi0KLS0g
KHZvaWQpZGlkUmVnaXN0ZXJDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVudCopY2xpZW50Ci17Ci0g
ICAgLy8gV2hlbiBhIFdlYlZpZXcgaXMgcmVnaXN0ZXJlZCBpdCBoYXMgbm8gY29udGVudC4gQnV0
IHNvbWUgV2ViVmlld3MKLSAgICAvLyBuZXZlciBsb2FkIGNvbnRlbnQgZnJvbSBhIFVSTCwgc3Vj
aCBhcyBVSVRleHRGaWVsZHMgb24gaU9TLgotICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQot
LSAodm9pZClkaWRVbnJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudAot
ewotICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2Vy
dmVyV2ViVmlld0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9y
ZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYzdhNWJjYy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotQGNsYXNzIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWw7
Ci1AY2xhc3MgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyOwot
Ci1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIDogTlNPYmpl
Y3QgewotQHByaXZhdGUKLSAgICBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICpfY2hhbm5lbDsK
LQotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciAqX2Nv
bnRyb2xsZXI7IC8vIHdlYWssIHRoZSBjb250cm9sbGVyIG93bnMgdXMuCi0gICAgTlNTdHJpbmcg
Kl9jb25uZWN0aW9uSWRlbnRpZmllcjsKLSAgICBOU1N0cmluZyAqX2Rlc3RpbmF0aW9uOwotICAg
IE5TTnVtYmVyICpfaWRlbnRpZmllcjsKLX0KLQotLSAoaWQpaW5pdFdpdGhDb250cm9sbGVyOihX
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgKiljb250cm9sbGVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyOihOU1N0cmluZyAqKWNvbm5lY3Rpb25JZGVudGlmaWVyIGRl
c3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uIGlkZW50aWZpZXI6KE5TTnVtYmVyICop
aWRlbnRpZmllcjsKLS0gKEJPT0wpc2V0dXBDaGFubmVsOwotLSAoTlNTdHJpbmcgKiljb25uZWN0
aW9uSWRlbnRpZmllcjsKLS0gKE5TTnVtYmVyICopaWRlbnRpZmllcjsKLQotLy8gTWVzc2FnZXMg
ZnJvbSB0aGUgSW5zcGVjdG9yU2VydmVyLgotLSAodm9pZClyZWNlaXZlZERhdGE6KE5TRGljdGlv
bmFyeSAqKWRpY3Rpb25hcnk7Ci0tICh2b2lkKXJlY2VpdmVkRGlkQ2xvc2U6KE5TRGljdGlvbmFy
eSAqKWRpY3Rpb25hcnk7Ci0KLS8vIE1lc3NhZ2VzIGZyb20gdGhlIENoYW5uZWwuCi0tICh2b2lk
KWNsZWFyQ2hhbm5lbDsKLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAq
KW1lc3NhZ2U7Ci0KLS8vIE1lc3NhZ2VzIHRvIHRoZSBDaGFubmVsLgotLSAodm9pZClzZW5kTWVz
c2FnZVRvQmFja2VuZDooTlNTdHJpbmcgKiltZXNzYWdlOwotCi1AZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90
ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDFhZWQ4MS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLm1t
CisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLSNp
bXBvcnQgIldlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmgiCi0KLSNpbXBvcnQg
IldlYkluc3BlY3RvckNsaWVudC5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0
aW9ucy5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oIgotI2ltcG9ydCAi
V2ViSW5zcGVjdG9yU2VydmVyLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIu
aCIKLSNpbXBvcnQgIldlYktpdExvZ2dpbmcuaCIKLSNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KLQotQGltcGxlbWVudGF0aW9uIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
Ci0KLS0gKGlkKWluaXRXaXRoQ29udHJvbGxlcjooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nv
bm5lY3Rpb25Db250cm9sbGVyICopY29udHJvbGxlciBjb25uZWN0aW9uSWRlbnRpZmllcjooTlNT
dHJpbmcgKiljb25uZWN0aW9uSWRlbnRpZmllciBkZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0
aW5hdGlvbiBpZGVudGlmaWVyOihOU051bWJlciAqKWlkZW50aWZpZXIKLXsKLSAgICBzZWxmID0g
W3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAg
IF9jb250cm9sbGVyID0gY29udHJvbGxlcjsKLSAgICBfY29ubmVjdGlvbklkZW50aWZpZXIgPSBb
Y29ubmVjdGlvbklkZW50aWZpZXIgY29weV07Ci0gICAgX2Rlc3RpbmF0aW9uID0gW2Rlc3RpbmF0
aW9uIGNvcHldOwotICAgIF9pZGVudGlmaWVyID0gW2lkZW50aWZpZXIgY29weV07Ci0KLSAgICBy
ZXR1cm4gc2VsZjsKLX0KLQotLSAoQk9PTClzZXR1cENoYW5uZWwKLXsKLSAgICBBU1NFUlQoIV9j
aGFubmVsKTsKLSAgICB1bnNpZ25lZCBwYWdlSWQgPSBbX2lkZW50aWZpZXIgdW5zaWduZWRJbnRW
YWx1ZV07Ci0gICAgX2NoYW5uZWwgPSBbV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCBjcmVhdGVD
aGFubmVsRm9yUGFnZUlkOnBhZ2VJZCBjb25uZWN0aW9uOnNlbGZdOwotICAgIHJldHVybiBfY2hh
bm5lbCAhPSBuaWw7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIEFTU0VSVCghX2NoYW5u
ZWwpOwotICAgIFtfY29ubmVjdGlvbklkZW50aWZpZXIgcmVsZWFzZV07Ci0gICAgW19kZXN0aW5h
dGlvbiByZWxlYXNlXTsKLSAgICBbX2lkZW50aWZpZXIgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRl
YWxsb2NdOwotfQotCi0tIChOU1N0cmluZyAqKWNvbm5lY3Rpb25JZGVudGlmaWVyCi17Ci0gICAg
cmV0dXJuIFtbX2Nvbm5lY3Rpb25JZGVudGlmaWVyIGNvcHldIGF1dG9yZWxlYXNlXTsKLX0KLQot
LSAoTlNOdW1iZXIgKilpZGVudGlmaWVyCi17Ci0gICAgcmV0dXJuIFtbX2lkZW50aWZpZXIgY29w
eV0gYXV0b3JlbGVhc2VdOwotfQotCi0KLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgSW50
ZXJhY3Rpb24gd2l0aCB0aGUgY2hhbm5lbCB0byB0aGUgbG9jYWwgaW5zcGVjdG9yIGJhY2tlbmQK
LQotLSAodm9pZCljbGVhckNoYW5uZWwKLXsKLSAgICBfY2hhbm5lbCA9IG5pbDsKLSAgICBbX2Nv
bnRyb2xsZXIgY29ubmVjdGlvbkNsb3Npbmc6c2VsZl07Ci19Ci0KLS0gKHZvaWQpc2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2UKLXsKLSAgICBOU0RhdGEgKmRhdGEgPSBb
bWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgTlNE
aWN0aW9uYXJ5ICpvdXRnb2luZyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Rz
QW5kS2V5czoKLSAgICAgICAgZGF0YSwgV0lSUmF3RGF0YUtleSwKLSAgICAgICAgX2Nvbm5lY3Rp
b25JZGVudGlmaWVyLCBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleSwKLSAgICAgICAgX2Rlc3Rp
bmF0aW9uLCBXSVJEZXN0aW5hdGlvbktleSwKLSAgICAgICAgbmlsXTsKLQotICAgIFtfY29udHJv
bGxlciBzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6V0lSUmF3RGF0YU1lc3NhZ2UgdXNlckluZm86b3V0
Z29pbmddOwotfQotCi0tICh2b2lkKXNlbmRNZXNzYWdlVG9CYWNrZW5kOihOU1N0cmluZyAqKW1l
c3NhZ2UKLXsKLSAgICBBU1NFUlQoX2NoYW5uZWwpOwotICAgIExPRyhSZW1vdGVJbnNwZWN0b3Is
ICJXZWJJbnNwZWN0b3JTZXJ2ZXJDb25uZWN0aW9uOiBSZWNlaXZlZDogfCVzfCIsIFN0cmluZyht
ZXNzYWdlKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIFtfY2hhbm5lbCBzZW5kTWVzc2FnZVRvQmFj
a2VuZDptZXNzYWdlXTsKLX0KLQotCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIEludGVy
YWN0aW9uIHdpdGggdGhlIHNlcnZlciB0byB0aGUgcmVtb3RlIGluc3BlY3RvciBmcm9udGVuZAot
Ci0tICh2b2lkKXJlY2VpdmVkRGF0YTooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAg
IE5TRGF0YSAqZGF0YSA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJTb2NrZXREYXRhS2V5
XTsKLSAgICBOU1N0cmluZyAqbWVzc2FnZSA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0
YTpkYXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBbc2VsZiBzZW5kTWVz
c2FnZVRvQmFja2VuZDptZXNzYWdlXTsKLSAgICBbbWVzc2FnZSByZWxlYXNlXTsKLX0KLQotLSAo
dm9pZClyZWNlaXZlZERpZENsb3NlOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAg
aWYgKF9jaGFubmVsKSB7Ci0gICAgICAgIFtfY2hhbm5lbCBjbG9zZUZyb21SZW1vdGVTaWRlXTsK
LSAgICAgICAgW19jaGFubmVsIHJlbGVhc2VdOwotICAgICAgICBfY2hhbm5lbCA9IG5pbDsKLSAg
ICB9Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNw
ZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZjhiZjVlOC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29u
dHJvbGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUBjbGFzcyBXZWJJbnNwZWN0b3JTZXJ2ZXI7
Ci1AY2xhc3MgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb247Ci1AY2xhc3MgV2Vi
SW5zcGVjdG9yWFBDV3JhcHBlcjsKLQotQGludGVyZmFjZSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJW
aWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgOiBOU09iamVjdCB7Ci1AcHJpdmF0ZQotICAgIFdlYklu
c3BlY3RvclNlcnZlciAqX3NlcnZlcjsgLy8gd2VhaywgdGhlIHNlcnZlciBzaG91bGQgbmV2ZXIg
ZGVhbGxvY2F0ZS4KLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpfb3BlbkNvbm5lY3Rpb25zOwot
ICAgIEJPT0wgX2hhc1NjaGVkdWxlZFB1c2g7Ci19Ci0KLS0gKGlkKWluaXRXaXRoU2VydmVyOihX
ZWJJbnNwZWN0b3JTZXJ2ZXIgKilzZXJ2ZXI7Ci0KLS0gKHZvaWQpY2xvc2VBbGxDb25uZWN0aW9u
czsKLQotLSAodm9pZClwdXNoTGlzdGluZzsKLS0gKHZvaWQpcmVjZWl2ZWRNZXNzYWdlOihOU1N0
cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKLQot
LSAodm9pZCljb25uZWN0aW9uQ2xvc2luZzooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb24gKiljb25uZWN0aW9uOwotCi0tICh2b2lkKXNlbmRNZXNzYWdlVG9Gcm9udGVuZDooTlNT
dHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87Ci0K
LUBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUv
V2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdl
YzIxMzYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90
ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSwzODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9ydCAi
V2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmgiCi0KLSNpbXBv
cnQgIldlYkluc3BlY3RvckNsaWVudC5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50UmVn
aXN0cnkuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCIKLSNpbXBv
cnQgIldlYkluc3BlY3RvclNlcnZlci5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb24uaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCIKLSNp
bXBvcnQgIldlYlZpZXcuaCIKLSNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCi0KLSNpZiBQTEFU
Rk9STShJT1MpCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWQuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgotI2VuZGlmCi0KLQotQGltcGxlbWVudGF0aW9uIFdl
Ykluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlcgotCi0tIChpZClpbml0
V2l0aFNlcnZlcjooV2ViSW5zcGVjdG9yU2VydmVyICopc2VydmVyCi17Ci0gICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBf
c2VydmVyID0gc2VydmVyOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxv
YwotewotICAgIEFTU0VSVCghW19vcGVuQ29ubmVjdGlvbnMgY291bnRdKTsKLSAgICBbX29wZW5D
b25uZWN0aW9ucyByZWxlYXNlXTsKLQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9p
ZCljbG9zZUFsbENvbm5lY3Rpb25zCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFdlYlRocmVh
ZFJ1biheewotI2VuZGlmCi0KLSAgICBmb3IgKE5TTnVtYmVyICprZXkgaW4gX29wZW5Db25uZWN0
aW9ucykgewotICAgICAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqY29u
bmVjdGlvbiA9IFtfb3BlbkNvbm5lY3Rpb25zIG9iamVjdEZvcktleTprZXldOwotICAgICAgICBb
Y29ubmVjdGlvbiByZWNlaXZlZERpZENsb3NlOm5pbF07Ci0gICAgfQotICAgIFtfb3BlbkNvbm5l
Y3Rpb25zIHJlbW92ZUFsbE9iamVjdHNdOwotCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdT
ZXNzaW9uOk5PXTsKLSAgICB9KTsKLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICB9KTsKLSNlbmRp
ZgotfQotCi0tIChOU0RpY3Rpb25hcnkgKilfbGlzdGluZ0ZvcldlYlZpZXc6KFdlYlZpZXcgKil3
ZWJWaWV3IHBhZ2VJZDooTlNOdW1iZXIgKilwYWdlSWQgcmVnaXN0cnk6KFdlYkluc3BlY3RvckNs
aWVudFJlZ2lzdHJ5ICopcmVnaXN0cnkKLXsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICp3ZWJW
aWV3RGV0YWlscyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwotCi0gICAgLy8g
UGFnZSBJRC4KLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnBhZ2VJZCBmb3JLZXk6V0lS
UGFnZUlkZW50aWZpZXJLZXldOwotCi0gICAgLy8gVVJMLgotICAgIE5TU3RyaW5nICp1cmwgPSBb
d2ViVmlldyBtYWluRnJhbWVVUkxdOwotICAgIGlmICghdXJsKQotICAgICAgICB1cmwgPSBAImFi
b3V0OmJsYW5rIjsKLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnVybCBmb3JLZXk6V0lS
VVJMS2V5XTsKLQotICAgIC8vIFRpdGxlLgotICAgIE5TU3RyaW5nICp0aXRsZSA9IFt3ZWJWaWV3
IG1haW5GcmFtZVRpdGxlXTsKLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnRpdGxlIGZv
cktleTpXSVJUaXRsZUtleV07Ci0KLSAgICAvLyBbT3B0aW9uYWxdIENvbm5lY3Rpb24gSWRlbnRp
ZmllciAoUmVtb3RlIERlYnVnZ2VyIFVVSUQpLgotICAgIC8vIFtPcHRpb25hbF0gSGFzIExvY2Fs
IERlYnVnZ2VyIFNlc3Npb24uCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24gKmNvbm5lY3Rpb24gPSBbX29wZW5Db25uZWN0aW9ucyBvYmplY3RGb3JLZXk6cGFnZUlkXTsK
LSAgICBpZiAoY29ubmVjdGlvbikKLSAgICAgICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDpj
b25uZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlmaWVyIGZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRp
ZmllcktleV07Ci0gICAgZWxzZSB7Ci0gICAgICAgIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVj
dG9yQ2xpZW50ID0gW3JlZ2lzdHJ5IGNsaWVudEZvclBhZ2VJZDpbcGFnZUlkIHVuc2lnbmVkSW50
VmFsdWVdXTsKLSAgICAgICAgaWYgKGluc3BlY3RvckNsaWVudC0+aGFzTG9jYWxTZXNzaW9uKCkp
Ci0gICAgICAgICAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJX
aXRoQm9vbDpZRVNdIGZvcktleTpXSVJIYXNMb2NhbERlYnVnZ2VyS2V5XTsKLSAgICB9Ci0KLSNp
ZiBQTEFURk9STShJT1MpCi0gICAgLy8gW09wdGlvbmFsXSBIb3N0IEFwcGxpY2F0aW9uIElELgot
ICAgIE5TU3RyaW5nICpob3N0QXBwbGljYXRpb25JZCA9IFt3ZWJWaWV3IGhvc3RBcHBsaWNhdGlv
bkJ1bmRsZUlkXTsKLSAgICBpZiAoaG9zdEFwcGxpY2F0aW9uSWQpCi0gICAgICAgIFt3ZWJWaWV3
RGV0YWlscyBzZXRPYmplY3Q6aG9zdEFwcGxpY2F0aW9uSWQgZm9yS2V5OldJUkhvc3RBcHBsaWNh
dGlvbklkZW50aWZpZXJLZXldOwotCi0gICAgLy8gW09wdGlvbmFsXSBIb3N0IEFwcGxpY2F0aW9u
IE5hbWUuCi0gICAgTlNTdHJpbmcgKmhvc3RBcHBsaWNhdGlvbk5hbWUgPSBbd2ViVmlldyBob3N0
QXBwbGljYXRpb25OYW1lXTsKLSAgICBpZiAoaG9zdEFwcGxpY2F0aW9uTmFtZSkKLSAgICAgICAg
W3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDpob3N0QXBwbGljYXRpb25OYW1lIGZvcktleTpXSVJI
b3N0QXBwbGljYXRpb25OYW1lS2V5XTsKLSNlbmRpZgotCi0gICAgLy8gW09wdGlvbmFsXSBSZW1v
dGUgSW5zcGVjdG9yIFdlYlZpZXcgVXNlciBJbmZvIERpY3Rpb25hcnkuCi0gICAgTlNEaWN0aW9u
YXJ5ICpyZW1vdGVJbnNwZWN0b3JVc2VySW5mbyA9IFt3ZWJWaWV3IHJlbW90ZUluc3BlY3RvclVz
ZXJJbmZvXTsKLSAgICBpZiAocmVtb3RlSW5zcGVjdG9yVXNlckluZm8pCi0gICAgICAgIFt3ZWJW
aWV3RGV0YWlscyBzZXRPYmplY3Q6cmVtb3RlSW5zcGVjdG9yVXNlckluZm8gZm9yS2V5OldJUlVz
ZXJJbmZvS2V5XTsKLQotICAgIHJldHVybiB3ZWJWaWV3RGV0YWlsczsKLX0KLQotLSAodm9pZClf
cHVzaExpc3Rpbmc6KE5TU3RyaW5nICopb3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcgotewot
I2lmIFBMQVRGT1JNKElPUykKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotI2Vu
ZGlmCi0KLSAgICBfaGFzU2NoZWR1bGVkUHVzaCA9IE5POwotCi0gICAgTlNNdXRhYmxlRGljdGlv
bmFyeSAqcmVzcG9uc2UgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAg
IFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ICp3ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSA9
IFtXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV07Ci0gICAgTlNEaWN0
aW9uYXJ5ICpyZWdpc3RlcmVkVmlld3MgPSBbd2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgaW5z
cGVjdGFibGVXZWJWaWV3c107Ci0gICAgZm9yIChOU051bWJlciAqcGFnZUlkIGluIHJlZ2lzdGVy
ZWRWaWV3cykgewotICAgICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3JlZ2lzdGVyZWRWaWV3cyBv
YmplY3RGb3JLZXk6cGFnZUlkXTsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICp3ZWJWaWV3RGV0YWls
cyA9IFtzZWxmIF9saXN0aW5nRm9yV2ViVmlldzp3ZWJWaWV3IHBhZ2VJZDpwYWdlSWQgcmVnaXN0
cnk6d2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnldOwotICAgICAgICBbcmVzcG9uc2Ugc2V0T2Jq
ZWN0OndlYlZpZXdEZXRhaWxzIGZvcktleTpbcGFnZUlkIHN0cmluZ1ZhbHVlXV07Ci0gICAgfQot
Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqb3V0Z29pbmcgPSBbW05TTXV0YWJsZURpY3Rpb25h
cnkgYWxsb2NdIGluaXRdOwotICAgIFtvdXRnb2luZyBzZXRPYmplY3Q6cmVzcG9uc2UgZm9yS2V5
OldJUkxpc3RpbmdLZXldOwotICAgIGlmIChvcHRpb25hbENvbm5lY3Rpb25JZGVudGlmaWVyKQot
ICAgICAgICBbb3V0Z29pbmcgc2V0T2JqZWN0Om9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXIg
Zm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKLQotICAgIFtzZWxmIHNlbmRNZXNz
YWdlVG9Gcm9udGVuZDpXSVJMaXN0aW5nTWVzc2FnZSB1c2VySW5mbzpvdXRnb2luZ107Ci0KLSAg
ICBbb3V0Z29pbmcgcmVsZWFzZV07Ci0gICAgW3Jlc3BvbnNlIHJlbGVhc2VdOwotfQotCi0tICh2
b2lkKXB1c2hMaXN0aW5nOihOU1N0cmluZyAqKW9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXIK
LXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsK
LSNlbmRpZgotCi0gICAgaWYgKF9oYXNTY2hlZHVsZWRQdXNoKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAob3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcikgewotICAgICAgICBbc2VsZiBf
cHVzaExpc3Rpbmc6b3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcl07Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0
Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgMC4yICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hf
Z2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsK
LSAgICAgICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgICAgICBbc2VsZiBfcHVzaExpc3Rpbmc6
bmlsXTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0jZWxzZQotICAgIFtzZWxmIHBlcmZvcm1TZWxl
Y3RvcjpAc2VsZWN0b3IoX3B1c2hMaXN0aW5nOikgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTow
LjJdOwotI2VuZGlmCi0KLSAgICBfaGFzU2NoZWR1bGVkUHVzaCA9IFlFUzsKLX0KLQotLSAodm9p
ZClwdXNoTGlzdGluZwotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBXZWJUaHJlYWRSdW4oXnsK
LSNlbmRpZgotCi0gICAgW3NlbGYgcHVzaExpc3Rpbmc6bmlsXTsKLQotI2lmIFBMQVRGT1JNKElP
UykKLSAgICB9KTsKLSNlbmRpZgotfQotCi0tICh2b2lkKV9yZWNlaXZlZFNldHVwOihOU0RpY3Rp
b25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0aW9uYXJ5
IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFwYWdlSWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFtk
aWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07Ci0gICAg
aWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNTdHJp
bmcgKnNlbmRlciA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJTZW5kZXJLZXldOwotICAg
IGlmICghc2VuZGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIV9vcGVuQ29ubmVjdGlv
bnMpCi0gICAgICAgIF9vcGVuQ29ubmVjdGlvbnMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRdOwotCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKmNv
bm5lY3Rpb24gPSBbW1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGFsbG9jXSBp
bml0V2l0aENvbnRyb2xsZXI6c2VsZiBjb25uZWN0aW9uSWRlbnRpZmllcjpjb25uZWN0aW9uSWRl
bnRpZmllciBkZXN0aW5hdGlvbjpzZW5kZXIgaWRlbnRpZmllcjpwYWdlSWRdOwotICAgIGlmIChb
Y29ubmVjdGlvbiBzZXR1cENoYW5uZWxdKQotICAgICAgICBbX29wZW5Db25uZWN0aW9ucyBzZXRP
YmplY3Q6Y29ubmVjdGlvbiBmb3JLZXk6cGFnZUlkXTsKLSAgICBbY29ubmVjdGlvbiByZWxlYXNl
XTsKLQotICAgIGlmIChbX29wZW5Db25uZWN0aW9ucyBjb3VudF0gPT0gMSkgewotICAgICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAg
W19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOllFU107Ci0gICAgICAgIH0pOwotICAg
IH0KLQotICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQotLSAodm9pZClfcmVjZWl2ZWREYXRh
OihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtk
aWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFw
YWdlSWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uICpjb25uZWN0aW9uID0gW19vcGVuQ29ubmVjdGlvbnMgb2JqZWN0Rm9yS2V5OnBh
Z2VJZF07Ci0gICAgQVNTRVJUKCFjb25uZWN0aW9uIHx8IFtjb25uZWN0aW9uIGlzS2luZE9mQ2xh
c3M6W1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGNsYXNzXV0pOwotICAgIGlm
ICghY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW2Nvbm5lY3Rpb24gcmVjZWl2
ZWREYXRhOmRpY3Rpb25hcnldOwotfQotCi0tICh2b2lkKV9yZWNlaXZlZERpZENsb3NlOihOU0Rp
Y3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0aW9u
YXJ5IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFwYWdlSWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9
IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07Ci0g
ICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24gPSBbX29wZW5Db25u
ZWN0aW9ucyBvYmplY3RGb3JLZXk6cGFnZUlkXTsKLSAgICBBU1NFUlQoIWNvbm5lY3Rpb24gfHwg
W2Nvbm5lY3Rpb24gaXNLaW5kT2ZDbGFzczpbV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb24gY2xhc3NdXSk7Ci0gICAgaWYgKCFjb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAoIVtjb25uZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6Y29ubmVjdGlv
bi5jb25uZWN0aW9uSWRlbnRpZmllcl0pCi0gICAgICAgIHJldHVybjsKLQotICAgIFtjb25uZWN0
aW9uIHJlY2VpdmVkRGlkQ2xvc2U6ZGljdGlvbmFyeV07Ci0gICAgW19vcGVuQ29ubmVjdGlvbnMg
cmVtb3ZlT2JqZWN0Rm9yS2V5OnBhZ2VJZF07Ci0KLSAgICBpZiAoIVtfb3BlbkNvbm5lY3Rpb25z
IGNvdW50XSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeewotICAgICAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOk5P
XTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgW3NlbGYgcHVzaExpc3RpbmddOwotfQotCi0t
ICh2b2lkKV9yZWNlaXZlZEdldExpc3Rpbmc6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsK
LSAgICBbc2VsZiBwdXNoTGlzdGluZzpbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSQ29ubmVj
dGlvbklkZW50aWZpZXJLZXldXTsKLX0KLQotLSAodm9pZClfcmVjZWl2ZWRJbmRpY2F0ZTooTlNE
aWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbZGljdGlv
bmFyeSBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOwotICAgIGlmICghcGFnZUlk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tbV2ViSW5zcGVj
dG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIGluc3BlY3RhYmxlV2ViVmlld3NdIG9i
amVjdEZvcktleTpwYWdlSWRdOwotICAgIGlmICghd2ViVmlldykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgQk9PTCBpbmRpY2F0ZUVuYWJsZWQgPSBbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldJ
UkluZGljYXRlRW5hYmxlZEtleV0gYm9vbFZhbHVlXTsKLSAgICBbd2ViVmlldyBzZXRJbmRpY2F0
aW5nRm9yUmVtb3RlSW5zcGVjdG9yOmluZGljYXRlRW5hYmxlZF07Ci19Ci0KLS0gKHZvaWQpX3Jl
Y2VpdmVkQ29ubmVjdGlvbkRpZWQ6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAgICBO
U1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOwotICAgIGlmICghY29ubmVjdGlvbklkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TRGljdGlvbmFyeSAqY29ubmVjdGlvbnNDb3B5
ID0gW1tfb3BlbkNvbm5lY3Rpb25zIGNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICBmb3IgKE5TTnVt
YmVyICprZXkgaW4gY29ubmVjdGlvbnNDb3B5KSB7Ci0gICAgICAgIFdlYkluc3BlY3RvclNlcnZl
cldlYlZpZXdDb25uZWN0aW9uICpjb25uZWN0aW9uID0gW2Nvbm5lY3Rpb25zQ29weSBvYmplY3RG
b3JLZXk6a2V5XTsKLSAgICAgICAgaWYgKFtjb25uZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlmaWVy
IGlzRXF1YWxUb1N0cmluZzpjb25uZWN0aW9uSWRlbnRpZmllcl0pIHsKLSAgICAgICAgICAgIFtj
b25uZWN0aW9uIHJlY2VpdmVkRGlkQ2xvc2U6bmlsXTsKLSAgICAgICAgICAgIFtfb3BlbkNvbm5l
Y3Rpb25zIHJlbW92ZU9iamVjdEZvcktleTprZXldOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKCFbX29wZW5Db25uZWN0aW9ucyBjb3VudF0pIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgIFtfc2VydmVyIHNldEhh
c0FjdGl2ZURlYnVnU2Vzc2lvbjpOT107Ci0gICAgICAgIH0pOwotICAgIH0KLX0KLQotLSAodm9p
ZClyZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGlj
dGlvbmFyeSAqKXVzZXJJbmZvCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFdlYlRocmVhZFJ1
biheewotI2VuZGlmCi0KLSAgICBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJT
b2NrZXRTZXR1cE1lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWRTZXR1cDp1c2VySW5m
b107Ci0gICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJTb2NrZXRE
YXRhTWVzc2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZERhdGE6dXNlckluZm9dOwotICAg
IGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSV2ViUGFnZUNsb3NlTWVz
c2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZERpZENsb3NlOnVzZXJJbmZvXTsKLSAgICBl
bHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkFwcGxpY2F0aW9uR2V0TGlz
dGluZ01lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWRHZXRMaXN0aW5nOnVzZXJJbmZv
XTsKLSAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkluZGljYXRl
TWVzc2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZEluZGljYXRlOnVzZXJJbmZvXTsKLSAg
ICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkNvbm5lY3Rpb25EaWVk
TWVzc2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZENvbm5lY3Rpb25EaWVkOnVzZXJJbmZv
XTsKLSAgICBlbHNlCi0gICAgICAgIE5TTG9nKEAiVW5yZWNvZ25pemVkIE1lc3NhZ2U6ICVAIiwg
bWVzc2FnZU5hbWUpOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIH0pOwotI2VuZGlmCi19Ci0K
LQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbiBpbnRlcmZhY2UKLQotLSAodm9pZCljb25uZWN0aW9uQ2xvc2luZzooV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKiljb25uZWN0aW9uCi17Ci0jaWYgUExBVEZP
Uk0oSU9TKQotICAgIFdlYlRocmVhZFJ1biheewotI2VuZGlmCi0KLSAgICBbX29wZW5Db25uZWN0
aW9ucyByZW1vdmVPYmplY3RGb3JLZXk6W2Nvbm5lY3Rpb24gaWRlbnRpZmllcl1dOwotCi0gICAg
aWYgKCFbX29wZW5Db25uZWN0aW9ucyBjb3VudF0pIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgIFtfc2VydmVyIHNldEhh
c0FjdGl2ZURlYnVnU2Vzc2lvbjpOT107Ci0gICAgICAgIH0pOwotICAgIH0KLQotI2lmIFBMQVRG
T1JNKElPUykKLSAgICB9KTsKLSNlbmRpZgotfQotCi0KLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21h
IG1hcmsgVGhyZWFkIFNhZmUgc2VuZCBtZXNzYWdlIHRvIGZyb250ZW5kCi0KLS0gKHZvaWQpc2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0Rp
Y3Rpb25hcnkgKil1c2VySW5mbwotewotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBmcm9tIGVp
dGhlciB0aGUgV2ViVGhyZWFkIG9yIHRoZSBNYWluVGhyZWFkLiBUaGlzCi0gICAgLy8gcmVxdWly
ZXMgYWNjZXNzIHRvIHRoZSBXZWJJbnNwZWN0b3JTZXJ2ZXIncyBYUEMgQ29ubmVjdGlvbiwgd2hp
Y2gKLSAgICAvLyBpcyBtYW5hZ2VkIG9uIHRoZSBtYWluIHRocmVhZC4gU28sIGRpc3BhdGNoIHRv
IHRoZSBtYWluIHRocmVhZCB0bwotICAgIC8vIHNhZmVseSB1c2UgdGhlIHhwYyBjb25uZWN0aW9u
LgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAg
ICAgIFtbX3NlcnZlciB4cGNDb25uZWN0aW9uXSBzZW5kTWVzc2FnZTptZXNzYWdlTmFtZSB1c2Vy
SW5mbzp1c2VySW5mb107Ci0gICAgfSk7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dy
YXBwZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVj
dG9yWFBDV3JhcHBlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjk0NGVjLi4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5z
cGVjdG9yWFBDV3JhcHBlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgotI2ltcG9ydCA8eHBjL3hwYy5oPgotCi1AY2xhc3MgV2ViSW5zcGVj
dG9yWFBDV3JhcHBlcjsKLQotQHByb3RvY29sIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJEZWxlZ2F0
ZSA8TlNPYmplY3Q+Ci0tICh2b2lkKXhwY0Nvbm5lY3Rpb246KFdlYkluc3BlY3RvclhQQ1dyYXBw
ZXIgKiljb25uZWN0aW9uIHJlY2VpdmVkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1
c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87Ci0tICh2b2lkKXhwY0Nvbm5lY3Rpb25G
YWlsZWQ6KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uOwotQG9wdGlvbmFsCi0t
ICh2b2lkKXhwY0Nvbm5lY3Rpb246KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9u
IHVuaGFuZGxlZE1lc3NhZ2U6KHhwY19vYmplY3RfdCltZXNzYWdlOwotQGVuZAotCi1AaW50ZXJm
YWNlIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgOiBOU09iamVjdAotewotICAgIGlkIDxXZWJJbnNw
ZWN0b3JYUENXcmFwcGVyRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKLSAgICB4cGNfY29ubmVjdGlvbl90
IF9jb25uZWN0aW9uOwotICAgIE5TU3RyaW5nICpfdGFnOwotfQotCi0tIChXZWJJbnNwZWN0b3JY
UENXcmFwcGVyICopaW5pdFdpdGhDb25uZWN0aW9uOih4cGNfY29ubmVjdGlvbl90KWNvbm5lY3Rp
b247Ci0tICh2b2lkKWNsb3NlOwotLSAodm9pZClzZW5kTWVzc2FnZTooTlNTdHJpbmcgKiltZXNz
YWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87Ci0KLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBhc3NpZ24pIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGU+IGRl
bGVnYXRlOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSB4cGNfY29ubmVjdGlvbl90
IGNvbm5lY3Rpb247Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgYXZhaWxh
YmxlOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICp0YWc7Ci0KLUBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5z
cGVjdG9yWFBDV3JhcHBlci5tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90
ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDVmYjFlMDIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3Jl
bW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0KKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ci5oIgotCi0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotCi0jaWYgX19oYXNfaW5jbHVkZSg8
Q29yZUZvdW5kYXRpb24vQ0ZYUENCcmlkZ2UuaD4pCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24v
Q0ZYUENCcmlkZ2UuaD4KLSNlbHNlCi1leHRlcm4geHBjX29iamVjdF90IF9DRlhQQ0NyZWF0ZVhQ
Q01lc3NhZ2VXaXRoQ0ZPYmplY3QoQ0ZUeXBlUmVmKTsKLWV4dGVybiBDRlR5cGVSZWYgX0NGWFBD
Q3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4cGNfb2JqZWN0X3QpOwotI2VuZGlmCi0KLS8v
IENvbnN0YW50cyBwcml2YXRlIHRvIHRoaXMgZmlsZSBmb3IgbWVzc2FnZSBzZXJpYWxpemF0aW9u
IG9uIGJvdGggZW5kcy4KLSNkZWZpbmUgV2ViSW5zcGVjdG9yWFBDV3JhcHBlck1lc3NhZ2VOYW1l
S2V5IEAibWVzc2FnZU5hbWUiCi0jZGVmaW5lIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJVc2VySW5m
b0tleSBAInVzZXJJbmZvIgotI2RlZmluZSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyU2VyaWFsaXpl
ZE1lc3NhZ2VLZXkgIm1zZ0RhdGEiCi0KLUBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ciAoKQotLSAodm9pZClfaGFuZGxlRXZlbnQ6KHhwY19vYmplY3RfdClvYmplY3Q7Ci1AZW5kCi0K
LQotQGltcGxlbWVudGF0aW9uIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIKLQotQGR5bmFtaWMgYXZh
aWxhYmxlOwotCi1Ac3ludGhlc2l6ZSBkZWxlZ2F0ZSA9IF9kZWxlZ2F0ZTsKLUBzeW50aGVzaXpl
IGNvbm5lY3Rpb24gPSBfY29ubmVjdGlvbjsKLUBzeW50aGVzaXplIHRhZyA9IF90YWc7Ci0KLS0g
KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKilpbml0V2l0aENvbm5lY3Rpb246KHhwY19jb25uZWN0
aW9uX3QpY29ubmVjdGlvbgotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFz
ZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX2Nvbm5lY3Rpb24gPSB4cGNfcmV0YWlu
KGNvbm5lY3Rpb24pOwotICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUoX2Nvbm5l
Y3Rpb24sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwotICAgIHhwY19jb25uZWN0aW9uX3Nl
dF9ldmVudF9oYW5kbGVyKF9jb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsgW3Nl
bGYgX2hhbmRsZUV2ZW50Om9iamVjdF07IH0pOwotICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShf
Y29ubmVjdGlvbik7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZCljbG9zZQotewot
ICAgIGlmIChfY29ubmVjdGlvbikgewotICAgICAgICB4cGNfY29ubmVjdGlvbl9jYW5jZWwoX2Nv
bm5lY3Rpb24pOwotICAgICAgICB4cGNfcmVsZWFzZShfY29ubmVjdGlvbik7Ci0gICAgICAgIF9j
b25uZWN0aW9uID0gTlVMTDsKLSAgICB9Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtz
ZWxmIGNsb3NlXTsKLSAgICBbX3RhZyByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19
Ci0KLS0gKE5TRGljdGlvbmFyeSAqKV9kZXNlcmlhbGl6ZU1lc3NhZ2U6KHhwY19vYmplY3RfdClv
YmplY3QKLXsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHhwY19nZXRfdHlwZShvYmplY3QpID09
IFhQQ19UWVBFX0RJQ1RJT05BUlksICJHb3QgdW5leHBlY3RlZCBvYmplY3QgZnJvbSBhbiB4cGMg
Y29ubmVjdGlvbiIpOwotICAgIGlmICh4cGNfZ2V0X3R5cGUob2JqZWN0KSAhPSBYUENfVFlQRV9E
SUNUSU9OQVJZKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgeHBjX29iamVjdF90IHhwY0Rp
Y3Rpb25hcnkgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUob2JqZWN0LCBXZWJJbnNwZWN0b3JY
UENXcmFwcGVyU2VyaWFsaXplZE1lc3NhZ2VLZXkpOwotICAgIGlmICgheHBjRGljdGlvbmFyeSB8
fCB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkgewot
ICAgICAgICAvLyBUaGlzIGlzbid0IGEgbWVzc2FnZSB0eXBlIHRoYXQgd2Uga25vdyBob3cgdG8g
ZGVzZXJpYWxpemUsIHNvIHdlIGxldCBvdXIgZGVsZWdhdGUgd29ycnkgYWJvdXQgaXQuCi0gICAg
ICAgIGlmIChbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoeHBjQ29ubmVj
dGlvbjp1bmhhbmRsZWRNZXNzYWdlOildKQotICAgICAgICAgICAgW19kZWxlZ2F0ZSB4cGNDb25u
ZWN0aW9uOnNlbGYgdW5oYW5kbGVkTWVzc2FnZTpvYmplY3RdOwotICAgICAgICByZXR1cm4gbmls
OwotICAgIH0KLQotICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IF9DRlhQQ0NyZWF0ZUNG
T2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjRGljdGlvbmFyeSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShkaWN0aW9uYXJ5LCAiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7Ci0g
ICAgaWYgKCFkaWN0aW9uYXJ5KQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIFtk
aWN0aW9uYXJ5IGF1dG9yZWxlYXNlXTsKLX0KLQotLSAodm9pZClfaGFuZGxlRXZlbnQ6KHhwY19v
YmplY3RfdClvYmplY3QKLXsKLSAgICBpZiAoIV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoeHBjX2dldF90eXBlKG9iamVjdCkgPT0gWFBDX1RZUEVfRVJST1IpIHsKLSAg
ICAgICAgW19kZWxlZ2F0ZSB4cGNDb25uZWN0aW9uRmFpbGVkOnNlbGZdOwotICAgICAgICBbc2Vs
ZiBjbG9zZV07Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIV9kZWxlZ2F0ZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGljdGlvbmFyeSA9IFtz
ZWxmIF9kZXNlcmlhbGl6ZU1lc3NhZ2U6b2JqZWN0XTsKLSAgICBpZiAoIWRhdGFEaWN0aW9uYXJ5
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU1N0cmluZyAqbWVzc2FnZSA9IFtkYXRhRGljdGlv
bmFyeSBvYmplY3RGb3JLZXk6V2ViSW5zcGVjdG9yWFBDV3JhcHBlck1lc3NhZ2VOYW1lS2V5XTsK
LSAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gW2RhdGFEaWN0aW9uYXJ5IG9iamVjdEZvcktl
eTpXZWJJbnNwZWN0b3JYUENXcmFwcGVyVXNlckluZm9LZXldOwotICAgIFtfZGVsZWdhdGUgeHBj
Q29ubmVjdGlvbjpzZWxmIHJlY2VpdmVkTWVzc2FnZTptZXNzYWdlIHVzZXJJbmZvOnVzZXJJbmZv
XTsKLX0KLQotLSAodm9pZClzZW5kTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2Vy
SW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm8KLXsKLSAgICBpZiAoIV9jb25uZWN0aW9uKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0g
W05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bWVzc2FnZU5hbWUgZm9y
S2V5OldlYkluc3BlY3RvclhQQ1dyYXBwZXJNZXNzYWdlTmFtZUtleV07Ci0gICAgaWYgKHVzZXJJ
bmZvKQotICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6dXNlckluZm8gZm9yS2V5OldlYklu
c3BlY3RvclhQQ1dyYXBwZXJVc2VySW5mb0tleV07Ci0KLSAgICB4cGNfb2JqZWN0X3QgeHBjRGlj
dGlvbmFyeSA9IF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VXaXRoQ0ZPYmplY3QoKENGRGljdGlvbmFy
eVJlZilkaWN0aW9uYXJ5KTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHhwY0RpY3Rpb25hcnkg
JiYgeHBjX2dldF90eXBlKHhwY0RpY3Rpb25hcnkpID09IFhQQ19UWVBFX0RJQ1RJT05BUlksICJV
bmFibGUgdG8gc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7Ci0gICAgaWYgKCF4cGNEaWN0aW9uYXJ5
KQotICAgICAgICByZXR1cm47Ci0KLSAgICB4cGNfb2JqZWN0X3QgbXNnID0geHBjX2RpY3Rpb25h
cnlfY3JlYXRlKE5VTEwsIE5VTEwsIDApOwotICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZSht
c2csIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJTZXJpYWxpemVkTWVzc2FnZUtleSwgeHBjRGljdGlv
bmFyeSk7Ci0gICAgeHBjX3JlbGVhc2UoeHBjRGljdGlvbmFyeSk7Ci0KLSAgICB4cGNfY29ubmVj
dGlvbl9zZW5kX21lc3NhZ2UoX2Nvbm5lY3Rpb24sIG1zZyk7Ci0KLSAgICB4cGNfcmVsZWFzZSht
c2cpOwotfQotCi0tIChCT09MKWF2YWlsYWJsZQotewotICAgIHJldHVybiBfY29ubmVjdGlvbiAh
PSBOVUxMOwotfQotCi1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViS2l0LmV4cCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5leHAKaW5kZXggZjNmZDJm
NC4uNTZmODE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0LmV4cAorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQuZXhwCkBAIC0yMiw3ICsyMiw2IEBACiAub2JqY19j
bGFzc19uYW1lX1dlYkhpc3RvcnlJdGVtCiAub2JqY19jbGFzc19uYW1lX1dlYkljb25EYXRhYmFz
ZQogLm9iamNfY2xhc3NfbmFtZV9XZWJJbnNwZWN0b3IKLS5vYmpjX2NsYXNzX25hbWVfV2ViSW5z
cGVjdG9yWFBDV3JhcHBlcgogLm9iamNfY2xhc3NfbmFtZV9XZWJKYXZhU2NyaXB0VGV4dElucHV0
UGFuZWwKIC5vYmpjX2NsYXNzX25hbWVfV2ViS2V5R2VuZXJhdG9yCiAub2JqY19jbGFzc19uYW1l
X1dlYktpdFN0YXRpc3RpY3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA1
NWMxZWQzLi5jMzJjOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0y
MTIsNyArMjEyLDYgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0j
aW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0
ICJXZWJJbmRpY2F0ZUxheWVyLmgiCiAjZW5kaWYKQEAgLTM5MSwxMCArMzkwLDYgQEAgc3RhdGlj
IFdlYkNhY2hlTW9kZWwgc19jYWNoZU1vZGVsID0gV2ViQ2FjaGVNb2RlbERvY3VtZW50Vmlld2Vy
Owogc3RhdGljIGNvbnN0IGNoYXIgd2ViVmlld0lzT3BlbltdID0gIkF0IGxlYXN0IG9uZSBXZWJW
aWV3IGlzIHN0aWxsIG9wZW4uIjsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi1zdGF0aWMgQk9PTCBhdXRvU3RhcnRSZW1vdGVJbnNwZWN0b3IgPSBOTzsKLSNlbmRpZgot
CiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJWYWxpZGF0ZVdpdGhvdXREZWxlZ2F0ZSkKIC0gKEJP
T0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXREZWxlZ2F0ZTooaWQgPE5TVmFsaWRh
dGVkVXNlckludGVyZmFjZUl0ZW0+KWl0ZW07CiBAZW5kCkBAIC01MjUsNiArNTIwLDcgQEAgTlNT
dHJpbmcgKl9XZWJWaWV3RGlkU3RhcnRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTm90aWZpY2F0aW9u
ID0gQCJfV2ViVmlld0RpZFN0YXIKIE5TU3RyaW5nICogY29uc3QgV2ViVmlld1dpbGxDbG9zZU5v
dGlmaWNhdGlvbiA9IEAiV2ViVmlld1dpbGxDbG9zZU5vdGlmaWNhdGlvbiI7CiAKICNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKKy8vIEZJWE1FOiBMZWdhY3ksIHJlbW92ZSB0aGlzLCBzd2l0
Y2ggdG8gc29tZXRoaW5nIGZyb20gSmF2YVNjcmlwdENvcmUgSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIuCiBOU1N0cmluZyAqX1dlYlZpZXdSZW1vdGVJbnNwZWN0b3JIYXNTZXNzaW9u
Q2hhbmdlZE5vdGlmaWNhdGlvbiA9IEAiX1dlYlZpZXdSZW1vdGVJbnNwZWN0b3JIYXNTZXNzaW9u
Q2hhbmdlZE5vdGlmaWNhdGlvbiI7CiAjZW5kaWYKIApAQCAtNzY2LDExICs3NjIsNiBAQCBzdGF0
aWMgYm9vbCBzaG91bGRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKCkK
ICAgICAgICAgCiAgICAgICAgIFNldHRpbmdzOjpzZXRTaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNT
U0F0dHJpYnV0ZVNldHRlcnMoc2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0
ZXJzKCkpOwogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgICAgIGlmIChhdXRv
U3RhcnRSZW1vdGVJbnNwZWN0b3IpCi0gICAgICAgICAgICBbV2ViVmlldyBfZW5hYmxlUmVtb3Rl
SW5zcGVjdG9yXTsKLSNlbmRpZgotCiAgICAgICAgIGRpZE9uZVRpbWVJbml0aWFsaXphdGlvbiA9
IHRydWU7CiAgICAgfQogCkBAIC0xMjcxLDYwICsxMjYyLDQyIEBAIHN0YXRpYyBib29sIGZhc3RE
b2N1bWVudFRlYXJkb3duRW5hYmxlZCgpCiB9CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKLSsgKFdlYkluc3BlY3RvclNlcnZlciAqKXNoYXJlZFdlYkluc3BlY3RvclNlcnZlcgotewot
ICAgIHN0YXRpYyBXZWJJbnNwZWN0b3JTZXJ2ZXIgKnNoYXJlZFNlcnZlciA9IFtbV2ViSW5zcGVj
dG9yU2VydmVyIGFsbG9jXSBpbml0XTsKLSAgICByZXR1cm4gc2hhcmVkU2VydmVyOwotfQotCiAr
ICh2b2lkKV9lbmFibGVSZW1vdGVJbnNwZWN0b3IKIHsKLSAgICBbW1dlYlZpZXcgc2hhcmVkV2Vi
SW5zcGVjdG9yU2VydmVyXSBzdGFydF07CisgICAgLy8gRklYTUU6IE1vdmUgdGhpcyB0byBhIG5l
dyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlciBpbnRlcmZhY2Ugb3IgcmVtb3ZlIGl0
LgogfQogCiArICh2b2lkKV9kaXNhYmxlUmVtb3RlSW5zcGVjdG9yCiB7Ci0gICAgW1tXZWJWaWV3
IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gc3RvcF07CisgICAgLy8gRklYTUU6IE1vdmUgdGhp
cyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlciBpbnRlcmZhY2Ugb3Ig
cmVtb3ZlIGl0LgogfQogCiArICh2b2lkKV9kaXNhYmxlQXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9y
CiB7Ci0gICAgYXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yID0gTk87CisgICAgLy8gRklYTUU6IE1v
dmUgdGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlciBpbnRlcmZh
Y2Ugb3IgcmVtb3ZlIGl0LgogfQogCiArIChCT09MKV9pc1JlbW90ZUluc3BlY3RvckVuYWJsZWQK
IHsKLSAgICByZXR1cm4gW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gaXNFbmFi
bGVkXTsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGEgbmV3IEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yU2VydmVyIGludGVyZmFjZSBvciByZW1vdmUgaXQuCisgICAgcmV0dXJuIE5POwog
fQogCiArIChCT09MKV9oYXNSZW1vdGVJbnNwZWN0b3JTZXNzaW9uCiB7Ci0gICAgcmV0dXJuIFtb
V2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIGhhc0FjdGl2ZURlYnVnU2Vzc2lvbl07
Ci19Ci0KLS0gKEJPT0wpY2FuQmVSZW1vdGVseUluc3BlY3RlZAotewotI2lmICFQTEFURk9STShJ
T1MpCi0gICAgaWYgKCFbW3NlbGYgcHJlZmVyZW5jZXNdIGRldmVsb3BlckV4dHJhc0VuYWJsZWRd
KQotICAgICAgICByZXR1cm4gTk87Ci0jZW5kaWYKLQotICAgIHJldHVybiBbc2VsZiBhbGxvd3NS
ZW1vdGVJbnNwZWN0aW9uXTsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGEgbmV3IEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyIGludGVyZmFjZSBvciByZW1vdmUgaXQuCisgICAg
cmV0dXJuIE5POwogfQogCiAtIChCT09MKWFsbG93c1JlbW90ZUluc3BlY3Rpb24KIHsKLSAgICBy
ZXR1cm4gX3ByaXZhdGUtPmFsbG93c1JlbW90ZUluc3BlY3Rpb247CisgICAgLy8gRklYTUU6IE1v
dmUgdGhpcyB0byBhIG5ldyBBUEkuCisgICAgcmV0dXJuIE5POwogfQogCiAtICh2b2lkKXNldEFs
bG93c1JlbW90ZUluc3BlY3Rpb246KEJPT0wpYWxsb3cKIHsKLSAgICBpZiAoX3ByaXZhdGUtPmFs
bG93c1JlbW90ZUluc3BlY3Rpb24gPT0gYWxsb3cpCi0gICAgICAgIHJldHVybjsKLQotICAgIF9w
cml2YXRlLT5hbGxvd3NSZW1vdGVJbnNwZWN0aW9uID0gYWxsb3c7Ci0KLSAgICBbW1dlYlZpZXcg
c2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBwdXNoTGlzdGluZ107CisgICAgLy8gRklYTUU6IE1v
dmUgdGhpcyB0byBhIG5ldyBBUEkuCiB9CiAKIC0gKHZvaWQpc2V0SW5kaWNhdGluZ0ZvclJlbW90
ZUluc3BlY3RvcjooQk9PTCllbmFibGVkCkBAIC0xMzQ0LDI5ICsxMzE3LDE1IEBAIHN0YXRpYyBi
b29sIGZhc3REb2N1bWVudFRlYXJkb3duRW5hYmxlZCgpCiAgICAgICAgIF9wcml2YXRlLT5pbmRp
Y2F0ZUxheWVyID0gbmlsOwogICAgIH0KICNlbHNlCi0gICAgLy8gRklYTUU6IE5lZWRzIGltcGxl
bWVudGF0aW9uLgorICAgIC8vIEZJWE1FOiBOZWVkcyBpbXBsZW1lbnRhdGlvbiBvciBwdXQgYW4g
aW1wbGVtZW50YXRpb24gaW4gV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheS4KICNlbmRpZgogfQog
Ci0tICh2b2lkKXNldFJlbW90ZUluc3BlY3RvclVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2Vy
SW5mbwotewotICAgIGlmIChbX3ByaXZhdGUtPnJlbW90ZUluc3BlY3RvclVzZXJJbmZvIGlzRXF1
YWxUb0RpY3Rpb25hcnk6dXNlckluZm9dKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbX3ByaXZh
dGUtPnJlbW90ZUluc3BlY3RvclVzZXJJbmZvIHJlbGVhc2VdOwotICAgIF9wcml2YXRlLT5yZW1v
dGVJbnNwZWN0b3JVc2VySW5mbyA9IFt1c2VySW5mbyBjb3B5XTsKLQotICAgIFtbV2ViVmlldyBz
aGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIHB1c2hMaXN0aW5nXTsKLX0KLQotLSAoTlNEaWN0aW9u
YXJ5ICopcmVtb3RlSW5zcGVjdG9yVXNlckluZm8KLXsKLSAgICByZXR1cm4gX3ByaXZhdGUtPnJl
bW90ZUluc3BlY3RvclVzZXJJbmZvOwotfQotCiAjaWYgUExBVEZPUk0oSU9TKQogLSAodm9pZClz
ZXRIb3N0QXBwbGljYXRpb25CdW5kbGVJZDooTlNTdHJpbmcgKilidW5kbGVJZCBuYW1lOihOU1N0
cmluZyAqKW5hbWUKIHsKKyAgICAvLyBGSVhNRTogVGhpcyBoYXMgbm90IHlldCBiZWVuIHBvcnRl
ZCB0byBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlci4KKwogICAgIGlmICghW19wcml2
YXRlLT5ob3N0QXBwbGljYXRpb25CdW5kbGVJZCBpc0VxdWFsVG9TdHJpbmc6YnVuZGxlSWRdKSB7
CiAgICAgICAgIFtfcHJpdmF0ZS0+aG9zdEFwcGxpY2F0aW9uQnVuZGxlSWQgcmVsZWFzZV07CiAg
ICAgICAgIF9wcml2YXRlLT5ob3N0QXBwbGljYXRpb25CdW5kbGVJZCA9IFtidW5kbGVJZCBjb3B5
XTsKQEAgLTIxMjIsOSArMjA4MSw2IEBAIHN0YXRpYyBpbmxpbmUgSU1QIGdldE1ldGhvZChpZCBv
LCBTRUwgcykKICAgICBpZiAoZnJhbWUgPT0gW3NlbGYgbWFpbkZyYW1lXSkKICAgICAgICAgW3Nl
bGYgX2RpZENoYW5nZVZhbHVlRm9yS2V5OiBfV2ViTWFpbkZyYW1lVVJMS2V5XTsKICAgICBbTlNB
cHAgc2V0V2luZG93c05lZWRVcGRhdGU6WUVTXTsKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKLSAgICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBwdXNoTGlzdGluZ107
Ci0jZW5kaWYKIH0KIAogLSAodm9pZClfZGlkRmluaXNoTG9hZEZvckZyYW1lOihXZWJGcmFtZSAq
KWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRh
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggMjQ1NDE1
OC4uNGMyNjcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAt
MjA4LDggKzIwOCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQotICAgIEJPT0wgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbjsKLSAgICBOU0RpY3Rpb25h
cnkgKnJlbW90ZUluc3BlY3RvclVzZXJJbmZvOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBXZWJJ
bmRpY2F0ZUxheWVyICppbmRpY2F0ZUxheWVyOwogICAgIE5TU3RyaW5nICpob3N0QXBwbGljYXRp
b25CdW5kbGVJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0RhdGEubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCmluZGV4
IDAzNDNhOWMuLmViMGJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld0RhdGEubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0
YS5tbQpAQCAtOTksMTAgKzk5LDYgQEAgV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6OldlYlZp
ZXdMYXllckZsdXNoU2NoZWR1bGVyKExheWVyRmx1c2hDb250cm9sbGVyKiBmbHUKICAgICBkYXNo
Ym9hcmRCZWhhdmlvckFsbG93V2hlZWxTY3JvbGxpbmcgPSBZRVM7CiAjZW5kaWYKIAotI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIGFsbG93c1JlbW90ZUluc3BlY3Rpb24gPSBZRVM7
Ci0jZW5kaWYKLQogICAgIHNob3VsZENsb3NlV2l0aFdpbmRvdyA9IG9iamNfY29sbGVjdGluZ0Vu
YWJsZWQoKTsKIAogICAgIHBsdWdpbkRhdGFiYXNlQ2xpZW50Q291bnQrKzsKQEAgLTEzNSw3ICsx
MzEsNiBAQCBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hTY2hl
ZHVsZXIoTGF5ZXJGbHVzaENvbnRyb2xsZXIqIGZsdQogICAgIFttZWRpYVN0eWxlIHJlbGVhc2Vd
OwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgW3JlbW90ZUluc3BlY3RvclVz
ZXJJbmZvIHJlbGVhc2VdOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBbaW5kaWNhdGVMYXllciBy
ZWxlYXNlXTsKICAgICBbaG9zdEFwcGxpY2F0aW9uQnVuZGxlSWQgcmVsZWFzZV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCAyNmM4OTg2Li5jZDU0
ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKQEAg
LTYxLDkgKzYxLDYgQEAgc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwogQGNsYXNzIFdlYkJh
c2VQbHVnaW5QYWNrYWdlOwogQGNsYXNzIFdlYkRvd25sb2FkOwogQGNsYXNzIFdlYk5vZGVIaWdo
bGlnaHQ7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi1AY2xhc3MgV2ViSW5zcGVjdG9y
U2VydmVyOwotI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogCkBAIC0yMTcsMTAgKzIxNCw2
IEBAIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogLSAodm9pZClfZnVsbFNjcmVlblJl
bmRlcmVyQ2hhbmdlZDooV2ViQ29yZTo6UmVuZGVyQm94KilyZW5kZXJlcjsKICNlbmRpZgogCi0j
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0rIChXZWJJbnNwZWN0b3JTZXJ2ZXIgKilzaGFy
ZWRXZWJJbnNwZWN0b3JTZXJ2ZXI7Ci0jZW5kaWYKLQogLy8gQ29udmVyc2lvbiBmdW5jdGlvbnMg
YmV0d2VlbiBXZWJDb3JlIHJvb3QgdmlldyBjb29yZGluYXRlcyBhbmQgd2ViIHZpZXcgY29vcmRp
bmF0ZXMuCiAtIChOU1BvaW50KV9jb252ZXJ0UG9pbnRGcm9tUm9vdFZpZXc6KE5TUG9pbnQpcG9p
bnQ7CiAtIChOU1JlY3QpX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OihOU1JlY3QpcmVjdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCAyZGRmZGVkLi41
MDFmOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBA
IC03Nyw2ICs3Nyw3IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViRWxlbWVudElzSW5TY3JvbGxCYXJL
ZXk7CiBleHRlcm4gTlNTdHJpbmcgKl9XZWJWaWV3RGlkU3RhcnRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTm90aWZpY2F0aW9uOwogCiAjaWYgRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IKKy8vIEZJWE1F
OiBMZWdhY3ksIHJlbW92ZSB0aGlzLCBzd2l0Y2ggdG8gc29tZXRoaW5nIGZyb20gSmF2YVNjcmlw
dENvcmUgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuCiAvLyBOb3RpZmljYXRpb24g
d2hlbiB0aGUgbnVtYmVyIG9mIGluc3BlY3RvciBzZXNzaW9ucyBiZWNvbWVzIG5vbi16ZXJvIG9y
IHJldHVybnMgdG8gMC4KIC8vIENoZWNrIHRoZSBjdXJyZW50IHN0YXRlIHZpYSAtW1dlYlZpZXcg
X2hhc1JlbW90ZUluc3BlY3RvclNlc3Npb25dLgogZXh0ZXJuIE5TU3RyaW5nICpfV2ViVmlld1Jl
bW90ZUluc3BlY3Rvckhhc1Nlc3Npb25DaGFuZ2VkTm90aWZpY2F0aW9uOwpAQCAtMjYzLDE1ICsy
NjQsNiBAQCB0eXBlZGVmIGVudW0gewogKyAoQk9PTClfaGFzUmVtb3RlSW5zcGVjdG9yU2Vzc2lv
bjsKIAogLyohCi0gICAgQG1ldGhvZCBjYW5CZVJlbW90ZWx5SW5zcGVjdGVkCi0gICAgQHJlc3Vs
dCBMb29rcyBhdCBhbGwgdGhlIGZhY3RvcnMgb2YgdGhpcyBXZWJWaWV3IGFuZCByZXR1cm5zIHdo
ZXRoZXIgb3Igbm90Ci0gICAgdGhpcyBXZWJWaWV3IHNob3VsZCBhbGxvdyBhIFJlbW90ZSBXZWIg
SW5zcGVjdG9yIHRvIGF0dGFjaCB0byBpdC4gVGhpcyB0YWtlcwotICAgIGludG8gYWNjb3VudCAt
YWxsb3dzUmVtb3RlSW5zcGVjdGlvbiwgUHJpdmF0ZSBCcm93c2luZywgYW5kIHBvdGVudGlhbGx5
IG90aGVyCi0gICAgZmFjdG9ycy4KLSovCi0tIChCT09MKWNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQ7
Ci0KLS8qIQogICAgIEBtZXRob2QgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbgogICAgIEByZXN1bHQg
UmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGlzIFdlYlZpZXcgd2lsbCBhbGxvdyBhIFJlbW90ZSBX
ZWIgSW5zcGVjdG9yCiAgICAgdG8gYXR0YWNoIHRvIGl0LgpAQCAtMjkyLDIxICsyODQsNiBAQCB0
eXBlZGVmIGVudW0gewogICAgIEBhYnN0cmFjdCBpbmRpY2F0ZSB0aGlzIFdlYlZpZXcgb24gc2Ny
ZWVuIGZvciBhIHJlbW90ZSBpbnNwZWN0b3IuCiAqLwogLSAodm9pZClzZXRJbmRpY2F0aW5nRm9y
UmVtb3RlSW5zcGVjdG9yOihCT09MKWVuYWJsZWQ7Ci0KLS8qCi0gICAgQG1ldGhvZCBzZXRSZW1v
dGVJbnNwZWN0b3JVc2VySW5mbwotICAgIEBwYXJhbSB0YWcgVGhlIGRpY3Rpb25hcnkgdG8gYmUg
YXNzb2NpYXRlZCB3aXRoIHRoZSBXZWJWaWV3LgotICAgIEBhYnN0cmFjdCBEZXZlbG9wZXIgc3Bl
Y2lmaWVkIGRpY3Rpb25hcnkgZm9yIHRoZSBXZWJWaWV3IHRoYXQgd2lsbCBiZQotICAgIHNlbnQg
dG8gdGhlIFJlbW90ZSBEZWJ1Z2dlci4gVGhlIGRpY3Rpb25hcnkgbXVzdCBjb250YWluIHByb3Bl
cnR5Ci0gICAgbGlzdCBzZXJpYWxpemFibGUgdmFsdWVzLgotKi8KLS0gKHZvaWQpc2V0UmVtb3Rl
SW5zcGVjdG9yVXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOwotCi0vKiEKLSAgICBA
bWV0aG9kIHJlbW90ZUluc3BlY3RvclVzZXJJbmZvCi0gICAgQHJlc3VsdCBSZXR1cm5zIHRoZSBk
aWN0aW9uYXJ5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFdlYlZpZXcuCi0qLwotLSAoTlNEaWN0aW9u
YXJ5ICopcmVtb3RlSW5zcGVjdG9yVXNlckluZm87CiAjZW5kaWYKIAogCg==
</data>
<flag name="review"
          id="240467"
          type_id="1"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217593</attachid>
            <date>2013-11-21 12:25:43 -0800</date>
            <delta_ts>2013-11-22 12:31:43 -0800</delta_ts>
            <desc>[PATCH] Part 1 - JSC remote inspector debugging connection management</desc>
            <filename>part1b.patch</filename>
            <type>text/plain</type>
            <size>73291</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGNiYzE2NTkuLmZjMWI5NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2gg
UmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2
YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNDYxMworCisgICAgICAgIE1vdmUgdGhlIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSBy
ZW1vdGUgZGVidWdnZXIgY29ubmVjdGlvbiBtYW5hZ2VtZW50CisgICAgICAgIGludG8gSmF2YVNj
cmlwdENvcmUgKG9yaWdpbmFsbHkgZnJvbSBXZWJLaXQvbWFjKS4gSW5jbHVkZSBlbmhhbmNlbWVu
dHM6CisKKyAgICAgICAgICAqIGFsbG93IGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgcmVtb3RlIGRl
YnVnZ2FibGUgdGFyZ2V0cywKKyAgICAgICAgICAgIGV2ZW50dWFsbHkgYXQgbGVhc3QgYSBKU0Nv
bnRleHQsIFdlYlZpZXcsIFdLVmlldy4KKyAgICAgICAgICAqIGFsbG93IGRlYnVnZ2FibGVzIHRv
IGJlIHJlZ2lzdGVyZWQgYW5kIGRlYnVnZ2VkIG9uIGFueSB0aHJlYWQuIFVubGlrZQorICAgICAg
ICAgICAgV2ViVmlld3MsIEpTQ29udGV4dHMgbWF5IGJlIHJ1biBlbnRpcmVseSBvZmYgb2YgdGhl
IG1haW4gdGhyZWFkLgorICAgICAgICAgICogbW92ZSB0aGUgcmVtb3RlIGNvbm5lY3Rpb24gKFhQ
QyBjb25uZWN0aW9uKSBpdHNlbGYgb2ZmIG9mIHRoZSBtYWluIHRocmVhZCwKKyAgICAgICAgICAg
IGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6flJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlOjppbml0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6dXBkYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluZm8pOgorICAgICAgICBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlIGRlZmluZXMgYSBkZWJ1Z2dhYmxlIHRhcmdldC4gQXMgbG9uZyBhcwor
ICAgICAgICBzb21ldGhpbmcgY3JlYXRlcyBhIGRlYnVnZ2FibGUgYW5kIGlzIHNldCB0byBhbGxv
dyByZW1vdGUgaW5zcGVjdGlvbgorICAgICAgICBpdCB3aWxsIGJlIGxpc3RlZCBpbiByZW1vdGUg
ZGVidWdnZXJzLiBGb3IgdGhlIGRpZmZlcmVudCB0eXBlcyBvZgorICAgICAgICBkZWJ1Z2dhYmxl
cyAoSmF2YVNjcmlwdCBhbmQgV2ViKSB0aGVyZSBpcyBkaWZmZXJlbnQgYmFzaWMgaW5mb3JtYXRp
b24KKyAgICAgICAgdGhhdCBtYXkgYmUgbGlzdGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsOjp+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKToKKyAgICAg
ICAgVGhlIG9ubHkgdGhpbmcgYSBkZWJ1Z2dhYmxlIG5lZWRzIGZvciByZW1vdGUgZGVidWdnaW5n
IGlzIGFuCisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBhIHdheSB0byBzZW5kIG1l
c3NhZ2VzIHRvIGEgcmVtb3RlIGZyb250ZW5kLgorICAgICAgICBUaGlzIGNsYXNzIHByb3ZpZGVz
IHRoYXQgbWV0aG9kLCBhbmQgaXMgdmVuZGVkIHRvIHRoZQorICAgICAgICBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlIHdoZW4gYSByZW1vdGUgY29ubmVjdGlvbiBpcyBzZXR1cC4KKworICAgICAg
ICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOiBBZGRlZC4KKyAgICAgICAgU2lu
Z2xldG9uLCBjcmVhdGVkIGF0IGxlYXN0IHdoZW4gdGhlIGZpcnN0IERlYnVnZ2FibGUgaXMgY3Jl
YXRlZC4KKyAgICAgICAgVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBsaXN0IG9mIGRlYnVnZ2FibGVz
LCBhbnkgY29ubmVjdGlvbiB0byBhCisgICAgICAgIHJlbW90ZSBkZWJ1Z2dlciBwcm94eSAoWFBD
IHNlcnZpY2UgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiKS4KKworICAgICAgICAoSW5zcGVjdG9y
OjpkaXNwYXRjaEFzeW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3Rvcjo6bmV4dEF2YWlsYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlckRlYnVnZ2FibGUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGUpOgorICAgICAgICBE
ZWJ1Z2dhYmxlIG1hbmFnZW1lbnQuIFdoZW4gZGVidWdnYWJsZXMgYXJlIGFkZGVkLCByZW1vdmVk
LCBvciB1cGRhdGVkCisgICAgICAgIHdlIHN0YXNoIGEgY29weSBvZiB0aGUgZGVidWdnYWJsZSBp
bmZvcm1hdGlvbiBhbmQgcHVzaCBhbiB1cGRhdGUgdG8KKyAgICAgICAgZGVidWdnZXJzLiBTdGFz
aGluZyBhIGNvcHkgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBSZW1vdGVJbnNwZWN0b3IKKyAg
ICAgICAgaXMgYSB0aHJlYWQgc2FmZSB3YXkgdG8gYXZvaWQgd2Fsa2luZyBvdmVyIGFsbCBkZWJ1
Z2dhYmxlcyB0byBnYXRoZXIKKyAgICAgICAgdGhlIGluZm9ybWF0aW9uIHdoZW4gaXQgaXMgbmVl
ZGVkLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0b3ApOgorICAgICAgICBSdW50aW1l
IEFQSSB0byBlbmFibGUgLyBkaXNhYmxlIHRoZSBmZWF0dXJlLgorCisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nTm93KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ1Nvb24pOgorICAgICAgICBQdXNoaW5n
IGEgbGlzdGluZyB0byByZW1vdGUgZGVidWdnZXJzLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVk
TWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVj
dGlvbkZhaWxlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29u
bmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UpOgorICAgICAgICBYUEMgc2V0dXAsIHNlbmQsIGFuZCBy
ZWNlaXZlIGhhbmRsaW5nLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKToKKyAgICAgICAgQXBwbGljYXRpb25zIGJlaW5n
IGRlYnVnZ2VkIG1heSB3YW50IHRvIGtub3cgd2hlbiBhIGRlYnVnCisgICAgICAgIHNlc3Npb24g
aXMgYWN0aXZlLiBUaGlzIHByb3ZpZGVzIHRoYXQgbm90aWZpY2F0aW9uLgorCisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldExpc3Rp
bmdNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZl
ZEluZGljYXRlTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
cmVjZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UpOgorICAgICAgICBEaXNwYXRjaGluZyBpbmNv
bWluZyByZW1vdGUgZGVidWdnaW5nIHByb3RvY29sIG1lc3NhZ2VzLgorICAgICAgICBUaGVzZSBh
cmUgd3JhcHBpbmcgYWJvdmUgdGhlIGluc3BlY3RvciBwcm90b2NvbCBtZXNzYWdlcy4KKworICAg
ICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg6IEFkZGVk
LgorICAgICAgICBQcm90b2NvbCBtZXNzYWdlcyBhbmQgZGljdGlvbmFyeSBrZXlzIGluc2lkZSB0
aGUgbWVzc2FnZXMuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUluZm86OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg6IEFkZGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb24ubW06IEFkZGVkLgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVu
IHRoZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb246OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246On5SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbik6CisgICAgICAgIEFsbG93IGZvciBkaXNwYXRj
aGluZyBtZXNzYWdlcyBvbiBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzIG9uIGEgZGlzcGF0Y2hfcXVl
dWUKKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgbWFpbiBxdWV1ZS4KKworICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGVzdGluYXRpb24pOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBOZWVkZWQgaW4gdGhlIHJlbW90ZSBkZWJ1
Z2dpbmcgcHJvdG9jb2wgdG8gaWRlbnRpZnkgdGhlIHJlbW90ZSBkZWJ1Z2dlci4KKworICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0
Y2hTeW5jT25EZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXAp
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bjo6Y2xvc2VGcm9tRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICBUaGUgY29ubmVjdGlvbiBpcyBhIHRo
aW4gY2hhbm5lbCBiZXR3ZWVuIHRoZSB0d28gc2lkZXMgdGhhdCBjYW4gYmUgY2xvc2VkCisgICAg
ICAgIGZyb20gZWl0aGVyIHNpZGUsIHNvIHRoZXJlIGlzIHNvbWUgbG9naWMgYXJvdW5kIG11bHRp
LXRocmVhZGVkIGFjY2Vzcy4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50Ojp+Q2xpZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06IEFkZGVkLgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24pOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVz
c2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246
OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3
ZWVuIHRoZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhbiBYUEMgc2VydmljZQorICAg
ICAgICBuYW1lZCAiY29tLmFwcGxlLndlYmluc3BlY3RvciIuIFRoaXMgaGFuZGxlcyBzZXJpYWxp
emF0aW9uIG9mIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1lc3NhZ2VzIHRvIGFuZCBmcm9tIHRo
ZSBzZXJ2aWNlLiBUaGUgcmVjZWl2aW5nIGlzIGRvbmUgb24gYSBub24tbWFpbiBxdWV1ZS4KKwog
MjAxMy0xMS0yMSAgQmFsYXpzIEtpbHZhZHkgIDxraWx2YWR5YkBob21lamlubmkuY29tPgogCiAg
ICAgICAgIFtNSVBTXSBCdWlsZCBmYWlscyBzaW5jZSByMTU5NTQ1LgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBhM2ZiMGRhMy4uMDAyMjM0NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTg4Myw2ICs4ODMsMTYgQEAKIAkJQTE3MTJCNDExMUM3QjIzNTAwN0E1MzE1
IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQTAwOUMwMTgzMUEyMkQw
MENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQzE1NkVFRDNCMDA1NjZDQjIgLyogTWFjcm9B
c3NlbWJsZXJBUk02NC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0IxNTZF
RUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU5NDU1OEYxODI0NUVGRDAwQ0MzODQzIC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OEUxODI0NUVERTAwQ0MzODQzIC8qIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUuY3BwICovOyB9OworCQlBNTk0NTU5NTE4MjQ3OUVCMDBDQzM4NDMgLyog
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTExODIz
NDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBS
ZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tICov
OyB9OworCQlBNUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3Rh
bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJB
MTVFMzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVCQTE1RUIxODIz
NDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNDE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCAqLzsg
fTsKKwkJQTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uLm1tICovOyB9OworCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJFNjkgLyogUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24uaCAqLzsgfTsKKwkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLzsgfTsKKwkJQTVCQTE1RjAxODIzNDVBRjAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUVGMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTcwMDg3MzkxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVj
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCUE3
MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQz
IC8qIE1hcENvbnN0cnVjdG9yLmggKi87IH07CiAJCUE3MDA4NzNEMTdDQkU4RDMwMEMzRTY0MyAv
KiBNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi87
IH07CkBAIC0yMTkwLDYgKzIyMDAsMTYgQEAKIAkJQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8q
IFJlZ0V4cENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
Z0V4cENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCM0UxMUM3
QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEy
QjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1
OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUuY3BwOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5NDU1OTQxODI0NzlFQjAw
Q0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaDsgcGF0aCA9IGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3IuaDsgcGF0aCA9IGluc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE1QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3IubW07IHBh
dGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTMxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
ckNvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVJbnNw
ZWN0b3JDb25zdGFudHMuaDsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
Q29uc3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QkExNUU0MTgyMzQw
QjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29u
bmVjdGlvbi5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFNTE4
MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE1QkExNUU2MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24uaDsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFNzE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24ubW07IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QkExNUVGMTgyMzQ1QUYwMEE4
MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaDsgcGF0aCA9IGluc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzAwODczNzE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFwQ29uc3RydWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzAwODczODE3Q0JFODUzMDBDM0U2NDMg
LyogTWFwQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFw
Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwMDg3M0IxN0NC
RThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNYXBQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjY4OCw2ICsyNzA4LDcgQEAKIAkJCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcgLyog
RnJhbWV3b3JrcyAqLywKIAkJCQkwRkVBMDlGQzE3MDUxMzdGMDBCQjcyMkMgLyogZnRsICovLAog
CQkJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovLAorCQkJCUE1QkExNURGMTgy
MzQwOTIwMEE4MkU2OSAvKiBpbnNwZWN0b3IgKi8sCiAJCQkJMTQyOUQ3N0EwRUQyMEQ3MzAwQjg5
NjE5IC8qIGludGVycHJldGVyICovLAogCQkJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBq
aXQgKi8sCiAJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovLApAQCAtNDEz
Niw2ICs0MTU3LDMxIEBACiAJCQlwYXRoID0gYnl0ZWNvZGU7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQlBNUJBMTVERjE4MjM0MDkyMDBBODJFNjkgLyogaW5zcGVjdG9yICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBNUJBMTVFMDE4
MjM0MDlEMDBBODJFNjkgLyogcmVtb3RlICovLAorCQkJCUE1OTQ1NTk0MTgyNDc5RUIwMENDMzg0
MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLywKKwkJCSk7CisJCQluYW1lID0gaW5z
cGVjdG9yOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQTVCQTE1RTAxODIz
NDA5RDAwQTgyRTY5IC8qIHJlbW90ZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJQTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
ci5oICovLAorCQkJCUE1QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3Iu
bW0gKi8sCisJCQkJQTVCQTE1RTMxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckNv
bnN0YW50cy5oICovLAorCQkJCUE1QkExNUVGMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlLmggKi8sCisJCQkJQTU5NDU1OEUxODI0NUVERTAwQ0MzODQzIC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwICovLAorCQkJCUE1QkExNUU0MTgyMzQwQjMwMEE4
MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oICovLAorCQkJCUE1
QkExNUU1MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbi5tbSAqLywKKwkJCQlBNUJBMTVFNjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5oICovLAorCQkJCUE1QkExNUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSByZW1v
dGU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAt
NDIwNiw2ICs0MjUyLDcgQEAKIAkJCQk4NjY3MzlEMjEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50
ZWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4MTZFMUMxNTRDQzU2QzAwQjgwNTRDIC8qIEJs
b2NrQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFQzBFMTZGNUNEMDBCMzQ0
NjAgLyogQm9vbGVhbk9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RUExODIzNDBC
NDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCN0YzOTgxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseUlubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZl
bnRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTQyNzUsNiArNDMyMiw3IEBACiAJCQkJMEYxNjAx
NUUxNTYxOThDOTAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMDVDM0I0MTY4M0NGOTIwMEJBRjQ1QiAvKiBERkdBcnJheWlm
eVNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ4NTE1RTQ4MTFC
MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUJBMTVFQjE4
MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUE3RDlBMjk1MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdBdFRhaWxB
YnN0cmFjdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcxNENBNTE2RUE5MkYyMDBGM0VC
RUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY2MjAxNzYxNDNGQ0QzQjAwNjhCNzdDIC8qIERGR0Jhc2ljQmxvY2suaCBpbiBIZWFkZXJzICov
LApAQCAtNDM1MCw2ICs0Mzk4LDcgQEAKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJDNDAgLyog
REZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5
NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE1QkExNUVEMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyog
REZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NzEx
NDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY3MDI1QUExNzE0QjBGQzAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5o
IGluIEhlYWRlcnMgKi8sCkBAIC00NDk5LDYgKzQ1NDgsNyBAQAogCQkJCTg2Q0NFRkRFMEY0MTNG
ODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA3NzZCRjE0RkYw
MDJCMDAxMDIzMzIgLyogSklUQ29tcGlsYXRpb25FZmZvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQUY3RUZFMTY1QkE5MUYwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE1QkExNUYwMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTRFMUYxODEyNEFDRTAwOUI2
QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkND
ODVBMTBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC00
NjcwLDYgKzQ3MjAsNyBAQAogCQkJCTE0RDJGM0RCMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRT
cGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRDZGMTIxMzUzOUE0MTAwQjAyRTg2IC8qIE1h
cmtTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIxMTIyRTMxNUREOUFCMzAwNzkwRTNBIC8q
IE1hcmtTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTQ1NTk1MTgyNDc5RUIw
MENDMzg0MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0M0MwRTE2RjVDRDAwQjM0NDYwIC8qIE1hdGhPYmplY3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkwMjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTQ4MzcsNiArNDg4OCw3IEBACiAJCQkJMTQyRTMxM0MxMzRGRjBB
NjAwQUZBREI1IC8qIFdlYWsuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RTg0RjlGMTRFRTFBQ0Mw
MEQ2RDVENCAvKiBXZWFrQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QkZDRTY5MTBDREIx
RkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1QkExNUU4MTgy
MzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
RjcyNTY2MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0RTg0RkEyMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrSW1wbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTRCRTdEMzMxNzEzNUNGNDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTU1OTIsNiArNTY0NCw3IEBACiAJCQkJMTQ0NjlEREUxMDdFQzdFNzAwNjUw
NDQ2IC8qIExvb2t1cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBDQzE0QkJCMTdBMDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEI3
MjNCMjEyRDdEQTQ2MDAzQkQ1RUQgLyogTWFjaGluZVN0YWNrTWFya2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUIzRUNGMTYyMzdGNkMwMEFCNjdBRCAv
KiBNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkM1NjhFMDExQTIxM0VF
MDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcy
OTAwOUMxNzk3NkM2MDAwMzE3Mjk4IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC01NzE5LDYgKzU3NzIsOSBAQAogCQkJCUE3Q0EzQUU1MTdEQTQxQUUwMDY1MzhB
RiAvKiBXZWFrTWFwUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RTg0RkEwMTRF
RTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzgxNTBC
MTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4g
U291cmNlcyAqLywKKwkJCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQlBNUJBMTVFRTE4
MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3RTVBQjNBMTc5OUU0QjIwMEQyODMzRCAvKiBYODZEaXNhc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYzQzZEOUMxNTIxMTExQTAwNTg1RTRFIC8qIFlhcnJD
YW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg0MTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTBhOGVhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxf
aAorI2RlZmluZSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAorCisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwgeworcHVibGljOgorICAgIHZpcnR1YWwgfkluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCgpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0
b3IKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmYyMzU5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yLmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisK
KyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9yX2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yX2gKKwor
I2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCIKKyNpbXBvcnQg
IlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCIKKyNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+
CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CisKK09CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpD
X0NMQVNTIE5TRGljdGlvbmFyeTsKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGU7CitzdHJ1Y3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm87CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvciBGSU5BTCA6
IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBSZW1vdGVJbnNwZWN0b3ImIHNoYXJlZCgpOworICAgIGZyaWVuZCBjbGFzcyBO
ZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3I+OworCisgICAgdm9pZCByZWdpc3RlckRlYnVn
Z2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSopOworICAgIHZvaWQgdW5yZWdpc3RlckRl
YnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSopOworICAgIHZvaWQgdXBkYXRlRGVi
dWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7CisgICAgdm9pZCBzZW5kTWVzc2Fn
ZVRvUmVtb3RlRnJvbnRlbmQodW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKKworICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQor
ICAgIGJvb2wgaGFzQWN0aXZlRGVidWdTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBY3Rp
dmVEZWJ1Z1Nlc3Npb247IH0KKworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lkIHN0b3AoKTsK
KworcHJpdmF0ZToKKyAgICBSZW1vdGVJbnNwZWN0b3IoKTsKKworICAgIHVuc2lnbmVkIG5leHRB
dmFpbGFibGVJZGVudGlmaWVyKCk7CisKKyAgICB2b2lkIHNldHVwWFBDQ29ubmVjdGlvbklmTmVl
ZGVkKCk7CisKKyAgICBOU0RpY3Rpb25hcnkgKmxpc3RpbmdGb3JEZWJ1Z2dhYmxlKGNvbnN0IFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvJiBkZWJ1Z2dhYmxlSW5mbykgY29uc3Q7CisgICAg
dm9pZCBwdXNoTGlzdGluZ05vdygpOworICAgIHZvaWQgcHVzaExpc3RpbmdTb29uKCk7CisKKyAg
ICB2b2lkIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOworCisgICAgdmlydHVhbCB2b2lk
IHhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
biosIE5TU3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25GYWlsZWQoUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbiopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9u
VW5oYW5kbGVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgeHBjX29iamVj
dF90KSBPVkVSUklERTsKKworICAgIHZvaWQgcmVjZWl2ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9u
YXJ5ICp1c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZERhdGFNZXNzYWdlKE5TRGljdGlvbmFy
eSAqdXNlckluZm8pOworICAgIHZvaWQgcmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2UoTlNEaWN0aW9u
YXJ5ICp1c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZEdldExpc3RpbmdNZXNzYWdlKE5TRGlj
dGlvbmFyeSAqdXNlckluZm8pOworICAgIHZvaWQgcmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UoTlNE
aWN0aW9uYXJ5ICp1c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZENvbm5lY3Rpb25EaWVkTWVz
c2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKworICAgIC8vIERlYnVnZ2FibGVzIGNhbiBi
ZSByZWdpc3RlcmVkIGZyb20gYW55IHRocmVhZCBhdCBhbnkgdGltZS4KKyAgICAvLyBBbnkgZGVi
dWdnYWJsZSBjYW4gc2VuZCBtZXNzYWdlcyBvdmVyIHRoZSBYUEMgY29ubmVjdGlvbi4KKyAgICAv
LyBTbyBsb2NrIGFjY2VzcyB0byBhbGwgbWFwcyBhbmQgc3RhdGUgYXMgdGhleSBjYW4gY2hhbmdl
CisgICAgLy8gZnJvbSBhbnkgdGhyZWFkLgorICAgIE11dGV4IG1fbG9jazsKKworICAgIEhhc2hN
YXA8dW5zaWduZWQsIHN0ZDo6cGFpcjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiwgUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZUluZm8+PiBtX2RlYnVnZ2FibGVNYXA7CisgICAgSGFzaE1hcDx1
bnNpZ25lZCwgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPj4gbV9j
b25uZWN0aW9uTWFwOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uPiBtX3hwY0Nvbm5lY3Rpb247CisgICAgdW5zaWduZWQgbV9uZXh0QXZhaWxhYmxlSWRl
bnRpZmllcjsKKyAgICBpbnQgbV9ub3RpZnlUb2tlbjsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAg
ICBib29sIG1faGFzQWN0aXZlRGVidWdTZXNzaW9uOworICAgIGJvb2wgbV9wdXNoU2NoZWR1bGVk
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKworI2VuZGlmIC8vIFdlYkluc3BlY3RvclNlcnZlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3IubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5YjQxZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3Rvci5tbQpAQCAtMCwwICsxLDQ4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVt
b3RlSW5zcGVjdG9yLmgiCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2ltcG9y
dCAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yQ29uc3Rh
bnRzLmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgiCisjaW1wb3J0IDxu
b3RpZnkuaD4KKyNpbXBvcnQgPHhwYy94cGMuaD4KKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhy
ZWFkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIFBMQVRGT1JNKElP
UykKKyNpbXBvcnQgPHd0Zi9pb3MvV2ViQ29yZVRocmVhZC5oPgorI2VuZGlmCisKK25hbWVzcGFj
ZSBJbnNwZWN0b3IgeworCitzdGF0aWMgdm9pZCBkaXNwYXRjaEFzeW5jT25RdWV1ZVNhZmVGb3JB
bnlEZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSkKK3sKKyNpZiBQTEFURk9STShJT1MpCisgICAg
aWYgKFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQgJiYgV2ViQ29yZVdlYlRocmVhZElzRW5hYmxl
ZCgpKSB7CisgICAgICAgIFdlYkNvcmVXZWJUaHJlYWRSdW4oYmxvY2spOworICAgICAgICByZXR1
cm47CisgICAgfQorI2VuZGlmCisKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBibG9jayk7Cit9CisKK1JlbW90ZUluc3BlY3RvciYgUmVtb3RlSW5zcGVjdG9y
OjpzaGFyZWQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3I+
IHNoYXJlZDsKKworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsKKyAgICBkaXNwYXRj
aF9vbmNlKCZvbmNlLCBeeworICAgICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAg
ICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOworICAgICAgICBzaGFyZWQuZ2V0KCku
c3RhcnQoKTsKKyAgICB9KTsKKworICAgIHJldHVybiBzaGFyZWQ7Cit9CisKK1JlbW90ZUluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yKCkKKyAgICA6IG1fbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIo
MSkKKyAgICAsIG1fbm90aWZ5VG9rZW4oMCkKKyAgICAsIG1fZW5hYmxlZChmYWxzZSkKKyAgICAs
IG1faGFzQWN0aXZlRGVidWdTZXNzaW9uKGZhbHNlKQorICAgICwgbV9wdXNoU2NoZWR1bGVkKGZh
bHNlKQoreworfQorCit1bnNpZ25lZCBSZW1vdGVJbnNwZWN0b3I6Om5leHRBdmFpbGFibGVJZGVu
dGlmaWVyKCkKK3sKKyAgICB1bnNpZ25lZCBuZXh0VmFsaWRJZGVudGlmaWVyOworICAgIGRvIHsK
KyAgICAgICAgbmV4dFZhbGlkSWRlbnRpZmllciA9IG1fbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIr
KzsKKyAgICB9IHdoaWxlICghbmV4dFZhbGlkSWRlbnRpZmllciB8fCBuZXh0VmFsaWRJZGVudGlm
aWVyID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB8fCBtX2RlYnVnZ2Fi
bGVNYXAuY29udGFpbnMobmV4dFZhbGlkSWRlbnRpZmllcikpOworICAgIHJldHVybiBuZXh0VmFs
aWRJZGVudGlmaWVyOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVnaXN0ZXJEZWJ1Z2dh
YmxlKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUpCit7CisgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gbmV4dEF2
YWlsYWJsZUlkZW50aWZpZXIoKTsKKyAgICBkZWJ1Z2dhYmxlLT5zZXRJZGVudGlmaWVyKGlkZW50
aWZpZXIpOworCisgICAgYXV0byByZXN1bHQgPSBtX2RlYnVnZ2FibGVNYXAuc2V0KGlkZW50aWZp
ZXIsIHN0ZDo6bWFrZV9wYWlyKGRlYnVnZ2FibGUsIGRlYnVnZ2FibGUtPmluZm8oKSkpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBpZiAoZGVi
dWdnYWJsZS0+cmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpKQorICAgICAgICBwdXNoTGlzdGluZ1Nv
b24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVucmVnaXN0ZXJEZWJ1Z2dhYmxlKFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUpCit7CisgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gZGVidWdnYWJsZS0+
aWRlbnRpZmllcigpOworICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYm9vbCB3YXNSZW1vdmVkID0gbV9kZWJ1Z2dhYmxlTWFwLnJlbW92ZShpZGVudGlmaWVyKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOworCisgICAgaWYgKFJl
ZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG1f
Y29ubmVjdGlvbk1hcC50YWtlKGlkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5jbG9z
ZUZyb21EZWJ1Z2dhYmxlKCk7CisKKyAgICBpZiAoZGVidWdnYWJsZS0+cmVtb3RlRGVidWdnaW5n
QWxsb3dlZCgpKQorICAgICAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVi
dWdnYWJsZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIHVuc2ln
bmVkIGlkZW50aWZpZXIgPSBkZWJ1Z2dhYmxlLT5pZGVudGlmaWVyKCk7CisgICAgaWYgKCFpZGVu
dGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fZGVidWdnYWJs
ZU1hcC5zZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3BhaXIoZGVidWdnYWJsZSwgZGVidWdnYWJs
ZS0+aW5mbygpKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQuaXNOZXdFbnRy
eSk7CisKKyAgICBpZiAoZGVidWdnYWJsZS0+cmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpKQorICAg
ICAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRN
ZXNzYWdlVG9SZW1vdGVGcm9udGVuZCh1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBpZiAo
IW1feHBjQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFw
LmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsK
KworICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm8gPSBAeworICAgICAgICBXSVJSYXdEYXRhS2V5
OiBbc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4obWVzc2FnZSkgZGF0YVVzaW5nRW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddLAorICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTog
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbklkZW50aWZpZXIoKSwKKyAgICAgICAgV0lSRGVzdGluYXRp
b25LZXk6IGNvbm5lY3Rpb24tPmRlc3RpbmF0aW9uKCkKKyAgICB9OworCisgICAgbV94cGNDb25u
ZWN0aW9uLT5zZW5kTWVzc2FnZShXSVJSYXdEYXRhTWVzc2FnZSwgdXNlckluZm8pOworfQorCit2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X2xvY2spOworCisgICAgaWYgKG1fZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9l
bmFibGVkID0gdHJ1ZTsKKworICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaChXSVJTZXJ2aWNl
QXZhaWxhYmxlTm90aWZpY2F0aW9uLCAmbV9ub3RpZnlUb2tlbiwgZGlzcGF0Y2hfZ2V0X2dsb2Jh
bF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXihpbnQpIHsKKyAg
ICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS5zZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRl
ZCgpOworICAgIH0pOworCisgICAgbm90aWZ5X3Bvc3QoV0lSU2VydmljZUF2YWlsYWJpbGl0eUNo
ZWNrTm90aWZpY2F0aW9uKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0b3AoKQorewor
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKCFtX2VuYWJsZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fZW5hYmxlZCA9IGZhbHNlOworCisgICAgbV9wdXNoU2No
ZWR1bGVkID0gZmFsc2U7CisKKyAgICBmb3IgKGF1dG8gaXQgPSBtX2Nvbm5lY3Rpb25NYXAuYmVn
aW4oKSwgZW5kID0gbV9jb25uZWN0aW9uTWFwLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAg
ICAgIGl0LT52YWx1ZS0+Y2xvc2UoKTsKKyAgICBtX2Nvbm5lY3Rpb25NYXAuY2xlYXIoKTsKKwor
ICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOworCisgICAgaWYgKG1feHBjQ29ubmVj
dGlvbikgeworICAgICAgICBtX3hwY0Nvbm5lY3Rpb24tPmNsb3NlKCk7CisgICAgICAgIG1feHBj
Q29ubmVjdGlvbiA9IG51bGxwdHI7CisgICAgfQorCisgICAgbm90aWZ5X2NhbmNlbChtX25vdGlm
eVRva2VuKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwWFBDQ29ubmVjdGlvbklm
TmVlZGVkKCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmICht
X3hwY0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIHhwY19jb25uZWN0aW9uX3Qg
Y29ubmVjdGlvbiA9IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2UoV0lSWFBDTWFj
aFBvcnROYW1lLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCAwKTsKKyAgICBpZiAoIWNvbm5l
Y3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1feHBjQ29ubmVjdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbj4oY29ubmVjdGlvbiwgdGhpcyk7
CisgICAgbV94cGNDb25uZWN0aW9uLT5zZW5kTWVzc2FnZShAInN5biIsIG5pbCk7IC8vIFNlbmQg
YSBzaW1wbGUgbWVzc2FnZSB0byBpbml0aWFsaXplIHRoZSBYUEMgY29ubmVjdGlvbi4KKyAgICB4
cGNfcmVsZWFzZShjb25uZWN0aW9uKTsKKworICAgIHB1c2hMaXN0aW5nU29vbigpOworfQorCisj
cHJhZ21hIG1hcmsgLSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQKKwordm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5
ICp1c2VySW5mbykKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlm
IChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlBlcm1pc3Npb25EZW5pZWRdKSB7Cisg
ICAgICAgIHN0b3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbbWVzc2Fn
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlNvY2tldERhdGFNZXNzYWdlXSkKKyAgICAgICAgcmVj
ZWl2ZWREYXRhTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlz
RXF1YWxUb1N0cmluZzpXSVJTb2NrZXRTZXR1cE1lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZFNl
dHVwTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxU
b1N0cmluZzpXSVJXZWJQYWdlQ2xvc2VNZXNzYWdlXSkKKyAgICAgICAgcmVjZWl2ZWREaWRDbG9z
ZU1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6V0lSQXBwbGljYXRpb25HZXRMaXN0aW5nTWVzc2FnZV0pCisgICAgICAgIHJlY2VpdmVk
R2V0TGlzdGluZ01lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6V0lSSW5kaWNhdGVNZXNzYWdlXSkKKyAgICAgICAgcmVjZWl2ZWRJbmRp
Y2F0ZU1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6V0lSQ29ubmVjdGlvbkRpZWRNZXNzYWdlXSkKKyAgICAgICAgcmVjZWl2ZWRDb25u
ZWN0aW9uRGllZE1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UKKyAgICAgICAgTlNMb2coQCJV
bnJlY29nbml6ZWQgUmVtb3RlSW5zcGVjdG9yIFhQQyBNZXNzYWdlOiAlQCIsIG1lc3NhZ2VOYW1l
KTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25GYWlsZWQoUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbiopCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisKKyAgICBtX3B1c2hTY2hlZHVsZWQgPSBmYWxzZTsKKworICAgIGZvciAoYXV0byBpdCA9
IG1fY29ubmVjdGlvbk1hcC5iZWdpbigpLCBlbmQgPSBtX2Nvbm5lY3Rpb25NYXAuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT5jbG9zZSgpOworICAgIG1fY29ubmVj
dGlvbk1hcC5jbGVhcigpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisK
KyAgICBpZiAobV94cGNDb25uZWN0aW9uKSB7CisgICAgICAgIG1feHBjQ29ubmVjdGlvbi0+Y2xv
c2UoKTsKKyAgICAgICAgbV94cGNDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK3Zv
aWQgUmVtb3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uVW5oYW5kbGVkTWVzc2FnZShSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uKiwgeHBjX29iamVjdF90KQoreworICAgIC8vIEludGVudGlv
bmFsbHkgaWdub3JlZC4KK30KKworI3ByYWdtYSBtYXJrIC0gTGlzdGluZ3MKKworTlNEaWN0aW9u
YXJ5ICpSZW1vdGVJbnNwZWN0b3I6Omxpc3RpbmdGb3JEZWJ1Z2dhYmxlKGNvbnN0IFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVJbmZvJiBkZWJ1Z2dhYmxlSW5mbykgY29uc3QKK3sKKyAgICBOU011
dGFibGVEaWN0aW9uYXJ5ICpkZWJ1Z2dhYmxlRGV0YWlscyA9IFtOU011dGFibGVEaWN0aW9uYXJ5
IGRpY3Rpb25hcnldOworCisgICAgW2RlYnVnZ2FibGVEZXRhaWxzIHNldE9iamVjdDpAKGRlYnVn
Z2FibGVJbmZvLmlkZW50aWZpZXIpIGZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07CisKKyAg
ICBzd2l0Y2ggKGRlYnVnZ2FibGVJbmZvLnR5cGUpIHsKKyAgICBjYXNlIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGU6OkphdmFTY3JpcHQ6IHsKKyAgICAgICAgTlNTdHJpbmcgKm5hbWUgPSBkZWJ1
Z2dhYmxlSW5mby5uYW1lOworICAgICAgICBbZGVidWdnYWJsZURldGFpbHMgc2V0T2JqZWN0Om5h
bWUgZm9yS2V5OldJUlRpdGxlS2V5XTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6V2ViOiB7CisgICAgICAgIE5TU3RyaW5nICp1cmwg
PSBkZWJ1Z2dhYmxlSW5mby51cmw7CisgICAgICAgIE5TU3RyaW5nICp0aXRsZSA9IGRlYnVnZ2Fi
bGVJbmZvLm5hbWU7CisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6dXJsIGZv
cktleTpXSVJVUkxLZXldOworICAgICAgICBbZGVidWdnYWJsZURldGFpbHMgc2V0T2JqZWN0OnRp
dGxlIGZvcktleTpXSVJUaXRsZUtleV07CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgaWYgKFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4g
Y29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQoZGVidWdnYWJsZUluZm8uaWRlbnRpZmll
cikpCisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6Y29ubmVjdGlvbi0+Y29u
bmVjdGlvbklkZW50aWZpZXIoKSBmb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOwor
CisgICAgaWYgKGRlYnVnZ2FibGVJbmZvLmhhc0xvY2FsRGVidWdnZXIpCisgICAgICAgIFtkZWJ1
Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6V0lSSGFzTG9jYWxEZWJ1Z2dlcktl
eV07CisKKyAgICByZXR1cm4gZGVidWdnYWJsZURldGFpbHM7Cit9CisKK3ZvaWQgUmVtb3RlSW5z
cGVjdG9yOjpwdXNoTGlzdGluZ05vdygpCit7CisgICAgQVNTRVJUKG1feHBjQ29ubmVjdGlvbik7
CisgICAgaWYgKCFtX3hwY0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHVz
aFNjaGVkdWxlZCA9IGZhbHNlOworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+
IHJlc3BvbnNlID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsK
KyAgICBmb3IgKGF1dG8gaXQgPSBtX2RlYnVnZ2FibGVNYXAuYmVnaW4oKSwgZW5kID0gbV9kZWJ1
Z2dhYmxlTWFwLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgY29uc3QgUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZUluZm8mIGRlYnVnZ2FibGVJbmZvID0gaXQtPnZhbHVlLnNlY29u
ZDsKKyAgICAgICAgaWYgKGRlYnVnZ2FibGVJbmZvLnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQpIHsK
KyAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZGV0YWlscyA9IGxpc3RpbmdGb3JEZWJ1Z2dhYmxl
KGRlYnVnZ2FibGVJbmZvKTsKKyAgICAgICAgICAgIFtyZXNwb25zZSBzZXRPYmplY3Q6ZGV0YWls
cyBmb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIldSIsIGRlYnVnZ2FibGVJbmZv
LmlkZW50aWZpZXJdXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFJldGFpblB0cjxOU011dGFi
bGVEaWN0aW9uYXJ5PiBvdXRnb2luZyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XSk7CisgICAgW291dGdvaW5nIHNldE9iamVjdDpyZXNwb25zZS5nZXQoKSBmb3JL
ZXk6V0lSTGlzdGluZ0tleV07CisKKyAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJ
Ukxpc3RpbmdNZXNzYWdlLCBvdXRnb2luZy5nZXQoKSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpwdXNoTGlzdGluZ1Nvb24oKQoreworICAgIGlmICghbV94cGNDb25uZWN0aW9uKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAobV9wdXNoU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3B1c2hTY2hlZHVsZWQgPSB0cnVlOworICAgIGRpc3BhdGNoX2FmdGVyKGRpc3Bh
dGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDAuMDIgKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRj
aF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBe
eworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgaWYgKG1fcHVz
aFNjaGVkdWxlZCkKKyAgICAgICAgICAgIHB1c2hMaXN0aW5nTm93KCk7CisgICAgfSk7Cit9CisK
KyNwcmFnbWEgbWFyayAtIEFjdGl2ZSBEZWJ1Z2dlciBTZXNzaW9ucworCit2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCkKK3sKKyAgICBib29sIGhhc0Fj
dGl2ZURlYnVnZ2VyU2Vzc2lvbiA9ICFtX2Nvbm5lY3Rpb25NYXAuaXNFbXB0eSgpOworICAgIGlm
IChoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb24gPT0gbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIG1faGFzQWN0aXZlRGVidWdTZXNzaW9uID0gaGFzQWN0aXZl
RGVidWdnZXJTZXNzaW9uOworCisgICAgLy8gRklYTUU6IEV4cG9zZSBzb21lIHdheSB0byBhY2Nl
c3MgdGhpcyBzdGF0ZSBpbiBhbiBlbWJlZGRlci4KKyAgICAvLyBMZWdhY3kgaU9TIFdlYktpdCAx
IGhhZCBhIG5vdGlmaWNhdGlvbi4gVGhpcyB3aWxsIG5lZWQgdG8gYmUgc21hcnRlciB3aXRoIFdl
YktpdDIuCit9CisKKyNwcmFnbWEgbWFyayAtIFJlY2VpdmVkIFhQQyBNZXNzYWdlcworCit2b2lk
IFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbykKK3sKKyAgICBOU051bWJlciAqcGFnZUlkID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpX
SVJQYWdlSWRlbnRpZmllcktleV07CisgICAgaWYgKCFwYWdlSWQpCisgICAgICAgIHJldHVybjsK
KworICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFt1c2VySW5mbyBvYmplY3RG
b3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOworICAgIGlmICghY29ubmVjdGlvbklk
ZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nICpzZW5kZXIgPSBbdXNl
ckluZm8gb2JqZWN0Rm9yS2V5OldJUlNlbmRlcktleV07CisgICAgaWYgKCFzZW5kZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBbcGFnZUlkIHVuc2lnbmVk
SW50VmFsdWVdOworICAgIGlmIChtX2Nvbm5lY3Rpb25NYXAuY29udGFpbnMoaWRlbnRpZmllcikp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaXQgPSBtX2RlYnVnZ2FibGVNYXAuZmluZChp
ZGVudGlmaWVyKTsKKyAgICBpZiAoaXQgPT0gbV9kZWJ1Z2dhYmxlTWFwLmVuZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBBdHRlbXB0IHRvIGNyZWF0ZSBhIGNvbm5lY3Rpb24uIFRoaXMg
bWF5IGZhaWwgaWYgdGhlIHBhZ2UgYWxyZWFkeSBoYXMgYW4gaW5zcGVjdG9yIG9yIGlmIGl0IGRp
c2FsbG93cyBpbnNwZWN0aW9uLgorICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqIGRlYnVn
Z2FibGUgPSBpdC0+dmFsdWUuZmlyc3Q7CisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUlu
Zm8gZGVidWdnYWJsZUluZm8gPSBpdC0+dmFsdWUuc2Vjb25kOworICAgIFJlZlB0cjxSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbihkZWJ1Z2dhYmxlLCBjb25uZWN0aW9u
SWRlbnRpZmllciwgc2VuZGVyLCBkZWJ1Z2dhYmxlSW5mby50eXBlKSk7CisgICAgaWYgKCFjb25u
ZWN0aW9uLT5zZXR1cCgpKSB7CisgICAgICAgIGNvbm5lY3Rpb24tPmNsb3NlKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX2Nvbm5lY3Rpb25NYXAuc2V0KGlkZW50aWZpZXIsIGNv
bm5lY3Rpb24ucmVsZWFzZSgpKTsKKworICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigp
OworCisgICAgcHVzaExpc3RpbmdTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpy
ZWNlaXZlZERhdGFNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTlNOdW1i
ZXIgKnBhZ2VJZCA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXld
OworICAgIGlmICghcGFnZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBwYWdl
SWRlbnRpZmllciA9IFtwYWdlSWQgdW5zaWduZWRJbnRWYWx1ZV07CisgICAgUmVmUHRyPFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9u
TWFwLmdldChwYWdlSWRlbnRpZmllcik7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBOU0RhdGEgKmRhdGEgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlNv
Y2tldERhdGFLZXldOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gbWVzc2FnZSA9IGFkb3B0TlMo
W1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddKTsKKyAgICBjb25uZWN0aW9uLT5zZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdl
LmdldCgpKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGlkQ2xvc2VNZXNz
YWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFt1
c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOworICAgIGlmICghcGFn
ZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZp
ZXIgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsK
KyAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICB1
bnNpZ25lZCBpZGVudGlmaWVyID0gW3BhZ2VJZCB1bnNpZ25lZEludFZhbHVlXTsKKyAgICBSZWZQ
dHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtX2Nv
bm5lY3Rpb25NYXAuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFbY29ubmVjdGlvbklkZW50aWZpZXIgaXNFcXVhbFRvU3Ry
aW5nOmNvbm5lY3Rpb24tPmNvbm5lY3Rpb25JZGVudGlmaWVyKCldKQorICAgICAgICByZXR1cm47
CisKKyAgICBjb25uZWN0aW9uLT5jbG9zZSgpOworICAgIG1fY29ubmVjdGlvbk1hcC5yZW1vdmUo
aWRlbnRpZmllcik7CisKKyAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKKworICAg
IHB1c2hMaXN0aW5nU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRH
ZXRMaXN0aW5nTWVzc2FnZShOU0RpY3Rpb25hcnkgKikKK3sKKyAgICBwdXNoTGlzdGluZ05vdygp
OworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UoTlNE
aWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBOU051bWJlciAqcGFnZUlkID0gW3VzZXJJbmZv
IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07CisgICAgaWYgKCFwYWdlSWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBbcGFnZUlkIHVuc2ln
bmVkSW50VmFsdWVdOworICAgIEJPT0wgaW5kaWNhdGVFbmFibGVkID0gW1t1c2VySW5mbyBvYmpl
Y3RGb3JLZXk6V0lSSW5kaWNhdGVFbmFibGVkS2V5XSBib29sVmFsdWVdOworCisgICAgZGlzcGF0
Y2hBc3luY09uUXVldWVTYWZlRm9yQW55RGVidWdnYWJsZSheeworICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9sb2NrKTsKKworICAgICAgICBhdXRvIGl0ID0gbV9kZWJ1Z2dhYmxlTWFwLmZp
bmQoaWRlbnRpZmllcik7CisgICAgICAgIGlmIChpdCA9PSBtX2RlYnVnZ2FibGVNYXAuZW5kKCkp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZSogZGVidWdnYWJsZSA9IGl0LT52YWx1ZS5maXJzdDsKKyAgICAgICAgZGVidWdnYWJsZS0+c2V0
SW5kaWNhdGluZyhpbmRpY2F0ZUVuYWJsZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6cmVjZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbykKK3sKKyAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbdXNlckluZm8g
b2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIWNvbm5l
Y3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGl0ID0gbV9jb25u
ZWN0aW9uTWFwLmJlZ2luKCk7CisgICAgYXV0byBlbmQgPSBtX2Nvbm5lY3Rpb25NYXAuZW5kKCk7
CisgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoW2Nvbm5lY3Rpb25J
ZGVudGlmaWVyIGlzRXF1YWxUb1N0cmluZzppdC0+dmFsdWUtPmNvbm5lY3Rpb25JZGVudGlmaWVy
KCldKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKGl0ID09IGVuZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uPiBjb25uZWN0aW9uID0gaXQtPnZhbHVlOworICAgIGNvbm5lY3Rpb24tPmNsb3NlKCk7
CisgICAgbV9jb25uZWN0aW9uTWFwLnJlbW92ZShpdCk7CisKKyAgICB1cGRhdGVIYXNBY3RpdmVE
ZWJ1Z1Nlc3Npb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAv
LyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZhMWY5NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3RvckNvbnN0YW50cy5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlbW90ZUluc3BlY3RvckNvbnN0YW50
c19oCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvckNvbnN0YW50c19oCisKKy8vIFdJUkNvbnN0YW50
cyBhcmUgIldlYiBJbnNwZWN0b3IgUmVsYXkiIGNvbnN0YW50cyBzaGFyZWQgYmV0d2VlbgorLy8g
dGhlIFdlYkluc3BlY3RvciBmcmFtZXdvcmsgb24gdGhlIE9TIFggc2lkZSwgd2ViaW5zcGVjdG9y
ZCwgYW5kCisvLyBpT1MgV2ViS2l0IG9uIHRoZSBkZXZpY2Ugc2lkZS4KKworI2RlZmluZSBXSVJT
aW11bGF0b3JUQ1BQb3J0TnVtYmVyICAgICAgICAgICAgICAgMjc3NTMKKyNkZWZpbmUgV0lSWFBD
TWFjaFBvcnROYW1lICAgICAgICAgICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9y
IgorI2RlZmluZSBXSVJTZXJ2aWNlQXZhaWxhYmxlTm90aWZpY2F0aW9uICAgICAgICAgImNvbS5h
cHBsZS53ZWJpbnNwZWN0b3JkLmF2YWlsYWJsZSIKKyNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJp
bGl0eUNoZWNrTm90aWZpY2F0aW9uICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFiaWxp
dHlfY2hlY2siCisjZGVmaW5lIFdJUlNlcnZpY2VFbmFibGVkTm90aWZpY2F0aW9uICAgICAgICAg
ICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuZW5hYmxlZCIKKyNkZWZpbmUgV0lSU2VydmljZURp
c2FibGVkTm90aWZpY2F0aW9uICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5kaXNh
YmxlZCIKKworCisjZGVmaW5lIFdJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSAgICAgICAgICAg
ICBAIldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIKKyNkZWZpbmUgV0lSQXBwbGljYXRpb25O
YW1lS2V5ICAgICAgICAgICAgICAgICAgIEAiV0lSQXBwbGljYXRpb25OYW1lS2V5IgorI2RlZmlu
ZSBXSVJJc0FwcGxpY2F0aW9uUHJveHlLZXkgICAgICAgICAgICAgICAgQCJXSVJJc0FwcGxpY2F0
aW9uUHJveHlLZXkiCisjZGVmaW5lIFdJUkhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkgICAg
ICAgICBAIldJUkhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiCisjZGVmaW5lIFdJUkhvc3RB
cHBsaWNhdGlvbk5hbWVLZXkgICAgICAgICAgICAgICBAIldJUkhvc3RBcHBsaWNhdGlvbk5hbWVL
ZXkiCisjZGVmaW5lIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5ICAgICAgICAgICAgICBAIldJ
UkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5IgorI2RlZmluZSBXSVJQYWdlSWRlbnRpZmllcktleSAg
ICAgICAgICAgICAgICAgICAgQCJXSVJQYWdlSWRlbnRpZmllcktleSIKKyNkZWZpbmUgV0lSSGFz
TG9jYWxEZWJ1Z2dlcktleSAgICAgICAgICAgICAgICAgIEAiV0lSSGFzTG9jYWxEZWJ1Z2dlcktl
eSIKKyNkZWZpbmUgV0lSVGl0bGVLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lS
VGl0bGVLZXkiCisjZGVmaW5lIFdJUlVSTEtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBAIldJUlVSTEtleSIKKyNkZWZpbmUgV0lSVXNlckluZm9LZXkgICAgICAgICAgICAgICAgICAg
ICAgICAgIEAiV0lSVXNlckluZm9LZXkiCisjZGVmaW5lIFdJUkFwcGxpY2F0aW9uRGljdGlvbmFy
eUtleSAgICAgICAgICAgICBAIldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleSIKKyNkZWZpbmUg
V0lSTWVzc2FnZURhdGFLZXkgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSTWVzc2FnZURhdGFL
ZXkiCisjZGVmaW5lIFdJUkFwcGxpY2F0aW9uR2V0TGlzdGluZ01lc3NhZ2UgICAgICAgICBAIldJ
UkFwcGxpY2F0aW9uR2V0TGlzdGluZ01lc3NhZ2UiCisjZGVmaW5lIFdJUkluZGljYXRlTWVzc2Fn
ZSAgICAgICAgICAgICAgICAgICAgICBAIldJUkluZGljYXRlTWVzc2FnZSIKKyNkZWZpbmUgV0lS
SW5kaWNhdGVFbmFibGVkS2V5ICAgICAgICAgICAgICAgICAgIEAiV0lSSW5kaWNhdGVFbmFibGVk
S2V5IgorI2RlZmluZSBXSVJTZW5kZXJLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCJX
SVJTZW5kZXJLZXkiCisjZGVmaW5lIFdJUlNvY2tldERhdGFLZXkgICAgICAgICAgICAgICAgICAg
ICAgICBAIldJUlNvY2tldERhdGFLZXkiCisjZGVmaW5lIFdJUlNvY2tldERhdGFNZXNzYWdlICAg
ICAgICAgICAgICAgICAgICBAIldJUlNvY2tldERhdGFNZXNzYWdlIgorI2RlZmluZSBXSVJTb2Nr
ZXRTZXR1cE1lc3NhZ2UgICAgICAgICAgICAgICAgICAgQCJXSVJTb2NrZXRTZXR1cE1lc3NhZ2Ui
CisjZGVmaW5lIFdJUldlYlBhZ2VDbG9zZU1lc3NhZ2UgICAgICAgICAgICAgICAgICBAIldJUldl
YlBhZ2VDbG9zZU1lc3NhZ2UiCisjZGVmaW5lIFdJUlJhd0RhdGFNZXNzYWdlICAgICAgICAgICAg
ICAgICAgICAgICBAIldJUlJhd0RhdGFNZXNzYWdlIgorI2RlZmluZSBXSVJSYXdEYXRhS2V5ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJSYXdEYXRhS2V5IgorI2RlZmluZSBXSVJMaXN0
aW5nTWVzc2FnZSAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJMaXN0aW5nTWVzc2FnZSIKKyNk
ZWZpbmUgV0lSTGlzdGluZ0tleSAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSTGlzdGlu
Z0tleSIKKyNkZWZpbmUgV0lSRGVzdGluYXRpb25LZXkgICAgICAgICAgICAgICAgICAgICAgIEAi
V0lSRGVzdGluYXRpb25LZXkiCisjZGVmaW5lIFdJUkNvbm5lY3Rpb25EaWVkTWVzc2FnZSAgICAg
ICAgICAgICAgICBAIldJUkNvbm5lY3Rpb25EaWVkTWVzc2FnZSIKKworLy8gVGhlc2UgZGVmaW5p
dGlvbnMgYXJlIHNoYXJlZCB3aXRoIGEgU2ltdWxhdG9yIHdlYmluc3BlY3RvcmQgYW5kCisvLyBP
UyBYIHByb2Nlc3MgY29tbXVuaWNhdGluZyB3aXRoIGl0LgorCisjZGVmaW5lIFdJUlNpbXVsYXRv
ckJ1aWxkS2V5ICAgICAgICAgICAgICAgICAgICBAIldJUlNpbXVsYXRvckJ1aWxkS2V5IgorI2Rl
ZmluZSBXSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lvbktleSAgICAgICAgICAgQCJXSVJTaW11bGF0
b3JQcm9kdWN0VmVyc2lvbktleSIKKyNkZWZpbmUgV0lSU2ltdWxhdG9yTmFtZUtleSAgICAgICAg
ICAgICAgICAgICAgIEAiV0lSU2ltdWxhdG9yTmFtZUtleSIKKworLy8gVGhlc2UgZGVmaW5pdGlv
bnMgYXJlIHNoYXJlZCBiZXR3ZWVuIHdlYmluc3BlY3RvcmQgYW5kIFdlYktpdC4KKworI2RlZmlu
ZSBXSVJQZXJtaXNzaW9uRGVuaWVkICAgICAgICAgICAgICAgICAgICAgQCJXSVJQZXJtaXNzaW9u
RGVuaWVkIgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRmMWQ5NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJS
ZW1vdGVJbnNwZWN0b3IuaCIKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK1JlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGU6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUoKQorICAgIDogbV9pZGVu
dGlmaWVyKDApCisgICAgLCBtX2FsbG93ZWQoZmFsc2UpCit7Cit9CisKK1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGU6On5SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCkKK3sKKyAgICBSZW1vdGVJ
bnNwZWN0b3I6OnNoYXJlZCgpLnVucmVnaXN0ZXJEZWJ1Z2dhYmxlKHRoaXMpOworfQorCit2b2lk
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluaXQoKQoreworICAgIFJlbW90ZUluc3BlY3Rv
cjo6c2hhcmVkKCkucmVnaXN0ZXJEZWJ1Z2dhYmxlKHRoaXMpOworfQorCit2b2lkIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGU6OnVwZGF0ZSgpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFy
ZWQoKS51cGRhdGVEZWJ1Z2dhYmxlKHRoaXMpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGU6OnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoYm9vbCBhbGxvd2VkKQoreworICAg
IGlmIChtX2FsbG93ZWQgPT0gYWxsb3dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hbGxv
d2VkID0gYWxsb3dlZDsKKworICAgIHVwZGF0ZSgpOworfQorCitSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlSW5mbyBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjppbmZvKCkgY29uc3QKK3sKKyAg
ICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyBpbmZvOworICAgIGluZm8uaWRlbnRpZmll
ciA9IGlkZW50aWZpZXIoKTsKKyAgICBpbmZvLnR5cGUgPSB0eXBlKCk7CisgICAgaW5mby5uYW1l
ID0gbmFtZSgpOworICAgIGluZm8udXJsID0gdXJsKCk7CisgICAgaW5mby5oYXNMb2NhbERlYnVn
Z2VyID0gaGFzTG9jYWxEZWJ1Z2dlcigpOworICAgIGluZm8ucmVtb3RlRGVidWdnaW5nQWxsb3dl
ZCA9IHJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKTsKKyAgICByZXR1cm4gaW5mbzsKK30KKworfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5mNGVkY2E5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCkBA
IC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpZm5kZWYgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZV9oCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVfaAorCisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3Igewor
CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CitzdHJ1Y3QgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUluZm87CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGUgeworcHVibGljOgorICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUoKTsK
KyAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCk7CisKKyAgICB2b2lkIGlu
aXQoKTsKKyAgICB2b2lkIHVwZGF0ZSgpOworCisgICAgdW5zaWduZWQgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0SWRlbnRpZmllcih1bnNp
Z25lZCBpZGVudGlmaWVyKSB7IG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KKworICAgIGJv
b2wgcmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZDsgfQor
ICAgIHZvaWQgc2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChib29sIGFsbG93ZWQpOworCisgICAg
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gaW5mbygpIGNvbnN0OworCisgICAgZW51bSBE
ZWJ1Z2dhYmxlVHlwZSB7IEphdmFTY3JpcHQsIFdlYiB9OworICAgIHZpcnR1YWwgRGVidWdnYWJs
ZVR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gSmF2YVNjcmlwdCBhbmQgV2ViCisgICAgdmlydHVhbCBT
dHJpbmcgdXJsKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gV2ViCisgICAgdmlydHVh
bCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQg
Y29ubmVjdChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpc2Nvbm5lY3QoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21S
ZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5kaWNhdGluZyhib29sKSB7IH0gLy8gRGVmYXVsdCBpcyB0byBkbyBub3RoaW5nLgor
Citwcml2YXRlOgorICAgIHVuc2lnbmVkIG1faWRlbnRpZmllcjsKKyAgICBib29sIG1fYWxsb3dl
ZDsKK307CisKK3N0cnVjdCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyB7CisgICAgUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8oKQorICAgICAgICA6IGlkZW50aWZpZXIoMCkKKyAg
ICAgICAgLCB0eXBlKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkphdmFTY3JpcHQpCisgICAg
ICAgICwgaGFzTG9jYWxEZWJ1Z2dlcihmYWxzZSkKKyAgICAgICAgLCByZW1vdGVEZWJ1Z2dpbmdB
bGxvd2VkKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyOwor
ICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkRlYnVnZ2FibGVUeXBlIHR5cGU7CisgICAg
U3RyaW5nIG5hbWU7CisgICAgU3RyaW5nIHVybDsKKyAgICBib29sIGhhc0xvY2FsRGVidWdnZXI7
CisgICAgYm9vbCByZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCisKKyNlbmRpZiAvLyBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlX2gKKworI2Vu
ZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZDQ2YjM1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgK
QEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2lmbmRlZiBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbl9oCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uX2gKKworI2ltcG9ydCAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgi
CisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgiCisjaW1wb3J0IDxkaXNwYXRj
aC9kaXNwYXRjaC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1Ro
cmVhZGluZy5oPgorI2ltcG9ydCA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK09CSkNf
Q0xBU1MgTlNTdHJpbmc7CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbiBGSU5BTCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4sIHB1YmxpYyBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwgeworcHVibGljOgorICAgIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqLCBOU1N0cmluZyAqY29u
bmVjdGlvbklkZW50aWZpZXIsIE5TU3RyaW5nICpkZXN0aW5hdGlvbiwgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUgdHlwZSk7CisgICAgdmlydHVhbCB+UmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oKTsKKworICAgIE5TU3RyaW5nICpkZXN0aW5hdGlv
bigpIGNvbnN0OworICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0Owor
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0K
KworICAgIGJvb2wgc2V0dXAoKTsKKworICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIGNsb3Nl
RnJvbURlYnVnZ2FibGUoKTsKKworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoTlNTdHJp
bmcgKik7CisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJp
bmcmKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGRpc3BhdGNoU3luY09uRGVidWdn
YWJsZSh2b2lkICheYmxvY2spKCkpOworICAgIHZvaWQgZGlzcGF0Y2hBc3luY09uRGVidWdnYWJs
ZSh2b2lkICheYmxvY2spKCkpOworCisgICAgLy8gVGhpcyBjb25uZWN0aW9uIGZyb20gdGhlIFJl
bW90ZUluc3BlY3RvciBzaW5nbGV0b24gdG8gdGhlIERlYnVnZ2FibGUKKyAgICAvLyBjYW4gYmUg
dXNlZCBvbiBtdWx0aXBsZSB0aHJlYWRzLiBTbyBhbnkgYWNjZXNzIHRvIHRoZSBkZWJ1Z2dhYmxl
CisgICAgLy8gaXRzZWxmIG11c3QgdGFrZSB0aGlzIGxvY2sgdG8gZW5zdXJlIG1fZGVidWdnYWJs
ZSBpcyB2YWxpZC4KKyAgICBNdXRleCBtX2RlYnVnZ2FibGVMb2NrOworCisgICAgUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZSogbV9kZWJ1Z2dhYmxlOworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9x
dWV1ZUZvckRlYnVnZ2FibGU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2Nvbm5lY3Rpb25J
ZGVudGlmaWVyOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9kZXN0aW5hdGlvbjsKKyAgICB1
bnNpZ25lZCBtX2lkZW50aWZpZXI7CisgICAgYm9vbCBtX2Nvbm5lY3RlZDsKK307CisKK30gLy8g
bmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUNvbm5lY3Rpb25faAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZmZlYTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbQpAQCAtMCwwICsxLDE2NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQorCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3IuaCIKKworI2lmIFBM
QVRGT1JNKElPUykKKyNpbXBvcnQgPHd0Zi9pb3MvV2ViQ29yZVRocmVhZC5oPgorI2VuZGlmCisK
K25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZSogZGVidWdnYWJsZSwgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyLCBO
U1N0cmluZyAqZGVzdGluYXRpb24sIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkRlYnVnZ2Fi
bGVUeXBlIHR5cGUpCisgICAgOiBtX2RlYnVnZ2FibGUoZGVidWdnYWJsZSkKKyAgICAsIG1fcXVl
dWVGb3JEZWJ1Z2dhYmxlKE5VTEwpCisgICAgLCBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyKGNvbm5l
Y3Rpb25JZGVudGlmaWVyKQorICAgICwgbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKKyAgICAs
IG1faWRlbnRpZmllcihkZWJ1Z2dhYmxlLT5pZGVudGlmaWVyKCkpCisgICAgLCBtX2Nvbm5lY3Rl
ZChmYWxzZSkKK3sKKyAgICAvLyBXZWIgZGVidWdnYWJsZXMgbXVzdCBiZSBhY2Nlc3NlZCBvbiB0
aGUgbWFpbiBxdWV1ZSAob3IgdGhlIFdlYlRocmVhZCBvbiBpT1MpLiBTaWduYWwgdGhhdCB3aXRo
IGEgTlVMTCBtX3F1ZXVlRm9yRGVidWdnYWJsZS4KKyAgICAvLyBIb3dldmVyLCBKYXZhU2NyaXB0
IGRlYnVnZ2FibGVzIGNhbiBiZSBhY2Nlc3NlZCBmcm9tIGFueSB0aHJlYWQvcXVldWUsIHNvIHdl
IGNyZWF0ZSBhIHF1ZXVlIGZvciBlYWNoIEphdmFTY3JpcHQgZGVidWdnYWJsZS4KKyAgICBpZiAo
dHlwZSA9PSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpKYXZhU2NyaXB0KQorICAgICAgICBt
X3F1ZXVlRm9yRGVidWdnYWJsZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLkph
dmFTY3JpcHRDb3JlLnJlbW90ZS1pbnNwZWN0b3IteHBjLWNvbm5lY3Rpb24iLCBESVNQQVRDSF9R
VUVVRV9TRVJJQUwpOworfQorCitSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
flJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAobV9xdWV1
ZUZvckRlYnVnZ2FibGUpIHsKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3F1ZXVlRm9yRGVi
dWdnYWJsZSk7CisgICAgICAgIG1fcXVldWVGb3JEZWJ1Z2dhYmxlID0gTlVMTDsKKyAgICB9Cit9
CisKK05TU3RyaW5nICpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGVzdGlu
YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBbW21fZGVzdGluYXRpb24gY29weV0gYXV0b3Jl
bGVhc2VdOworfQorCitOU1N0cmluZyAqUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b246OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW1ttX2Nvbm5l
Y3Rpb25JZGVudGlmaWVyIGNvcHldIGF1dG9yZWxlYXNlXTsKK30KKwordm9pZCBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jT25EZWJ1Z2dhYmxlKHZvaWQg
KF5ibG9jaykoKSkKK3sKKyAgICBpZiAobV9xdWV1ZUZvckRlYnVnZ2FibGUpCisgICAgICAgIGRp
c3BhdGNoX3N5bmMobV9xdWV1ZUZvckRlYnVnZ2FibGUsIGJsb2NrKTsKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgZWxzZSBpZiAoV2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCAmJiBXZWJDb3JlV2Vi
VGhyZWFkSXNFbmFibGVkKCkpCisgICAgICAgIFdlYkNvcmVXZWJUaHJlYWRSdW5TeW5jKGJsb2Nr
KTsKKyNlbmRpZgorICAgIGVsc2UKKyAgICAgICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBibG9jayk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUodm9pZCAoXmJsb2NrKSgpKQor
eworICAgIGlmIChtX3F1ZXVlRm9yRGVidWdnYWJsZSkKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
bV9xdWV1ZUZvckRlYnVnZ2FibGUsIGJsb2NrKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgZWxz
ZSBpZiAoV2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCAmJiBXZWJDb3JlV2ViVGhyZWFkSXNFbmFi
bGVkKCkpCisgICAgICAgIFdlYkNvcmVXZWJUaHJlYWRSdW4oYmxvY2spOworI2VuZGlmCisgICAg
ZWxzZQorICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBi
bG9jayk7Cit9CisKK2Jvb2wgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNl
dHVwKCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9kZWJ1Z2dhYmxlTG9jayk7CisKKyAg
ICBpZiAoIW1fZGVidWdnYWJsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZGlzcGF0
Y2hTeW5jT25EZWJ1Z2dhYmxlKF57CisgICAgICAgIGlmICghbV9kZWJ1Z2dhYmxlLT5yZW1vdGVE
ZWJ1Z2dpbmdBbGxvd2VkKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1f
ZGVidWdnYWJsZS0+aGFzTG9jYWxEZWJ1Z2dlcigpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIG1fZGVidWdnYWJsZS0+Y29ubmVjdCh0aGlzKTsKKyAgICAgICAgbV9jb25uZWN0ZWQg
PSB0cnVlOworICAgIH0pOworCisgICAgcmV0dXJuIG1fY29ubmVjdGVkOworfQorCit2b2lkIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZUZyb21EZWJ1Z2dhYmxlKCkK
K3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9kZWJ1Z2dhYmxlTG9jayk7CisKKyAgICBtX2Rl
YnVnZ2FibGUgPSBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVD
b25uZWN0aW9uOjpjbG9zZSgpCit7CisgICAgcmVmKCk7CisgICAgZGlzcGF0Y2hBc3luY09uRGVi
dWdnYWJsZSheeworICAgICAgICB7CisgICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9k
ZWJ1Z2dhYmxlTG9jayk7CisKKyAgICAgICAgICAgIGlmIChtX2RlYnVnZ2FibGUpIHsKKyAgICAg
ICAgICAgICAgICBpZiAobV9jb25uZWN0ZWQpCisgICAgICAgICAgICAgICAgICAgIG1fZGVidWdn
YWJsZS0+ZGlzY29ubmVjdCgpOworCisgICAgICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlID0gbnVs
bHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBkZXJlZigpOworICAgIH0p
OworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVz
c2FnZVRvQmFja2VuZChOU1N0cmluZyAqbWVzc2FnZSkKK3sKKyAgICByZWYoKTsKKyAgICBkaXNw
YXRjaEFzeW5jT25EZWJ1Z2dhYmxlKF57CisgICAgICAgIHsKKyAgICAgICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2RlYnVnZ2FibGVMb2NrKTsKKworICAgICAgICAgICAgaWYgKG1fZGVidWdn
YWJsZSkKKyAgICAgICAgICAgICAgICBtX2RlYnVnZ2FibGUtPmRpc3BhdGNoTWVzc2FnZUZyb21S
ZW1vdGVGcm9udGVuZChtZXNzYWdlKTsKKyAgICAgICAgfQorICAgICAgICBkZXJlZigpOworICAg
IH0pOworfQorCitib29sIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5k
TWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIFJlbW90ZUlu
c3BlY3Rvcjo6c2hhcmVkKCkuc2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGlkZW50aWZpZXIo
KSwgbWVzc2FnZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5kNzE5MDc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oCkBAIC0wLDAg
KzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbl9oCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25faAorCisj
aW1wb3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgorI2ltcG9ydCA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW1wb3J0IDx4cGMveHBjLmg+CisKK09CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpDX0NMQVNT
IE5TRGljdGlvbmFyeTsKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24pOworCitwdWJsaWM6CisgICAgY2xhc3MgQ2xpZW50IHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorICAgICAgICB2aXJ0dWFs
IHZvaWQgeHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uKiwgTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uRmFpbGVkKFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24qKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0
aW9uVW5oYW5kbGVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgeHBjX29i
amVjdF90KSA9IDA7CisgICAgfTsKKworICAgIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24o
eHBjX2Nvbm5lY3Rpb25fdCwgQ2xpZW50Kik7CisgICAgdmlydHVhbCB+UmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbigpOworCisgICAgdm9pZCBjbG9zZSgpOworICAgIHZvaWQgc2VuZE1lc3Nh
Z2UoTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKworcHJp
dmF0ZToKKyAgICBOU0RpY3Rpb25hcnkgKmRlc2VyaWFsaXplTWVzc2FnZSh4cGNfb2JqZWN0X3Qg
b2JqZWN0KTsKKyAgICB2b2lkIGhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3QpOworCisg
ICAgeHBjX2Nvbm5lY3Rpb25fdCBtX2Nvbm5lY3Rpb247CisgICAgZGlzcGF0Y2hfcXVldWVfdCBt
X3F1ZXVlOworICAgIENsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKKworI2VuZGlmIC8vIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25faAorCisjZW5k
aWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1t
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Mjc5
MDY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpAQCAtMCwwICsxLDE0NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIgorCisjaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKworI2lmIF9faGFzX2luY2x1ZGUoPENv
cmVGb3VuZGF0aW9uL0NGWFBDQnJpZGdlLmg+KQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NG
WFBDQnJpZGdlLmg+CisjZWxzZQorZXh0ZXJuIHhwY19vYmplY3RfdCBfQ0ZYUENDcmVhdGVYUENN
ZXNzYWdlV2l0aENGT2JqZWN0KENGVHlwZVJlZik7CitleHRlcm4gQ0ZUeXBlUmVmIF9DRlhQQ0Ny
ZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjX29iamVjdF90KTsKKyNlbmRpZgorCituYW1l
c3BhY2UgSW5zcGVjdG9yIHsKKworLy8gQ29uc3RhbnRzIHByaXZhdGUgdG8gdGhpcyBmaWxlIGZv
ciBtZXNzYWdlIHNlcmlhbGl6YXRpb24gb24gYm90aCBlbmRzLgorI2RlZmluZSBSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uTWVzc2FnZU5hbWVLZXkgQCJtZXNzYWdlTmFtZSIKKyNkZWZpbmUg
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5IEAidXNlckluZm8iCisjZGVm
aW5lIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25TZXJpYWxpemVkTWVzc2FnZUtleSAibXNn
RGF0YSIKKworUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6UmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIENsaWVudCogY2xpZW50KQor
ICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX3F1ZXVlKGRpc3BhdGNoX3F1
ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlLnJlbW90ZS1pbnNwZWN0b3IteHBj
LWNvbm5lY3Rpb24iLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKQorICAgICwgbV9jbGllbnQoY2xp
ZW50KQoreworICAgIHhwY19yZXRhaW4obV9jb25uZWN0aW9uKTsKKyAgICB4cGNfY29ubmVjdGlv
bl9zZXRfdGFyZ2V0X3F1ZXVlKG1fY29ubmVjdGlvbiwgbV9xdWV1ZSk7CisgICAgUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbiogd2Vha1RoaXMgPSB0aGlzOworICAgIHhwY19jb25uZWN0aW9u
X3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3Qgb2JqZWN0KSB7
CisgICAgICAgIHdlYWtUaGlzLT5oYW5kbGVFdmVudChvYmplY3QpOworICAgIH0pOworICAgIHhw
Y19jb25uZWN0aW9uX3Jlc3VtZShtX2Nvbm5lY3Rpb24pOworfQorCitSZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uOjp+UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbigpCit7CisgICAgQVNT
RVJUKCFtX2NsaWVudCk7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOworfQorCit2b2lkIFJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAgICBpZiAoIW1fY29ubmVj
dGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgeHBjX2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29u
bmVjdGlvbik7CisgICAgeHBjX3JlbGVhc2UobV9jb25uZWN0aW9uKTsKKyAgICBtX2Nvbm5lY3Rp
b24gPSBOVUxMOworCisgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3F1ZXVlKTsKKyAgICBtX3F1ZXVl
ID0gTlVMTDsKKworICAgIG1fY2xpZW50ID0gbnVsbHB0cjsKK30KKworTlNEaWN0aW9uYXJ5ICpS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1lc3NhZ2UoeHBjX29iamVj
dF90IG9iamVjdCkKK3sKKyAgICBpZiAoeHBjX2dldF90eXBlKG9iamVjdCkgIT0gWFBDX1RZUEVf
RElDVElPTkFSWSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHhwY19vYmplY3RfdCB4cGNE
aWN0aW9uYXJ5ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG9iamVjdCwgUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5KTsKKyAgICBpZiAoIXhwY0RpY3Rp
b25hcnkgfHwgeHBjX2dldF90eXBlKHhwY0RpY3Rpb25hcnkpICE9IFhQQ19UWVBFX0RJQ1RJT05B
UlkpIHsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPnhwY0Nv
bm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKHRoaXMsIG9iamVjdCk7CisgICAgICAgIHJldHVybiBu
aWw7CisgICAgfQorCisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8
TlNEaWN0aW9uYXJ5ICo+KF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjRGlj
dGlvbmFyeSkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGljdGlvbmFyeSwgIlVuYWJsZSB0
byBkZXNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIpOworICAgIHJldHVybiBbZGljdGlvbmFyeSBhdXRv
cmVsZWFzZV07Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6aGFuZGxl
RXZlbnQoeHBjX29iamVjdF90IG9iamVjdCkKK3sKKyAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKHhwY19nZXRfdHlwZShvYmplY3QpID09IFhQQ19UWVBF
X0VSUk9SKSB7CisgICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgICAgIG1fY2xpZW50LT54
cGNDb25uZWN0aW9uRmFpbGVkKHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
TlNEaWN0aW9uYXJ5ICpkYXRhRGljdGlvbmFyeSA9IGRlc2VyaWFsaXplTWVzc2FnZShvYmplY3Qp
OworICAgIGlmICghZGF0YURpY3Rpb25hcnkpCisgICAgICAgIHJldHVybjsKKworICAgIE5TU3Ry
aW5nICptZXNzYWdlID0gW2RhdGFEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uTWVzc2FnZU5hbWVLZXldOworICAgIE5TRGljdGlvbmFyeSAqdXNlcklu
Zm8gPSBbZGF0YURpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb25Vc2VySW5mb0tleV07CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+
eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZSh0aGlzLCBtZXNzYWdlLCB1c2VySW5mbyk7Cit9
CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UoTlNTdHJp
bmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAgIGlmICghbV9j
b25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpk
aWN0aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bWVz
c2FnZU5hbWUgZm9yS2V5OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25NZXNzYWdlTmFtZUtl
eV07CisgICAgaWYgKHVzZXJJbmZvKQorICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6dXNl
ckluZm8gZm9yS2V5OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25Vc2VySW5mb0tleV07CisK
KyAgICB4cGNfb2JqZWN0X3QgeHBjRGljdGlvbmFyeSA9IF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VX
aXRoQ0ZPYmplY3QoKENGRGljdGlvbmFyeVJlZilkaWN0aW9uYXJ5KTsKKyAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKHhwY0RpY3Rpb25hcnkgJiYgeHBjX2dldF90eXBlKHhwY0RpY3Rpb25hcnkpID09
IFhQQ19UWVBFX0RJQ1RJT05BUlksICJVbmFibGUgdG8gc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7
CisgICAgaWYgKCF4cGNEaWN0aW9uYXJ5KQorICAgICAgICByZXR1cm47CisKKyAgICB4cGNfb2Jq
ZWN0X3QgbXNnID0geHBjX2RpY3Rpb25hcnlfY3JlYXRlKE5VTEwsIE5VTEwsIDApOworICAgIHhw
Y19kaWN0aW9uYXJ5X3NldF92YWx1ZShtc2csIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25T
ZXJpYWxpemVkTWVzc2FnZUtleSwgeHBjRGljdGlvbmFyeSk7CisgICAgeHBjX3JlbGVhc2UoeHBj
RGljdGlvbmFyeSk7CisKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UobV9jb25uZWN0
aW9uLCBtc2cpOworCisgICAgeHBjX3JlbGVhc2UobXNnKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMjA2
MzE0Ny4uNGQ2MzBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0xMS0xOSAgSm9zZXBoIFBl
Y29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1
c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8g
SmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmNwcDoKKyAgICAgICAgKiB3dGYvaW9zL1dl
YkNvcmVUaHJlYWQuaDoKKyAgICAgICAgRXhwb3NlIFdlYlRocmVhZFJ1bi9XZWJUaHJlYWRSdW5T
eW5jIGlPUyBtZXRob2RzIGRlZmluZWQgaW4gV2ViQ29yZSB0aHJvdWdoCisgICAgICAgIFdURiBz
byB0aGF0IEphdmFTY3JpcHRDb3JlIGNhbiB1c2UgaXQuIEFub3RoZXIgc3VjaCBtZXRob2QgYWxy
ZWFkeSBleGlzdGVkLgorCiAyMDEzLTExLTIwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbnRyb2R1Y2luZyBWTUVudHJ5U2NvcGUgdG8gdXBkYXRlIHRoZSBWTSBz
dGFjayBsaW1pdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFk
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmNwcAppbmRleCA0Mjc0NDY2
Li5mMDdkYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvaW9zL1dlYkNvcmVUaHJlYWQuY3BwCkBAIC0yOCw0ICsy
OCw3IEBACiAKICNpZiBVU0UoV0VCX1RIUkVBRCkKIFdURl9FWFBPUlRfUFJJVkFURSBib29sICgq
V2ViQ29yZVdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCkodm9pZCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCAoKldlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQpKHZvaWQpOworV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgKCpXZWJDb3JlV2ViVGhyZWFkUnVuKSh2b2lkICheYmxvY2spKCkpOwor
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgKCpXZWJDb3JlV2ViVGhyZWFkUnVuU3luYykodm9pZCAo
XmJsb2NrKSgpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvaW9zL1dlYkNv
cmVUaHJlYWQuaCBiL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmgKaW5kZXggMTBl
MjZhNy4uODE5Y2VlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvaW9zL1dlYkNvcmVUaHJl
YWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5oCkBAIC0zMyw2ICsz
Myw5IEBAIGV4dGVybiAiQyIgewogI2VuZGlmCiAKIGV4dGVybiBib29sICgqV2ViQ29yZVdlYlRo
cmVhZElzTG9ja2VkT3JEaXNhYmxlZCkodm9pZCk7CitleHRlcm4gYm9vbCAoKldlYkNvcmVXZWJU
aHJlYWRJc0VuYWJsZWQpKHZvaWQpOworZXh0ZXJuIHZvaWQgKCpXZWJDb3JlV2ViVGhyZWFkUnVu
KSh2b2lkICheYmxvY2spKCkpOworZXh0ZXJuIHZvaWQgKCpXZWJDb3JlV2ViVGhyZWFkUnVuU3lu
Yykodm9pZCAoXmJsb2NrKSgpKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9Cg==
</data>
<flag name="commit-queue"
          id="240769"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217594</attachid>
            <date>2013-11-21 12:26:19 -0800</date>
            <delta_ts>2013-12-02 12:34:35 -0800</delta_ts>
            <desc>[PATCH] Part 2 - Make JSContext and WebCore::Page remote debuggables</desc>
            <filename>part2b.patch</filename>
            <type>text/plain</type>
            <size>53067</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5oCmluZGV4IDM4MzRmODkuLjdlNzM0OGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaApAQCAtMTAxLDYgKzEwMSwxMiBA
QCBPQkpDX1ZJU0lCTEUKIC8vIHZpcnR1YWwgbWFjaGluZSBwcm92aWRlcyBhbiAib2JqZWN0IHNw
YWNlIiBvciBzZXQgb2YgZXhlY3V0aW9uIHJlc291cmNlcy4KIEBwcm9wZXJ0eShyZWFkb25seSwg
cmV0YWluKSBKU1ZpcnR1YWxNYWNoaW5lICp2aXJ0dWFsTWFjaGluZTsKIAorLy8gRW5hYmxlIG9y
IGRpc2FibGUgcmVtb3RlIGRlYnVnZ2luZyBvZiB0aGlzIEpTQ29udGV4dC4gRGVmYXVsdHMgdG8g
Tk8uCitAcHJvcGVydHkgQk9PTCByZW1vdGVEZWJ1Z2dpbmdFbmFibGVkOworCisvLyBOYW1lIHRo
ZSBKU0NvbnRleHQuIEV4cG9zZWQgd2hlbiByZW1vdGUgZGVidWdnaW5nIHRoZSBjb250ZXh0Lgor
QHByb3BlcnR5KGNvcHkpIE5TU3RyaW5nICpuYW1lOworCiBAZW5kCiAKIC8vIEluc3RhbmNlcyBv
ZiBKU0NvbnRleHQgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbiBvcmRlciB0byBl
bmFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1t
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggYmM4ZmMxYS4u
ZDUxMjY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQu
bW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTE2Niw2
ICsxNjYsMjkgQEAKICAgICByZXR1cm4gbV92aXJ0dWFsTWFjaGluZTsKIH0KIAorLSAoQk9PTCly
ZW1vdGVEZWJ1Z2dpbmdFbmFibGVkCit7CisgICAgcmV0dXJuIEpTR2xvYmFsQ29udGV4dEdldFJl
bW90ZURlYnVnZ2luZ0VuYWJsZWQobV9jb250ZXh0KTsKK30KKworLSAodm9pZClzZXRSZW1vdGVE
ZWJ1Z2dpbmdFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAgICBKU0dsb2JhbENvbnRleHRTZXRS
ZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKG1fY29udGV4dCwgZW5hYmxlZCk7Cit9CisKKy0gKE5TU3Ry
aW5nICopbmFtZQoreworICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBKU0dsb2JhbENvbnRleHRHZXRO
YW1lKG1fY29udGV4dCk7CisgICAgcmV0dXJuIFsoTlNTdHJpbmcgKilKU1N0cmluZ0NvcHlDRlN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBuYW1lKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKHZv
aWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZUpTID0g
SlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKVtuYW1lIGNvcHldKTsKKyAg
ICBKU0dsb2JhbENvbnRleHRTZXROYW1lKG1fY29udGV4dCwgbmFtZUpTKTsKKyAgICBKU1N0cmlu
Z1JlbGVhc2UobmFtZUpTKTsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gSlNDb250ZXh0
KFN1YnNjcmlwdFN1cHBvcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJl
Zi5jcHAKaW5kZXggZjBhNDM1Yy4uMjYwY2U1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMjEzLDYgKzIxMyw1NSBAQCBKU0dsb2JhbENvbnRleHRS
ZWYgSlNDb250ZXh0R2V0R2xvYmFsQ29udGV4dChKU0NvbnRleHRSZWYgY3R4KQogICAgIHJldHVy
biB0b0dsb2JhbFJlZihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSk7
CiB9CiAKK2Jvb2wgSlNHbG9iYWxDb250ZXh0R2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChKU0ds
b2JhbENvbnRleHRSZWYgY3R4KQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwor
CisgICAgcmV0dXJuIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+cmVtb3RlRGVidWdnaW5n
RW5hYmxlZCgpOworfQorCit2b2lkIEpTR2xvYmFsQ29udGV4dFNldFJlbW90ZURlYnVnZ2luZ0Vu
YWJsZWQoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgYm9vbCBlbmFibGVkKQoreworICAgIGlmICgh
Y3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBBUElFbnRyeVNoaW0g
ZW50cnlTaGltKGV4ZWMpOworCisgICAgZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5zZXRS
ZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGVuYWJsZWQpOworfQorCitKU1N0cmluZ1JlZiBKU0dsb2Jh
bENvbnRleHRHZXROYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCit7CisgICAgaWYgKCFjdHgp
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgQVBJRW50cnlTaGltIGVu
dHJ5U2hpbShleGVjKTsKKworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGV4ZWMt
PmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+bmFtZSgpKS5sZWFrUmVmKCk7Cit9CisKK3ZvaWQgSlNH
bG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBu
YW1lKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsK
KyAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworCisgICAgZXhlYy0+ZHluYW1pY0ds
b2JhbE9iamVjdCgpLT5zZXROYW1lKG5hbWUgPyBuYW1lLT5zdHJpbmcoKSA6IFN0cmluZygpKTsK
K30KKworCiBjbGFzcyBCYWNrdHJhY2VGdW5jdG9yIHsKIHB1YmxpYzoKICAgICBCYWNrdHJhY2VG
dW5jdG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIHJlbWFpbmluZ0NhcGFjaXR5
Rm9yRnJhbWVDYXB0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NvbnRleHRSZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgK
aW5kZXggNzcwNTk1NS4uMzIxYzc5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NvbnRleHRSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5oCkBAIC0xMzMsNiArMTMzLDQwIEBAIEpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJl
ZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KSBBVkFJTEFCTEVfSU5fV0VCCiAq
LwogSlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxDb250ZXh0
KEpTQ29udGV4dFJlZiBjdHgpIENGX0FWQUlMQUJMRSgxMF83LCA0XzApOwogCisvKiEKK0BmdW5j
dGlvbgorQGFic3RyYWN0IEdldHMgdGhlIHJlbW90ZSBkZWJ1Z2dpbmcgY2FwYWJpbGl0eSBvbiBh
IGNvbnRleHQuCitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgd2hvc2UgY2FwYWJpbGl0
eSB5b3Ugd2FudCB0byBnZXQuCitAcmVzdWx0IGN0eCdzIHJlbW90ZSBkZWJ1Z2dpbmcgY2FwYWJp
bGl0eS4KKyovCitKU19FWFBPUlQgYm9vbCBKU0dsb2JhbENvbnRleHRHZXRSZW1vdGVEZWJ1Z2dp
bmdFbmFibGVkKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpOworCisvKiEKK0BmdW5jdGlvbgorQGFi
c3RyYWN0IFNldHMgdGhlIHJlbW90ZSBkZWJ1Z2dpbmcgY2FwYWJpbGl0eSBvbiBhIGNvbnRleHQu
CitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgd2hvc2UgY2FwYWJpbGl0eSB5b3Ugd2Fu
dCB0byBjaGFuZ2UuCitAcGFyYW0gZW5hYmxlIFNldCB0cnVlIHRvIGVuYWJsZSByZW1vdGUgZGVi
dWdnaW5nLCBmYWxzZSB0byBkaXNhYmxlLgorKi8KK0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29u
dGV4dFNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgYm9v
bCBlbmFibGUpOworCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0IEdldHMgdGhlIG5hbWUgb2Yg
YSBjb250ZXh0LgorQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHdob3NlIG5hbWUgeW91
IHdhbnQgdG8gZ2V0LgorQHJlc3VsdCBUaGUgbmFtZSBmb3IgY3R4LgorQGRpc2N1c3Npb24gQSBK
U0dsb2JhbENvbnRleHQncyBuYW1lIGlzIGV4cG9zZWQgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdG8g
bWFrZSBpdAorZWFzaWVyIHRvIGlkZW50aWZ5IHRoZSBjb250ZXh0IHlvdSB3b3VsZCBsaWtlIHRv
IGF0dGFjaCB0by4KKyovCitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNHbG9iYWxDb250ZXh0R2V0
TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4KTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFj
dCBTZXRzIHRoZSByZW1vdGUgZGVidWdnaW5nIG5hbWUgZm9yIGEgY29udGV4dC4KK0BwYXJhbSBj
dHggVGhlIEpTR2xvYmFsQ29udGV4dCB0aGF0IHlvdSB3YW50IHRvIG5hbWUuCitAcGFyYW0gbmFt
ZSBUaGUgcmVtb3RlIGRlYnVnZ2luZyBuYW1lIHRvIHNldCBvbiBjdHguCisqLworSlNfRVhQT1JU
IHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBKU1N0
cmluZ1JlZiBuYW1lKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCmluZGV4IGZjMWI5NDMuLjA4YWZjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwpAQCAtMyw2ICszLDUyIEBACiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3Rl
IEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlw
dENvcmUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NDYxMwogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
a2UgSlNDb250ZXh0IEBjbGFzcyBhbmQgSmF2YVNjcmlwdENvcmU6OkpTQ29udGV4dFJlZgorICAg
ICAgICAiSmF2YVNjcmlwdCIgUmVtb3RlIERlYnVnZ2FibGVzLgorCisgICAgICAgICogQVBJL0pT
Q29udGV4dC5oOgorICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgtW0pTQ29u
dGV4dCByZW1vdGVEZWJ1Z2dpbmdFbmFibGVkXSk6CisgICAgICAgICgtW0pTQ29udGV4dCBzZXRS
ZW1vdGVEZWJ1Z2dpbmdFbmFibGVkOl0pOgorICAgICAgICAoLVtKU0NvbnRleHQgbmFtZV0pOgor
ICAgICAgICAoLVtKU0NvbnRleHQgc2V0TmFtZTpdKToKKyAgICAgICAgT2JqQyBBUEkgdG8gZW5h
YmxlL2Rpc2FibGUgSlNDb250ZXh0IHJlbW90ZSBpbnNwZWN0aW9uIGFuZCBnaXZlIGEgbmFtZS4K
KworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuaDoKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0
UmVmLmNwcDoKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dEdldFJlbW90ZURlYnVnZ2luZ0VuYWJs
ZWQpOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0U2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZCk6
CisgICAgICAgIChKU0dsb2JhbENvbnRleHRHZXROYW1lKToKKyAgICAgICAgKEpTR2xvYmFsQ29u
dGV4dFNldE5hbWUpOgorICAgICAgICBDIEFQSSB0byBlbmFibGUvZGlzYWJsZSBKU0NvbnRleHQg
cmVtb3RlIGluc3BlY3Rpb24gYW5kIGdpdmUgYSBuYW1lLgorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNldFJlbW90ZURl
YnVnZ2luZ0VuYWJsZWQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVtb3RlRGVi
dWdnaW5nRW5hYmxlZCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXROYW1lKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpuYW1lKToKKyAgICAgICAgU2hhcmVkIGhhbmRsaW5nIG9mIHRoZSBBUElzIGFi
b3ZlLgorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpKU0dsb2JhbE9i
amVjdERlYnVnZ2FibGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6
Om5hbWUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmNvbm5lY3Qp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmRpc2Nvbm5lY3QpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZy
b21SZW1vdGVGcm9udGVuZCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVn
Z2FibGUuaDogQWRkZWQuCisgICAgICAgIFN0dWIgZm9yIHRoZSBhY3R1YWwgcmVtb3RlIGRlYnVn
Z2luZyBpbXBsZW1lbnRhdGlvbi4gV2Ugd2lsbCBwdXNoCisgICAgICAgIGRvd24gdGhlIGFwcHJv
cHJpYXRlIFdlYkNvcmUvaW5zcGVjdG9yIHBlaWNlcyBzdWl0YWJsZSBmb3IgZGVidWdnaW5nCisg
ICAgICAgIGp1c3QgYSBKYXZhU2NyaXB0IGNvbnRleHQuCisKKzIwMTMtMTEtMTkgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQ
dXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRv
IEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjQ2MTMKKwogICAgICAgICBNb3ZlIHRoZSBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikgcmVtb3RlIGRlYnVnZ2VyIGNvbm5lY3Rpb24gbWFuYWdlbWVudAogICAgICAgICBpbnRvIEph
dmFTY3JpcHRDb3JlIChvcmlnaW5hbGx5IGZyb20gV2ViS2l0L21hYykuIEluY2x1ZGUgZW5oYW5j
ZW1lbnRzOgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAwMjIzNDcuLjQwNmYz
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODQsNiArODg0LDggQEAKIAkJ
QTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5MjNDMTU2RUVEM0Iw
MDU2NkNCMiAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFS
TTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTk0NTU4RjE4MjQ1
RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU4RTE4MjQ1RURFMDBDQzM4
NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgKi87IH07CisJCUE1OTQ1NTkyMTgy
NDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OTAxODI0NzQ0NzAwQ0Mz
ODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgKi87IH07CisJCUE1OTQ1NTkzMTgy
NDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1NTkxMTgyNDc0NDcwMENDMzg0
MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCAqLzsgfTsKIAkJQTU5NDU1OTUxODI0NzlF
QjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OTQxODI0NzlFQjAwQ0MzODQzIC8q
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE1QkExNUU4MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJ
bnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1QkExNUUxMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNUJBMTVFOTE4MjM0MEIz
MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTIxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUlu
c3BlY3Rvci5tbSAqLzsgfTsKQEAgLTIyMDEsNiArMjIwMyw4IEBACiAJCUExNzEyQjNFMTFDN0Iy
MjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkI0
MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTk0
NTU4RTE4MjQ1RURFMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlLmNwcDsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTQ1NTkwMTgyNDc0NDcwMEND
Mzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5NDU1OTExODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ds
b2JhbE9iamVjdERlYnVnZ2FibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5
NDU1OTQxODI0NzlFQjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaDsg
cGF0aCA9IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3Bl
Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3Iu
aDsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNw
ZWN0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBSZW1vdGVJ
bnNwZWN0b3IubW07IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0OTQsNiArMzQ5OCw4IEBACiAJCQkJMEYy
QjY2QzgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
SW5saW5lcy5oICovLAogCQkJCTE0REUwRDY4MEQwMjQzMTQwMEFBQ0NBMiAvKiBKU0dsb2JhbE9i
amVjdC5jcHAgKi8sCiAJCQkJQThFODk0MzMwQ0QwNjAzRjAwMzY3MTc5IC8qIEpTR2xvYmFsT2Jq
ZWN0LmggKi8sCisJCQkJQTU5NDU1OTAxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZS5jcHAgKi8sCisJCQkJQTU5NDU1OTExODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5oICovLAogCQkJCUJDNzU2RkM2MEUyMDMxQjIwMERFN0QxMiAv
KiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJQkM3NTZGQzcwRTIwMzFCMjAw
REU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmggKi8sCiAJCQkJMEYyQjY2Q0ExN0I2
QjVBQjAwQTdBRTNGIC8qIEpTSW50MTZBcnJheS5oICovLApAQCAtNDQ1Niw2ICs0NDYyLDcgQEAK
IAkJCQkwRkVBMEEwODE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVh
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTQ1NTkzMTgyNDc0
NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRUEwQTBBMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBDMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21w
aWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTU0ODMsNiArNTQ5MCw3IEBACiAJCQkJQTdCNDhGNDkw
RUU4OTM2RjAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZEQjY0NjQwRjk1QzZGQzAwRDdEOTIxIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JGaXhl
ZFZNUG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU2QTFENTE1MDAxQ0Y0MDAyOTkyQjEg
LyogRXhlY3V0aW9uQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTk0NTU5MjE4MjQ3
NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQjEwNTg1MTY3NTQ4MEYwMEY4QUI2RSAvKiBFeGl0S2luZC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkVBMEExQzE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTFFMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGYwNTE2NmEuLmNmMWEw
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKQEAgLTEyNSw2ICsxMjUsMTEgQEAKICNpbmNsdWRlICJKU1Byb21pc2VSZXNvbHZlclBy
b3RvdHlwZS5oIgogI2VuZGlmIC8vIEVOQUJMRShQUk9NSVNFUykKIAorI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUluc3BlY3Rvci5oIgorI2VuZGlmCisKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5sdXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC03NjAsNCArNzY1LDQwIEBAIFVubGlu
a2VkRXZhbENvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsCiAgICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrOwogfQogCit2
b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKK3sKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBpZiAoZW5hYmxlZCAmJiAh
bV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKSB7CisgICAgICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZSA9
IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlPigqdGhpcyk7CisgICAg
ICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+aW5pdCgpOworICAgICAgICBtX2luc3BlY3RvckRl
YnVnZ2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoZW5hYmxlZCk7CisgICAgfSBlbHNl
IGlmICghZW5hYmxlZCAmJiBtX2luc3BlY3RvckRlYnVnZ2FibGUpCisgICAgICAgIG1faW5zcGVj
dG9yRGVidWdnYWJsZSA9IG51bGxwdHI7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbmFibGVk
KTsKKyNlbmRpZgorfQorCitib29sIEpTR2xvYmFsT2JqZWN0OjpyZW1vdGVEZWJ1Z2dpbmdFbmFi
bGVkKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBpZiAoIW1f
aW5zcGVjdG9yRGVidWdnYWJsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IG1faW5zcGVjdG9yRGVidWdnYWJsZS0+cmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpOworI2Vsc2UK
KyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0
TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgbV9uYW1lID0gbmFtZTsKKworI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlmIChtX2luc3BlY3RvckRlYnVnZ2FibGUpCisg
ICAgICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+dXBkYXRlKCk7CisjZW5kaWYKK30KKwogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAppbmRleCBiMGZlYjVkLi5kMzY2ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTU4LDYgKzU4LDcgQEAgY2xhc3Mg
RnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBHZXR0
ZXJTZXR0ZXI7CiBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CitjbGFzcyBKU0dsb2JhbE9iamVjdERl
YnVnZ2FibGU7CiBjbGFzcyBKU1Byb21pc2VQcm90b3R5cGU7CiBjbGFzcyBKU1Byb21pc2VSZXNv
bHZlclByb3RvdHlwZTsKIGNsYXNzIEpTU3RhY2s7CkBAIC0yMjksOCArMjMwLDE0IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgCiAgICAgdm9pZCogbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6VGFi
bGVTaXplXTsgLy8gU3BlY2lhbCBwb2ludGVycyB1c2VkIGJ5IHRoZSBMTEludCBhbmQgSklULgog
CisgICAgU3RyaW5nIG1fbmFtZTsKKwogICAgIERlYnVnZ2VyKiBtX2RlYnVnZ2VyOwogCisjaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgc3RkOjp1bmlxdWVfcHRyPEpTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZT4gbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlOworI2VuZGlmCisKICAgICBSZWZQ
dHI8V2F0Y2hwb2ludFNldD4gbV9tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludDsKICAg
ICBSZWZQdHI8V2F0Y2hwb2ludFNldD4gbV9oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQ7CiAgICAg
UmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fdmFySW5qZWN0aW9uV2F0Y2hwb2ludDsKQEAgLTQyMCw2
ICs0MjcsMTIgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogcHJvbWlzZVdyYXBwZXJDYWxsYmFj
a1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVj
dHVyZS5nZXQoKTsgfQogI2VuZGlmIC8vIEVOQUJMRShQUk9NSVNFUykKIAorICAgIHZvaWQgc2V0
UmVtb3RlRGVidWdnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpOworICAgIGJvb2wgcmVtb3RlRGVi
dWdnaW5nRW5hYmxlZCgpIGNvbnN0OworCisgICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYg
bmFtZSk7CisgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9
CisKICAgICBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiBhcnJheUJ1ZmZlclByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJQcm90b3R5cGUuZ2V0KCk7IH0KIAogI2RlZmluZSBE
RUZJTkVfQUNDRVNTT1JTX0ZPUl9TSU1QTEVfVFlQRShjYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBw
cm9wZXJOYW1lLCBpbnN0YW5jZVR5cGUsIGpzTmFtZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI4ZjMxMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dERlYnVnZ2FibGUuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVk
ZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3IuaCIKKwordXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKKworbmFtZXNwYWNlIEpTQyB7CisKK0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6SlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlKEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCisgICAg
OiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCit7Cit9CisKK1N0cmluZyBKU0dsb2JhbE9i
amVjdERlYnVnZ2FibGU6Om5hbWUoKSBjb25zdAoreworICAgIFN0cmluZyBuYW1lID0gbV9nbG9i
YWxPYmplY3QubmFtZSgpOworICAgIHJldHVybiBuYW1lLmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJh
bCgiSlNDb250ZXh0IikgOiBuYW1lOworfQorCit2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZTo6Y29ubmVjdChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKQoreworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQuCisgICAgLy8gQ3JlYXRlIGFuIEluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rv
ckZyb250ZW5kLCBJbnNwZWN0b3JCYWNrZW5kLCBhbmQgQWdlbnRzLgorICAgIC8vICJJbnNwZWN0
b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQiLgorfQorCit2b2lkIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZTo6ZGlzY29ubmVjdCgpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAg
ICAvLyAiSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kIi4KK30KKwordm9p
ZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9u
dGVuZChjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgLy8g
Ikluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZCIKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYyZDll
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTR2xvYmFsT2JqZWN0RGVidWdn
YWJsZV9oCisjZGVmaW5lIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZV9oCisKKyNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUu
aCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEpTR2xvYmFsT2JqZWN0OworCitjbGFzcyBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUgRklO
QUwgOiBwdWJsaWMgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUpOworcHVibGljOgor
ICAgIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZShKU0dsb2JhbE9iamVjdCYpOworICAgIH5KU0ds
b2JhbE9iamVjdERlYnVnZ2FibGUoKSB7IH0KKworICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpEZWJ1Z2dhYmxlVHlwZSB0eXBlKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpKYXZhU2Ny
aXB0OyB9CisKKyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBK
U0dsb2JhbE9iamVjdCYgbV9nbG9iYWxPYmplY3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gIWRlZmlu
ZWQoSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGY5OWQ5NC4uNDZm
ZDRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTExLTE5ICBKb3NlcGggUGVj
b3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVz
aCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBK
YXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTWFrZSBhIFdlYkNvcmU6OlBhZ2UgYSAiV2ViIiBSZW1vdGUgRGVidWdnYWJsZS4KKwor
ICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1Z2dhYmxlLmg6Cisg
ICAgICAgICogcGFnZS9QYWdlRGVidWdnYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZURlYnVnZ2FibGU6OlBhZ2VEZWJ1Z2dhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VEZWJ1Z2dhYmxlOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjp1
cmwpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6Omhhc0xvY2FsRGVidWdnZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmNvbm5lY3QpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZURlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6c2V0SW5kaWNhdGluZyk6CisgICAgICAgIE1h
a2UgYSBwYWdlIGEgIldlYiIgZGVidWdnYWJsZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
TWlzYy4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6aW5kaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2xpZW50OjpoaWRlSW5kaWNhdGUpOgorICAgICAgICBGb3J3YXJkIGluZGljYXRl
IG1ldGhvZHMgdG8gV2ViS2l0IGNsaWVudHMuCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZENoYW5nZVRpdGxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgor
ICAgICAgICBQdXNoIHVwZGF0ZXMgd2hlbiByZW1vdGUgZGVidWdnYWJsZSBpbmZvcm1hdGlvbiBs
aWtlIHRoZSBQYWdlJ3MKKyAgICAgICAgVVJMIG9yIHRpdGxlIGNoYW5nZS4KKworICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaDoKKyAgICAgICAgUmUtZXhwb3J0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIGFzIFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbAorICAgICAgICB0byBhdm9pZCBuZWVkbGVzc2x5IHVwZGF0aW5nIGNv
ZGUgYWxsIG92ZXIgdGhlIHBsYWNlLgorCisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSk6CisgICAgICAgIE1ha2UgdGhlICJJbnNwZWN0IEVsZW1lbnQiIGNvbnRleHQgbWVudSB3
b3JrIGNvcnJlY3RseSB3aGVuIHRoZXJlIGlzIGEKKyAgICAgICAgcmVtb3RlIGluc3BlY3RvciBp
bnN0ZWFkIG9mIGEgbG9jYWwgaW5zcGVjdG9yLgorCiAyMDEzLTExLTIxICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBXZWJDcnlwdG8gdW53
cmFwS2V5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDBlYWEwZTYuLmZlNTE5YTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC0yODA0LDYgKzI4MDQsNyBAQCBfX1pON1dlYkNvcmUzM1FMUHJldmll
d0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldEV2CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorX19aTjdXZWJDb3JlNFBhZ2UyNnNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2Vk
RWIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI3ZGlzcGF0Y2hNZXNzYWdlRnJv
bUZyb250ZW5kRVJLTjNXVEY2U3RyaW5nRQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNTViN2MyLi5iOWM0NTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0zNTE2LDYgKzM1MTYsOCBAQAogCQlBNTU2QzI4OTE4MzIwNkE4MDA4Q0I3MjAgLyog
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU1NkMyODcxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50
UmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBNTczMkIwQTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3MzJCMDgxMzZBMTYx
RDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLzsgfTsKIAkJQTU3MzJCMEIxMzZBMTYx
RDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBv
bmVudHMuaCAqLzsgfTsKKwkJQTVBMkFGMEIxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dh
YmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
QTJBRjA5MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgKi87IH07CisJCUE1
QTJBRjBDMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBMkFGMEExODI5NzM0MzAwREUxNzI5
IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi87IH07CiAJCUE1QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAv
KiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJ
dGVyYXRvclBvb2xJQ1UuaCAqLzsgfTsKIAkJQTVBQzRBRUYxODMzNjk3NTAwNzExNEUwIC8qIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCUE1QUM0QUYwMTgzMzY5NzUwMDcxMTRFMCAv
KiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQzRBRUUxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEwMzAyLDYgKzEwMzA0LDggQEAKIAkJQTU1NkMyODcxODMyMDZBODAw
OENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTczMkIwODEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTczMkIwOTEzNkExNjFEMDA1QzhEN0Mg
LyogRGF0ZUNvbXBvbmVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0
ZUNvbXBvbmVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVBMkFGMDkxODI5
NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJl
YWtJdGVyYXRvclBvb2xJQ1UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlu
ZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUM0QUVFMTgzMzY5
NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU2NDYsNiArMTU2NTAsOCBAQAogCQkJCUNEMDgyODVC
MTc1NzI1MDgwMEVDNUZCNyAvKiBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oICovLAogCQkJ
CURBQUNCM0Q5MTZGMjQxNjQwMDY2NjEzNSAvKiBQYWdlQ29uc29sZS5jcHAgKi8sCiAJCQkJREFB
Q0IzREExNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25zb2xlLmggKi8sCisJCQkJQTVBMkFGMDkx
ODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCAqLywKKwkJCQlBNUEyQUYwQTE4
Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCAqLywKIAkJCQk5MzAyQjBCQzBENzlG
ODI5MDBDN0VFODMgLyogUGFnZUdyb3VwLmNwcCAqLywKIAkJCQk5MzAyQjBCRTBENzlGODJDMDBD
N0VFODMgLyogUGFnZUdyb3VwLmggKi8sCiAJCQkJN0E2NzRCRDkwRjlFQkY0RTAwNkNGMDk5IC8q
IFBhZ2VHcm91cExvYWREZWZlcnJlci5jcHAgKi8sCkBAIC0yMjk4OCw2ICsyMjk5NCw3IEBACiAJ
CQkJRDAwMEVCQTMxMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNEQ1OEVCQjE3QjhGMTI4MDBDQkRDQTggLyogRWxlbWVudFRy
YXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCNzdBMzgwQURENzkyNTAwRUE0QjgxIC8q
IEZyYW1lTG9hZGVyVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1QTJBRjBDMTgyOTczNDMw
MERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU4NDM2ODYw
QUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTYyOEQyMTRFMTIxMzFFRjQwMDU1RENGQyAvKiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMTcyQUY3MDE4MEYyODk1MDBGQkFEQjkgLyogQ3J5cHRvS2V5VXNh
Z2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3MTcsNiArMjc3MjQsNyBAQAogCQkJCUIyQUZGQzdG
MEQwMEE1QzEwMDMwMDc0RCAvKiBTaW1wbGVGb250RGF0YU1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUM1QTFFQTdDMTUyQkNGMDQwMDREMDBCNiAvKiBTaW1wbGlmeU1hcmt1cENvbW1hbmQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkQwMEQ3QTQxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNh
bXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTVBMkFGMEIxODI5NzM0MzAwREUxNzI5IC8q
IFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMzI3RDYxMTFBMzNBMkIw
MDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTExQ0Mw
RUY4NkQ0NzAwOUQwQ0FGIC8qIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDE1MEY5RjIxMkI2RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuaAppbmRleCA3MGExOWM5Li40NGU3ZWExNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTUyLDYgKzUyLDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBoaWdobGlnaHQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQo
KSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5kaWNhdGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgaGlkZUluZGljYXRpb24oKSB7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBjYW5DbGVhckJyb3dz
ZXJDYWNoZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQnJvd3Nl
ckNhY2hlKCkgeyB9CiAgICAgdmlydHVhbCBib29sIGNhbkNsZWFyQnJvd3NlckNvb2tpZXMoKSB7
IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCmluZGV4IDcxYjY5ZmIuLjFjMWNjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTg0LDYgKzg0LDkg
QEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJ
bnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9p
bnNwZWN0b3JDbGllbnQoaW5zcGVjdG9yQ2xpZW50KQogICAgICwgbV9pc1VuZGVyVGVzdChmYWxz
ZSkKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICAsIG1faGFzUmVtb3RlRnJvbnRl
bmQoZmFsc2UpCisjZW5kaWYKIHsKICAgICBPd25QdHI8SW5zcGVjdG9yQWdlbnQ+IGluc3BlY3Rv
ckFnZW50UHRyKEluc3BlY3RvckFnZW50OjpjcmVhdGUocGFnZSwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIuZ2V0KCksIG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpOwogICAgIG1faW5zcGVj
dG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudFB0ci5nZXQoKTsKQEAgLTE0OCw3ICsxNTEsNiBAQCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3Bl
Y3RvckNsaWVudCogaW5zcGVjdG9yQwogICAgIG1fYWdlbnRzLmFwcGVuZChwcm9maWxlckFnZW50
UHRyLnJlbGVhc2UoKSk7CiAKICAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9ySGVhcFByb2Zp
bGVyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmdldCgpKSk7Ci0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFdPUktFUlMpCkBA
IC0yMDUsNiArMjA3LDI0IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQoUGFzc093blB0cjxJbnNwZWN0b3JGcm9udGVuCiAgICAgbV9pbnNwZWN0
b3JGcm9udGVuZENsaWVudCA9IGluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogfQogCitib29sIElu
c3BlY3RvckNvbnRyb2xsZXI6Omhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdAoreworI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHJldHVybiBoYXNGcm9udGVuZCgpICYmICFtX2hhc1Jl
bW90ZUZyb250ZW5kOworI2Vsc2UKKyAgICByZXR1cm4gaGFzRnJvbnRlbmQoKTsKKyNlbmRpZgor
fQorCitib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3QK
K3sKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICByZXR1cm4gbV9oYXNSZW1vdGVG
cm9udGVuZDsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIGJvb2wgSW5z
cGVjdG9yQ29udHJvbGxlcjo6aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwpAQCAtMjM1LDYgKzI1NSwxMSBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbgogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgp
KTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5kQ3JlYXRlZCgpOworCisj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgaWYgKCFtX2hhc1JlbW90ZUZyb250ZW5k
KQorICAgICAgICBtX3BhZ2UtPnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7
CisjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRl
bmQoKQpAQCAtMjUyLDEwICsyNzcsMTcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNj
b25uZWN0RnJvbnRlbmQoKQogICAgIG1fb3ZlcmxheS0+ZnJlZVBhZ2UoKTsKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5kRGVsZXRlZCgpOwogICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6dW5yZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVtZW50aW5n
QWdlbnRzLmdldCgpKTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlmICgh
bV9oYXNSZW1vdGVGcm9udGVuZCkKKyAgICAgICAgbV9wYWdlLT5yZW1vdGVJbnNwZWN0b3JJbmZv
cm1hdGlvbkRpZENoYW5nZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6c2hvdygpCiB7CisgICAgQVNTRVJUKCFoYXNSZW1vdGVGcm9udGVuZCgpKTsKKwogICAgIGlm
ICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTMxNyw3ICszNDksOCBAQCB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3QoTm9kZSogbm9kZSkKICAgICBpZiAoIWVuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2hvdygpOworICAgIGlmICghaGFzUmVtb3Rl
RnJvbnRlbmQoKSkKKyAgICAgICAgc2hvdygpOwogCiAgICAgbV9kb21BZ2VudC0+aW5zcGVjdChu
b2RlKTsKIH0KQEAgLTM1NCw2ICszODcsMTUgQEAgTm9kZSogSW5zcGVjdG9yQ29udHJvbGxlcjo6
aGlnaGxpZ2h0ZWROb2RlKCkgY29uc3QKICAgICByZXR1cm4gbV9vdmVybGF5LT5oaWdobGlnaHRl
ZE5vZGUoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbmRpY2F0aW5nKGJv
b2wgaW5kaWNhdGluZykKK3sKKyAgICAvLyBGSVhNRTogRm9yIG5vbi1pT1MgY2xpZW50cywgd2Ug
c2hvdWxkIGhhdmUgSW5zcGVjdG9yT3ZlcmxheSBkbyBzb21ldGhpbmcgaGVyZS4KKyAgICBpZiAo
aW5kaWNhdGluZykKKyAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmluZGljYXRlKCk7CisgICAg
ZWxzZQorICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+aGlkZUluZGljYXRpb24oKTsKK30KKwog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVy
Ojpwcm9maWxlckVuYWJsZWQoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggOTVlYzdlMy4uODM5Zjk5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC05MiwxNyAr
OTIsMjYgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICBib29sIGhhc0Zyb250ZW5kKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsgfQorICAgIGJvb2wgaGFzTG9jYWxG
cm9udGVuZCgpIGNvbnN0OworICAgIGJvb2wgaGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdDsKKwog
ICAgIHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOwogICAg
IHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKCk7CiAgICAgdm9pZCBzZXRQcm9jZXNzSWQobG9uZyk7
CiAgICAgdm9pZCB3ZWJWaWV3UmVzaXplZChjb25zdCBJbnRTaXplJik7CiAKKyNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKKyAgICB2b2lkIHNldEhhc1JlbW90ZUZyb250ZW5kKGJvb2wgaGFz
UmVtb3RlKSB7IG1faGFzUmVtb3RlRnJvbnRlbmQgPSBoYXNSZW1vdGU7IH0KKyNlbmRpZgorCiAg
ICAgdm9pZCBpbnNwZWN0KE5vZGUqKTsKICAgICB2b2lkIGRyYXdIaWdobGlnaHQoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Q7CiAgICAgdm9pZCBnZXRIaWdobGlnaHQoSGlnaGxpZ2h0KikgY29uc3Q7
CiAgICAgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CiAgICAgTm9kZSogaGlnaGxpZ2h0ZWROb2RlKCkg
Y29uc3Q7CiAKKyAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKTsKKwogICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9k
ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc1VuZGVyVGVzdCgpOwpAQCAtMTUzLDYgKzE2MiwxMCBA
QCBwcml2YXRlOgogICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CiAgICAg
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBib29sIG1faXNVbmRlclRlc3Q7
CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBib29sIG1faGFzUmVtb3RlRnJv
bnRlbmQ7CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaAppbmRleCBiMzIxNGVmLi5hMzk2NmFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC5oCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yMCwyMiArMjEsMTYg
QEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWxfaAotI2RlZmluZSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAorI2lmbmRlZiBXRUJDT1JF
X0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oCisjZGVmaW5lIFdFQkNPUkVfSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsX2gKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCA6IHB1YmxpYyBJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7IH07Cit9CiAKLWNsYXNzIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oKQorI2VuZGlmIC8vICFk
ZWZpbmVkKFdFQkNPUkVfSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsX2gpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBmMzQ3NGMzLi5iOGY3ZjlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMzMTksNiArMzMxOSwxMSBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICBt
X2NsaWVudC5zZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KHRydWUpOyAvLyB1cGRhdGUgb2JzZXJ2
ZXJzIHdpdGggbmV3IERPTURvY3VtZW50CiAgICAgICAgIG1fY2xpZW50LmRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlKGxvYWRlci0+dGl0bGUoKSk7CiAgICAgfQorCisjaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCisgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKKyAgICAgICAgbV9mcmFt
ZS5wYWdlKCktPnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CisjZW5kaWYK
IH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvbnMoSWNvblR5cGUgdHlwZSkKQEAg
LTMzNDAsOSArMzM0NSwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExv
YWQoKQogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkKCZtX2Zy
YW1lLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpKTsKIAotICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZy
YW1lKCkpCisgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkgewogICAgICAgICBtX2ZyYW1l
LnBhZ2UoKS0+ZmVhdHVyZU9ic2VydmVyKCktPmRpZENvbW1pdExvYWQoKTsKLQorI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQorICAgICAgICBtX2ZyYW1lLnBhZ2UoKS0+cmVtb3RlSW5zcGVj
dG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsKKyNlbmRpZgorICAgIH0KIH0KIAogdm9pZCBGcmFt
ZUxvYWRlcjo6dGVsbENsaWVudEFib3V0UGFzdE1lbW9yeUNhY2hlTG9hZHMoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGM3YTNjZDIuLmE1
ZWExODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHAKQEAgLTg5Miw3ICs4OTIsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxh
dGUoKQogI2VuZGlmICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgfSBlbHNlIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgICAgICAgICAgICAgIGlmICghKGZyYW1lLT5wYWdlKCkgJiYg
ZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5oYXNJbnNwZWN0b3JGcm9udGVu
ZENsaWVudCgpKSkgeworICAgICAgICAgICAgICAgIGlmICghKGZyYW1lLT5wYWdlKCkgJiYgKGZy
YW1lLT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aGFzSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQoKSB8fCBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmhhc1JlbW90
ZUZyb250ZW5kKCkpKSkgewogI2VuZGlmCiAKICAgICAgICAgICAgICAgICAvLyBJbiBHVEsrIHVu
YXZhaWxhYmxlIGl0ZW1zIGFyZSBub3QgaGlkZGVuIGJ1dCBpbnNlbnNpdGl2ZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCmluZGV4IDhkOTI5OTcuLmFlNzIwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNTks
NiArNTksNyBAQAogI2luY2x1ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgiCiAjaW5j
bHVkZSAiUGFnZUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGUuaCIKKyNpbmNsdWRlICJQ
YWdlRGVidWdnYWJsZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBhZ2VU
aHJvdHRsZXIuaCIKICNpbmNsdWRlICJQbHVnSW5DbGllbnQuaCIKQEAgLTE4Niw2ICsxODcsOSBA
QCBQYWdlOjpQYWdlKFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50cykKICAgICAsIG1fc2NyaXB0ZWRB
bmltYXRpb25zU3VzcGVuZGVkKGZhbHNlKQogICAgICwgbV9wYWdlVGhyb3R0bGVyKHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZVRocm90dGxlcj4oKnRoaXMpKQogICAgICwgbV9jb25zb2xlKHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZUNvbnNvbGU+KCp0aGlzKSkKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKKyAgICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1
Z2dhYmxlPigqdGhpcykpCisjZW5kaWYKICAgICAsIG1fbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2Fu
ZGlkYXRlc0NvdW50KDApIC8vIE5PVEU6IE9ubHkgY2FsbGVkIGZyb20gSW50ZXJuYWxzIGZvciBT
cGF0aWFsIE5hdmlnYXRpb24gdGVzdGluZy4KICAgICAsIG1fZnJhbWVzSGFuZGxpbmdCZWZvcmVV
bmxvYWRFdmVudCgwKQogewpAQCAtMjAzLDYgKzIwNywxMCBAQCBQYWdlOjpQYWdlKFBhZ2VDbGll
bnRzJiBwYWdlQ2xpZW50cykKICNpZm5kZWYgTkRFQlVHCiAgICAgcGFnZUNvdW50ZXIuaW5jcmVt
ZW50KCk7CiAjZW5kaWYKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIG1faW5z
cGVjdG9yRGVidWdnYWJsZS0+aW5pdCgpOworI2VuZGlmCiB9CiAKIFBhZ2U6On5QYWdlKCkKQEAg
LTEyOTEsNiArMTI5OSwyMyBAQCB2b2lkIFBhZ2U6OmFkZEZvb3RlcldpdGhIZWlnaHQoaW50IGZv
b3RlckhlaWdodCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiti
b29sIFBhZ2U6OnJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCk7Cit9CisKK3Zv
aWQgUGFnZTo6c2V0UmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQoYm9vbCBhbGxvd2VkKQoreworICAg
IG1faW5zcGVjdG9yRGVidWdnYWJsZS0+c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChhbGxvd2Vk
KTsKK30KKwordm9pZCBQYWdlOjpyZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgp
IGNvbnN0Cit7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT51cGRhdGUoKTsKK30KKyNlbmRp
ZgorCiB2b2lkIFBhZ2U6OmFkZExheW91dE1pbGVzdG9uZXMoTGF5b3V0TWlsZXN0b25lcyBtaWxl
c3RvbmVzKQogewogICAgIC8vIEluIHRoZSBmdXR1cmUsIHdlIG1heSB3YW50IGEgZnVuY3Rpb24g
dGhhdCByZXBsYWNlcyBtX2xheW91dE1pbGVzdG9uZXMgaW5zdGVhZCBvZiBqdXN0IGFkZGluZyB0
byBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggYjY3ODM4OC4uNDVjZDQzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
QEAgLTgwLDYgKzgwLDcgQEAgY2xhc3MgTWVkaWFDYW5TdGFydExpc3RlbmVyOwogY2xhc3MgTm9k
ZTsKIGNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOwogY2xhc3MgUGFnZUNvbnNvbGU7
CitjbGFzcyBQYWdlRGVidWdnYWJsZTsKIGNsYXNzIFBhZ2VHcm91cDsKIGNsYXNzIFBhZ2VUaHJv
dHRsZXI7CiBjbGFzcyBQbHVnSW5DbGllbnQ7CkBAIC0xNzgsNiArMTc5LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRlY3JlbWVudFN1YmZyYW1lQ291bnQoKSB7IEFTU0VSVChtX3N1YmZyYW1lQ291
bnQpOyAtLW1fc3ViZnJhbWVDb3VudDsgfQogICAgIGludCBzdWJmcmFtZUNvdW50KCkgY29uc3Qg
eyBjaGVja1N1YmZyYW1lQ291bnRDb25zaXN0ZW5jeSgpOyByZXR1cm4gbV9zdWJmcmFtZUNvdW50
OyB9CiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBib29sIHJlbW90ZUluc3Bl
Y3Rpb25BbGxvd2VkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRSZW1vdGVJbnNwZWN0aW9uQWxsb3dl
ZChib29sIGFsbG93ZWQpOworICAgIHZvaWQgcmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRD
aGFuZ2UoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgQ2hyb21lJiBjaHJvbWUoKSBjb25zdCB7IHJl
dHVybiAqbV9jaHJvbWU7IH0KICAgICBEcmFnQ2FyZXRDb250cm9sbGVyJiBkcmFnQ2FyZXRDb250
cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fZHJhZ0NhcmV0Q29udHJvbGxlcjsgfQogI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpCkBAIC01MzIsNiArNTM5LDEwIEBAIHByaXZhdGU6CiAgICAgY29u
c3Qgc3RkOjp1bmlxdWVfcHRyPFBhZ2VUaHJvdHRsZXI+IG1fcGFnZVRocm90dGxlcjsKICAgICBj
b25zdCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUNvbnNvbGU+IG1fY29uc29sZTsKIAorI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxQYWdlRGVidWdn
YWJsZT4gbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlOworI2VuZGlmCisKICAgICBIYXNoU2V0PFN0cmlu
Zz4gbV9zZWVuUGx1Z2luczsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9zZWVuTWVkaWFFbmdpbmVz
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmNlYTBhZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlBhZ2VEZWJ1Z2dhYmxlLmgiCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgIk1h
aW5GcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYWdlRGVidWdnYWJsZTo6UGFnZURlYnVnZ2Fi
bGUoUGFnZSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCitTdHJpbmcgUGFnZURl
YnVnZ2FibGU6Om5hbWUoKSBjb25zdAoreworICAgIGlmICghbV9wYWdlLm1haW5GcmFtZSgpLmRv
Y3VtZW50KCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3BhZ2Uu
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+dGl0bGUoKTsKK30KKworU3RyaW5nIFBhZ2VEZWJ1Z2dh
YmxlOjp1cmwoKSBjb25zdAoreworICAgIGlmICghbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50
KCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFN0cmluZyB1cmwgPSBtX3BhZ2Uu
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7CisgICAgcmV0dXJuIHVybC5p
c0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoImFib3V0OmJsYW5rIikgOiB1cmw7Cit9CisKK2Jvb2wg
UGFnZURlYnVnZ2FibGU6Omhhc0xvY2FsRGVidWdnZXIoKSBjb25zdAoreworICAgIHJldHVybiBt
X3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLT5oYXNMb2NhbEZyb250ZW5kKCk7Cit9CisKK3Zv
aWQgUGFnZURlYnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGNoYW5uZWwpCit7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgaW5zcGVjdG9yQ29u
dHJvbGxlci0+c2V0SGFzUmVtb3RlRnJvbnRlbmQodHJ1ZSk7CisgICAgaW5zcGVjdG9yQ29udHJv
bGxlci0+Y29ubmVjdEZyb250ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKj4oY2hhbm5lbCkpOworfQorCit2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpk
aXNjb25uZWN0KCkKK3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9s
bGVyID0gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAgICBpbnNwZWN0b3JDb250cm9s
bGVyLT5kaXNjb25uZWN0RnJvbnRlbmQoKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5zZXRI
YXNSZW1vdGVGcm9udGVuZChmYWxzZSk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2FibGU6OmRpc3Bh
dGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250
ZW5kKG1lc3NhZ2UpOworfQorCit2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpzZXRJbmRpY2F0aW5nKGJv
b2wgaW5kaWNhdGluZykKK3sKKyAgICBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJ
bmRpY2F0aW5nKGluZGljYXRpbmcpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlRGVidWdnYWJsZS5oCnNpbWlsYXJpdHkgaW5kZXggNTAlCmNvcHkgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKY29weSB0byBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKaW5kZXggYjMyMTRlZi4uOTI0MjkxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMCwzMiArMTAs
NTQgQEAKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQogICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCiAg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKICAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgogICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oCi0jZGVmaW5lIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oCisjaWZuZGVmIFBhZ2VEZWJ1Z2dhYmxlX2gKKyNkZWZp
bmUgUGFnZURlYnVnZ2FibGVfaAogCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgeworY2xh
c3MgUGFnZTsKKworY2xhc3MgUGFnZURlYnVnZ2FibGUgRklOQUwgOiBwdWJsaWMgSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQ
YWdlRGVidWdnYWJsZSk7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKKyAgICBQYWdlRGVidWdnYWJsZShQYWdlJik7CisgICAg
flBhZ2VEZWJ1Z2dhYmxlKCkgeyB9CisKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUgdHlwZSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6V2ViOyB9CisKKyAg
ICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJp
bmcgdXJsKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdn
ZXIoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpc2Nvbm5lY3QoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdl
RnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKSBPVkVSUklERTsKKwor
cHJpdmF0ZToKKyAgICBQYWdlJiBtX3BhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaCkKKyNlbmRp
ZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2VuZGlmIC8vICFkZWZpbmVkKFBhZ2VE
ZWJ1Z2dhYmxlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOTkzZGZmNC4uYjNmM2ExYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1v
dGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2Ny
aXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGll
bnQ6OmluZGljYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6aGlkZUluZGljYXRl
KToKKyAgICAgICAgSG9vayB1cCBXZWJWaWV3IGluZGljYXRpb24gdGhyb3VnaCB0aGlzIG5ldyBw
YXRoLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhG
cmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHJlbW90ZURlYnVnZ2lu
Z0VuYWJsZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVk
Ol0pOgorICAgICAgICBGSVhNRTogSW5jb21wbGV0ZSBXZWJWaWV3IEFQSSB0byBlbmFibGUvZGlz
YWJsZSByZW1vdGUgZGVidWdnaW5nLgorCiAyMDEzLTExLTIwICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2luZyBWTUVudHJ5U2NvcGUgdG8gdXBkYXRl
IHRoZSBWTSBzdGFjayBsaW1pdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNTUxYWY3Zi4uMTA3MzkyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmgKQEAgLTczLDYgKzczLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoaWdo
bGlnaHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpIE9WRVJS
SURFOwogCisgICAgdmlydHVhbCB2b2lkIGluZGljYXRlKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGhpZGVJbmRpY2F0aW9uKCkgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIHZvaWQgZGlk
U2V0U2VhcmNoaW5nRm9yTm9kZShib29sKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0K
aW5kZXggZTQzOGM2ZC4uNmFlOTk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMTk3LDYgKzE5NywxNiBA
QCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aGlkZUhpZ2hsaWdodCgpCiAgICAgW21faGlnaGxp
Z2h0ZXIuZ2V0KCkgaGlkZUhpZ2hsaWdodF07CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50
OjppbmRpY2F0ZSgpCit7CisgICAgW21fd2ViVmlldyBzZXRJbmRpY2F0aW5nRm9yUmVtb3RlSW5z
cGVjdG9yOllFU107Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWRlSW5kaWNhdGlv
bigpCit7CisgICAgW21fd2ViVmlldyBzZXRJbmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOk5P
XTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUo
Ym9vbCBlbmFibGVkKQogewogICAgIFdlYkluc3BlY3RvciAqaW5zcGVjdG9yID0gW21fd2ViVmll
dyBpbnNwZWN0b3JdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcuaAppbmRleCA1MDNlZjNh
Li5iODVkN2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcuaApAQCAtNjU3LDYgKzY1
NywxOSBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlZpZXdQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0
aW9uOwogKi8KIC0gKE5TSW1hZ2UgKiltYWluRnJhbWVJY29uOwogCisvKiEKKyAgICBAbWV0aG9k
IHJlbW90ZURlYnVnZ2luZ0VuYWJsZWQKKyAgICBAcmVzdWx0IFJldHVybnMgd2hldGhlciBvciBu
b3QgdGhpcyBXZWJWaWV3IGNhbiBiZSByZW1vdGVseSBkZWJ1Z2dlZC4KKyovCistIChCT09MKXJl
bW90ZURlYnVnZ2luZ0VuYWJsZWQ7CisKKy8qIQorICAgIEBtZXRob2Qgc2V0UmVtb3RlRGVidWdn
aW5nRW5hYmxlZDoKKyAgICBAcGFyYW0gZW5hYmxlIFRoZSBuZXcgcmVtb3RlIGRlYnVnZ2luZyBw
ZXJtaXNzaW9uIGZvciB0aGlzIFdlYlZpZXcuCisgICAgQGFic3RyYWN0IFNldHMgdGhlIHJlbW90
ZSBkZWJ1Z2dpbmcgcGVybWlzc2lvbiBvZiB0aGlzIFdlYlZpZXcuCisqLworLSAodm9pZClzZXRS
ZW1vdGVEZWJ1Z2dpbmdFbmFibGVkOihCT09MKWVuYWJsZWQ7CisKIEBlbmQKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYWFiNDYzNy4uNTVjMWVkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzkyLDcgKzM5Miw3IEBAIHN0YXRpYyBjb25z
dCBjaGFyIHdlYlZpZXdJc09wZW5bXSA9ICJBdCBsZWFzdCBvbmUgV2ViVmlldyBpcyBzdGlsbCBv
cGVuLiI7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotc3RhdGljIEJP
T0wgYXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yID0gWUVTOworc3RhdGljIEJPT0wgYXV0b1N0YXJ0
UmVtb3RlSW5zcGVjdG9yID0gTk87CiAjZW5kaWYKIAogQGludGVyZmFjZSBOU09iamVjdCAoV2Vi
VmFsaWRhdGVXaXRob3V0RGVsZWdhdGUpCkBAIC03OTgsNiArNzk4LDEwIEBAIHN0YXRpYyBib29s
IHNob3VsZFVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IoKQogICAgIFdl
YkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyhfcHJpdmF0ZS0+cGFnZSwgbmV3IFdlYlVzZXJNZWRp
YUNsaWVudChzZWxmKSk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXRSZW1vdGVJbnNwZWN0aW9uQWxsb3dlZCh0cnVlKTsKKyNl
bmRpZgorCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldENhblN0YXJ0TWVkaWEoW3NlbGYgd2luZG93
XSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0TG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoKFtbc2VsZiBwcmVmZXJlbmNlc10gX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aF0pOwog
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFVzZUxlZ2FjeUJhY2tncm91bmRTaXpl
U2hvcnRoYW5kQmVoYXZpb3Ioc2hvdWxkVXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRC
ZWhhdmlvcigpKTsKQEAgLTQ4MjcsNiArNDgzMSwxNyBAQCBzdGF0aWMgV2ViRnJhbWUgKmluY3Jl
bWVudEZyYW1lKFdlYkZyYW1lICpmcmFtZSwgV2ViRmluZE9wdGlvbnMgb3B0aW9ucyA9IDApCiAg
ICAgcmV0dXJuIFtwcmV2aW91c1ZpZXcgcHJldmlvdXNWYWxpZEtleVZpZXddOwogfQogCistIChC
T09MKXJlbW90ZURlYnVnZ2luZ0VuYWJsZWQKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHZp
YSBXZWJDb3JlOjpwYWdlIC8gc2V0dGluZ3MgQVBJLgorICAgIHJldHVybiBOTzsKK30KKworLSAo
dm9pZClzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHZpYSBXZWJDb3JlOjpwYWdlIC8gc2V0dGluZ3MgQVBJLgorfQorCiBA
ZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJJQkFjdGlvbnMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggY2YyZmRiNC4uZjY1OTU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTEx
LTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1h
bmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW46CisgICAgICAgIEFsbG93IHRoZSBXZWJQcm9jZXNz
IHRvIGFjY2VzcyB0aGUgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiIG5hbWVkCisgICAgICAgIFhQ
QyBzZXJ2aWNlIHRvIGV4cG9zZSBpdHMgV2ViQ29yZTo6UGFnZSdzIHRvIHJlbW90ZSBkZWJ1Z2dl
cnMuCisKIDIwMTMtMTEtMjAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIEhvb2sgdXAgV2ViUHJvY2Vzcy1zaWRlIG9mIGdldE9yRXN0YWJsaXNoSURCRGF0YWJh
c2VNZXRhZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IDM1NWViOWIuLmY3ZTQyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM0MSw2ICszNDEsMTAgQEAgV2ViUGFnZTo6V2Vi
UGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCiAgICAgV2ViQ29yZTo6cHJvdmlkZURldmljZVByb3hpbWl0eVRvKG1fcGFnZS5n
ZXQoKSwgbmV3IFdlYkRldmljZVByb3hpbWl0eUNsaWVudCh0aGlzKSk7CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIG1fcGFnZS0+c2V0UmVtb3RlSW5zcGVjdGlv
bkFsbG93ZWQodHJ1ZSk7CisjZW5kaWYKKwogICAgIG1fcGFnZS0+c2V0Q2FuU3RhcnRNZWRpYShm
YWxzZSk7CiAgICAgbV9tYXlTdGFydE1lZGlhV2hlbkluV2luZG93ID0gcGFyYW1ldGVycy5tYXlT
dGFydE1lZGlhV2hlbkluV2luZG93OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgppbmRleCA5MGJiMGU2Li5jNDcyYzBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNz
LnNiLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nl
c3Muc2IuaW4KQEAgLTEzOSw2ICsxMzksMTAgQEAKIAogI2VuZGlmCiAKKzs7IFJlbW90ZSBXZWIg
SW5zcGVjdG9yCisoYWxsb3cgbWFjaC1sb29rdXAKKyAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5h
cHBsZS53ZWJpbnNwZWN0b3IiKSkKKwogOzsgVmFyaW91cyBzZXJ2aWNlcyByZXF1aXJlZCBieSBB
cHBLaXQgYW5kIG90aGVyIGZyYW1ld29ya3MKIChhbGxvdyBtYWNoLWxvb2t1cAogICAgICAgIChn
bG9iYWwtbmFtZSAiY29tLmFwcGxlLkRpc2tBcmJpdHJhdGlvbi5kaXNrYXJiaXRyYXRpb25kIikK
</data>
<flag name="review"
          id="240764"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217595</attachid>
            <date>2013-11-21 12:26:44 -0800</date>
            <delta_ts>2013-12-02 12:34:51 -0800</delta_ts>
            <desc>[PATCH] Part 3 - Remove old WebInspector/mac implementation</desc>
            <filename>part3.patch</filename>
            <type>text/plain</type>
            <size>95575</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggOTg4ODE4OC4uNmVlN2MwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVj
dGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYxMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKIDIwMTMtMTEtMTggIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtFRkxdIEFkZCBFV2ViS2l0Q29uZmlnLmNtYWtlIGFuZCBFV2ViS2l0MkNv
bmZpZy5jbWFrZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYjZiNGJiNy4uNGNkNGNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzcsMjQgKzM3NywxMSBAQAogCQlBMTBD
MUQ4RDE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld1BsYWNlaG9sZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTBDMUQ4ODE4MjAzMDVFMDAz
Njg4M0EgLyogV2ViUERGVmlld1BsYWNlaG9sZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTEwQzFEOEUxODIwMzA1RTAwMzY4ODNBIC8qIFdl
YlBERlZpZXdQbGFjZWhvbGRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExMEMxRDg5MTgyMDMwNUUwMDM2ODgzQSAvKiBXZWJQREZWaWV3UGxhY2Vo
b2xkZXIubW0gKi87IH07CiAJCUExN0ExMUIxMTgwREM4NDgwMEU1NDk4QyAvKiBXZWJQbHVnaW5Q
YWNrYWdlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE3QTExQjAxODBEQzg0ODAwRTU0OThDIC8qIFdlYlBsdWdpblBhY2thZ2VQcml2YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTUy
MTRGQzcxM0I5NzVDODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MjE0RkMxMTNCOTc1
QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmggKi87IH07Ci0JCUE1MjE0
RkM4MTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUyMTRGQzIxM0I5NzVD
ODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gKi87IH07Ci0JCUE1MjIw
OUY4MTNDNTNFNzUwMDRCQTdCMSAvKiBXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTIyMDlGNzEzQzUz
RTc1MDA0QkE3QjEgLyogV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1NUUyMEZGMTRENzI2NEMw
MDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NUUyMEZE
MTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNv
bnRyb2xsZXIuaCAqLzsgfTsKLQkJQTU1RTIxMDAxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3Bl
Y3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NUUyMEZFMTRENzI2NEMwMDMxNTQ5RSAv
KiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gKi87IH07
CiAJCUE1NjA5NDY2MTREOEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRpY2F0ZUxheWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTYwOTQ2NDE0RDhBRDI2
MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVMYXllci5oICovOyB9OwogCQlBNTYwOTQ2NzE0RDhBRDI2
MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVMYXllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NjA5NDY1MTREOEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRp
Y2F0ZUxheWVyLm1tICovOyB9OwogCQlBNTY4N0JEQTEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9k
ZUhpZ2hsaWdodGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTY4N0JEODEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLmggKi87
IH07CiAJCUE1Njg3QkRCMTM1Qjc5MUEwMDc0Q0JDQiAvKiBXZWJOb2RlSGlnaGxpZ2h0ZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTY4N0JEOTEz
NUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLm1tICovOyB9OwotCQlBNTdDMjhB
NzEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0MyOEEx
MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5o
ICovOyB9OwotCQlBNTdDMjhBODEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTdDMjhBMjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb24ubW0gKi87IH07Ci0JCUE1N0MyOEE5MTNCQUE1QUQwMDcwQUNBQiAv
KiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1N0MyOEEzMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2
ZXIuaCAqLzsgfTsKLQkJQTU3QzI4QUExM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNl
cnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
N0MyOEE0MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gKi87IH07Ci0J
CUE1N0MyOEFCMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhBNTEzQkFB
NUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1N0MyOEFDMTNCQUE1QUQwMDcwQUNB
QiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhBNjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVj
dG9yWFBDV3JhcHBlci5tICovOyB9OwogCQlBNTdFMkYyNDEyMDc0OUU2MDAwNDhERjMgLyogV2Vi
UXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTdFMkYyMjEyMDc0OUU2MDAwNDhERjMgLyogV2ViUXVvdGFNYW5hZ2VyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTU3RUI3OEYxM0I5
N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdFQjc4RDEzQjk3QTRFMDA4RDY5
MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCAqLzsgfTsKLQkJQTU3RUI3OTAxM0I5
N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RUI3OEUxM0I5N0E0RTAwOEQ2
OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tICovOyB9OwogCQlBNThBNTc5OTE0
M0U3MjcwMDAxMjVGNTAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OEE1Nzk3MTQzRTcyNzAwMDEy
NUY1MCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oICovOyB9OwogCQlBNThBNTc5QTE0
M0U3MjcwMDAxMjVGNTAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNThBNTc5ODE0M0U3MjcwMDAx
MjVGNTAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0gKi87IH07CiAJCUE1REVGQzBB
MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbi5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVGQzA3MTFENTMzMUMwMDg4NTI3MyAv
KiBXZWJTZWN1cml0eU9yaWdpbi5tbSAqLzsgfTsKQEAgLTc3NiwyNCArNzYzLDExIEBACiAJCUEx
MEMxRDg5MTgyMDMwNUUwMDM2ODgzQSAvKiBXZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJQREZWaWV3UGxhY2Vob2xkZXIu
bW07IHBhdGggPSBpb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW07IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQTEwQzFEOEYxODIwMzA3RDAwMzY4ODNBIC8qIFdlYktp
dC5pT1MuZXhwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5leHBvcnRzOyBuYW1lID0gV2ViS2l0LmlP
Uy5leHA7IHBhdGggPSBpb3MvV2ViS2l0LmlPUy5leHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExN0ExMUIwMTgwREM4NDgwMEU1NDk4QyAvKiBXZWJQbHVnaW5QYWNrYWdlUHJpdmF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQbHVnaW5QYWNrYWdlUHJp
dmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTIxNEZDMTEzQjk3NUM4MDAw
MDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmg7IHBhdGggPSByZW1vdGUv
V2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlBNTIxNEZDMjEzQjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclJl
bW90ZUNoYW5uZWwubW07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUyMjA5RjcxM0M1M0U3NTAwNEJBN0Ix
IC8qIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oOyBwYXRoID0gcmVtb3Rl
L1dlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQTU1RTIwRkQxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaDsgcGF0aCA9
IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU1RTIwRkUxNEQ3MjY0QzAwMzE1NDlFIC8q
IFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1NjA5NDY0MTREOEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRpY2F0ZUxheWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluZGljYXRlTGF5ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU2MDk0NjUxNEQ4QUQyNjAwNzk5QThBIC8qIFdlYklu
ZGljYXRlTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJJbmRpY2F0ZUxheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTY4N0JE
ODEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vZGVIaWdobGlnaHRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNTY4N0JEOTEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdo
dGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTm9kZUhp
Z2hsaWdodGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdDMjhBMTEzQkFB
NUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nv
bm5lY3Rpb24uaDsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdDMjhBMjEzQkFBNUFEMDA3
MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbi5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTMxM0JBQTVB
RDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXIuaDsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0
b3JTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTQxM0JBQTVB
RDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclNlcnZlci5tbTsgcGF0aCA9IHJlbW90ZS9X
ZWJJbnNwZWN0b3JTZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0My
OEE1MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclhQQ1dyYXBwZXIuaDsgcGF0aCA9
IHJlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUE1N0MyOEE2MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVy
Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgbmFtZSA9IFdlYkluc3BlY3RvclhQQ1dy
YXBwZXIubTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLm07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0UyRjIyMTIwNzQ5RTYwMDA0OERGMyAvKiBXZWJRdW90
YU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUXVvdGFNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0VCNzhEMTNCOTdBNEUwMDhE
NjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oOyBwYXRoID0gcmVtb3Rl
L1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUE1N0VCNzhFMTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3Ry
eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3Rv
ckNsaWVudFJlZ2lzdHJ5Lm1tOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lz
dHJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNThBNTc5NzE0M0U3MjcwMDAx
MjVGNTAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTU4QTU3OTgxNDNFNzI3MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1REVGQzA3MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNlY3VyaXR5T3JpZ2lu
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1MCw3ICsxMDI0LDYgQEAKIAkJ
MUM2OEY2M0YwOTVCNUY5QzAwQzI5ODRFIC8qIFdlYkluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTUyMTRGQkYxM0I5NzU5NjAwMDAxNUVG
IC8qIHJlbW90ZSAqLywKIAkJCQk1RDdCRjgxMjBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVj
dG9yLmggKi8sCiAJCQkJNUQ3QkY4MTMwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5t
bSAqLywKIAkJCQlCODA0MTc2RDEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRl
bmQuaCAqLywKQEAgLTE1MDYsMjYgKzE0NzksNiBAQAogCQkJbmFtZSA9IGlvczsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCUE1MjE0RkJGMTNCOTc1OTYwMDAwMTVFRiAvKiBy
ZW1vdGUgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUE1
N0VCNzhEMTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oICov
LAotCQkJCUE1N0VCNzhFMTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdp
c3RyeS5tbSAqLywKLQkJCQlBNTIyMDlGNzEzQzUzRTc1MDA0QkE3QjEgLyogV2ViSW5zcGVjdG9y
UmVsYXlEZWZpbml0aW9ucy5oICovLAotCQkJCUE1MjE0RkMxMTNCOTc1QzgwMDAwMTVFRiAvKiBX
ZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmggKi8sCi0JCQkJQTUyMTRGQzIxM0I5NzVDODAwMDAx
NUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gKi8sCi0JCQkJQTU3QzI4QTMxM0JB
QTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlci5oICovLAotCQkJCUE1N0MyOEE0MTNC
QUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gKi8sCi0JCQkJQTU3QzI4QTEx
M0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmgg
Ki8sCi0JCQkJQTU3QzI4QTIxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uLm1tICovLAotCQkJCUE1NUUyMEZEMTRENzI2NEMwMDMxNTQ5RSAvKiBX
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCAqLywKLQkJCQlB
NTVFMjBGRTE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb25Db250cm9sbGVyLm1tICovLAotCQkJCUE1N0MyOEE1MTNCQUE1QUQwMDcwQUNBQiAvKiBX
ZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggKi8sCi0JCQkJQTU3QzI4QTYxM0JBQTVBRDAwNzBBQ0FC
IC8qIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIubSAqLywKLQkJCSk7Ci0JCQluYW1lID0gcmVtb3Rl
OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJRjUyQ0E2QkQwMkRGOUQwRjAx
ODYzNUNBIC8qIEhUTUwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtMTgyMiwxNSArMTc3NSw4IEBACiAJCQkJQTEwQzFENjQxODIwMzAwRTAwMzY4ODNBIC8q
IFdlYkNocm9tZUNsaWVudElPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ3QkY4MTQwQzJBMUQ5
MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDY2OTNEREMw
QkZCQTg1MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQTU3RUI3OEYxM0I5N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCODA0MTc2RjEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5z
cGVjdG9yRnJvbnRlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBOEZGMEQxMTA3NTAyNEEwMEE4
MEEwOCAvKiBXZWJJbnNwZWN0b3JQcml2YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTIyMDlG
ODEzQzUzRTc1MDA0QkE3QjEgLyogV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJQTUyMTRGQzcxM0I5NzVDODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJl
bW90ZUNoYW5uZWwuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1N0MyOEE5MTNCQUE1QUQwMDcwQUNB
QiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1N0MyOEE3MTNC
QUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQTU1RTIwRkYxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3Rv
clNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QTU3QzI4QUIxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzOTgxMDQyMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJKYXZhU2NyaXB0
VGV4dElucHV0UGFuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RDFEQ0E4MTA2NTkyOEMwMDY4
RjdFRiAvKiBXZWJKU1BERkRvYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwODUwODI0QkYw
MTAwOERGMDM4IC8qIFdlYktleUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjcyLDEz
ICsyMjE4LDcgQEAKIAkJCQk1RDdCRjgxNTBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9y
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDY2OTNEREQwQkZCQTg1MjAwMjE2MDcyIC8qIFdlYklu
c3BlY3RvckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDN0IwQzY2MEVCMjQ2NEQwMEEy
ODUwMiAvKiBXZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNTdF
Qjc5MDEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0gaW4g
U291cmNlcyAqLywKIAkJCQlCODA0MTc3MDEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9y
RnJvbnRlbmQubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNTIxNEZDODEzQjk3NUM4MDAwMDE1RUYg
LyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbSBpbiBTb3VyY2VzICovLAotCQkJCUE1N0My
OEFBMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gaW4gU291cmNlcyAq
LywKLQkJCQlBNTdDMjhBODEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNTVFMjEwMDE0RDcyNjRDMDAz
MTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1t
IGluIFNvdXJjZXMgKi8sCi0JCQkJQTU3QzI4QUMxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3Bl
Y3RvclhQQ1dyYXBwZXIubSBpbiBTb3VyY2VzICovLAogCQkJCUExMEMxRDE5MTgyMDJGOUMwMDM2
ODgzQSAvKiBXZWJEZWZhdWx0Rm9ybURlbGVnYXRlLm0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4
MTBFNDA4MjRCRjAxMDA4REYwMzggLyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm0gaW4g
U291cmNlcyAqLywKIAkJCQlBMTBDMUQ4QjE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld0lP
Uy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwppbmRleCA1NTJlNzZiLi41NGFhY2JiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBS
ZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZh
U2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisKIDIwMTMtMTAtMjUg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVh
bSBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikgYW5kIGVuYWJsZSBvbiBpT1MgYW5kIE1hYwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudENGLmNwcAppbmRleCBjYTIyZmRlLi4xMjBlMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAt
OTEsMTIgKzkxLDEwIEBAIHN0YXRpYyB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgU3RyaW5nJiBzZXR0aW5nKQogICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShj
cmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpLmdldCgpLCBzZXR0aW5nLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKIH0KIAotI2lmICFF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVz
c2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiBkb0Rp
c3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKG1fZnJvbnRlbmRQYWdlLCBtZXNzYWdlKTsKIH0K
LSNlbmRpZgogCiBib29sIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yQXR0YWNoRGlzYWJs
ZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IGQwYTc4OTYuLjhkOGI2ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVj
b3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIElu
c3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENv
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYx
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViSW5zcGVj
dG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xp
ZW50OjppbnNwZWN0b3JEZXN0cm95ZWQpOgorCiAyMDEzLTExLTE4ICBCcmlhbiBKLiBCdXJnICA8
YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KIAogICAgICAgICBDb25zb2xpZGF0ZSB2YXJpb3VzIGZy
YW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQppbmRleCA1YWNjMmVl
Li5jYTc1ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCkBAIC00MiwxMSArNDIsNiBAQAogI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgog
Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGll
bnRSZWdpc3RyeS5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oIgotI2Vu
ZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXZWJJbnNwZWN0b3JDbGllbnQ6Oldl
Ykluc3BlY3RvckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQpAQCAtNTQsMjMgKzQ5LDExIEBAIFdl
Ykluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAg
ICAgLCBtX2hpZ2hsaWdodGVyKEFkb3B0TlMsIFtbV2ViTm9kZUhpZ2hsaWdodGVyIGFsbG9jXSBp
bml0V2l0aEluc3BlY3RlZFdlYlZpZXc6d2ViVmlld10pCiAgICAgLCBtX2Zyb250ZW5kUGFnZSgw
KQogICAgICwgbV9mcm9udGVuZENsaWVudCgwKQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotICAgICwgbV9yZW1vdGVDaGFubmVsKDApCi0gICAgLCBtX3BhZ2VJZCgwKQotI2VuZGlmCiB7
Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRS
ZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gcmVnaXN0ZXJDbGllbnQ6dGhpc107Ci0jZW5kaWYKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiB7Ci0jaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3Ry
eSBzaGFyZWRSZWdpc3RyeV0gdW5yZWdpc3RlckNsaWVudDp0aGlzXTsKLSAgICB0ZWFyZG93blJl
bW90ZUNvbm5lY3Rpb24odHJ1ZSk7Ci0jZW5kaWYKLQogICAgIGRlbGV0ZSB0aGlzOwogfQogCkBA
IC0xMTYsOTQgKzk5LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGlu
Z0Zvck5vZGUoYm9vbCBlbmFibGVkKQogICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25Pbk1haW5UaHJlYWRXaXRoTmFtZTpXZWJJbnNw
ZWN0b3JEaWRTdG9wU2VhcmNoaW5nRm9yTm9kZSBvYmplY3Q6aW5zcGVjdG9yXTsKIH0KIAotI3By
YWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBSZW1vdGUgV2ViIEluc3BlY3RvciBJbXBsZW1lbnRh
dGlvbgotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi1ib29sIFdlYkluc3BlY3RvckNs
aWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAg
ICBpZiAobV9yZW1vdGVDaGFubmVsKSB7Ci0gICAgICAgIFttX3JlbW90ZUNoYW5uZWwgc2VuZE1l
c3NhZ2VUb0Zyb250ZW5kOm1lc3NhZ2VdOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0K
LSAgICAvLyBpT1MgZG9lcyBub3QgaGF2ZSBhIGxvY2FsIGluc3BlY3Rvci4gVGhlcmUgc2hvdWxk
IGJlIG5vIHdheSB0byByZWFjaCB0aGlzLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0KLSAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250
ZW5kUGFnZShtX2Zyb250ZW5kUGFnZSwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9y
Q2xpZW50OjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0g
ICAgQVNTRVJUKG1fcmVtb3RlQ2hhbm5lbCk7Ci0KLSAgICBQYWdlKiBwYWdlID0gY29yZShtX3dl
YlZpZXcpOwotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kKG1lc3NhZ2UpOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2V0
dXBSZW1vdGVDb25uZWN0aW9uKFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKnJlbW90ZUNoYW5u
ZWwpCi17Ci0gICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIGxvY2FsIHNlc3Npb24sIGRvIG5vdCBh
bGxvdyBhIHJlbW90ZSBzZXNzaW9uLgotICAgIGlmIChoYXNMb2NhbFNlc3Npb24oKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIHJlbW90ZSBzZXNz
aW9uLCBkbyBub3QgYWxsb3cgYSBuZXcgcmVtb3RlIHNlc3Npb24uCi0gICAgaWYgKG1fcmVtb3Rl
Q2hhbm5lbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9yZW1vdGVDaGFubmVsID0g
cmVtb3RlQ2hhbm5lbDsKLQotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmlldyk7Ci0gICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25uZWN0RnJvbnRlbmQodGhpcyk7Ci0KLSAg
ICAvLyBGb3JjZSBkZXZlbG9wZXIgZXh0cmFzIHRvIGJlIGVuYWJsZWQgaW4gV2ViQ29yZSB3aGVu
IGEgcmVtb3RlIGNvbm5lY3Rpb24gc3RhcnRzLgotICAgIGlmIChwYWdlLT5zZXR0aW5ncygpKQot
ICAgICAgICBwYWdlLT5zZXR0aW5ncygpLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUp
OwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojp0ZWFy
ZG93blJlbW90ZUNvbm5lY3Rpb24oYm9vbCBmcm9tTG9jYWxTaWRlKQotewotICAgIEFTU0VSVChX
ZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7Ci0gICAgaWYgKCFtX3JlbW90ZUNoYW5uZWwp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChmcm9tTG9jYWxTaWRlKQotICAgICAgICBbbV9y
ZW1vdGVDaGFubmVsIGNsb3NlRnJvbUxvY2FsU2lkZV07Ci0KLSAgICBQYWdlKiBwYWdlID0gY29y
ZShtX3dlYlZpZXcpOwotICAgIGlmIChwYWdlKSB7Ci0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7Ci0KLSAgICAgICAgLy8gUmVzdG9yZSBk
ZXZlbG9wZXIgZXh0cmFzIHNldHRpbmcgaW4gV2ViQ29yZS4KLSAgICAgICAgaWYgKHBhZ2UgJiYg
cGFnZS0+c2V0dGluZ3MoKSkKLSAgICAgICAgICAgIHBhZ2UtPnNldHRpbmdzKCktPnNldERldmVs
b3BlckV4dHJhc0VuYWJsZWQoW1ttX3dlYlZpZXcgcHJlZmVyZW5jZXNdIGRldmVsb3BlckV4dHJh
c0VuYWJsZWRdKTsKLSAgICB9Ci0KLSAgICBpZiAoZnJvbUxvY2FsU2lkZSkKLSAgICAgICAgW21f
cmVtb3RlQ2hhbm5lbCByZWxlYXNlXTsKLQotICAgIG1fcmVtb3RlQ2hhbm5lbCA9IDA7Ci19Ci0K
LWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpoYXNMb2NhbFNlc3Npb24oKSBjb25zdAotewotICAg
IHJldHVybiBtX2Zyb250ZW5kUGFnZSAhPSAwOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVu
dDo6Y2FuQmVSZW1vdGVseUluc3BlY3RlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX3dlYlZp
ZXcgY2FuQmVSZW1vdGVseUluc3BlY3RlZF07Ci19Ci0KLVdlYlZpZXcgKldlYkluc3BlY3RvckNs
aWVudDo6aW5zcGVjdGVkV2ViVmlldygpCi17Ci0gICAgcmV0dXJuIG1fd2ViVmlldzsKLX0KLSNl
bmRpZgotCiAKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQgSW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAyN2VhNDhkLi41N2Jj
YjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0zLDYgKzMsNTQgQEAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1l
bnQgaW50byBKYXZhU2NyaXB0Q29yZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCiAKKyAgICAgICAgUmVtb3ZlIHRoZSBvbGQgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbXBsZW1lbnRhdGlvbi4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3Rv
ckNsaWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3ll
ZCk6CisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdp
c3RyeS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVj
dG9yQ2xpZW50UmVnaXN0cnkubW06IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3Jl
bW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmg6IFJlbW92ZWQuCisgICAgICAgICog
V2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmg6IFJlbW92ZWQu
CisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVs
Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
U2VydmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNw
ZWN0b3JTZXJ2ZXIubW06IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9X
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24u
bW06IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JT
ZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29u
dHJvbGxlci5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYklu
c3BlY3RvclhQQ1dyYXBwZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVt
b3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIubTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXQu
ZXhwOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
Y29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAg
KCtbV2ViVmlldyBfZW5hYmxlUmVtb3RlSW5zcGVjdG9yXSk6CisgICAgICAgICgrW1dlYlZpZXcg
X2Rpc2FibGVSZW1vdGVJbnNwZWN0b3JdKToKKyAgICAgICAgKCtbV2ViVmlldyBfZGlzYWJsZUF1
dG9TdGFydFJlbW90ZUluc3BlY3Rvcl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9pc1JlbW90ZUlu
c3BlY3RvckVuYWJsZWRdKToKKyAgICAgICAgKCtbV2ViVmlldyBfaGFzUmVtb3RlSW5zcGVjdG9y
U2Vzc2lvbl0pOgorICAgICAgICAoLVtXZWJWaWV3IGFsbG93c1JlbW90ZUluc3BlY3Rpb25dKToK
KyAgICAgICAgKC1bV2ViVmlldyBzZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uOl0pOgorICAgICAg
ICAoLVtXZWJWaWV3IHNldEluZGljYXRpbmdGb3JSZW1vdGVJbnNwZWN0b3I6XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgc2V0SG9zdEFwcGxpY2F0aW9uQnVuZGxlSWQ6bmFtZTpdKToKKyAgICAgICAg
KC1bV2ViVmlldyBfZGlkQ29tbWl0TG9hZEZvckZyYW1lOl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlld0RhdGEuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAg
ICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGRl
YWxsb2NdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKworMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVt
b3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNj
cmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDYxMworCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCiAgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmlu
ZGV4IDE4NzVhYzAuLjZlNzhhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMzgsMTAgKzEzOCw2
IEBACiAjaW1wb3J0ICJXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcuaCIKICNlbmRpZgogCi0j
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXIu
aCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKQEAgLTYyMSwxMiArNjE3LDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGkK
ICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1bmMpCiAg
ICAgICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgICAgICBDYWxsRnJh
bWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1
bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTop
LCAoTlNTdHJpbmcgKil0aXRsZS5zdHJpbmcoKSwgbV93ZWJGcmFtZS5nZXQoKSk7Ci0KLSNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBCT09MIGlzTWFpbkZyYW1lID0gW3dlYlZpZXcg
bWFpbkZyYW1lXSA9PSBtX3dlYkZyYW1lLmdldCgpOwotICAgIGlmIChpc01haW5GcmFtZSkKLSAg
ICAgICAgW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gcHVzaExpc3RpbmddOwot
I2VuZGlmCiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDgxODFmYjQuLmY5MTg3OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oCkBAIC04OCwyMiArODgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbGVh
c2VGcm9udGVuZCgpOwogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgdm9pZCBz
ZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKTsKLQotICAgIGJvb2wgc2V0dXBSZW1v
dGVDb25uZWN0aW9uKFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKnJlbW90ZUNoYW5uZWwpOwot
ICAgIHZvaWQgdGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKGJvb2wgZnJvbUxvY2FsU2lkZSk7Ci0K
LSAgICB1bnNpZ25lZCBwYWdlSWQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJZDsgfQotICAgIHZv
aWQgc2V0UGFnZUlkKHVuc2lnbmVkIHBhZ2VJZCkgeyBtX3BhZ2VJZCA9IHBhZ2VJZDsgfQotCi0g
ICAgYm9vbCBoYXNMb2NhbFNlc3Npb24oKSBjb25zdDsKLQotICAgIGJvb2wgY2FuQmVSZW1vdGVs
eUluc3BlY3RlZCgpIGNvbnN0OwotCi0gICAgV2ViVmlldyAqaW5zcGVjdGVkV2ViVmlldygpOwot
I2VuZGlmCi0KIHByaXZhdGU6CiAgICAgUGFzc093blB0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4gY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpOwogCkBA
IC0xMTEsMTEgKzk1LDYgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8V2ViTm9kZUhpZ2hsaWdo
dGVyPiBtX2hpZ2hsaWdodGVyOwogICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQYWdlOwog
ICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50OwotCi0jaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAq
bV9yZW1vdGVDaGFubmVsOwotICAgIHVuc2lnbmVkIG1fcGFnZUlkOwotI2VuZGlmCiB9OwogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbQppbmRleCA1NGIyZjI1Li5iNDMxOTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC01NSwx
MSArNTUsNiBAQAogI2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L0Jhc2U2NC5oPgogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0jaW1wb3J0ICJXZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hh
bm5lbC5oIgotI2VuZGlmCi0KIFNPRlRfTElOS19TVEFHRURfRlJBTUVXT1JLKFdlYkluc3BlY3Rv
clVJLCBQcml2YXRlRnJhbWV3b3JrcywgQSkKIAogLy8gVGhlIG1hcmdpbiBmcm9tIHRoZSB0b3Ag
YW5kIHJpZ2h0IG9mIHRoZSBkb2NrIGJ1dHRvbiAoc2FtZSBhcyB0aGUgZnVsbCBzY3JlZW4gYnV0
dG9uKS4KQEAgLTEzNSwyMyArMTMwLDExIEBAIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVj
dG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgLCBtX2hpZ2hsaWdodGVyKGFkb3B0TlMo
W1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzp3ZWJW
aWV3XSkpCiAgICAgLCBtX2Zyb250ZW5kUGFnZSgwKQogICAgICwgbV9mcm9udGVuZENsaWVudCgw
KQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9yZW1vdGVDaGFubmVsKDAp
Ci0gICAgLCBtX3BhZ2VJZCgwKQotI2VuZGlmCiB7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gcmVn
aXN0ZXJDbGllbnQ6dGhpc107Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6
Omluc3BlY3RvckRlc3Ryb3llZCgpCiB7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0g
ICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gdW5yZWdpc3Rl
ckNsaWVudDp0aGlzXTsKLSAgICB0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24odHJ1ZSk7Ci0jZW5k
aWYKLQogICAgIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKICAgICBkZWxldGUgdGhpczsKIH0K
QEAgLTIyNSw3OCArMjA4LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnJlbGVhc2VGcm9u
dGVuZCgpCiAgICAgbV9mcm9udGVuZFBhZ2UgPSAwOwogfQogCi0jaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBpZiAobV9yZW1vdGVDaGFubmVsKSB7Ci0g
ICAgICAgIFttX3JlbW90ZUNoYW5uZWwgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOm1lc3NhZ2VdOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3Nh
Z2VPbkZyb250ZW5kUGFnZShtX2Zyb250ZW5kUGFnZSwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCi17Ci0gICAgQVNTRVJUKG1fcmVtb3RlQ2hhbm5lbCk7Ci0KLSAgICBQYWdlKiBwYWdlID0g
Y29yZShtX3dlYlZpZXcpOwotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNs
aWVudDo6c2V0dXBSZW1vdGVDb25uZWN0aW9uKFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKnJl
bW90ZUNoYW5uZWwpCi17Ci0gICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIGxvY2FsIHNlc3Npb24s
IGRvIG5vdCBhbGxvdyBhIHJlbW90ZSBzZXNzaW9uLgotICAgIGlmIChoYXNMb2NhbFNlc3Npb24o
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIHJl
bW90ZSBzZXNzaW9uLCBkbyBub3QgYWxsb3cgYSBuZXcgcmVtb3RlIHNlc3Npb24uCi0gICAgaWYg
KG1fcmVtb3RlQ2hhbm5lbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQVNTRVJUKFtb
bV93ZWJWaWV3IHByZWZlcmVuY2VzXSBkZXZlbG9wZXJFeHRyYXNFbmFibGVkXSk7Ci0KLSAgICBt
X3JlbW90ZUNoYW5uZWwgPSByZW1vdGVDaGFubmVsOwotCi0gICAgUGFnZSogcGFnZSA9IGNvcmUo
bV93ZWJWaWV3KTsKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9u
dGVuZCh0aGlzKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6dGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKGJvb2wgZnJvbUxvY2FsU2lkZSkKLXsKLSAg
ICBpZiAoIW1fcmVtb3RlQ2hhbm5lbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGZyb21M
b2NhbFNpZGUpCi0gICAgICAgIFttX3JlbW90ZUNoYW5uZWwgY2xvc2VGcm9tTG9jYWxTaWRlXTsK
LQotICAgIGlmIChQYWdlKiBwYWdlID0gY29yZShtX3dlYlZpZXcpKQotICAgICAgICBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2Nvbm5lY3RGcm9udGVuZCgpOwotCi0gICAgaWYgKGZy
b21Mb2NhbFNpZGUpCi0gICAgICAgIFttX3JlbW90ZUNoYW5uZWwgcmVsZWFzZV07Ci0KLSAgICBt
X3JlbW90ZUNoYW5uZWwgPSAwOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6aGFzTG9j
YWxTZXNzaW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UgIT0gMDsKLX0K
LQotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQoKSBjb25z
dAotewotICAgIHJldHVybiBbbV93ZWJWaWV3IGNhbkJlUmVtb3RlbHlJbnNwZWN0ZWRdOwotfQot
Ci1XZWJWaWV3ICpXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RlZFdlYlZpZXcoKQotewotICAg
IHJldHVybiBtX3dlYlZpZXc7Ci19Ci0jZW5kaWYKLQogCiBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmll
dywgV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciogd2luZG93Q29udHJvbGxlciwgSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgUGFnZSogZnJvbnRlbmRQYWdlLCBX
VEY6OlBhc3NPd25QdHI8U2V0dGluZ3M+IHNldHRpbmdzKQogICAgIDogSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbChpbnNwZWN0b3JDb250cm9sbGVyLCAgZnJvbnRlbmRQYWdlLCBzZXR0aW5n
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rv
ci9yZW1vdGUvV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZWE1YjJlMy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJ
bnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KLQotY2xhc3MgV2ViSW5zcGVjdG9yQ2xp
ZW50OwotCi1AcHJvdG9jb2wgV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnlEZWxlZ2F0ZQotLSAo
dm9pZClkaWRSZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQ7Ci0tICh2
b2lkKWRpZFVucmVnaXN0ZXJDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVudCopY2xpZW50OwotQGVu
ZAotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IDogTlNPYmplY3Qgewot
QHByaXZhdGUKLSAgICB1bnNpZ25lZCBfbmV4dEF2YWlsYWJsZVBhZ2VJZDsKLSAgICBIYXNoTWFw
PHVuc2lnbmVkLCBXZWJJbnNwZWN0b3JDbGllbnQqPiBfcGFnZUNsaWVudE1hcDsKLSAgICBpZCA8
V2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnlEZWxlZ2F0ZT4gX2RlbGVnYXRlOwotfQotCi1AcHJv
cGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpZCA8V2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnlE
ZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0KLSsgKFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ICopc2hh
cmVkUmVnaXN0cnk7Ci0KLS0gKHZvaWQpcmVnaXN0ZXJDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVu
dCopY2xpZW50OwotLSAodm9pZCl1bnJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQq
KWNsaWVudDsKLS0gKFdlYkluc3BlY3RvckNsaWVudCopY2xpZW50Rm9yUGFnZUlkOih1bnNpZ25l
ZClwYWdlSWQ7Ci0tIChOU0RpY3Rpb25hcnkgKilpbnNwZWN0YWJsZVdlYlZpZXdzOwotCi1AZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYklu
c3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODA5NDhkNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJ
bnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tCisrKyAvZGV2L251
bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLSNpbXBvcnQgIldlYklu
c3BlY3RvckNsaWVudFJlZ2lzdHJ5LmgiCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVudC5o
IgotI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKLQotQGltcGxlbWVudGF0aW9uIFdlYkluc3Bl
Y3RvckNsaWVudFJlZ2lzdHJ5Ci0KLUBzeW50aGVzaXplIGRlbGVnYXRlID0gX2RlbGVnYXRlOwot
Ci0rIChXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSAqKXNoYXJlZFJlZ2lzdHJ5Ci17Ci0gICAg
c3RhdGljIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ICpzaGFyZWRSZWdpc3RyeSA9IFtbV2Vi
SW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgYWxsb2NdIGluaXRdOwotICAgIHJldHVybiBzaGFyZWRS
ZWdpc3RyeTsKLX0KLQotLSAoaWQpaW5pdAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0g
ICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX25leHRBdmFpbGFibGVQ
YWdlSWQgPSAxOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHVuc2lnbmVkKV9nZXROZXh0
QXZhaWxhYmxlUGFnZUlkCi17Ci0gICAgLy8gQm91bmRhcnkgdmFsdWVzLCAwIGFuZCBVSU5UX01B
WCwgYXJlIGludmFsaWQgSGFzaE1hcCBrZXlzLgotICAgIHVuc2lnbmVkIG5leHRWYWxpZFBhZ2VJ
ZDsKLSAgICBkbyB7Ci0gICAgICAgIG5leHRWYWxpZFBhZ2VJZCA9IF9uZXh0QXZhaWxhYmxlUGFn
ZUlkKys7Ci0gICAgfSB3aGlsZSAoIW5leHRWYWxpZFBhZ2VJZCB8fCBuZXh0VmFsaWRQYWdlSWQg
PT0gVUlOVF9NQVggfHwgX3BhZ2VDbGllbnRNYXAuY29udGFpbnMobmV4dFZhbGlkUGFnZUlkKSk7
Ci0gICAgcmV0dXJuIG5leHRWYWxpZFBhZ2VJZDsKLX0KLQotLSAodm9pZClyZWdpc3RlckNsaWVu
dDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQKLXsKLSAgICB1bnNpZ25lZCBwYWdlSWQgPSBb
c2VsZiBfZ2V0TmV4dEF2YWlsYWJsZVBhZ2VJZF07Ci0gICAgX3BhZ2VDbGllbnRNYXAuc2V0KHBh
Z2VJZCwgY2xpZW50KTsKLSAgICBjbGllbnQtPnNldFBhZ2VJZChwYWdlSWQpOwotICAgIFtfZGVs
ZWdhdGUgZGlkUmVnaXN0ZXJDbGllbnQ6Y2xpZW50XTsKLX0KLQotLSAodm9pZCl1bnJlZ2lzdGVy
Q2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudAotewotICAgIHVuc2lnbmVkIHBhZ2VJ
ZCA9IGNsaWVudC0+cGFnZUlkKCk7Ci0gICAgX3BhZ2VDbGllbnRNYXAucmVtb3ZlKHBhZ2VJZCk7
Ci0gICAgW19kZWxlZ2F0ZSBkaWRVbnJlZ2lzdGVyQ2xpZW50OmNsaWVudF07Ci19Ci0KLS0gKFdl
Ykluc3BlY3RvckNsaWVudCopY2xpZW50Rm9yUGFnZUlkOih1bnNpZ25lZClwYWdlSWQKLXsKLSAg
ICByZXR1cm4gX3BhZ2VDbGllbnRNYXAuZ2V0KHBhZ2VJZCk7Ci19Ci0KLS0gKE5TRGljdGlvbmFy
eSAqKWluc3BlY3RhYmxlV2ViVmlld3MKLXsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0
aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhDYXBhY2l0eTpfcGFn
ZUNsaWVudE1hcC5zaXplKCldOwotCi0gICAgSGFzaE1hcDx1bnNpZ25lZCwgV2ViSW5zcGVjdG9y
Q2xpZW50Kj46Oml0ZXJhdG9yIGVuZCA9IF9wYWdlQ2xpZW50TWFwLmVuZCgpOwotICAgIGZvciAo
SGFzaE1hcDx1bnNpZ25lZCwgV2ViSW5zcGVjdG9yQ2xpZW50Kj46Oml0ZXJhdG9yIGl0ID0gX3Bh
Z2VDbGllbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFdlYlZpZXcg
KndlYlZpZXcgPSBpdC0+dmFsdWUtPmluc3BlY3RlZFdlYlZpZXcoKTsKLSAgICAgICAgaWYgKCFb
d2ViVmlldyBjYW5CZVJlbW90ZWx5SW5zcGVjdGVkXSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVk
SW50Oml0LT5rZXldOwotICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6d2ViVmlldyBmb3JL
ZXk6cGFnZUlkXTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZGljdGlvbmFyeTsKLX0KLQotQGVuZAot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1v
dGUvV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
SW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmM2JjMzIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25z
X2gKLSNkZWZpbmUgV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9uc19oCi0KLS8vIFdJUkNvbnN0
YW50cyBhcmUgIldlYiBJbnNwZWN0b3IgUmVsYXkiIGNvbnN0YW50cyBzaGFyZWQgYmV0d2Vlbgot
Ly8gdGhlIFdlYkluc3BlY3RvciBmcmFtZXdvcmsgb24gdGhlIGRlYnVnZ2VyIHNpZGUsIHdlYmlu
c3BlY3RvcmQsCi0vLyBhbmQgV2ViS2l0IG9uIHRoZSBkZWJ1Z2dhYmxlIGFwcGxpY2F0aW9uIHNp
ZGUuCi0KLSNkZWZpbmUgV0lSU2ltdWxhdG9yVENQUG9ydE51bWJlciAgICAgICAgICAgICAgIDI3
NzUzCi0jZGVmaW5lIFdJUlhQQ01hY2hQb3J0TmFtZSAgICAgICAgICAgICAgICAgICAgICAiY29t
LmFwcGxlLndlYmluc3BlY3RvciIKLSNkZWZpbmUgV0lSWFBDRGVidWdnZXJTZXJ2aWNlTmFtZSAg
ICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yLmRlYnVnZ2VyIgotI2RlZmluZSBX
SVJTZXJ2aWNlQXZhaWxhYmxlTm90aWZpY2F0aW9uICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNw
ZWN0b3JkLmF2YWlsYWJsZSIKLSNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90
aWZpY2F0aW9uICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFiaWxpdHlfY2hlY2siCi0j
ZGVmaW5lIFdJUlNlcnZpY2VFbmFibGVkTm90aWZpY2F0aW9uICAgICAgICAgICAiY29tLmFwcGxl
LndlYmluc3BlY3RvcmQuZW5hYmxlZCIKLSNkZWZpbmUgV0lSU2VydmljZURpc2FibGVkTm90aWZp
Y2F0aW9uICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5kaXNhYmxlZCIKLQotCi0j
ZGVmaW5lIFdJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSAgICAgICAgICAgICBAIldJUkFwcGxp
Y2F0aW9uSWRlbnRpZmllcktleSIKLSNkZWZpbmUgV0lSQXBwbGljYXRpb25OYW1lS2V5ICAgICAg
ICAgICAgICAgICAgIEAiV0lSQXBwbGljYXRpb25OYW1lS2V5IgotI2RlZmluZSBXSVJJc0FwcGxp
Y2F0aW9uUHJveHlLZXkgICAgICAgICAgICAgICAgQCJXSVJJc0FwcGxpY2F0aW9uUHJveHlLZXki
Ci0jZGVmaW5lIFdJUkhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkgICAgICAgICBAIldJUkhv
c3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiCi0jZGVmaW5lIFdJUkhvc3RBcHBsaWNhdGlvbk5h
bWVLZXkgICAgICAgICAgICAgICBAIldJUkhvc3RBcHBsaWNhdGlvbk5hbWVLZXkiCi0jZGVmaW5l
IFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5ICAgICAgICAgICAgICBAIldJUkNvbm5lY3Rpb25J
ZGVudGlmaWVyS2V5IgotI2RlZmluZSBXSVJQYWdlSWRlbnRpZmllcktleSAgICAgICAgICAgICAg
ICAgICAgQCJXSVJQYWdlSWRlbnRpZmllcktleSIKLSNkZWZpbmUgV0lSSGFzTG9jYWxEZWJ1Z2dl
cktleSAgICAgICAgICAgICAgICAgIEAiV0lSSGFzTG9jYWxEZWJ1Z2dlcktleSIKLSNkZWZpbmUg
V0lSVGl0bGVLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSVGl0bGVLZXkiCi0j
ZGVmaW5lIFdJUlVSTEtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJUlVSTEtl
eSIKLSNkZWZpbmUgV0lSVXNlckluZm9LZXkgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lS
VXNlckluZm9LZXkiCi0jZGVmaW5lIFdJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleSAgICAgICAg
ICAgICBAIldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleSIKLSNkZWZpbmUgV0lSTWVzc2FnZURh
dGFLZXkgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSTWVzc2FnZURhdGFLZXkiCi0jZGVmaW5l
IFdJUkFwcGxpY2F0aW9uR2V0TGlzdGluZ01lc3NhZ2UgICAgICAgICBAIldJUkFwcGxpY2F0aW9u
R2V0TGlzdGluZ01lc3NhZ2UiCi0jZGVmaW5lIFdJUkluZGljYXRlTWVzc2FnZSAgICAgICAgICAg
ICAgICAgICAgICBAIldJUkluZGljYXRlTWVzc2FnZSIKLSNkZWZpbmUgV0lSSW5kaWNhdGVFbmFi
bGVkS2V5ICAgICAgICAgICAgICAgICAgIEAiV0lSSW5kaWNhdGVFbmFibGVkS2V5IgotI2RlZmlu
ZSBXSVJTZW5kZXJLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJTZW5kZXJLZXki
Ci0jZGVmaW5lIFdJUlNvY2tldERhdGFLZXkgICAgICAgICAgICAgICAgICAgICAgICBAIldJUlNv
Y2tldERhdGFLZXkiCi0jZGVmaW5lIFdJUlNvY2tldERhdGFNZXNzYWdlICAgICAgICAgICAgICAg
ICAgICBAIldJUlNvY2tldERhdGFNZXNzYWdlIgotI2RlZmluZSBXSVJTb2NrZXRTZXR1cE1lc3Nh
Z2UgICAgICAgICAgICAgICAgICAgQCJXSVJTb2NrZXRTZXR1cE1lc3NhZ2UiCi0jZGVmaW5lIFdJ
UldlYlBhZ2VDbG9zZU1lc3NhZ2UgICAgICAgICAgICAgICAgICBAIldJUldlYlBhZ2VDbG9zZU1l
c3NhZ2UiCi0jZGVmaW5lIFdJUlJhd0RhdGFNZXNzYWdlICAgICAgICAgICAgICAgICAgICAgICBA
IldJUlJhd0RhdGFNZXNzYWdlIgotI2RlZmluZSBXSVJSYXdEYXRhS2V5ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQCJXSVJSYXdEYXRhS2V5IgotI2RlZmluZSBXSVJMaXN0aW5nTWVzc2FnZSAg
ICAgICAgICAgICAgICAgICAgICAgQCJXSVJMaXN0aW5nTWVzc2FnZSIKLSNkZWZpbmUgV0lSTGlz
dGluZ0tleSAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSTGlzdGluZ0tleSIKLSNkZWZp
bmUgV0lSRGVzdGluYXRpb25LZXkgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSRGVzdGluYXRp
b25LZXkiCi0jZGVmaW5lIFdJUkNvbm5lY3Rpb25EaWVkTWVzc2FnZSAgICAgICAgICAgICAgICBA
IldJUkNvbm5lY3Rpb25EaWVkTWVzc2FnZSIKLQotLy8gVGhlc2UgZGVmaW5pdGlvbnMgYXJlIHNo
YXJlZCB3aXRoIGEgU2ltdWxhdG9yIHdlYmluc3BlY3RvcmQgYW5kCi0vLyBPUyBYIHByb2Nlc3Mg
Y29tbXVuaWNhdGluZyB3aXRoIGl0LgotCi0jZGVmaW5lIFdJUlNpbXVsYXRvckJ1aWxkS2V5ICAg
ICAgICAgICAgICAgICAgICBAIldJUlNpbXVsYXRvckJ1aWxkS2V5IgotI2RlZmluZSBXSVJTaW11
bGF0b3JQcm9kdWN0VmVyc2lvbktleSAgICAgICAgICAgQCJXSVJTaW11bGF0b3JQcm9kdWN0VmVy
c2lvbktleSIKLSNkZWZpbmUgV0lSU2ltdWxhdG9yTmFtZUtleSAgICAgICAgICAgICAgICAgICAg
IEAiV0lSU2ltdWxhdG9yTmFtZUtleSIKLQotLy8gVGhlc2UgZGVmaW5pdGlvbnMgYXJlIHNoYXJl
ZCBiZXR3ZWVuIHdlYmluc3BlY3RvcmQgYW5kIFdlYktpdC4KLQotI2RlZmluZSBXSVJQZXJtaXNz
aW9uRGVuaWVkICAgICAgICAgICAgICAgICAgICAgQCJXSVJQZXJtaXNzaW9uRGVuaWVkIgotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUv
V2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVj
dG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGMzMjBmZGUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
SW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50OwotQGNsYXNzIFdlYkluc3BlY3RvclNl
cnZlcldlYlZpZXdDb25uZWN0aW9uOwotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclJlbW90ZUNo
YW5uZWwgOiBOU09iamVjdCB7Ci1AcHJpdmF0ZQotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uICpfcmVtb3RlOwotICAgIFdlYkluc3BlY3RvckNsaWVudCogX2xvY2FsOwot
fQotCi0rIChXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICopY3JlYXRlQ2hhbm5lbEZvclBhZ2VJ
ZDoodW5zaWduZWQpcGFnZUlkIGNvbm5lY3Rpb246KFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uICopY29ubmVjdGlvbjsKLQotLSAodm9pZCljbG9zZUZyb21Mb2NhbFNpZGU7Ci0t
ICh2b2lkKWNsb3NlRnJvbVJlbW90ZVNpZGU7Ci0tICh2b2lkKXNlbmRNZXNzYWdlVG9Gcm9udGVu
ZDooTlNTdHJpbmcgKiltZXNzYWdlOwotLSAodm9pZClzZW5kTWVzc2FnZVRvQmFja2VuZDooTlNT
dHJpbmcgKiltZXNzYWdlOwotCi1AZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwu
bW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4ZmZjZDYuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVD
aGFubmVsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCIKLQotI2ltcG9ydCAi
V2ViSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3Ry
eS5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCIKLSNp
bXBvcnQgIldlYktpdExvZ2dpbmcuaCIKLSNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQot
QGludGVyZmFjZSBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICgpCi0tIChpZClpbml0V2l0aFJl
bW90ZTooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKilyZW1vdGUgbG9jYWw6
KFdlYkluc3BlY3RvckNsaWVudCopbG9jYWw7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJJ
bnNwZWN0b3JSZW1vdGVDaGFubmVsCi0KLSsgKFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKilj
cmVhdGVDaGFubmVsRm9yUGFnZUlkOih1bnNpZ25lZClwYWdlSWQgY29ubmVjdGlvbjooV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKiljb25uZWN0aW9uCi17Ci0gICAgLy8gR2V0
IHRoZSBJbnNwZWN0b3IgY2xpZW50LiBJdHMgcG9zc2libGUgdGhlIHBhZ2UgY2xvc2VkIGJlZm9y
ZSB0aGUgcmVtb3RlIGNsaWVudCByZXF1ZXN0ZWQgaXQuCi0gICAgV2ViSW5zcGVjdG9yQ2xpZW50
ICppbnNwZWN0b3JDbGllbnQgPSBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJl
Z2lzdHJ5XSBjbGllbnRGb3JQYWdlSWQ6cGFnZUlkXTsKLSAgICBpZiAoIWluc3BlY3RvckNsaWVu
dCkgewotICAgICAgICBMT0coUmVtb3RlSW5zcGVjdG9yLCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hh
bm5lbDogUGFnZSByZXF1ZXN0ZWQgbm8gbG9uZ2VyIGV4aXN0czogKCV1KSIsIHBhZ2VJZCk7Ci0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgLy8gVGhlIFdlYlZpZXcgZG9lcyBub3Qg
YWxsb3cgcmVtb3RlIGluc3BlY3Rpb24uCi0gICAgaWYgKCFpbnNwZWN0b3JDbGllbnQtPmNhbkJl
UmVtb3RlbHlJbnNwZWN0ZWQoKSkgewotICAgICAgICBMT0coUmVtb3RlSW5zcGVjdG9yLCAiV2Vi
SW5zcGVjdG9yUmVtb3RlQ2hhbm5lbDogV2ViVmlldyBmb3IgUGFnZSAoJXUpIGRvZXMgbm90IGFs
bG93IHJlbW90ZSBpbnNwZWN0aW9uLiIsIHBhZ2VJZCk7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgfQotCi0gICAgLy8gVGhlIGNoYW5uZWwgaXMgcmVsZWFzZWQgYnkgd2hpY2hldmVyIHNpZGUg
Y2xvc2VzIHRoZSBjaGFubmVsLiBUaGUgY2hhbm5lbCBjb3VsZCBiZSBjbG9zZWQKLSAgICAvLyBy
ZW1vdGVseSBieSB0aGUgc29ja2V0IGNsb3NpbmcgKHRoZSB1c2VyIG5hdmlnYXRpbmcgYXdheSBm
cm9tIHRoZSByZW1vdGUgaW5zcGVjdG9yIHBhZ2UpLgotICAgIC8vIEl0IGNvdWxkIGJlIGNsb3Nl
ZCBsb2NhbGx5IGJ5IHRoZSBQYWdlIGJlaW5nIGRlc3Ryb3llZCwgbGlrZSB0aGUgYnJvd3NlciBv
ciB0YWIgYmVpbmcgY2xvc2VkLgotICAgIC8vIFNldHRpbmcgdXAgdGhlIGNvbm5lY3Rpb24gY2Fu
IGZhaWwgaWYgdGhlcmUgaXMgYWxyZWFkeSBhbiBleGlzdGluZyBzZXNzaW9uLgotICAgIFdlYklu
c3BlY3RvclJlbW90ZUNoYW5uZWwgKmNoYW5uZWwgPSBbW1dlYkluc3BlY3RvclJlbW90ZUNoYW5u
ZWwgYWxsb2NdIGluaXRXaXRoUmVtb3RlOmNvbm5lY3Rpb24gbG9jYWw6aW5zcGVjdG9yQ2xpZW50
XTsKLSAgICBpZiAoIWluc3BlY3RvckNsaWVudC0+c2V0dXBSZW1vdGVDb25uZWN0aW9uKGNoYW5u
ZWwpKSB7Ci0gICAgICAgIExPRyhSZW1vdGVJbnNwZWN0b3IsICJXZWJJbnNwZWN0b3JSZW1vdGVD
aGFubmVsOiBTZXR0aW5nIHVwIGEgcmVtb3RlIHNlc3Npb24gZmFpbGVkLiBQcm9iYWJseSBhbHJl
YWR5IGEgbG9jYWwgc2Vzc2lvbi4iKTsKLSAgICAgICAgW2NoYW5uZWwgcmVsZWFzZV07Ci0gICAg
ICAgIGNoYW5uZWwgPSBuaWw7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgcmV0
dXJuIGNoYW5uZWw7Ci19Ci0KLS0gKGlkKWluaXRXaXRoUmVtb3RlOihXZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbiAqKXJlbW90ZSBsb2NhbDooV2ViSW5zcGVjdG9yQ2xpZW50Kils
b2NhbAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgX3JlbW90ZSA9IHJlbW90ZTsKLSAgICBfbG9jYWwgPSBsb2Nh
bDsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWNsb3NlRnJvbUxvY2FsU2lkZQot
ewotICAgIC8vIExvY2FsIHNpZGUgd2lsbCByZWxlYXNlLiBNYWtlIHN1cmUgdGhlIHJlbW90ZSBz
aWRlIGNsZWFycyBpdHMgcmVmZXJlbmNlIHRvIHRoZSBjaGFubmVsLgotICAgIFtfcmVtb3RlIGNs
ZWFyQ2hhbm5lbF07Ci19Ci0KLS0gKHZvaWQpY2xvc2VGcm9tUmVtb3RlU2lkZQotewotICAgIC8v
IFJlbW90ZSBzaWRlIHdpbGwgcmVsZWFzZS4gTWFrZSBzdXJlIHRoZSBsb2NhbCBzaWRlIGNsZWFy
cyBpdHMgcmVmZXJlbmNlIHRvIHRoZSBjaGFubmVsLgotICAgIF9sb2NhbC0+dGVhcmRvd25SZW1v
dGVDb25uZWN0aW9uKGZhbHNlKTsKLX0KLQotLSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6
KE5TU3RyaW5nICopbWVzc2FnZQotewotICAgIFtfcmVtb3RlIHNlbmRNZXNzYWdlVG9Gcm9udGVu
ZDptZXNzYWdlXTsKLX0KLQotLSAodm9pZClzZW5kTWVzc2FnZVRvQmFja2VuZDooTlNTdHJpbmcg
KiltZXNzYWdlCi17Ci0gICAgX2xvY2FsLT5zZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKTsK
LX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYklu
c3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjZjY3OTBmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
Ykluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCIKLQotQGNsYXNzIFdlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlcjsKLUBjbGFzcyBXZWJJbnNw
ZWN0b3JYUENXcmFwcGVyOwotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclNlcnZlciA6IE5TT2Jq
ZWN0IDxXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeURlbGVnYXRlPiB7Ci1AcHJpdmF0ZQotICAg
IEJPT0wgX2lzRW5hYmxlZDsKLSAgICBCT09MIF9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247Ci0gICAg
aW50IF9ub3RpZnlUb2tlbjsKLSAgICBXZWJJbnNwZWN0b3JYUENXcmFwcGVyICpfeHBjQ29ubmVj
dGlvbjsKLSAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIg
Kl9jb25uZWN0aW9uQ29udHJvbGxlcjsKLX0KLQotLSAodm9pZClzdGFydDsKLS0gKHZvaWQpc3Rv
cDsKLS0gKEJPT0wpaXNFbmFibGVkOwotLSAodm9pZClwdXNoTGlzdGluZzsKLQotLSAoQk9PTClo
YXNBY3RpdmVEZWJ1Z1Nlc3Npb247Ci0tICh2b2lkKXNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjoo
Qk9PTCloYXNTZXNzaW9uOwotCi0tIChXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopeHBjQ29ubmVj
dGlvbjsKLQotQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNw
ZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYmM5YTczYS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNw
ZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDIw
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2
ZXIuaCIKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW1wb3J0ICJXZWJJbnNw
ZWN0b3JSZWxheURlZmluaXRpb25zLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJW
aWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBw
ZXIuaCIKLSNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCi0jaW1wb3J0IDxub3RpZnkuaD4KLSNp
bXBvcnQgPHhwYy94cGMuaD4KLQotCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIFByaXZh
dGUgQ2xhc3MgRGV0YWlscwotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclNlcnZlciAoKSA8V2Vi
SW5zcGVjdG9yWFBDV3JhcHBlckRlbGVnYXRlPgotLSAodm9pZClzZXR1cFhQQ0Nvbm5lY3Rpb25J
Zk5lZWRlZDsKLS0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAq
KWNvbm5lY3Rpb24gcmVjZWl2ZWRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJ
bmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKLS0gKHZvaWQpeHBjQ29ubmVjdGlvbkZhaWxl
ZDooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb247Ci1AZW5kCi0KLQotI3ByYWdt
YSBtYXJrIC0KLSNwcmFnbWEgbWFyayBTZXJ2ZXIgSW1wbGVtZW50YXRpb24KLQotQGltcGxlbWVu
dGF0aW9uIFdlYkluc3BlY3RvclNlcnZlcgotCi0tIChpZClpbml0Ci17Ci0gICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBf
Y29ubmVjdGlvbkNvbnRyb2xsZXIgPSBbW1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhTZXJ2ZXI6c2VsZl07Ci0KLSAgICBbW1dlYklu
c3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XSBzZXREZWxlZ2F0ZTpzZWxmXTsK
LQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICAvLyBTaW5n
bGV0b24gaXMgbm90IGV4cGVjdGVkIHRvIGJlIHJlbGVhc2VkLgotCi0gICAgW3NlbGYgc3RvcF07
Ci0KLSAgICBBU1NFUlQoIV94cGNDb25uZWN0aW9uKTsKLSAgICBbX2Nvbm5lY3Rpb25Db250cm9s
bGVyIHJlbGVhc2VdOwotCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRS
ZWdpc3RyeV0gc2V0RGVsZWdhdGU6bmlsXTsKLQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQot
LSAodm9pZClzdGFydAotewotICAgIGlmIChfaXNFbmFibGVkKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBfaXNFbmFibGVkID0gWUVTOwotCi0gICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKFdJ
UlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRpb24sICZfbm90aWZ5VG9rZW4sIGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIF4oaW50IHRva2VuKSB7Ci0gICAgICAgIFtzZWxmIHNldHVwWFBDQ29u
bmVjdGlvbklmTmVlZGVkXTsKLSAgICB9KTsKLQotICAgIG5vdGlmeV9wb3N0KFdJUlNlcnZpY2VB
dmFpbGFiaWxpdHlDaGVja05vdGlmaWNhdGlvbik7Ci19Ci0KLS0gKHZvaWQpc3RvcAotewotICAg
IGlmICghX2lzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2lzRW5hYmxlZCA9IE5P
OwotCi0gICAgW19jb25uZWN0aW9uQ29udHJvbGxlciBjbG9zZUFsbENvbm5lY3Rpb25zXTsKLQot
ICAgIGlmIChfeHBjQ29ubmVjdGlvbikgewotICAgICAgICBbX3hwY0Nvbm5lY3Rpb24gY2xvc2Vd
OwotICAgICAgICBfeHBjQ29ubmVjdGlvbi5kZWxlZ2F0ZSA9IG5pbDsKLSAgICAgICAgW194cGND
b25uZWN0aW9uIHJlbGVhc2VdOwotICAgICAgICBfeHBjQ29ubmVjdGlvbiA9IG5pbDsKLSAgICB9
Ci0KLSAgICBub3RpZnlfY2FuY2VsKF9ub3RpZnlUb2tlbik7Ci19Ci0KLS0gKEJPT0wpaXNFbmFi
bGVkCi17Ci0gICAgcmV0dXJuIF9pc0VuYWJsZWQ7Ci19Ci0KLS0gKFdlYkluc3BlY3RvclhQQ1dy
YXBwZXIgKil4cGNDb25uZWN0aW9uCi17Ci0gICAgcmV0dXJuIF94cGNDb25uZWN0aW9uOwotfQot
Ci0tICh2b2lkKXNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkCi17Ci0gICAgaWYgKF94cGNDb25u
ZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rp
b24gPSB4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFt
ZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgMCk7Ci0gICAgaWYgKGNvbm5lY3Rpb24pIHsK
LSAgICAgICAgX3hwY0Nvbm5lY3Rpb24gPSBbW1dlYkluc3BlY3RvclhQQ1dyYXBwZXIgYWxsb2Nd
IGluaXRXaXRoQ29ubmVjdGlvbjpjb25uZWN0aW9uXTsKLSAgICAgICAgX3hwY0Nvbm5lY3Rpb24u
ZGVsZWdhdGUgPSBzZWxmOwotICAgICAgICBbX3hwY0Nvbm5lY3Rpb24gc2VuZE1lc3NhZ2U6QCJz
eW4iIHVzZXJJbmZvOm5pbF07Ci0gICAgICAgIHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwotICAg
IH0KLX0KLQotLSAodm9pZClwdXNoTGlzdGluZwotewotICAgIGlmICghX2lzRW5hYmxlZCB8fCAh
X3hwY0Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIFtfY29ubmVjdGlvbkNvbnRy
b2xsZXIgcHVzaExpc3RpbmddOwotfQotCi0tIChCT09MKWhhc0FjdGl2ZURlYnVnU2Vzc2lvbgot
ewotICAgIHJldHVybiBfaGFzQWN0aXZlRGVidWdTZXNzaW9uOwotfQotCi0tICh2b2lkKXNldEhh
c0FjdGl2ZURlYnVnU2Vzc2lvbjooQk9PTCloYXNTZXNzaW9uCi17Ci0gICAgaWYgKF9oYXNBY3Rp
dmVEZWJ1Z1Nlc3Npb24gPT0gaGFzU2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2hh
c0FjdGl2ZURlYnVnU2Vzc2lvbiA9IGhhc1Nlc3Npb247Ci0KLSAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOl9XZWJWaWV3UmVtb3Rl
SW5zcGVjdG9ySGFzU2Vzc2lvbkNoYW5nZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci19Ci0K
LQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVs
ZWdhdGUgSW1wbGVtZW50YXRpb24KLQotLSAodm9pZCl4cGNDb25uZWN0aW9uOihXZWJJbnNwZWN0
b3JYUENXcmFwcGVyICopeHBjQ29ubmVjdGlvbiByZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICop
bWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvCi17Ci0gICAgQVNT
RVJUKHhwY0Nvbm5lY3Rpb24gPT0gX3hwY0Nvbm5lY3Rpb24pOwotCi0gICAgaWYgKFttZXNzYWdl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSUGVybWlzc2lvbkRlbmllZF0pCi0gICAgICAgIFtzZWxm
IHN0b3BdOwotICAgIGVsc2UKLSAgICAgICAgW19jb25uZWN0aW9uQ29udHJvbGxlciByZWNlaXZl
ZE1lc3NhZ2U6bWVzc2FnZU5hbWUgdXNlckluZm86dXNlckluZm9dOwotfQotCi0tICh2b2lkKXhw
Y0Nvbm5lY3Rpb25GYWlsZWQ6KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uCi17
Ci0gICAgW19jb25uZWN0aW9uQ29udHJvbGxlciBjbG9zZUFsbENvbm5lY3Rpb25zXTsKLQotICAg
IGlmIChfeHBjQ29ubmVjdGlvbikgewotICAgICAgICBfeHBjQ29ubmVjdGlvbi5kZWxlZ2F0ZSA9
IG5pbDsKLSAgICAgICAgW194cGNDb25uZWN0aW9uIHJlbGVhc2VdOwotICAgICAgICBfeHBjQ29u
bmVjdGlvbiA9IG5pbDsKLSAgICB9Ci19Ci0KLQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFy
ayBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeURlbGVnYXRlIGltcGxlbWVudGF0aW9uCi0KLS0g
KHZvaWQpZGlkUmVnaXN0ZXJDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVudCopY2xpZW50Ci17Ci0g
ICAgLy8gV2hlbiBhIFdlYlZpZXcgaXMgcmVnaXN0ZXJlZCBpdCBoYXMgbm8gY29udGVudC4gQnV0
IHNvbWUgV2ViVmlld3MKLSAgICAvLyBuZXZlciBsb2FkIGNvbnRlbnQgZnJvbSBhIFVSTCwgc3Vj
aCBhcyBVSVRleHRGaWVsZHMgb24gaU9TLgotICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQot
LSAodm9pZClkaWRVbnJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudAot
ewotICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2Vy
dmVyV2ViVmlld0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9y
ZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYzdhNWJjYy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotQGNsYXNzIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWw7
Ci1AY2xhc3MgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyOwot
Ci1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIDogTlNPYmpl
Y3QgewotQHByaXZhdGUKLSAgICBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICpfY2hhbm5lbDsK
LQotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciAqX2Nv
bnRyb2xsZXI7IC8vIHdlYWssIHRoZSBjb250cm9sbGVyIG93bnMgdXMuCi0gICAgTlNTdHJpbmcg
Kl9jb25uZWN0aW9uSWRlbnRpZmllcjsKLSAgICBOU1N0cmluZyAqX2Rlc3RpbmF0aW9uOwotICAg
IE5TTnVtYmVyICpfaWRlbnRpZmllcjsKLX0KLQotLSAoaWQpaW5pdFdpdGhDb250cm9sbGVyOihX
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgKiljb250cm9sbGVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyOihOU1N0cmluZyAqKWNvbm5lY3Rpb25JZGVudGlmaWVyIGRl
c3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uIGlkZW50aWZpZXI6KE5TTnVtYmVyICop
aWRlbnRpZmllcjsKLS0gKEJPT0wpc2V0dXBDaGFubmVsOwotLSAoTlNTdHJpbmcgKiljb25uZWN0
aW9uSWRlbnRpZmllcjsKLS0gKE5TTnVtYmVyICopaWRlbnRpZmllcjsKLQotLy8gTWVzc2FnZXMg
ZnJvbSB0aGUgSW5zcGVjdG9yU2VydmVyLgotLSAodm9pZClyZWNlaXZlZERhdGE6KE5TRGljdGlv
bmFyeSAqKWRpY3Rpb25hcnk7Ci0tICh2b2lkKXJlY2VpdmVkRGlkQ2xvc2U6KE5TRGljdGlvbmFy
eSAqKWRpY3Rpb25hcnk7Ci0KLS8vIE1lc3NhZ2VzIGZyb20gdGhlIENoYW5uZWwuCi0tICh2b2lk
KWNsZWFyQ2hhbm5lbDsKLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAq
KW1lc3NhZ2U7Ci0KLS8vIE1lc3NhZ2VzIHRvIHRoZSBDaGFubmVsLgotLSAodm9pZClzZW5kTWVz
c2FnZVRvQmFja2VuZDooTlNTdHJpbmcgKiltZXNzYWdlOwotCi1AZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90
ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDFhZWQ4MS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLm1t
CisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLSNp
bXBvcnQgIldlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmgiCi0KLSNpbXBvcnQg
IldlYkluc3BlY3RvckNsaWVudC5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0
aW9ucy5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oIgotI2ltcG9ydCAi
V2ViSW5zcGVjdG9yU2VydmVyLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIu
aCIKLSNpbXBvcnQgIldlYktpdExvZ2dpbmcuaCIKLSNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KLQotQGltcGxlbWVudGF0aW9uIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
Ci0KLS0gKGlkKWluaXRXaXRoQ29udHJvbGxlcjooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nv
bm5lY3Rpb25Db250cm9sbGVyICopY29udHJvbGxlciBjb25uZWN0aW9uSWRlbnRpZmllcjooTlNT
dHJpbmcgKiljb25uZWN0aW9uSWRlbnRpZmllciBkZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0
aW5hdGlvbiBpZGVudGlmaWVyOihOU051bWJlciAqKWlkZW50aWZpZXIKLXsKLSAgICBzZWxmID0g
W3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAg
IF9jb250cm9sbGVyID0gY29udHJvbGxlcjsKLSAgICBfY29ubmVjdGlvbklkZW50aWZpZXIgPSBb
Y29ubmVjdGlvbklkZW50aWZpZXIgY29weV07Ci0gICAgX2Rlc3RpbmF0aW9uID0gW2Rlc3RpbmF0
aW9uIGNvcHldOwotICAgIF9pZGVudGlmaWVyID0gW2lkZW50aWZpZXIgY29weV07Ci0KLSAgICBy
ZXR1cm4gc2VsZjsKLX0KLQotLSAoQk9PTClzZXR1cENoYW5uZWwKLXsKLSAgICBBU1NFUlQoIV9j
aGFubmVsKTsKLSAgICB1bnNpZ25lZCBwYWdlSWQgPSBbX2lkZW50aWZpZXIgdW5zaWduZWRJbnRW
YWx1ZV07Ci0gICAgX2NoYW5uZWwgPSBbV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCBjcmVhdGVD
aGFubmVsRm9yUGFnZUlkOnBhZ2VJZCBjb25uZWN0aW9uOnNlbGZdOwotICAgIHJldHVybiBfY2hh
bm5lbCAhPSBuaWw7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIEFTU0VSVCghX2NoYW5u
ZWwpOwotICAgIFtfY29ubmVjdGlvbklkZW50aWZpZXIgcmVsZWFzZV07Ci0gICAgW19kZXN0aW5h
dGlvbiByZWxlYXNlXTsKLSAgICBbX2lkZW50aWZpZXIgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRl
YWxsb2NdOwotfQotCi0tIChOU1N0cmluZyAqKWNvbm5lY3Rpb25JZGVudGlmaWVyCi17Ci0gICAg
cmV0dXJuIFtbX2Nvbm5lY3Rpb25JZGVudGlmaWVyIGNvcHldIGF1dG9yZWxlYXNlXTsKLX0KLQot
LSAoTlNOdW1iZXIgKilpZGVudGlmaWVyCi17Ci0gICAgcmV0dXJuIFtbX2lkZW50aWZpZXIgY29w
eV0gYXV0b3JlbGVhc2VdOwotfQotCi0KLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgSW50
ZXJhY3Rpb24gd2l0aCB0aGUgY2hhbm5lbCB0byB0aGUgbG9jYWwgaW5zcGVjdG9yIGJhY2tlbmQK
LQotLSAodm9pZCljbGVhckNoYW5uZWwKLXsKLSAgICBfY2hhbm5lbCA9IG5pbDsKLSAgICBbX2Nv
bnRyb2xsZXIgY29ubmVjdGlvbkNsb3Npbmc6c2VsZl07Ci19Ci0KLS0gKHZvaWQpc2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2UKLXsKLSAgICBOU0RhdGEgKmRhdGEgPSBb
bWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgTlNE
aWN0aW9uYXJ5ICpvdXRnb2luZyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Rz
QW5kS2V5czoKLSAgICAgICAgZGF0YSwgV0lSUmF3RGF0YUtleSwKLSAgICAgICAgX2Nvbm5lY3Rp
b25JZGVudGlmaWVyLCBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleSwKLSAgICAgICAgX2Rlc3Rp
bmF0aW9uLCBXSVJEZXN0aW5hdGlvbktleSwKLSAgICAgICAgbmlsXTsKLQotICAgIFtfY29udHJv
bGxlciBzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6V0lSUmF3RGF0YU1lc3NhZ2UgdXNlckluZm86b3V0
Z29pbmddOwotfQotCi0tICh2b2lkKXNlbmRNZXNzYWdlVG9CYWNrZW5kOihOU1N0cmluZyAqKW1l
c3NhZ2UKLXsKLSAgICBBU1NFUlQoX2NoYW5uZWwpOwotICAgIExPRyhSZW1vdGVJbnNwZWN0b3Is
ICJXZWJJbnNwZWN0b3JTZXJ2ZXJDb25uZWN0aW9uOiBSZWNlaXZlZDogfCVzfCIsIFN0cmluZyht
ZXNzYWdlKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIFtfY2hhbm5lbCBzZW5kTWVzc2FnZVRvQmFj
a2VuZDptZXNzYWdlXTsKLX0KLQotCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIEludGVy
YWN0aW9uIHdpdGggdGhlIHNlcnZlciB0byB0aGUgcmVtb3RlIGluc3BlY3RvciBmcm9udGVuZAot
Ci0tICh2b2lkKXJlY2VpdmVkRGF0YTooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAg
IE5TRGF0YSAqZGF0YSA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJTb2NrZXREYXRhS2V5
XTsKLSAgICBOU1N0cmluZyAqbWVzc2FnZSA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0
YTpkYXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBbc2VsZiBzZW5kTWVz
c2FnZVRvQmFja2VuZDptZXNzYWdlXTsKLSAgICBbbWVzc2FnZSByZWxlYXNlXTsKLX0KLQotLSAo
dm9pZClyZWNlaXZlZERpZENsb3NlOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAg
aWYgKF9jaGFubmVsKSB7Ci0gICAgICAgIFtfY2hhbm5lbCBjbG9zZUZyb21SZW1vdGVTaWRlXTsK
LSAgICAgICAgW19jaGFubmVsIHJlbGVhc2VdOwotICAgICAgICBfY2hhbm5lbCA9IG5pbDsKLSAg
ICB9Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNw
ZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZjhiZjVlOC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29u
dHJvbGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUBjbGFzcyBXZWJJbnNwZWN0b3JTZXJ2ZXI7
Ci1AY2xhc3MgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb247Ci1AY2xhc3MgV2Vi
SW5zcGVjdG9yWFBDV3JhcHBlcjsKLQotQGludGVyZmFjZSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJW
aWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgOiBOU09iamVjdCB7Ci1AcHJpdmF0ZQotICAgIFdlYklu
c3BlY3RvclNlcnZlciAqX3NlcnZlcjsgLy8gd2VhaywgdGhlIHNlcnZlciBzaG91bGQgbmV2ZXIg
ZGVhbGxvY2F0ZS4KLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpfb3BlbkNvbm5lY3Rpb25zOwot
ICAgIEJPT0wgX2hhc1NjaGVkdWxlZFB1c2g7Ci19Ci0KLS0gKGlkKWluaXRXaXRoU2VydmVyOihX
ZWJJbnNwZWN0b3JTZXJ2ZXIgKilzZXJ2ZXI7Ci0KLS0gKHZvaWQpY2xvc2VBbGxDb25uZWN0aW9u
czsKLQotLSAodm9pZClwdXNoTGlzdGluZzsKLS0gKHZvaWQpcmVjZWl2ZWRNZXNzYWdlOihOU1N0
cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKLQot
LSAodm9pZCljb25uZWN0aW9uQ2xvc2luZzooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb24gKiljb25uZWN0aW9uOwotCi0tICh2b2lkKXNlbmRNZXNzYWdlVG9Gcm9udGVuZDooTlNT
dHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87Ci0K
LUBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUv
V2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdl
YzIxMzYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90
ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSwzODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9ydCAi
V2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmgiCi0KLSNpbXBv
cnQgIldlYkluc3BlY3RvckNsaWVudC5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50UmVn
aXN0cnkuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCIKLSNpbXBv
cnQgIldlYkluc3BlY3RvclNlcnZlci5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb24uaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCIKLSNp
bXBvcnQgIldlYlZpZXcuaCIKLSNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCi0KLSNpZiBQTEFU
Rk9STShJT1MpCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWQuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgotI2VuZGlmCi0KLQotQGltcGxlbWVudGF0aW9uIFdl
Ykluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlcgotCi0tIChpZClpbml0
V2l0aFNlcnZlcjooV2ViSW5zcGVjdG9yU2VydmVyICopc2VydmVyCi17Ci0gICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBf
c2VydmVyID0gc2VydmVyOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxv
YwotewotICAgIEFTU0VSVCghW19vcGVuQ29ubmVjdGlvbnMgY291bnRdKTsKLSAgICBbX29wZW5D
b25uZWN0aW9ucyByZWxlYXNlXTsKLQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9p
ZCljbG9zZUFsbENvbm5lY3Rpb25zCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFdlYlRocmVh
ZFJ1biheewotI2VuZGlmCi0KLSAgICBmb3IgKE5TTnVtYmVyICprZXkgaW4gX29wZW5Db25uZWN0
aW9ucykgewotICAgICAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqY29u
bmVjdGlvbiA9IFtfb3BlbkNvbm5lY3Rpb25zIG9iamVjdEZvcktleTprZXldOwotICAgICAgICBb
Y29ubmVjdGlvbiByZWNlaXZlZERpZENsb3NlOm5pbF07Ci0gICAgfQotICAgIFtfb3BlbkNvbm5l
Y3Rpb25zIHJlbW92ZUFsbE9iamVjdHNdOwotCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdT
ZXNzaW9uOk5PXTsKLSAgICB9KTsKLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICB9KTsKLSNlbmRp
ZgotfQotCi0tIChOU0RpY3Rpb25hcnkgKilfbGlzdGluZ0ZvcldlYlZpZXc6KFdlYlZpZXcgKil3
ZWJWaWV3IHBhZ2VJZDooTlNOdW1iZXIgKilwYWdlSWQgcmVnaXN0cnk6KFdlYkluc3BlY3RvckNs
aWVudFJlZ2lzdHJ5ICopcmVnaXN0cnkKLXsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICp3ZWJW
aWV3RGV0YWlscyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwotCi0gICAgLy8g
UGFnZSBJRC4KLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnBhZ2VJZCBmb3JLZXk6V0lS
UGFnZUlkZW50aWZpZXJLZXldOwotCi0gICAgLy8gVVJMLgotICAgIE5TU3RyaW5nICp1cmwgPSBb
d2ViVmlldyBtYWluRnJhbWVVUkxdOwotICAgIGlmICghdXJsKQotICAgICAgICB1cmwgPSBAImFi
b3V0OmJsYW5rIjsKLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnVybCBmb3JLZXk6V0lS
VVJMS2V5XTsKLQotICAgIC8vIFRpdGxlLgotICAgIE5TU3RyaW5nICp0aXRsZSA9IFt3ZWJWaWV3
IG1haW5GcmFtZVRpdGxlXTsKLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnRpdGxlIGZv
cktleTpXSVJUaXRsZUtleV07Ci0KLSAgICAvLyBbT3B0aW9uYWxdIENvbm5lY3Rpb24gSWRlbnRp
ZmllciAoUmVtb3RlIERlYnVnZ2VyIFVVSUQpLgotICAgIC8vIFtPcHRpb25hbF0gSGFzIExvY2Fs
IERlYnVnZ2VyIFNlc3Npb24uCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24gKmNvbm5lY3Rpb24gPSBbX29wZW5Db25uZWN0aW9ucyBvYmplY3RGb3JLZXk6cGFnZUlkXTsK
LSAgICBpZiAoY29ubmVjdGlvbikKLSAgICAgICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDpj
b25uZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlmaWVyIGZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRp
ZmllcktleV07Ci0gICAgZWxzZSB7Ci0gICAgICAgIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVj
dG9yQ2xpZW50ID0gW3JlZ2lzdHJ5IGNsaWVudEZvclBhZ2VJZDpbcGFnZUlkIHVuc2lnbmVkSW50
VmFsdWVdXTsKLSAgICAgICAgaWYgKGluc3BlY3RvckNsaWVudC0+aGFzTG9jYWxTZXNzaW9uKCkp
Ci0gICAgICAgICAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJX
aXRoQm9vbDpZRVNdIGZvcktleTpXSVJIYXNMb2NhbERlYnVnZ2VyS2V5XTsKLSAgICB9Ci0KLSNp
ZiBQTEFURk9STShJT1MpCi0gICAgLy8gW09wdGlvbmFsXSBIb3N0IEFwcGxpY2F0aW9uIElELgot
ICAgIE5TU3RyaW5nICpob3N0QXBwbGljYXRpb25JZCA9IFt3ZWJWaWV3IGhvc3RBcHBsaWNhdGlv
bkJ1bmRsZUlkXTsKLSAgICBpZiAoaG9zdEFwcGxpY2F0aW9uSWQpCi0gICAgICAgIFt3ZWJWaWV3
RGV0YWlscyBzZXRPYmplY3Q6aG9zdEFwcGxpY2F0aW9uSWQgZm9yS2V5OldJUkhvc3RBcHBsaWNh
dGlvbklkZW50aWZpZXJLZXldOwotCi0gICAgLy8gW09wdGlvbmFsXSBIb3N0IEFwcGxpY2F0aW9u
IE5hbWUuCi0gICAgTlNTdHJpbmcgKmhvc3RBcHBsaWNhdGlvbk5hbWUgPSBbd2ViVmlldyBob3N0
QXBwbGljYXRpb25OYW1lXTsKLSAgICBpZiAoaG9zdEFwcGxpY2F0aW9uTmFtZSkKLSAgICAgICAg
W3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDpob3N0QXBwbGljYXRpb25OYW1lIGZvcktleTpXSVJI
b3N0QXBwbGljYXRpb25OYW1lS2V5XTsKLSNlbmRpZgotCi0gICAgLy8gW09wdGlvbmFsXSBSZW1v
dGUgSW5zcGVjdG9yIFdlYlZpZXcgVXNlciBJbmZvIERpY3Rpb25hcnkuCi0gICAgTlNEaWN0aW9u
YXJ5ICpyZW1vdGVJbnNwZWN0b3JVc2VySW5mbyA9IFt3ZWJWaWV3IHJlbW90ZUluc3BlY3RvclVz
ZXJJbmZvXTsKLSAgICBpZiAocmVtb3RlSW5zcGVjdG9yVXNlckluZm8pCi0gICAgICAgIFt3ZWJW
aWV3RGV0YWlscyBzZXRPYmplY3Q6cmVtb3RlSW5zcGVjdG9yVXNlckluZm8gZm9yS2V5OldJUlVz
ZXJJbmZvS2V5XTsKLQotICAgIHJldHVybiB3ZWJWaWV3RGV0YWlsczsKLX0KLQotLSAodm9pZClf
cHVzaExpc3Rpbmc6KE5TU3RyaW5nICopb3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcgotewot
I2lmIFBMQVRGT1JNKElPUykKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotI2Vu
ZGlmCi0KLSAgICBfaGFzU2NoZWR1bGVkUHVzaCA9IE5POwotCi0gICAgTlNNdXRhYmxlRGljdGlv
bmFyeSAqcmVzcG9uc2UgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAg
IFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ICp3ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSA9
IFtXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV07Ci0gICAgTlNEaWN0
aW9uYXJ5ICpyZWdpc3RlcmVkVmlld3MgPSBbd2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgaW5z
cGVjdGFibGVXZWJWaWV3c107Ci0gICAgZm9yIChOU051bWJlciAqcGFnZUlkIGluIHJlZ2lzdGVy
ZWRWaWV3cykgewotICAgICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3JlZ2lzdGVyZWRWaWV3cyBv
YmplY3RGb3JLZXk6cGFnZUlkXTsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICp3ZWJWaWV3RGV0YWls
cyA9IFtzZWxmIF9saXN0aW5nRm9yV2ViVmlldzp3ZWJWaWV3IHBhZ2VJZDpwYWdlSWQgcmVnaXN0
cnk6d2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnldOwotICAgICAgICBbcmVzcG9uc2Ugc2V0T2Jq
ZWN0OndlYlZpZXdEZXRhaWxzIGZvcktleTpbcGFnZUlkIHN0cmluZ1ZhbHVlXV07Ci0gICAgfQot
Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqb3V0Z29pbmcgPSBbW05TTXV0YWJsZURpY3Rpb25h
cnkgYWxsb2NdIGluaXRdOwotICAgIFtvdXRnb2luZyBzZXRPYmplY3Q6cmVzcG9uc2UgZm9yS2V5
OldJUkxpc3RpbmdLZXldOwotICAgIGlmIChvcHRpb25hbENvbm5lY3Rpb25JZGVudGlmaWVyKQot
ICAgICAgICBbb3V0Z29pbmcgc2V0T2JqZWN0Om9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXIg
Zm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKLQotICAgIFtzZWxmIHNlbmRNZXNz
YWdlVG9Gcm9udGVuZDpXSVJMaXN0aW5nTWVzc2FnZSB1c2VySW5mbzpvdXRnb2luZ107Ci0KLSAg
ICBbb3V0Z29pbmcgcmVsZWFzZV07Ci0gICAgW3Jlc3BvbnNlIHJlbGVhc2VdOwotfQotCi0tICh2
b2lkKXB1c2hMaXN0aW5nOihOU1N0cmluZyAqKW9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXIK
LXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsK
LSNlbmRpZgotCi0gICAgaWYgKF9oYXNTY2hlZHVsZWRQdXNoKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAob3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcikgewotICAgICAgICBbc2VsZiBf
cHVzaExpc3Rpbmc6b3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcl07Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0
Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgMC4yICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hf
Z2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsK
LSAgICAgICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgICAgICBbc2VsZiBfcHVzaExpc3Rpbmc6
bmlsXTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0jZWxzZQotICAgIFtzZWxmIHBlcmZvcm1TZWxl
Y3RvcjpAc2VsZWN0b3IoX3B1c2hMaXN0aW5nOikgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTow
LjJdOwotI2VuZGlmCi0KLSAgICBfaGFzU2NoZWR1bGVkUHVzaCA9IFlFUzsKLX0KLQotLSAodm9p
ZClwdXNoTGlzdGluZwotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBXZWJUaHJlYWRSdW4oXnsK
LSNlbmRpZgotCi0gICAgW3NlbGYgcHVzaExpc3Rpbmc6bmlsXTsKLQotI2lmIFBMQVRGT1JNKElP
UykKLSAgICB9KTsKLSNlbmRpZgotfQotCi0tICh2b2lkKV9yZWNlaXZlZFNldHVwOihOU0RpY3Rp
b25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0aW9uYXJ5
IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFwYWdlSWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFtk
aWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07Ci0gICAg
aWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNTdHJp
bmcgKnNlbmRlciA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJTZW5kZXJLZXldOwotICAg
IGlmICghc2VuZGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIV9vcGVuQ29ubmVjdGlv
bnMpCi0gICAgICAgIF9vcGVuQ29ubmVjdGlvbnMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRdOwotCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKmNv
bm5lY3Rpb24gPSBbW1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGFsbG9jXSBp
bml0V2l0aENvbnRyb2xsZXI6c2VsZiBjb25uZWN0aW9uSWRlbnRpZmllcjpjb25uZWN0aW9uSWRl
bnRpZmllciBkZXN0aW5hdGlvbjpzZW5kZXIgaWRlbnRpZmllcjpwYWdlSWRdOwotICAgIGlmIChb
Y29ubmVjdGlvbiBzZXR1cENoYW5uZWxdKQotICAgICAgICBbX29wZW5Db25uZWN0aW9ucyBzZXRP
YmplY3Q6Y29ubmVjdGlvbiBmb3JLZXk6cGFnZUlkXTsKLSAgICBbY29ubmVjdGlvbiByZWxlYXNl
XTsKLQotICAgIGlmIChbX29wZW5Db25uZWN0aW9ucyBjb3VudF0gPT0gMSkgewotICAgICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAg
W19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOllFU107Ci0gICAgICAgIH0pOwotICAg
IH0KLQotICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQotLSAodm9pZClfcmVjZWl2ZWREYXRh
OihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtk
aWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFw
YWdlSWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uICpjb25uZWN0aW9uID0gW19vcGVuQ29ubmVjdGlvbnMgb2JqZWN0Rm9yS2V5OnBh
Z2VJZF07Ci0gICAgQVNTRVJUKCFjb25uZWN0aW9uIHx8IFtjb25uZWN0aW9uIGlzS2luZE9mQ2xh
c3M6W1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGNsYXNzXV0pOwotICAgIGlm
ICghY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW2Nvbm5lY3Rpb24gcmVjZWl2
ZWREYXRhOmRpY3Rpb25hcnldOwotfQotCi0tICh2b2lkKV9yZWNlaXZlZERpZENsb3NlOihOU0Rp
Y3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0aW9u
YXJ5IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFwYWdlSWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9
IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07Ci0g
ICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24gPSBbX29wZW5Db25u
ZWN0aW9ucyBvYmplY3RGb3JLZXk6cGFnZUlkXTsKLSAgICBBU1NFUlQoIWNvbm5lY3Rpb24gfHwg
W2Nvbm5lY3Rpb24gaXNLaW5kT2ZDbGFzczpbV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb24gY2xhc3NdXSk7Ci0gICAgaWYgKCFjb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAoIVtjb25uZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6Y29ubmVjdGlv
bi5jb25uZWN0aW9uSWRlbnRpZmllcl0pCi0gICAgICAgIHJldHVybjsKLQotICAgIFtjb25uZWN0
aW9uIHJlY2VpdmVkRGlkQ2xvc2U6ZGljdGlvbmFyeV07Ci0gICAgW19vcGVuQ29ubmVjdGlvbnMg
cmVtb3ZlT2JqZWN0Rm9yS2V5OnBhZ2VJZF07Ci0KLSAgICBpZiAoIVtfb3BlbkNvbm5lY3Rpb25z
IGNvdW50XSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeewotICAgICAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOk5P
XTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgW3NlbGYgcHVzaExpc3RpbmddOwotfQotCi0t
ICh2b2lkKV9yZWNlaXZlZEdldExpc3Rpbmc6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsK
LSAgICBbc2VsZiBwdXNoTGlzdGluZzpbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSQ29ubmVj
dGlvbklkZW50aWZpZXJLZXldXTsKLX0KLQotLSAodm9pZClfcmVjZWl2ZWRJbmRpY2F0ZTooTlNE
aWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbZGljdGlv
bmFyeSBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOwotICAgIGlmICghcGFnZUlk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tbV2ViSW5zcGVj
dG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIGluc3BlY3RhYmxlV2ViVmlld3NdIG9i
amVjdEZvcktleTpwYWdlSWRdOwotICAgIGlmICghd2ViVmlldykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgQk9PTCBpbmRpY2F0ZUVuYWJsZWQgPSBbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldJ
UkluZGljYXRlRW5hYmxlZEtleV0gYm9vbFZhbHVlXTsKLSAgICBbd2ViVmlldyBzZXRJbmRpY2F0
aW5nRm9yUmVtb3RlSW5zcGVjdG9yOmluZGljYXRlRW5hYmxlZF07Ci19Ci0KLS0gKHZvaWQpX3Jl
Y2VpdmVkQ29ubmVjdGlvbkRpZWQ6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAgICBO
U1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOwotICAgIGlmICghY29ubmVjdGlvbklkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TRGljdGlvbmFyeSAqY29ubmVjdGlvbnNDb3B5
ID0gW1tfb3BlbkNvbm5lY3Rpb25zIGNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICBmb3IgKE5TTnVt
YmVyICprZXkgaW4gY29ubmVjdGlvbnNDb3B5KSB7Ci0gICAgICAgIFdlYkluc3BlY3RvclNlcnZl
cldlYlZpZXdDb25uZWN0aW9uICpjb25uZWN0aW9uID0gW2Nvbm5lY3Rpb25zQ29weSBvYmplY3RG
b3JLZXk6a2V5XTsKLSAgICAgICAgaWYgKFtjb25uZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlmaWVy
IGlzRXF1YWxUb1N0cmluZzpjb25uZWN0aW9uSWRlbnRpZmllcl0pIHsKLSAgICAgICAgICAgIFtj
b25uZWN0aW9uIHJlY2VpdmVkRGlkQ2xvc2U6bmlsXTsKLSAgICAgICAgICAgIFtfb3BlbkNvbm5l
Y3Rpb25zIHJlbW92ZU9iamVjdEZvcktleTprZXldOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKCFbX29wZW5Db25uZWN0aW9ucyBjb3VudF0pIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgIFtfc2VydmVyIHNldEhh
c0FjdGl2ZURlYnVnU2Vzc2lvbjpOT107Ci0gICAgICAgIH0pOwotICAgIH0KLX0KLQotLSAodm9p
ZClyZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGlj
dGlvbmFyeSAqKXVzZXJJbmZvCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFdlYlRocmVhZFJ1
biheewotI2VuZGlmCi0KLSAgICBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJT
b2NrZXRTZXR1cE1lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWRTZXR1cDp1c2VySW5m
b107Ci0gICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJTb2NrZXRE
YXRhTWVzc2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZERhdGE6dXNlckluZm9dOwotICAg
IGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSV2ViUGFnZUNsb3NlTWVz
c2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZERpZENsb3NlOnVzZXJJbmZvXTsKLSAgICBl
bHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkFwcGxpY2F0aW9uR2V0TGlz
dGluZ01lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWRHZXRMaXN0aW5nOnVzZXJJbmZv
XTsKLSAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkluZGljYXRl
TWVzc2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZEluZGljYXRlOnVzZXJJbmZvXTsKLSAg
ICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkNvbm5lY3Rpb25EaWVk
TWVzc2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZENvbm5lY3Rpb25EaWVkOnVzZXJJbmZv
XTsKLSAgICBlbHNlCi0gICAgICAgIE5TTG9nKEAiVW5yZWNvZ25pemVkIE1lc3NhZ2U6ICVAIiwg
bWVzc2FnZU5hbWUpOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIH0pOwotI2VuZGlmCi19Ci0K
LQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbiBpbnRlcmZhY2UKLQotLSAodm9pZCljb25uZWN0aW9uQ2xvc2luZzooV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKiljb25uZWN0aW9uCi17Ci0jaWYgUExBVEZP
Uk0oSU9TKQotICAgIFdlYlRocmVhZFJ1biheewotI2VuZGlmCi0KLSAgICBbX29wZW5Db25uZWN0
aW9ucyByZW1vdmVPYmplY3RGb3JLZXk6W2Nvbm5lY3Rpb24gaWRlbnRpZmllcl1dOwotCi0gICAg
aWYgKCFbX29wZW5Db25uZWN0aW9ucyBjb3VudF0pIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgIFtfc2VydmVyIHNldEhh
c0FjdGl2ZURlYnVnU2Vzc2lvbjpOT107Ci0gICAgICAgIH0pOwotICAgIH0KLQotI2lmIFBMQVRG
T1JNKElPUykKLSAgICB9KTsKLSNlbmRpZgotfQotCi0KLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21h
IG1hcmsgVGhyZWFkIFNhZmUgc2VuZCBtZXNzYWdlIHRvIGZyb250ZW5kCi0KLS0gKHZvaWQpc2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0Rp
Y3Rpb25hcnkgKil1c2VySW5mbwotewotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBmcm9tIGVp
dGhlciB0aGUgV2ViVGhyZWFkIG9yIHRoZSBNYWluVGhyZWFkLiBUaGlzCi0gICAgLy8gcmVxdWly
ZXMgYWNjZXNzIHRvIHRoZSBXZWJJbnNwZWN0b3JTZXJ2ZXIncyBYUEMgQ29ubmVjdGlvbiwgd2hp
Y2gKLSAgICAvLyBpcyBtYW5hZ2VkIG9uIHRoZSBtYWluIHRocmVhZC4gU28sIGRpc3BhdGNoIHRv
IHRoZSBtYWluIHRocmVhZCB0bwotICAgIC8vIHNhZmVseSB1c2UgdGhlIHhwYyBjb25uZWN0aW9u
LgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAg
ICAgIFtbX3NlcnZlciB4cGNDb25uZWN0aW9uXSBzZW5kTWVzc2FnZTptZXNzYWdlTmFtZSB1c2Vy
SW5mbzp1c2VySW5mb107Ci0gICAgfSk7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dy
YXBwZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVj
dG9yWFBDV3JhcHBlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjk0NGVjLi4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5z
cGVjdG9yWFBDV3JhcHBlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgotI2ltcG9ydCA8eHBjL3hwYy5oPgotCi1AY2xhc3MgV2ViSW5zcGVj
dG9yWFBDV3JhcHBlcjsKLQotQHByb3RvY29sIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJEZWxlZ2F0
ZSA8TlNPYmplY3Q+Ci0tICh2b2lkKXhwY0Nvbm5lY3Rpb246KFdlYkluc3BlY3RvclhQQ1dyYXBw
ZXIgKiljb25uZWN0aW9uIHJlY2VpdmVkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1
c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87Ci0tICh2b2lkKXhwY0Nvbm5lY3Rpb25G
YWlsZWQ6KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uOwotQG9wdGlvbmFsCi0t
ICh2b2lkKXhwY0Nvbm5lY3Rpb246KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9u
IHVuaGFuZGxlZE1lc3NhZ2U6KHhwY19vYmplY3RfdCltZXNzYWdlOwotQGVuZAotCi1AaW50ZXJm
YWNlIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgOiBOU09iamVjdAotewotICAgIGlkIDxXZWJJbnNw
ZWN0b3JYUENXcmFwcGVyRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKLSAgICB4cGNfY29ubmVjdGlvbl90
IF9jb25uZWN0aW9uOwotICAgIE5TU3RyaW5nICpfdGFnOwotfQotCi0tIChXZWJJbnNwZWN0b3JY
UENXcmFwcGVyICopaW5pdFdpdGhDb25uZWN0aW9uOih4cGNfY29ubmVjdGlvbl90KWNvbm5lY3Rp
b247Ci0tICh2b2lkKWNsb3NlOwotLSAodm9pZClzZW5kTWVzc2FnZTooTlNTdHJpbmcgKiltZXNz
YWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87Ci0KLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBhc3NpZ24pIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGU+IGRl
bGVnYXRlOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSB4cGNfY29ubmVjdGlvbl90
IGNvbm5lY3Rpb247Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgYXZhaWxh
YmxlOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICp0YWc7Ci0KLUBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5z
cGVjdG9yWFBDV3JhcHBlci5tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90
ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDVmYjFlMDIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3Jl
bW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0KKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ci5oIgotCi0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotCi0jaWYgX19oYXNfaW5jbHVkZSg8
Q29yZUZvdW5kYXRpb24vQ0ZYUENCcmlkZ2UuaD4pCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24v
Q0ZYUENCcmlkZ2UuaD4KLSNlbHNlCi1leHRlcm4geHBjX29iamVjdF90IF9DRlhQQ0NyZWF0ZVhQ
Q01lc3NhZ2VXaXRoQ0ZPYmplY3QoQ0ZUeXBlUmVmKTsKLWV4dGVybiBDRlR5cGVSZWYgX0NGWFBD
Q3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4cGNfb2JqZWN0X3QpOwotI2VuZGlmCi0KLS8v
IENvbnN0YW50cyBwcml2YXRlIHRvIHRoaXMgZmlsZSBmb3IgbWVzc2FnZSBzZXJpYWxpemF0aW9u
IG9uIGJvdGggZW5kcy4KLSNkZWZpbmUgV2ViSW5zcGVjdG9yWFBDV3JhcHBlck1lc3NhZ2VOYW1l
S2V5IEAibWVzc2FnZU5hbWUiCi0jZGVmaW5lIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJVc2VySW5m
b0tleSBAInVzZXJJbmZvIgotI2RlZmluZSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyU2VyaWFsaXpl
ZE1lc3NhZ2VLZXkgIm1zZ0RhdGEiCi0KLUBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ciAoKQotLSAodm9pZClfaGFuZGxlRXZlbnQ6KHhwY19vYmplY3RfdClvYmplY3Q7Ci1AZW5kCi0K
LQotQGltcGxlbWVudGF0aW9uIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIKLQotQGR5bmFtaWMgYXZh
aWxhYmxlOwotCi1Ac3ludGhlc2l6ZSBkZWxlZ2F0ZSA9IF9kZWxlZ2F0ZTsKLUBzeW50aGVzaXpl
IGNvbm5lY3Rpb24gPSBfY29ubmVjdGlvbjsKLUBzeW50aGVzaXplIHRhZyA9IF90YWc7Ci0KLS0g
KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKilpbml0V2l0aENvbm5lY3Rpb246KHhwY19jb25uZWN0
aW9uX3QpY29ubmVjdGlvbgotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFz
ZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX2Nvbm5lY3Rpb24gPSB4cGNfcmV0YWlu
KGNvbm5lY3Rpb24pOwotICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUoX2Nvbm5l
Y3Rpb24sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwotICAgIHhwY19jb25uZWN0aW9uX3Nl
dF9ldmVudF9oYW5kbGVyKF9jb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsgW3Nl
bGYgX2hhbmRsZUV2ZW50Om9iamVjdF07IH0pOwotICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShf
Y29ubmVjdGlvbik7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZCljbG9zZQotewot
ICAgIGlmIChfY29ubmVjdGlvbikgewotICAgICAgICB4cGNfY29ubmVjdGlvbl9jYW5jZWwoX2Nv
bm5lY3Rpb24pOwotICAgICAgICB4cGNfcmVsZWFzZShfY29ubmVjdGlvbik7Ci0gICAgICAgIF9j
b25uZWN0aW9uID0gTlVMTDsKLSAgICB9Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtz
ZWxmIGNsb3NlXTsKLSAgICBbX3RhZyByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19
Ci0KLS0gKE5TRGljdGlvbmFyeSAqKV9kZXNlcmlhbGl6ZU1lc3NhZ2U6KHhwY19vYmplY3RfdClv
YmplY3QKLXsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHhwY19nZXRfdHlwZShvYmplY3QpID09
IFhQQ19UWVBFX0RJQ1RJT05BUlksICJHb3QgdW5leHBlY3RlZCBvYmplY3QgZnJvbSBhbiB4cGMg
Y29ubmVjdGlvbiIpOwotICAgIGlmICh4cGNfZ2V0X3R5cGUob2JqZWN0KSAhPSBYUENfVFlQRV9E
SUNUSU9OQVJZKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgeHBjX29iamVjdF90IHhwY0Rp
Y3Rpb25hcnkgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUob2JqZWN0LCBXZWJJbnNwZWN0b3JY
UENXcmFwcGVyU2VyaWFsaXplZE1lc3NhZ2VLZXkpOwotICAgIGlmICgheHBjRGljdGlvbmFyeSB8
fCB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkgewot
ICAgICAgICAvLyBUaGlzIGlzbid0IGEgbWVzc2FnZSB0eXBlIHRoYXQgd2Uga25vdyBob3cgdG8g
ZGVzZXJpYWxpemUsIHNvIHdlIGxldCBvdXIgZGVsZWdhdGUgd29ycnkgYWJvdXQgaXQuCi0gICAg
ICAgIGlmIChbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoeHBjQ29ubmVj
dGlvbjp1bmhhbmRsZWRNZXNzYWdlOildKQotICAgICAgICAgICAgW19kZWxlZ2F0ZSB4cGNDb25u
ZWN0aW9uOnNlbGYgdW5oYW5kbGVkTWVzc2FnZTpvYmplY3RdOwotICAgICAgICByZXR1cm4gbmls
OwotICAgIH0KLQotICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IF9DRlhQQ0NyZWF0ZUNG
T2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjRGljdGlvbmFyeSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShkaWN0aW9uYXJ5LCAiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7Ci0g
ICAgaWYgKCFkaWN0aW9uYXJ5KQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIFtk
aWN0aW9uYXJ5IGF1dG9yZWxlYXNlXTsKLX0KLQotLSAodm9pZClfaGFuZGxlRXZlbnQ6KHhwY19v
YmplY3RfdClvYmplY3QKLXsKLSAgICBpZiAoIV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoeHBjX2dldF90eXBlKG9iamVjdCkgPT0gWFBDX1RZUEVfRVJST1IpIHsKLSAg
ICAgICAgW19kZWxlZ2F0ZSB4cGNDb25uZWN0aW9uRmFpbGVkOnNlbGZdOwotICAgICAgICBbc2Vs
ZiBjbG9zZV07Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIV9kZWxlZ2F0ZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGljdGlvbmFyeSA9IFtz
ZWxmIF9kZXNlcmlhbGl6ZU1lc3NhZ2U6b2JqZWN0XTsKLSAgICBpZiAoIWRhdGFEaWN0aW9uYXJ5
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU1N0cmluZyAqbWVzc2FnZSA9IFtkYXRhRGljdGlv
bmFyeSBvYmplY3RGb3JLZXk6V2ViSW5zcGVjdG9yWFBDV3JhcHBlck1lc3NhZ2VOYW1lS2V5XTsK
LSAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gW2RhdGFEaWN0aW9uYXJ5IG9iamVjdEZvcktl
eTpXZWJJbnNwZWN0b3JYUENXcmFwcGVyVXNlckluZm9LZXldOwotICAgIFtfZGVsZWdhdGUgeHBj
Q29ubmVjdGlvbjpzZWxmIHJlY2VpdmVkTWVzc2FnZTptZXNzYWdlIHVzZXJJbmZvOnVzZXJJbmZv
XTsKLX0KLQotLSAodm9pZClzZW5kTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2Vy
SW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm8KLXsKLSAgICBpZiAoIV9jb25uZWN0aW9uKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0g
W05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bWVzc2FnZU5hbWUgZm9y
S2V5OldlYkluc3BlY3RvclhQQ1dyYXBwZXJNZXNzYWdlTmFtZUtleV07Ci0gICAgaWYgKHVzZXJJ
bmZvKQotICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6dXNlckluZm8gZm9yS2V5OldlYklu
c3BlY3RvclhQQ1dyYXBwZXJVc2VySW5mb0tleV07Ci0KLSAgICB4cGNfb2JqZWN0X3QgeHBjRGlj
dGlvbmFyeSA9IF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VXaXRoQ0ZPYmplY3QoKENGRGljdGlvbmFy
eVJlZilkaWN0aW9uYXJ5KTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHhwY0RpY3Rpb25hcnkg
JiYgeHBjX2dldF90eXBlKHhwY0RpY3Rpb25hcnkpID09IFhQQ19UWVBFX0RJQ1RJT05BUlksICJV
bmFibGUgdG8gc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7Ci0gICAgaWYgKCF4cGNEaWN0aW9uYXJ5
KQotICAgICAgICByZXR1cm47Ci0KLSAgICB4cGNfb2JqZWN0X3QgbXNnID0geHBjX2RpY3Rpb25h
cnlfY3JlYXRlKE5VTEwsIE5VTEwsIDApOwotICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZSht
c2csIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJTZXJpYWxpemVkTWVzc2FnZUtleSwgeHBjRGljdGlv
bmFyeSk7Ci0gICAgeHBjX3JlbGVhc2UoeHBjRGljdGlvbmFyeSk7Ci0KLSAgICB4cGNfY29ubmVj
dGlvbl9zZW5kX21lc3NhZ2UoX2Nvbm5lY3Rpb24sIG1zZyk7Ci0KLSAgICB4cGNfcmVsZWFzZSht
c2cpOwotfQotCi0tIChCT09MKWF2YWlsYWJsZQotewotICAgIHJldHVybiBfY29ubmVjdGlvbiAh
PSBOVUxMOwotfQotCi1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViS2l0LmV4cCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5leHAKaW5kZXggZjNmZDJm
NC4uNTZmODE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0LmV4cAorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQuZXhwCkBAIC0yMiw3ICsyMiw2IEBACiAub2JqY19j
bGFzc19uYW1lX1dlYkhpc3RvcnlJdGVtCiAub2JqY19jbGFzc19uYW1lX1dlYkljb25EYXRhYmFz
ZQogLm9iamNfY2xhc3NfbmFtZV9XZWJJbnNwZWN0b3IKLS5vYmpjX2NsYXNzX25hbWVfV2ViSW5z
cGVjdG9yWFBDV3JhcHBlcgogLm9iamNfY2xhc3NfbmFtZV9XZWJKYXZhU2NyaXB0VGV4dElucHV0
UGFuZWwKIC5vYmpjX2NsYXNzX25hbWVfV2ViS2V5R2VuZXJhdG9yCiAub2JqY19jbGFzc19uYW1l
X1dlYktpdFN0YXRpc3RpY3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA1
NWMxZWQzLi5jMzJjOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0y
MTIsNyArMjEyLDYgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0j
aW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0
ICJXZWJJbmRpY2F0ZUxheWVyLmgiCiAjZW5kaWYKQEAgLTM5MSwxMCArMzkwLDYgQEAgc3RhdGlj
IFdlYkNhY2hlTW9kZWwgc19jYWNoZU1vZGVsID0gV2ViQ2FjaGVNb2RlbERvY3VtZW50Vmlld2Vy
Owogc3RhdGljIGNvbnN0IGNoYXIgd2ViVmlld0lzT3BlbltdID0gIkF0IGxlYXN0IG9uZSBXZWJW
aWV3IGlzIHN0aWxsIG9wZW4uIjsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi1zdGF0aWMgQk9PTCBhdXRvU3RhcnRSZW1vdGVJbnNwZWN0b3IgPSBOTzsKLSNlbmRpZgot
CiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJWYWxpZGF0ZVdpdGhvdXREZWxlZ2F0ZSkKIC0gKEJP
T0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXREZWxlZ2F0ZTooaWQgPE5TVmFsaWRh
dGVkVXNlckludGVyZmFjZUl0ZW0+KWl0ZW07CiBAZW5kCkBAIC01MjUsNiArNTIwLDcgQEAgTlNT
dHJpbmcgKl9XZWJWaWV3RGlkU3RhcnRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTm90aWZpY2F0aW9u
ID0gQCJfV2ViVmlld0RpZFN0YXIKIE5TU3RyaW5nICogY29uc3QgV2ViVmlld1dpbGxDbG9zZU5v
dGlmaWNhdGlvbiA9IEAiV2ViVmlld1dpbGxDbG9zZU5vdGlmaWNhdGlvbiI7CiAKICNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKKy8vIEZJWE1FOiBMZWdhY3ksIHJlbW92ZSB0aGlzLCBzd2l0
Y2ggdG8gc29tZXRoaW5nIGZyb20gSmF2YVNjcmlwdENvcmUgSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIuCiBOU1N0cmluZyAqX1dlYlZpZXdSZW1vdGVJbnNwZWN0b3JIYXNTZXNzaW9u
Q2hhbmdlZE5vdGlmaWNhdGlvbiA9IEAiX1dlYlZpZXdSZW1vdGVJbnNwZWN0b3JIYXNTZXNzaW9u
Q2hhbmdlZE5vdGlmaWNhdGlvbiI7CiAjZW5kaWYKIApAQCAtNzY2LDExICs3NjIsNiBAQCBzdGF0
aWMgYm9vbCBzaG91bGRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKCkK
ICAgICAgICAgCiAgICAgICAgIFNldHRpbmdzOjpzZXRTaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNT
U0F0dHJpYnV0ZVNldHRlcnMoc2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0
ZXJzKCkpOwogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgICAgIGlmIChhdXRv
U3RhcnRSZW1vdGVJbnNwZWN0b3IpCi0gICAgICAgICAgICBbV2ViVmlldyBfZW5hYmxlUmVtb3Rl
SW5zcGVjdG9yXTsKLSNlbmRpZgotCiAgICAgICAgIGRpZE9uZVRpbWVJbml0aWFsaXphdGlvbiA9
IHRydWU7CiAgICAgfQogCkBAIC0xMjcxLDYwICsxMjYyLDQyIEBAIHN0YXRpYyBib29sIGZhc3RE
b2N1bWVudFRlYXJkb3duRW5hYmxlZCgpCiB9CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKLSsgKFdlYkluc3BlY3RvclNlcnZlciAqKXNoYXJlZFdlYkluc3BlY3RvclNlcnZlcgotewot
ICAgIHN0YXRpYyBXZWJJbnNwZWN0b3JTZXJ2ZXIgKnNoYXJlZFNlcnZlciA9IFtbV2ViSW5zcGVj
dG9yU2VydmVyIGFsbG9jXSBpbml0XTsKLSAgICByZXR1cm4gc2hhcmVkU2VydmVyOwotfQotCiAr
ICh2b2lkKV9lbmFibGVSZW1vdGVJbnNwZWN0b3IKIHsKLSAgICBbW1dlYlZpZXcgc2hhcmVkV2Vi
SW5zcGVjdG9yU2VydmVyXSBzdGFydF07CisgICAgLy8gRklYTUU6IE1vdmUgdGhpcyB0byBhIG5l
dyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlciBpbnRlcmZhY2Ugb3IgcmVtb3ZlIGl0
LgogfQogCiArICh2b2lkKV9kaXNhYmxlUmVtb3RlSW5zcGVjdG9yCiB7Ci0gICAgW1tXZWJWaWV3
IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gc3RvcF07CisgICAgLy8gRklYTUU6IE1vdmUgdGhp
cyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlciBpbnRlcmZhY2Ugb3Ig
cmVtb3ZlIGl0LgogfQogCiArICh2b2lkKV9kaXNhYmxlQXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9y
CiB7Ci0gICAgYXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yID0gTk87CisgICAgLy8gRklYTUU6IE1v
dmUgdGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlciBpbnRlcmZh
Y2Ugb3IgcmVtb3ZlIGl0LgogfQogCiArIChCT09MKV9pc1JlbW90ZUluc3BlY3RvckVuYWJsZWQK
IHsKLSAgICByZXR1cm4gW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gaXNFbmFi
bGVkXTsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGEgbmV3IEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yU2VydmVyIGludGVyZmFjZSBvciByZW1vdmUgaXQuCisgICAgcmV0dXJuIE5POwog
fQogCiArIChCT09MKV9oYXNSZW1vdGVJbnNwZWN0b3JTZXNzaW9uCiB7Ci0gICAgcmV0dXJuIFtb
V2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIGhhc0FjdGl2ZURlYnVnU2Vzc2lvbl07
Ci19Ci0KLS0gKEJPT0wpY2FuQmVSZW1vdGVseUluc3BlY3RlZAotewotI2lmICFQTEFURk9STShJ
T1MpCi0gICAgaWYgKCFbW3NlbGYgcHJlZmVyZW5jZXNdIGRldmVsb3BlckV4dHJhc0VuYWJsZWRd
KQotICAgICAgICByZXR1cm4gTk87Ci0jZW5kaWYKLQotICAgIHJldHVybiBbc2VsZiBhbGxvd3NS
ZW1vdGVJbnNwZWN0aW9uXTsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGEgbmV3IEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyIGludGVyZmFjZSBvciByZW1vdmUgaXQuCisgICAg
cmV0dXJuIE5POwogfQogCiAtIChCT09MKWFsbG93c1JlbW90ZUluc3BlY3Rpb24KIHsKLSAgICBy
ZXR1cm4gX3ByaXZhdGUtPmFsbG93c1JlbW90ZUluc3BlY3Rpb247CisgICAgLy8gRklYTUU6IE1v
dmUgdGhpcyB0byBhIG5ldyBBUEkuCisgICAgcmV0dXJuIE5POwogfQogCiAtICh2b2lkKXNldEFs
bG93c1JlbW90ZUluc3BlY3Rpb246KEJPT0wpYWxsb3cKIHsKLSAgICBpZiAoX3ByaXZhdGUtPmFs
bG93c1JlbW90ZUluc3BlY3Rpb24gPT0gYWxsb3cpCi0gICAgICAgIHJldHVybjsKLQotICAgIF9w
cml2YXRlLT5hbGxvd3NSZW1vdGVJbnNwZWN0aW9uID0gYWxsb3c7Ci0KLSAgICBbW1dlYlZpZXcg
c2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBwdXNoTGlzdGluZ107CisgICAgLy8gRklYTUU6IE1v
dmUgdGhpcyB0byBhIG5ldyBBUEkuCiB9CiAKIC0gKHZvaWQpc2V0SW5kaWNhdGluZ0ZvclJlbW90
ZUluc3BlY3RvcjooQk9PTCllbmFibGVkCkBAIC0xMzQ0LDI5ICsxMzE3LDE1IEBAIHN0YXRpYyBi
b29sIGZhc3REb2N1bWVudFRlYXJkb3duRW5hYmxlZCgpCiAgICAgICAgIF9wcml2YXRlLT5pbmRp
Y2F0ZUxheWVyID0gbmlsOwogICAgIH0KICNlbHNlCi0gICAgLy8gRklYTUU6IE5lZWRzIGltcGxl
bWVudGF0aW9uLgorICAgIC8vIEZJWE1FOiBOZWVkcyBpbXBsZW1lbnRhdGlvbiBvciBwdXQgYW4g
aW1wbGVtZW50YXRpb24gaW4gV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheS4KICNlbmRpZgogfQog
Ci0tICh2b2lkKXNldFJlbW90ZUluc3BlY3RvclVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2Vy
SW5mbwotewotICAgIGlmIChbX3ByaXZhdGUtPnJlbW90ZUluc3BlY3RvclVzZXJJbmZvIGlzRXF1
YWxUb0RpY3Rpb25hcnk6dXNlckluZm9dKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbX3ByaXZh
dGUtPnJlbW90ZUluc3BlY3RvclVzZXJJbmZvIHJlbGVhc2VdOwotICAgIF9wcml2YXRlLT5yZW1v
dGVJbnNwZWN0b3JVc2VySW5mbyA9IFt1c2VySW5mbyBjb3B5XTsKLQotICAgIFtbV2ViVmlldyBz
aGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIHB1c2hMaXN0aW5nXTsKLX0KLQotLSAoTlNEaWN0aW9u
YXJ5ICopcmVtb3RlSW5zcGVjdG9yVXNlckluZm8KLXsKLSAgICByZXR1cm4gX3ByaXZhdGUtPnJl
bW90ZUluc3BlY3RvclVzZXJJbmZvOwotfQotCiAjaWYgUExBVEZPUk0oSU9TKQogLSAodm9pZClz
ZXRIb3N0QXBwbGljYXRpb25CdW5kbGVJZDooTlNTdHJpbmcgKilidW5kbGVJZCBuYW1lOihOU1N0
cmluZyAqKW5hbWUKIHsKKyAgICAvLyBGSVhNRTogVGhpcyBoYXMgbm90IHlldCBiZWVuIHBvcnRl
ZCB0byBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlci4KKwogICAgIGlmICghW19wcml2
YXRlLT5ob3N0QXBwbGljYXRpb25CdW5kbGVJZCBpc0VxdWFsVG9TdHJpbmc6YnVuZGxlSWRdKSB7
CiAgICAgICAgIFtfcHJpdmF0ZS0+aG9zdEFwcGxpY2F0aW9uQnVuZGxlSWQgcmVsZWFzZV07CiAg
ICAgICAgIF9wcml2YXRlLT5ob3N0QXBwbGljYXRpb25CdW5kbGVJZCA9IFtidW5kbGVJZCBjb3B5
XTsKQEAgLTIxMjIsOSArMjA4MSw2IEBAIHN0YXRpYyBpbmxpbmUgSU1QIGdldE1ldGhvZChpZCBv
LCBTRUwgcykKICAgICBpZiAoZnJhbWUgPT0gW3NlbGYgbWFpbkZyYW1lXSkKICAgICAgICAgW3Nl
bGYgX2RpZENoYW5nZVZhbHVlRm9yS2V5OiBfV2ViTWFpbkZyYW1lVVJMS2V5XTsKICAgICBbTlNB
cHAgc2V0V2luZG93c05lZWRVcGRhdGU6WUVTXTsKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKLSAgICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBwdXNoTGlzdGluZ107
Ci0jZW5kaWYKIH0KIAogLSAodm9pZClfZGlkRmluaXNoTG9hZEZvckZyYW1lOihXZWJGcmFtZSAq
KWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRh
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggMjQ1NDE1
OC4uNGMyNjcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAt
MjA4LDggKzIwOCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQotICAgIEJPT0wgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbjsKLSAgICBOU0RpY3Rpb25h
cnkgKnJlbW90ZUluc3BlY3RvclVzZXJJbmZvOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBXZWJJ
bmRpY2F0ZUxheWVyICppbmRpY2F0ZUxheWVyOwogICAgIE5TU3RyaW5nICpob3N0QXBwbGljYXRp
b25CdW5kbGVJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0RhdGEubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCmluZGV4
IDAzNDNhOWMuLmViMGJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld0RhdGEubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0
YS5tbQpAQCAtOTksMTAgKzk5LDYgQEAgV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6OldlYlZp
ZXdMYXllckZsdXNoU2NoZWR1bGVyKExheWVyRmx1c2hDb250cm9sbGVyKiBmbHUKICAgICBkYXNo
Ym9hcmRCZWhhdmlvckFsbG93V2hlZWxTY3JvbGxpbmcgPSBZRVM7CiAjZW5kaWYKIAotI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIGFsbG93c1JlbW90ZUluc3BlY3Rpb24gPSBZRVM7
Ci0jZW5kaWYKLQogICAgIHNob3VsZENsb3NlV2l0aFdpbmRvdyA9IG9iamNfY29sbGVjdGluZ0Vu
YWJsZWQoKTsKIAogICAgIHBsdWdpbkRhdGFiYXNlQ2xpZW50Q291bnQrKzsKQEAgLTEzNSw3ICsx
MzEsNiBAQCBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hTY2hl
ZHVsZXIoTGF5ZXJGbHVzaENvbnRyb2xsZXIqIGZsdQogICAgIFttZWRpYVN0eWxlIHJlbGVhc2Vd
OwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgW3JlbW90ZUluc3BlY3RvclVz
ZXJJbmZvIHJlbGVhc2VdOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBbaW5kaWNhdGVMYXllciBy
ZWxlYXNlXTsKICAgICBbaG9zdEFwcGxpY2F0aW9uQnVuZGxlSWQgcmVsZWFzZV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCAyNmM4OTg2Li5jZDU0
ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKQEAg
LTYxLDkgKzYxLDYgQEAgc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwogQGNsYXNzIFdlYkJh
c2VQbHVnaW5QYWNrYWdlOwogQGNsYXNzIFdlYkRvd25sb2FkOwogQGNsYXNzIFdlYk5vZGVIaWdo
bGlnaHQ7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi1AY2xhc3MgV2ViSW5zcGVjdG9y
U2VydmVyOwotI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogCkBAIC0yMTcsMTAgKzIxNCw2
IEBAIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogLSAodm9pZClfZnVsbFNjcmVlblJl
bmRlcmVyQ2hhbmdlZDooV2ViQ29yZTo6UmVuZGVyQm94KilyZW5kZXJlcjsKICNlbmRpZgogCi0j
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0rIChXZWJJbnNwZWN0b3JTZXJ2ZXIgKilzaGFy
ZWRXZWJJbnNwZWN0b3JTZXJ2ZXI7Ci0jZW5kaWYKLQogLy8gQ29udmVyc2lvbiBmdW5jdGlvbnMg
YmV0d2VlbiBXZWJDb3JlIHJvb3QgdmlldyBjb29yZGluYXRlcyBhbmQgd2ViIHZpZXcgY29vcmRp
bmF0ZXMuCiAtIChOU1BvaW50KV9jb252ZXJ0UG9pbnRGcm9tUm9vdFZpZXc6KE5TUG9pbnQpcG9p
bnQ7CiAtIChOU1JlY3QpX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OihOU1JlY3QpcmVjdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCAyZGRmZGVkLi41
MDFmOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBA
IC03Nyw2ICs3Nyw3IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViRWxlbWVudElzSW5TY3JvbGxCYXJL
ZXk7CiBleHRlcm4gTlNTdHJpbmcgKl9XZWJWaWV3RGlkU3RhcnRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTm90aWZpY2F0aW9uOwogCiAjaWYgRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IKKy8vIEZJWE1F
OiBMZWdhY3ksIHJlbW92ZSB0aGlzLCBzd2l0Y2ggdG8gc29tZXRoaW5nIGZyb20gSmF2YVNjcmlw
dENvcmUgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuCiAvLyBOb3RpZmljYXRpb24g
d2hlbiB0aGUgbnVtYmVyIG9mIGluc3BlY3RvciBzZXNzaW9ucyBiZWNvbWVzIG5vbi16ZXJvIG9y
IHJldHVybnMgdG8gMC4KIC8vIENoZWNrIHRoZSBjdXJyZW50IHN0YXRlIHZpYSAtW1dlYlZpZXcg
X2hhc1JlbW90ZUluc3BlY3RvclNlc3Npb25dLgogZXh0ZXJuIE5TU3RyaW5nICpfV2ViVmlld1Jl
bW90ZUluc3BlY3Rvckhhc1Nlc3Npb25DaGFuZ2VkTm90aWZpY2F0aW9uOwpAQCAtMjYzLDE1ICsy
NjQsNiBAQCB0eXBlZGVmIGVudW0gewogKyAoQk9PTClfaGFzUmVtb3RlSW5zcGVjdG9yU2Vzc2lv
bjsKIAogLyohCi0gICAgQG1ldGhvZCBjYW5CZVJlbW90ZWx5SW5zcGVjdGVkCi0gICAgQHJlc3Vs
dCBMb29rcyBhdCBhbGwgdGhlIGZhY3RvcnMgb2YgdGhpcyBXZWJWaWV3IGFuZCByZXR1cm5zIHdo
ZXRoZXIgb3Igbm90Ci0gICAgdGhpcyBXZWJWaWV3IHNob3VsZCBhbGxvdyBhIFJlbW90ZSBXZWIg
SW5zcGVjdG9yIHRvIGF0dGFjaCB0byBpdC4gVGhpcyB0YWtlcwotICAgIGludG8gYWNjb3VudCAt
YWxsb3dzUmVtb3RlSW5zcGVjdGlvbiwgUHJpdmF0ZSBCcm93c2luZywgYW5kIHBvdGVudGlhbGx5
IG90aGVyCi0gICAgZmFjdG9ycy4KLSovCi0tIChCT09MKWNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQ7
Ci0KLS8qIQogICAgIEBtZXRob2QgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbgogICAgIEByZXN1bHQg
UmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGlzIFdlYlZpZXcgd2lsbCBhbGxvdyBhIFJlbW90ZSBX
ZWIgSW5zcGVjdG9yCiAgICAgdG8gYXR0YWNoIHRvIGl0LgpAQCAtMjkyLDIxICsyODQsNiBAQCB0
eXBlZGVmIGVudW0gewogICAgIEBhYnN0cmFjdCBpbmRpY2F0ZSB0aGlzIFdlYlZpZXcgb24gc2Ny
ZWVuIGZvciBhIHJlbW90ZSBpbnNwZWN0b3IuCiAqLwogLSAodm9pZClzZXRJbmRpY2F0aW5nRm9y
UmVtb3RlSW5zcGVjdG9yOihCT09MKWVuYWJsZWQ7Ci0KLS8qCi0gICAgQG1ldGhvZCBzZXRSZW1v
dGVJbnNwZWN0b3JVc2VySW5mbwotICAgIEBwYXJhbSB0YWcgVGhlIGRpY3Rpb25hcnkgdG8gYmUg
YXNzb2NpYXRlZCB3aXRoIHRoZSBXZWJWaWV3LgotICAgIEBhYnN0cmFjdCBEZXZlbG9wZXIgc3Bl
Y2lmaWVkIGRpY3Rpb25hcnkgZm9yIHRoZSBXZWJWaWV3IHRoYXQgd2lsbCBiZQotICAgIHNlbnQg
dG8gdGhlIFJlbW90ZSBEZWJ1Z2dlci4gVGhlIGRpY3Rpb25hcnkgbXVzdCBjb250YWluIHByb3Bl
cnR5Ci0gICAgbGlzdCBzZXJpYWxpemFibGUgdmFsdWVzLgotKi8KLS0gKHZvaWQpc2V0UmVtb3Rl
SW5zcGVjdG9yVXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOwotCi0vKiEKLSAgICBA
bWV0aG9kIHJlbW90ZUluc3BlY3RvclVzZXJJbmZvCi0gICAgQHJlc3VsdCBSZXR1cm5zIHRoZSBk
aWN0aW9uYXJ5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFdlYlZpZXcuCi0qLwotLSAoTlNEaWN0aW9u
YXJ5ICopcmVtb3RlSW5zcGVjdG9yVXNlckluZm87CiAjZW5kaWYKIAogCg==
</data>
<flag name="review"
          id="240765"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217706</attachid>
            <date>2013-11-22 12:31:43 -0800</date>
            <delta_ts>2013-11-22 16:16:40 -0800</delta_ts>
            <desc>[PATCH] Part 1 - JSC remote inspector debugging connection management</desc>
            <filename>part1c.patch</filename>
            <type>text/plain</type>
            <size>73248</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGNiYzE2NTkuLmZjMWI5NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2gg
UmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2
YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNDYxMworCisgICAgICAgIE1vdmUgdGhlIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSBy
ZW1vdGUgZGVidWdnZXIgY29ubmVjdGlvbiBtYW5hZ2VtZW50CisgICAgICAgIGludG8gSmF2YVNj
cmlwdENvcmUgKG9yaWdpbmFsbHkgZnJvbSBXZWJLaXQvbWFjKS4gSW5jbHVkZSBlbmhhbmNlbWVu
dHM6CisKKyAgICAgICAgICAqIGFsbG93IGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgcmVtb3RlIGRl
YnVnZ2FibGUgdGFyZ2V0cywKKyAgICAgICAgICAgIGV2ZW50dWFsbHkgYXQgbGVhc3QgYSBKU0Nv
bnRleHQsIFdlYlZpZXcsIFdLVmlldy4KKyAgICAgICAgICAqIGFsbG93IGRlYnVnZ2FibGVzIHRv
IGJlIHJlZ2lzdGVyZWQgYW5kIGRlYnVnZ2VkIG9uIGFueSB0aHJlYWQuIFVubGlrZQorICAgICAg
ICAgICAgV2ViVmlld3MsIEpTQ29udGV4dHMgbWF5IGJlIHJ1biBlbnRpcmVseSBvZmYgb2YgdGhl
IG1haW4gdGhyZWFkLgorICAgICAgICAgICogbW92ZSB0aGUgcmVtb3RlIGNvbm5lY3Rpb24gKFhQ
QyBjb25uZWN0aW9uKSBpdHNlbGYgb2ZmIG9mIHRoZSBtYWluIHRocmVhZCwKKyAgICAgICAgICAg
IGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6flJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlOjppbml0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6dXBkYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluZm8pOgorICAgICAgICBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlIGRlZmluZXMgYSBkZWJ1Z2dhYmxlIHRhcmdldC4gQXMgbG9uZyBhcwor
ICAgICAgICBzb21ldGhpbmcgY3JlYXRlcyBhIGRlYnVnZ2FibGUgYW5kIGlzIHNldCB0byBhbGxv
dyByZW1vdGUgaW5zcGVjdGlvbgorICAgICAgICBpdCB3aWxsIGJlIGxpc3RlZCBpbiByZW1vdGUg
ZGVidWdnZXJzLiBGb3IgdGhlIGRpZmZlcmVudCB0eXBlcyBvZgorICAgICAgICBkZWJ1Z2dhYmxl
cyAoSmF2YVNjcmlwdCBhbmQgV2ViKSB0aGVyZSBpcyBkaWZmZXJlbnQgYmFzaWMgaW5mb3JtYXRp
b24KKyAgICAgICAgdGhhdCBtYXkgYmUgbGlzdGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsOjp+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKToKKyAgICAg
ICAgVGhlIG9ubHkgdGhpbmcgYSBkZWJ1Z2dhYmxlIG5lZWRzIGZvciByZW1vdGUgZGVidWdnaW5n
IGlzIGFuCisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBhIHdheSB0byBzZW5kIG1l
c3NhZ2VzIHRvIGEgcmVtb3RlIGZyb250ZW5kLgorICAgICAgICBUaGlzIGNsYXNzIHByb3ZpZGVz
IHRoYXQgbWV0aG9kLCBhbmQgaXMgdmVuZGVkIHRvIHRoZQorICAgICAgICBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlIHdoZW4gYSByZW1vdGUgY29ubmVjdGlvbiBpcyBzZXR1cC4KKworICAgICAg
ICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOiBBZGRlZC4KKyAgICAgICAgU2lu
Z2xldG9uLCBjcmVhdGVkIGF0IGxlYXN0IHdoZW4gdGhlIGZpcnN0IERlYnVnZ2FibGUgaXMgY3Jl
YXRlZC4KKyAgICAgICAgVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBsaXN0IG9mIGRlYnVnZ2FibGVz
LCBhbnkgY29ubmVjdGlvbiB0byBhCisgICAgICAgIHJlbW90ZSBkZWJ1Z2dlciBwcm94eSAoWFBD
IHNlcnZpY2UgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiKS4KKworICAgICAgICAoSW5zcGVjdG9y
OjpkaXNwYXRjaEFzeW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3Rvcjo6bmV4dEF2YWlsYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlckRlYnVnZ2FibGUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGUpOgorICAgICAgICBE
ZWJ1Z2dhYmxlIG1hbmFnZW1lbnQuIFdoZW4gZGVidWdnYWJsZXMgYXJlIGFkZGVkLCByZW1vdmVk
LCBvciB1cGRhdGVkCisgICAgICAgIHdlIHN0YXNoIGEgY29weSBvZiB0aGUgZGVidWdnYWJsZSBp
bmZvcm1hdGlvbiBhbmQgcHVzaCBhbiB1cGRhdGUgdG8KKyAgICAgICAgZGVidWdnZXJzLiBTdGFz
aGluZyBhIGNvcHkgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBSZW1vdGVJbnNwZWN0b3IKKyAg
ICAgICAgaXMgYSB0aHJlYWQgc2FmZSB3YXkgdG8gYXZvaWQgd2Fsa2luZyBvdmVyIGFsbCBkZWJ1
Z2dhYmxlcyB0byBnYXRoZXIKKyAgICAgICAgdGhlIGluZm9ybWF0aW9uIHdoZW4gaXQgaXMgbmVl
ZGVkLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0b3ApOgorICAgICAgICBSdW50aW1l
IEFQSSB0byBlbmFibGUgLyBkaXNhYmxlIHRoZSBmZWF0dXJlLgorCisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nTm93KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ1Nvb24pOgorICAgICAgICBQdXNoaW5n
IGEgbGlzdGluZyB0byByZW1vdGUgZGVidWdnZXJzLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVk
TWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVj
dGlvbkZhaWxlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29u
bmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UpOgorICAgICAgICBYUEMgc2V0dXAsIHNlbmQsIGFuZCBy
ZWNlaXZlIGhhbmRsaW5nLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKToKKyAgICAgICAgQXBwbGljYXRpb25zIGJlaW5n
IGRlYnVnZ2VkIG1heSB3YW50IHRvIGtub3cgd2hlbiBhIGRlYnVnCisgICAgICAgIHNlc3Npb24g
aXMgYWN0aXZlLiBUaGlzIHByb3ZpZGVzIHRoYXQgbm90aWZpY2F0aW9uLgorCisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldExpc3Rp
bmdNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZl
ZEluZGljYXRlTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
cmVjZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UpOgorICAgICAgICBEaXNwYXRjaGluZyBpbmNv
bWluZyByZW1vdGUgZGVidWdnaW5nIHByb3RvY29sIG1lc3NhZ2VzLgorICAgICAgICBUaGVzZSBh
cmUgd3JhcHBpbmcgYWJvdmUgdGhlIGluc3BlY3RvciBwcm90b2NvbCBtZXNzYWdlcy4KKworICAg
ICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg6IEFkZGVk
LgorICAgICAgICBQcm90b2NvbCBtZXNzYWdlcyBhbmQgZGljdGlvbmFyeSBrZXlzIGluc2lkZSB0
aGUgbWVzc2FnZXMuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUluZm86OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg6IEFkZGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb24ubW06IEFkZGVkLgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVu
IHRoZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb246OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246On5SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbik6CisgICAgICAgIEFsbG93IGZvciBkaXNwYXRj
aGluZyBtZXNzYWdlcyBvbiBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzIG9uIGEgZGlzcGF0Y2hfcXVl
dWUKKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgbWFpbiBxdWV1ZS4KKworICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGVzdGluYXRpb24pOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBOZWVkZWQgaW4gdGhlIHJlbW90ZSBkZWJ1
Z2dpbmcgcHJvdG9jb2wgdG8gaWRlbnRpZnkgdGhlIHJlbW90ZSBkZWJ1Z2dlci4KKworICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0
Y2hTeW5jT25EZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXAp
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bjo6Y2xvc2VGcm9tRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICBUaGUgY29ubmVjdGlvbiBpcyBhIHRo
aW4gY2hhbm5lbCBiZXR3ZWVuIHRoZSB0d28gc2lkZXMgdGhhdCBjYW4gYmUgY2xvc2VkCisgICAg
ICAgIGZyb20gZWl0aGVyIHNpZGUsIHNvIHRoZXJlIGlzIHNvbWUgbG9naWMgYXJvdW5kIG11bHRp
LXRocmVhZGVkIGFjY2Vzcy4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50Ojp+Q2xpZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06IEFkZGVkLgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24pOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVz
c2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246
OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3
ZWVuIHRoZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhbiBYUEMgc2VydmljZQorICAg
ICAgICBuYW1lZCAiY29tLmFwcGxlLndlYmluc3BlY3RvciIuIFRoaXMgaGFuZGxlcyBzZXJpYWxp
emF0aW9uIG9mIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1lc3NhZ2VzIHRvIGFuZCBmcm9tIHRo
ZSBzZXJ2aWNlLiBUaGUgcmVjZWl2aW5nIGlzIGRvbmUgb24gYSBub24tbWFpbiBxdWV1ZS4KKwog
MjAxMy0xMS0yMSAgQmFsYXpzIEtpbHZhZHkgIDxraWx2YWR5YkBob21lamlubmkuY29tPgogCiAg
ICAgICAgIFtNSVBTXSBCdWlsZCBmYWlscyBzaW5jZSByMTU5NTQ1LgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBhM2ZiMGRhMy4uMDAyMjM0NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTg4Myw2ICs4ODMsMTYgQEAKIAkJQTE3MTJCNDExMUM3QjIzNTAwN0E1MzE1
IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQTAwOUMwMTgzMUEyMkQw
MENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQzE1NkVFRDNCMDA1NjZDQjIgLyogTWFjcm9B
c3NlbWJsZXJBUk02NC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0IxNTZF
RUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU5NDU1OEYxODI0NUVGRDAwQ0MzODQzIC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OEUxODI0NUVERTAwQ0MzODQzIC8qIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUuY3BwICovOyB9OworCQlBNTk0NTU5NTE4MjQ3OUVCMDBDQzM4NDMgLyog
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTExODIz
NDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBS
ZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tICov
OyB9OworCQlBNUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3Rh
bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJB
MTVFMzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVCQTE1RUIxODIz
NDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNDE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCAqLzsg
fTsKKwkJQTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uLm1tICovOyB9OworCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJFNjkgLyogUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24uaCAqLzsgfTsKKwkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLzsgfTsKKwkJQTVCQTE1RjAxODIzNDVBRjAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUVGMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTcwMDg3MzkxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVj
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCUE3
MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQz
IC8qIE1hcENvbnN0cnVjdG9yLmggKi87IH07CiAJCUE3MDA4NzNEMTdDQkU4RDMwMEMzRTY0MyAv
KiBNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi87
IH07CkBAIC0yMTkwLDYgKzIyMDAsMTYgQEAKIAkJQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8q
IFJlZ0V4cENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
Z0V4cENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCM0UxMUM3
QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEy
QjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1
OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUuY3BwOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5NDU1OTQxODI0NzlFQjAw
Q0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaDsgcGF0aCA9IGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3IuaDsgcGF0aCA9IGluc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE1QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3IubW07IHBh
dGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTMxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
ckNvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVJbnNw
ZWN0b3JDb25zdGFudHMuaDsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
Q29uc3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QkExNUU0MTgyMzQw
QjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29u
bmVjdGlvbi5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFNTE4
MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE1QkExNUU2MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24uaDsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFNzE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24ubW07IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QkExNUVGMTgyMzQ1QUYwMEE4
MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaDsgcGF0aCA9IGluc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzAwODczNzE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFwQ29uc3RydWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzAwODczODE3Q0JFODUzMDBDM0U2NDMg
LyogTWFwQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFw
Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwMDg3M0IxN0NC
RThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNYXBQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjY4OCw2ICsyNzA4LDcgQEAKIAkJCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcgLyog
RnJhbWV3b3JrcyAqLywKIAkJCQkwRkVBMDlGQzE3MDUxMzdGMDBCQjcyMkMgLyogZnRsICovLAog
CQkJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovLAorCQkJCUE1QkExNURGMTgy
MzQwOTIwMEE4MkU2OSAvKiBpbnNwZWN0b3IgKi8sCiAJCQkJMTQyOUQ3N0EwRUQyMEQ3MzAwQjg5
NjE5IC8qIGludGVycHJldGVyICovLAogCQkJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBq
aXQgKi8sCiAJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovLApAQCAtNDEz
Niw2ICs0MTU3LDMxIEBACiAJCQlwYXRoID0gYnl0ZWNvZGU7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQlBNUJBMTVERjE4MjM0MDkyMDBBODJFNjkgLyogaW5zcGVjdG9yICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBNUJBMTVFMDE4
MjM0MDlEMDBBODJFNjkgLyogcmVtb3RlICovLAorCQkJCUE1OTQ1NTk0MTgyNDc5RUIwMENDMzg0
MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLywKKwkJCSk7CisJCQluYW1lID0gaW5z
cGVjdG9yOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQTVCQTE1RTAxODIz
NDA5RDAwQTgyRTY5IC8qIHJlbW90ZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJQTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
ci5oICovLAorCQkJCUE1QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3Iu
bW0gKi8sCisJCQkJQTVCQTE1RTMxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckNv
bnN0YW50cy5oICovLAorCQkJCUE1QkExNUVGMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlLmggKi8sCisJCQkJQTU5NDU1OEUxODI0NUVERTAwQ0MzODQzIC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwICovLAorCQkJCUE1QkExNUU0MTgyMzQwQjMwMEE4
MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oICovLAorCQkJCUE1
QkExNUU1MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbi5tbSAqLywKKwkJCQlBNUJBMTVFNjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5oICovLAorCQkJCUE1QkExNUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSByZW1v
dGU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAt
NDIwNiw2ICs0MjUyLDcgQEAKIAkJCQk4NjY3MzlEMjEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50
ZWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4MTZFMUMxNTRDQzU2QzAwQjgwNTRDIC8qIEJs
b2NrQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFQzBFMTZGNUNEMDBCMzQ0
NjAgLyogQm9vbGVhbk9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RUExODIzNDBC
NDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCN0YzOTgxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseUlubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZl
bnRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTQyNzUsNiArNDMyMiw3IEBACiAJCQkJMEYxNjAx
NUUxNTYxOThDOTAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMDVDM0I0MTY4M0NGOTIwMEJBRjQ1QiAvKiBERkdBcnJheWlm
eVNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ4NTE1RTQ4MTFC
MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUJBMTVFQjE4
MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUE3RDlBMjk1MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdBdFRhaWxB
YnN0cmFjdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcxNENBNTE2RUE5MkYyMDBGM0VC
RUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY2MjAxNzYxNDNGQ0QzQjAwNjhCNzdDIC8qIERGR0Jhc2ljQmxvY2suaCBpbiBIZWFkZXJzICov
LApAQCAtNDM1MCw2ICs0Mzk4LDcgQEAKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJDNDAgLyog
REZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5
NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE1QkExNUVEMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyog
REZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NzEx
NDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY3MDI1QUExNzE0QjBGQzAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5o
IGluIEhlYWRlcnMgKi8sCkBAIC00NDk5LDYgKzQ1NDgsNyBAQAogCQkJCTg2Q0NFRkRFMEY0MTNG
ODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA3NzZCRjE0RkYw
MDJCMDAxMDIzMzIgLyogSklUQ29tcGlsYXRpb25FZmZvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQUY3RUZFMTY1QkE5MUYwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE1QkExNUYwMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTRFMUYxODEyNEFDRTAwOUI2
QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkND
ODVBMTBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC00
NjcwLDYgKzQ3MjAsNyBAQAogCQkJCTE0RDJGM0RCMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRT
cGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRDZGMTIxMzUzOUE0MTAwQjAyRTg2IC8qIE1h
cmtTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIxMTIyRTMxNUREOUFCMzAwNzkwRTNBIC8q
IE1hcmtTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTQ1NTk1MTgyNDc5RUIw
MENDMzg0MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0M0MwRTE2RjVDRDAwQjM0NDYwIC8qIE1hdGhPYmplY3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkwMjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTQ4MzcsNiArNDg4OCw3IEBACiAJCQkJMTQyRTMxM0MxMzRGRjBB
NjAwQUZBREI1IC8qIFdlYWsuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RTg0RjlGMTRFRTFBQ0Mw
MEQ2RDVENCAvKiBXZWFrQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QkZDRTY5MTBDREIx
RkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1QkExNUU4MTgy
MzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
RjcyNTY2MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0RTg0RkEyMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrSW1wbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTRCRTdEMzMxNzEzNUNGNDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTU1OTIsNiArNTY0NCw3IEBACiAJCQkJMTQ0NjlEREUxMDdFQzdFNzAwNjUw
NDQ2IC8qIExvb2t1cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBDQzE0QkJCMTdBMDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEI3
MjNCMjEyRDdEQTQ2MDAzQkQ1RUQgLyogTWFjaGluZVN0YWNrTWFya2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUIzRUNGMTYyMzdGNkMwMEFCNjdBRCAv
KiBNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkM1NjhFMDExQTIxM0VF
MDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcy
OTAwOUMxNzk3NkM2MDAwMzE3Mjk4IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC01NzE5LDYgKzU3NzIsOSBAQAogCQkJCUE3Q0EzQUU1MTdEQTQxQUUwMDY1MzhB
RiAvKiBXZWFrTWFwUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RTg0RkEwMTRF
RTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzgxNTBC
MTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4g
U291cmNlcyAqLywKKwkJCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQlBNUJBMTVFRTE4
MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3RTVBQjNBMTc5OUU0QjIwMEQyODMzRCAvKiBYODZEaXNhc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYzQzZEOUMxNTIxMTExQTAwNTg1RTRFIC8qIFlhcnJD
YW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg0MTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTBhOGVhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxf
aAorI2RlZmluZSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAorCisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwgeworcHVibGljOgorICAgIHZpcnR1YWwgfkluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCgpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0
b3IKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2Q0MDNiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yLmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisK
KyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9yX2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yX2gKKwor
I2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCIKKyNpbXBvcnQg
IlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCIKKyNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+
CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CisKK09CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpD
X0NMQVNTIE5TRGljdGlvbmFyeTsKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGU7CitzdHJ1Y3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm87CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvciBGSU5BTCA6
IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBSZW1vdGVJbnNwZWN0b3ImIHNoYXJlZCgpOworICAgIGZyaWVuZCBjbGFzcyBO
ZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3I+OworCisgICAgdm9pZCByZWdpc3RlckRlYnVn
Z2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSopOworICAgIHZvaWQgdW5yZWdpc3RlckRl
YnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSopOworICAgIHZvaWQgdXBkYXRlRGVi
dWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7CisgICAgdm9pZCBzZW5kTWVzc2Fn
ZVRvUmVtb3RlRnJvbnRlbmQodW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKKworICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQor
ICAgIGJvb2wgaGFzQWN0aXZlRGVidWdTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBY3Rp
dmVEZWJ1Z1Nlc3Npb247IH0KKworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lkIHN0b3AoKTsK
KworcHJpdmF0ZToKKyAgICBSZW1vdGVJbnNwZWN0b3IoKTsKKworICAgIHVuc2lnbmVkIG5leHRB
dmFpbGFibGVJZGVudGlmaWVyKCk7CisKKyAgICB2b2lkIHNldHVwWFBDQ29ubmVjdGlvbklmTmVl
ZGVkKCk7CisKKyAgICBOU0RpY3Rpb25hcnkgKmxpc3RpbmdGb3JEZWJ1Z2dhYmxlKGNvbnN0IFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvJikgY29uc3Q7CisgICAgdm9pZCBwdXNoTGlzdGlu
Z05vdygpOworICAgIHZvaWQgcHVzaExpc3RpbmdTb29uKCk7CisKKyAgICB2b2lkIHVwZGF0ZUhh
c0FjdGl2ZURlYnVnU2Vzc2lvbigpOworCisgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25S
ZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICpt
ZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHhwY0Nvbm5lY3Rpb25GYWlsZWQoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uVW5oYW5kbGVkTWVzc2Fn
ZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgeHBjX29iamVjdF90KSBPVkVSUklERTsK
KworICAgIHZvaWQgcmVjZWl2ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7
CisgICAgdm9pZCByZWNlaXZlZERhdGFNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOwor
ICAgIHZvaWQgcmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7
CisgICAgdm9pZCByZWNlaXZlZEdldExpc3RpbmdNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlcklu
Zm8pOworICAgIHZvaWQgcmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbyk7CisgICAgdm9pZCByZWNlaXZlZENvbm5lY3Rpb25EaWVkTWVzc2FnZShOU0RpY3Rpb25h
cnkgKnVzZXJJbmZvKTsKKworICAgIC8vIERlYnVnZ2FibGVzIGNhbiBiZSByZWdpc3RlcmVkIGZy
b20gYW55IHRocmVhZCBhdCBhbnkgdGltZS4KKyAgICAvLyBBbnkgZGVidWdnYWJsZSBjYW4gc2Vu
ZCBtZXNzYWdlcyBvdmVyIHRoZSBYUEMgY29ubmVjdGlvbi4KKyAgICAvLyBTbyBsb2NrIGFjY2Vz
cyB0byBhbGwgbWFwcyBhbmQgc3RhdGUgYXMgdGhleSBjYW4gY2hhbmdlCisgICAgLy8gZnJvbSBh
bnkgdGhyZWFkLgorICAgIE11dGV4IG1fbG9jazsKKworICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0
ZDo6cGFpcjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiwgUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUluZm8+PiBtX2RlYnVnZ2FibGVNYXA7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRy
PFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPj4gbV9jb25uZWN0aW9uTWFwOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uPiBtX3hwY0Nv
bm5lY3Rpb247CisgICAgdW5zaWduZWQgbV9uZXh0QXZhaWxhYmxlSWRlbnRpZmllcjsKKyAgICBp
bnQgbV9ub3RpZnlUb2tlbjsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBib29sIG1faGFzQWN0
aXZlRGVidWdTZXNzaW9uOworICAgIGJvb2wgbV9wdXNoU2NoZWR1bGVkOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
KworI2VuZGlmIC8vIFdlYkluc3BlY3RvclNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5YjQxZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5t
bQpAQCAtMCwwICsxLDQ4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yLmgi
CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2ltcG9ydCAiSW5pdGlhbGl6ZVRo
cmVhZGluZy5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmgiCisjaW1wb3J0
ICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgiCisjaW1wb3J0IDxub3RpZnkuaD4KKyNpbXBv
cnQgPHhwYy94cGMuaD4KKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgPHd0
Zi9pb3MvV2ViQ29yZVRocmVhZC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBJbnNwZWN0b3Igewor
CitzdGF0aWMgdm9pZCBkaXNwYXRjaEFzeW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKHZv
aWQgKF5ibG9jaykoKSkKK3sKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKFdlYkNvcmVXZWJU
aHJlYWRJc0VuYWJsZWQgJiYgV2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCgpKSB7CisgICAgICAg
IFdlYkNvcmVXZWJUaHJlYWRSdW4oYmxvY2spOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9j
ayk7Cit9CisKK1JlbW90ZUluc3BlY3RvciYgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3I+IHNoYXJlZDsKKworICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBe
eworICAgICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICAgICAgV1RGOjppbml0
aWFsaXplTWFpblRocmVhZCgpOworICAgICAgICBzaGFyZWQuZ2V0KCkuc3RhcnQoKTsKKyAgICB9
KTsKKworICAgIHJldHVybiBzaGFyZWQ7Cit9CisKK1JlbW90ZUluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yKCkKKyAgICA6IG1fbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIoMSkKKyAgICAsIG1fbm90
aWZ5VG9rZW4oMCkKKyAgICAsIG1fZW5hYmxlZChmYWxzZSkKKyAgICAsIG1faGFzQWN0aXZlRGVi
dWdTZXNzaW9uKGZhbHNlKQorICAgICwgbV9wdXNoU2NoZWR1bGVkKGZhbHNlKQoreworfQorCit1
bnNpZ25lZCBSZW1vdGVJbnNwZWN0b3I6Om5leHRBdmFpbGFibGVJZGVudGlmaWVyKCkKK3sKKyAg
ICB1bnNpZ25lZCBuZXh0VmFsaWRJZGVudGlmaWVyOworICAgIGRvIHsKKyAgICAgICAgbmV4dFZh
bGlkSWRlbnRpZmllciA9IG1fbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIrKzsKKyAgICB9IHdoaWxl
ICghbmV4dFZhbGlkSWRlbnRpZmllciB8fCBuZXh0VmFsaWRJZGVudGlmaWVyID09IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB8fCBtX2RlYnVnZ2FibGVNYXAuY29udGFpbnMo
bmV4dFZhbGlkSWRlbnRpZmllcikpOworICAgIHJldHVybiBuZXh0VmFsaWRJZGVudGlmaWVyOwor
fQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVnaXN0ZXJEZWJ1Z2dhYmxlKFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
bG9jayk7CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gbmV4dEF2YWlsYWJsZUlkZW50aWZp
ZXIoKTsKKyAgICBkZWJ1Z2dhYmxlLT5zZXRJZGVudGlmaWVyKGlkZW50aWZpZXIpOworCisgICAg
YXV0byByZXN1bHQgPSBtX2RlYnVnZ2FibGVNYXAuc2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV9w
YWlyKGRlYnVnZ2FibGUsIGRlYnVnZ2FibGUtPmluZm8oKSkpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBpZiAoZGVidWdnYWJsZS0+cmVtb3Rl
RGVidWdnaW5nQWxsb3dlZCgpKQorICAgICAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30KKwordm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnVucmVnaXN0ZXJEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUqIGRlYnVnZ2FibGUpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gZGVidWdnYWJsZS0+aWRlbnRpZmllcigpOwor
ICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCB3YXNSZW1v
dmVkID0gbV9kZWJ1Z2dhYmxlTWFwLnJlbW92ZShpZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOworCisgICAgaWYgKFJlZlB0cjxSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC50
YWtlKGlkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5jbG9zZUZyb21EZWJ1Z2dhYmxl
KCk7CisKKyAgICBpZiAoZGVidWdnYWJsZS0+cmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpKQorICAg
ICAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0
ZURlYnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSkKK3sKKyAg
ICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIg
PSBkZWJ1Z2dhYmxlLT5pZGVudGlmaWVyKCk7CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fZGVidWdnYWJsZU1hcC5zZXQoaWRlbnRp
Zmllciwgc3RkOjptYWtlX3BhaXIoZGVidWdnYWJsZSwgZGVidWdnYWJsZS0+aW5mbygpKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBpZiAo
ZGVidWdnYWJsZS0+cmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpKQorICAgICAgICBwdXNoTGlzdGlu
Z1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGVG
cm9udGVuZCh1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBpZiAoIW1feHBjQ29ubmVjdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChpZGVudGlmaWVy
KTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIE5TRGljdGlv
bmFyeSAqdXNlckluZm8gPSBAeworICAgICAgICBXSVJSYXdEYXRhS2V5OiBbc3RhdGljX2Nhc3Q8
TlNTdHJpbmcgKj4obWVzc2FnZSkgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddLAorICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubmVjdGlvbi0+Y29u
bmVjdGlvbklkZW50aWZpZXIoKSwKKyAgICAgICAgV0lSRGVzdGluYXRpb25LZXk6IGNvbm5lY3Rp
b24tPmRlc3RpbmF0aW9uKCkKKyAgICB9OworCisgICAgbV94cGNDb25uZWN0aW9uLT5zZW5kTWVz
c2FnZShXSVJSYXdEYXRhTWVzc2FnZSwgdXNlckluZm8pOworfQorCit2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnQoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAg
aWYgKG1fZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9lbmFibGVkID0gdHJ1ZTsK
KworICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaChXSVJTZXJ2aWNlQXZhaWxhYmxlTm90aWZp
Y2F0aW9uLCAmbV9ub3RpZnlUb2tlbiwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRD
SF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXihpbnQpIHsKKyAgICAgICAgUmVtb3RlSW5z
cGVjdG9yOjpzaGFyZWQoKS5zZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCgpOworICAgIH0pOwor
CisgICAgbm90aWZ5X3Bvc3QoV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9u
KTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0b3AoKQoreworICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKCFtX2VuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fZW5hYmxlZCA9IGZhbHNlOworCisgICAgbV9wdXNoU2NoZWR1bGVkID0gZmFsc2U7
CisKKyAgICBmb3IgKGF1dG8gaXQgPSBtX2Nvbm5lY3Rpb25NYXAuYmVnaW4oKSwgZW5kID0gbV9j
b25uZWN0aW9uTWFwLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGl0LT52YWx1ZS0+
Y2xvc2UoKTsKKyAgICBtX2Nvbm5lY3Rpb25NYXAuY2xlYXIoKTsKKworICAgIHVwZGF0ZUhhc0Fj
dGl2ZURlYnVnU2Vzc2lvbigpOworCisgICAgaWYgKG1feHBjQ29ubmVjdGlvbikgeworICAgICAg
ICBtX3hwY0Nvbm5lY3Rpb24tPmNsb3NlKCk7CisgICAgICAgIG1feHBjQ29ubmVjdGlvbiA9IG51
bGxwdHI7CisgICAgfQorCisgICAgbm90aWZ5X2NhbmNlbChtX25vdGlmeVRva2VuKTsKK30KKwor
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCkKK3sKKyAg
ICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmIChtX3hwY0Nvbm5lY3Rpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiA9IHhw
Y19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2UoV0lSWFBDTWFjaFBvcnROYW1lLCBkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCAwKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIG1feHBjQ29ubmVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbj4oY29ubmVjdGlvbiwgdGhpcyk7CisgICAgbV94cGNDb25u
ZWN0aW9uLT5zZW5kTWVzc2FnZShAInN5biIsIG5pbCk7IC8vIFNlbmQgYSBzaW1wbGUgbWVzc2Fn
ZSB0byBpbml0aWFsaXplIHRoZSBYUEMgY29ubmVjdGlvbi4KKyAgICB4cGNfcmVsZWFzZShjb25u
ZWN0aW9uKTsKKworICAgIHB1c2hMaXN0aW5nU29vbigpOworfQorCisjcHJhZ21hIG1hcmsgLSBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQKKwordm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbiosIE5TU3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sK
KyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmIChbbWVzc2FnZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOldJUlBlcm1pc3Npb25EZW5pZWRdKSB7CisgICAgICAgIHN0b3AoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOldJUlNvY2tldERhdGFNZXNzYWdlXSkKKyAgICAgICAgcmVjZWl2ZWREYXRhTWVzc2Fn
ZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpX
SVJTb2NrZXRTZXR1cE1lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZFNldHVwTWVzc2FnZSh1c2Vy
SW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJXZWJQ
YWdlQ2xvc2VNZXNzYWdlXSkKKyAgICAgICAgcmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2UodXNlcklu
Zm8pOworICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSQXBwbGlj
YXRpb25HZXRMaXN0aW5nTWVzc2FnZV0pCisgICAgICAgIHJlY2VpdmVkR2V0TGlzdGluZ01lc3Nh
Z2UodXNlckluZm8pOworICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
V0lSSW5kaWNhdGVNZXNzYWdlXSkKKyAgICAgICAgcmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UodXNl
ckluZm8pOworICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSQ29u
bmVjdGlvbkRpZWRNZXNzYWdlXSkKKyAgICAgICAgcmVjZWl2ZWRDb25uZWN0aW9uRGllZE1lc3Nh
Z2UodXNlckluZm8pOworICAgIGVsc2UKKyAgICAgICAgTlNMb2coQCJVbnJlY29nbml6ZWQgUmVt
b3RlSW5zcGVjdG9yIFhQQyBNZXNzYWdlOiAlQCIsIG1lc3NhZ2VOYW1lKTsKK30KKwordm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25GYWlsZWQoUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbiopCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBtX3B1
c2hTY2hlZHVsZWQgPSBmYWxzZTsKKworICAgIGZvciAoYXV0byBpdCA9IG1fY29ubmVjdGlvbk1h
cC5iZWdpbigpLCBlbmQgPSBtX2Nvbm5lY3Rpb25NYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkK
KyAgICAgICAgaXQtPnZhbHVlLT5jbG9zZSgpOworICAgIG1fY29ubmVjdGlvbk1hcC5jbGVhcigp
OworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAgICBpZiAobV94cGND
b25uZWN0aW9uKSB7CisgICAgICAgIG1feHBjQ29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICAgICAg
bV94cGNDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yOjp4cGNDb25uZWN0aW9uVW5oYW5kbGVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uKiwgeHBjX29iamVjdF90KQoreworICAgIC8vIEludGVudGlvbmFsbHkgaWdub3JlZC4K
K30KKworI3ByYWdtYSBtYXJrIC0gTGlzdGluZ3MKKworTlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNw
ZWN0b3I6Omxpc3RpbmdGb3JEZWJ1Z2dhYmxlKGNvbnN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVJbmZvJiBkZWJ1Z2dhYmxlSW5mbykgY29uc3QKK3sKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5
ICpkZWJ1Z2dhYmxlRGV0YWlscyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwor
CisgICAgW2RlYnVnZ2FibGVEZXRhaWxzIHNldE9iamVjdDpAKGRlYnVnZ2FibGVJbmZvLmlkZW50
aWZpZXIpIGZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07CisKKyAgICBzd2l0Y2ggKGRlYnVn
Z2FibGVJbmZvLnR5cGUpIHsKKyAgICBjYXNlIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6Okph
dmFTY3JpcHQ6IHsKKyAgICAgICAgTlNTdHJpbmcgKm5hbWUgPSBkZWJ1Z2dhYmxlSW5mby5uYW1l
OworICAgICAgICBbZGVidWdnYWJsZURldGFpbHMgc2V0T2JqZWN0Om5hbWUgZm9yS2V5OldJUlRp
dGxlS2V5XTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6V2ViOiB7CisgICAgICAgIE5TU3RyaW5nICp1cmwgPSBkZWJ1Z2dhYmxlSW5m
by51cmw7CisgICAgICAgIE5TU3RyaW5nICp0aXRsZSA9IGRlYnVnZ2FibGVJbmZvLm5hbWU7Cisg
ICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6dXJsIGZvcktleTpXSVJVUkxLZXld
OworICAgICAgICBbZGVidWdnYWJsZURldGFpbHMgc2V0T2JqZWN0OnRpdGxlIGZvcktleTpXSVJU
aXRsZUtleV07CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKFJl
ZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG1f
Y29ubmVjdGlvbk1hcC5nZXQoZGVidWdnYWJsZUluZm8uaWRlbnRpZmllcikpCisgICAgICAgIFtk
ZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6Y29ubmVjdGlvbi0+Y29ubmVjdGlvbklkZW50aWZp
ZXIoKSBmb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOworCisgICAgaWYgKGRlYnVn
Z2FibGVJbmZvLmhhc0xvY2FsRGVidWdnZXIpCisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBz
ZXRPYmplY3Q6QFlFUyBmb3JLZXk6V0lSSGFzTG9jYWxEZWJ1Z2dlcktleV07CisKKyAgICByZXR1
cm4gZGVidWdnYWJsZURldGFpbHM7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlz
dGluZ05vdygpCit7CisgICAgQVNTRVJUKG1feHBjQ29ubmVjdGlvbik7CisgICAgaWYgKCFtX3hw
Y0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHVzaFNjaGVkdWxlZCA9IGZh
bHNlOworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IHJlc3BvbnNlID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKGF1dG8g
aXQgPSBtX2RlYnVnZ2FibGVNYXAuYmVnaW4oKSwgZW5kID0gbV9kZWJ1Z2dhYmxlTWFwLmVuZCgp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgY29uc3QgUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUluZm8mIGRlYnVnZ2FibGVJbmZvID0gaXQtPnZhbHVlLnNlY29uZDsKKyAgICAgICAgaWYg
KGRlYnVnZ2FibGVJbmZvLnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQpIHsKKyAgICAgICAgICAgIE5T
RGljdGlvbmFyeSAqZGV0YWlscyA9IGxpc3RpbmdGb3JEZWJ1Z2dhYmxlKGRlYnVnZ2FibGVJbmZv
KTsKKyAgICAgICAgICAgIFtyZXNwb25zZSBzZXRPYmplY3Q6ZGV0YWlscyBmb3JLZXk6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIldSIsIGRlYnVnZ2FibGVJbmZvLmlkZW50aWZpZXJdXTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBv
dXRnb2luZyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7Cisg
ICAgW291dGdvaW5nIHNldE9iamVjdDpyZXNwb25zZS5nZXQoKSBmb3JLZXk6V0lSTGlzdGluZ0tl
eV07CisKKyAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJUkxpc3RpbmdNZXNzYWdl
LCBvdXRnb2luZy5nZXQoKSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGlu
Z1Nvb24oKQoreworICAgIGlmICghbV94cGNDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9wdXNoU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3B1c2hT
Y2hlZHVsZWQgPSB0cnVlOworICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFU
Q0hfVElNRV9OT1csIDAuMDIgKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1
ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeeworICAgICAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgaWYgKG1fcHVzaFNjaGVkdWxlZCkKKyAg
ICAgICAgICAgIHB1c2hMaXN0aW5nTm93KCk7CisgICAgfSk7Cit9CisKKyNwcmFnbWEgbWFyayAt
IEFjdGl2ZSBEZWJ1Z2dlciBTZXNzaW9ucworCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRl
SGFzQWN0aXZlRGVidWdTZXNzaW9uKCkKK3sKKyAgICBib29sIGhhc0FjdGl2ZURlYnVnZ2VyU2Vz
c2lvbiA9ICFtX2Nvbm5lY3Rpb25NYXAuaXNFbXB0eSgpOworICAgIGlmIChoYXNBY3RpdmVEZWJ1
Z2dlclNlc3Npb24gPT0gbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24pCisgICAgICAgIHJldHVybjsK
KworICAgIG1faGFzQWN0aXZlRGVidWdTZXNzaW9uID0gaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9u
OworCisgICAgLy8gRklYTUU6IEV4cG9zZSBzb21lIHdheSB0byBhY2Nlc3MgdGhpcyBzdGF0ZSBp
biBhbiBlbWJlZGRlci4KKyAgICAvLyBMZWdhY3kgaU9TIFdlYktpdCAxIGhhZCBhIG5vdGlmaWNh
dGlvbi4gVGhpcyB3aWxsIG5lZWQgdG8gYmUgc21hcnRlciB3aXRoIFdlYktpdDIuCit9CisKKyNw
cmFnbWEgbWFyayAtIFJlY2VpdmVkIFhQQyBNZXNzYWdlcworCit2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBO
U051bWJlciAqcGFnZUlkID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmll
cktleV07CisgICAgaWYgKCFwYWdlSWQpCisgICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5n
ICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSQ29ubmVj
dGlvbklkZW50aWZpZXJLZXldOworICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nICpzZW5kZXIgPSBbdXNlckluZm8gb2JqZWN0Rm9y
S2V5OldJUlNlbmRlcktleV07CisgICAgaWYgKCFzZW5kZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBbcGFnZUlkIHVuc2lnbmVkSW50VmFsdWVdOworICAg
IGlmIChtX2Nvbm5lY3Rpb25NYXAuY29udGFpbnMoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gaXQgPSBtX2RlYnVnZ2FibGVNYXAuZmluZChpZGVudGlmaWVyKTsKKyAg
ICBpZiAoaXQgPT0gbV9kZWJ1Z2dhYmxlTWFwLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBBdHRlbXB0IHRvIGNyZWF0ZSBhIGNvbm5lY3Rpb24uIFRoaXMgbWF5IGZhaWwgaWYgdGhl
IHBhZ2UgYWxyZWFkeSBoYXMgYW4gaW5zcGVjdG9yIG9yIGlmIGl0IGRpc2FsbG93cyBpbnNwZWN0
aW9uLgorICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUgPSBpdC0+dmFs
dWUuZmlyc3Q7CisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gZGVidWdnYWJsZUlu
Zm8gPSBpdC0+dmFsdWUuc2Vjb25kOworICAgIFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlQ29ubmVjdGlvbihkZWJ1Z2dhYmxlLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc2Vu
ZGVyLCBkZWJ1Z2dhYmxlSW5mby50eXBlKSk7CisgICAgaWYgKCFjb25uZWN0aW9uLT5zZXR1cCgp
KSB7CisgICAgICAgIGNvbm5lY3Rpb24tPmNsb3NlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX2Nvbm5lY3Rpb25NYXAuc2V0KGlkZW50aWZpZXIsIGNvbm5lY3Rpb24ucmVsZWFz
ZSgpKTsKKworICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOworCisgICAgcHVzaExp
c3RpbmdTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERhdGFNZXNz
YWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFt1
c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOworICAgIGlmICghcGFn
ZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBwYWdlSWRlbnRpZmllciA9IFtw
YWdlSWQgdW5zaWduZWRJbnRWYWx1ZV07CisgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChwYWdlSWRl
bnRpZmllcik7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBO
U0RhdGEgKmRhdGEgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlNvY2tldERhdGFLZXldOwor
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gbWVzc2FnZSA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAg
ICBjb25uZWN0aW9uLT5zZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlLmdldCgpKTsKK30KKwor
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdlKE5TRGljdGlvbmFy
eSAqdXNlckluZm8pCit7CisgICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFt1c2VySW5mbyBvYmplY3RG
b3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOworICAgIGlmICghcGFnZUlkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbdXNlckluZm8g
b2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIWNvbm5l
Y3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBpZGVudGlm
aWVyID0gW3BhZ2VJZCB1bnNpZ25lZEludFZhbHVlXTsKKyAgICBSZWZQdHI8UmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0
KGlkZW50aWZpZXIpOworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFbY29ubmVjdGlvbklkZW50aWZpZXIgaXNFcXVhbFRvU3RyaW5nOmNvbm5lY3Rpb24t
PmNvbm5lY3Rpb25JZGVudGlmaWVyKCldKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25uZWN0
aW9uLT5jbG9zZSgpOworICAgIG1fY29ubmVjdGlvbk1hcC5yZW1vdmUoaWRlbnRpZmllcik7CisK
KyAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKKworICAgIHB1c2hMaXN0aW5nU29v
bigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRHZXRMaXN0aW5nTWVzc2Fn
ZShOU0RpY3Rpb25hcnkgKikKK3sKKyAgICBwdXNoTGlzdGluZ05vdygpOworfQorCit2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbykKK3sKKyAgICBOU051bWJlciAqcGFnZUlkID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpX
SVJQYWdlSWRlbnRpZmllcktleV07CisgICAgaWYgKCFwYWdlSWQpCisgICAgICAgIHJldHVybjsK
KworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBbcGFnZUlkIHVuc2lnbmVkSW50VmFsdWVdOwor
ICAgIEJPT0wgaW5kaWNhdGVFbmFibGVkID0gW1t1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSSW5k
aWNhdGVFbmFibGVkS2V5XSBib29sVmFsdWVdOworCisgICAgZGlzcGF0Y2hBc3luY09uUXVldWVT
YWZlRm9yQW55RGVidWdnYWJsZSheeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2Nr
KTsKKworICAgICAgICBhdXRvIGl0ID0gbV9kZWJ1Z2dhYmxlTWFwLmZpbmQoaWRlbnRpZmllcik7
CisgICAgICAgIGlmIChpdCA9PSBtX2RlYnVnZ2FibGVNYXAuZW5kKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSA9
IGl0LT52YWx1ZS5maXJzdDsKKyAgICAgICAgZGVidWdnYWJsZS0+c2V0SW5kaWNhdGluZyhpbmRp
Y2F0ZUVuYWJsZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2
ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBO
U1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJ
UkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGl0ID0gbV9jb25uZWN0aW9uTWFwLmJlZ2lu
KCk7CisgICAgYXV0byBlbmQgPSBtX2Nvbm5lY3Rpb25NYXAuZW5kKCk7CisgICAgZm9yICg7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoW2Nvbm5lY3Rpb25JZGVudGlmaWVyIGlzRXF1
YWxUb1N0cmluZzppdC0+dmFsdWUtPmNvbm5lY3Rpb25JZGVudGlmaWVyKCldKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKGl0ID09IGVuZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0
aW9uID0gaXQtPnZhbHVlOworICAgIGNvbm5lY3Rpb24tPmNsb3NlKCk7CisgICAgbV9jb25uZWN0
aW9uTWFwLnJlbW92ZShpdCk7CisKKyAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZhMWY5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50
cy5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFJlbW90ZUluc3BlY3RvckNvbnN0YW50c19oCisjZGVmaW5lIFJl
bW90ZUluc3BlY3RvckNvbnN0YW50c19oCisKKy8vIFdJUkNvbnN0YW50cyBhcmUgIldlYiBJbnNw
ZWN0b3IgUmVsYXkiIGNvbnN0YW50cyBzaGFyZWQgYmV0d2VlbgorLy8gdGhlIFdlYkluc3BlY3Rv
ciBmcmFtZXdvcmsgb24gdGhlIE9TIFggc2lkZSwgd2ViaW5zcGVjdG9yZCwgYW5kCisvLyBpT1Mg
V2ViS2l0IG9uIHRoZSBkZXZpY2Ugc2lkZS4KKworI2RlZmluZSBXSVJTaW11bGF0b3JUQ1BQb3J0
TnVtYmVyICAgICAgICAgICAgICAgMjc3NTMKKyNkZWZpbmUgV0lSWFBDTWFjaFBvcnROYW1lICAg
ICAgICAgICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yIgorI2RlZmluZSBXSVJT
ZXJ2aWNlQXZhaWxhYmxlTm90aWZpY2F0aW9uICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0
b3JkLmF2YWlsYWJsZSIKKyNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZp
Y2F0aW9uICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFiaWxpdHlfY2hlY2siCisjZGVm
aW5lIFdJUlNlcnZpY2VFbmFibGVkTm90aWZpY2F0aW9uICAgICAgICAgICAiY29tLmFwcGxlLndl
Ymluc3BlY3RvcmQuZW5hYmxlZCIKKyNkZWZpbmUgV0lSU2VydmljZURpc2FibGVkTm90aWZpY2F0
aW9uICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5kaXNhYmxlZCIKKworCisjZGVm
aW5lIFdJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSAgICAgICAgICAgICBAIldJUkFwcGxpY2F0
aW9uSWRlbnRpZmllcktleSIKKyNkZWZpbmUgV0lSQXBwbGljYXRpb25OYW1lS2V5ICAgICAgICAg
ICAgICAgICAgIEAiV0lSQXBwbGljYXRpb25OYW1lS2V5IgorI2RlZmluZSBXSVJJc0FwcGxpY2F0
aW9uUHJveHlLZXkgICAgICAgICAgICAgICAgQCJXSVJJc0FwcGxpY2F0aW9uUHJveHlLZXkiCisj
ZGVmaW5lIFdJUkhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkgICAgICAgICBAIldJUkhvc3RB
cHBsaWNhdGlvbklkZW50aWZpZXJLZXkiCisjZGVmaW5lIFdJUkhvc3RBcHBsaWNhdGlvbk5hbWVL
ZXkgICAgICAgICAgICAgICBAIldJUkhvc3RBcHBsaWNhdGlvbk5hbWVLZXkiCisjZGVmaW5lIFdJ
UkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5ICAgICAgICAgICAgICBAIldJUkNvbm5lY3Rpb25JZGVu
dGlmaWVyS2V5IgorI2RlZmluZSBXSVJQYWdlSWRlbnRpZmllcktleSAgICAgICAgICAgICAgICAg
ICAgQCJXSVJQYWdlSWRlbnRpZmllcktleSIKKyNkZWZpbmUgV0lSSGFzTG9jYWxEZWJ1Z2dlcktl
eSAgICAgICAgICAgICAgICAgIEAiV0lSSGFzTG9jYWxEZWJ1Z2dlcktleSIKKyNkZWZpbmUgV0lS
VGl0bGVLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSVGl0bGVLZXkiCisjZGVm
aW5lIFdJUlVSTEtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJUlVSTEtleSIK
KyNkZWZpbmUgV0lSVXNlckluZm9LZXkgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSVXNl
ckluZm9LZXkiCisjZGVmaW5lIFdJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleSAgICAgICAgICAg
ICBAIldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleSIKKyNkZWZpbmUgV0lSTWVzc2FnZURhdGFL
ZXkgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSTWVzc2FnZURhdGFLZXkiCisjZGVmaW5lIFdJ
UkFwcGxpY2F0aW9uR2V0TGlzdGluZ01lc3NhZ2UgICAgICAgICBAIldJUkFwcGxpY2F0aW9uR2V0
TGlzdGluZ01lc3NhZ2UiCisjZGVmaW5lIFdJUkluZGljYXRlTWVzc2FnZSAgICAgICAgICAgICAg
ICAgICAgICBAIldJUkluZGljYXRlTWVzc2FnZSIKKyNkZWZpbmUgV0lSSW5kaWNhdGVFbmFibGVk
S2V5ICAgICAgICAgICAgICAgICAgIEAiV0lSSW5kaWNhdGVFbmFibGVkS2V5IgorI2RlZmluZSBX
SVJTZW5kZXJLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJTZW5kZXJLZXkiCisj
ZGVmaW5lIFdJUlNvY2tldERhdGFLZXkgICAgICAgICAgICAgICAgICAgICAgICBAIldJUlNvY2tl
dERhdGFLZXkiCisjZGVmaW5lIFdJUlNvY2tldERhdGFNZXNzYWdlICAgICAgICAgICAgICAgICAg
ICBAIldJUlNvY2tldERhdGFNZXNzYWdlIgorI2RlZmluZSBXSVJTb2NrZXRTZXR1cE1lc3NhZ2Ug
ICAgICAgICAgICAgICAgICAgQCJXSVJTb2NrZXRTZXR1cE1lc3NhZ2UiCisjZGVmaW5lIFdJUldl
YlBhZ2VDbG9zZU1lc3NhZ2UgICAgICAgICAgICAgICAgICBAIldJUldlYlBhZ2VDbG9zZU1lc3Nh
Z2UiCisjZGVmaW5lIFdJUlJhd0RhdGFNZXNzYWdlICAgICAgICAgICAgICAgICAgICAgICBAIldJ
UlJhd0RhdGFNZXNzYWdlIgorI2RlZmluZSBXSVJSYXdEYXRhS2V5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQCJXSVJSYXdEYXRhS2V5IgorI2RlZmluZSBXSVJMaXN0aW5nTWVzc2FnZSAgICAg
ICAgICAgICAgICAgICAgICAgQCJXSVJMaXN0aW5nTWVzc2FnZSIKKyNkZWZpbmUgV0lSTGlzdGlu
Z0tleSAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSTGlzdGluZ0tleSIKKyNkZWZpbmUg
V0lSRGVzdGluYXRpb25LZXkgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSRGVzdGluYXRpb25L
ZXkiCisjZGVmaW5lIFdJUkNvbm5lY3Rpb25EaWVkTWVzc2FnZSAgICAgICAgICAgICAgICBAIldJ
UkNvbm5lY3Rpb25EaWVkTWVzc2FnZSIKKworLy8gVGhlc2UgZGVmaW5pdGlvbnMgYXJlIHNoYXJl
ZCB3aXRoIGEgU2ltdWxhdG9yIHdlYmluc3BlY3RvcmQgYW5kCisvLyBPUyBYIHByb2Nlc3MgY29t
bXVuaWNhdGluZyB3aXRoIGl0LgorCisjZGVmaW5lIFdJUlNpbXVsYXRvckJ1aWxkS2V5ICAgICAg
ICAgICAgICAgICAgICBAIldJUlNpbXVsYXRvckJ1aWxkS2V5IgorI2RlZmluZSBXSVJTaW11bGF0
b3JQcm9kdWN0VmVyc2lvbktleSAgICAgICAgICAgQCJXSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lv
bktleSIKKyNkZWZpbmUgV0lSU2ltdWxhdG9yTmFtZUtleSAgICAgICAgICAgICAgICAgICAgIEAi
V0lSU2ltdWxhdG9yTmFtZUtleSIKKworLy8gVGhlc2UgZGVmaW5pdGlvbnMgYXJlIHNoYXJlZCBi
ZXR3ZWVuIHdlYmluc3BlY3RvcmQgYW5kIFdlYktpdC4KKworI2RlZmluZSBXSVJQZXJtaXNzaW9u
RGVuaWVkICAgICAgICAgICAgICAgICAgICAgQCJXSVJQZXJtaXNzaW9uRGVuaWVkIgorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZmRmMWQ5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUu
Y3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZS5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3Iu
aCIKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6
OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUoKQorICAgIDogbV9pZGVudGlmaWVyKDApCisgICAg
LCBtX2FsbG93ZWQoZmFsc2UpCit7Cit9CisKK1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6On5S
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCkKK3sKKyAgICBSZW1vdGVJbnNwZWN0b3I6OnNoYXJl
ZCgpLnVucmVnaXN0ZXJEZWJ1Z2dhYmxlKHRoaXMpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGU6OmluaXQoKQoreworICAgIFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkucmVn
aXN0ZXJEZWJ1Z2dhYmxlKHRoaXMpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGU6OnVwZGF0ZSgpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS51cGRhdGVEZWJ1
Z2dhYmxlKHRoaXMpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OnNldFJl
bW90ZURlYnVnZ2luZ0FsbG93ZWQoYm9vbCBhbGxvd2VkKQoreworICAgIGlmIChtX2FsbG93ZWQg
PT0gYWxsb3dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hbGxvd2VkID0gYWxsb3dlZDsK
KworICAgIHVwZGF0ZSgpOworfQorCitSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjppbmZvKCkgY29uc3QKK3sKKyAgICBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlSW5mbyBpbmZvOworICAgIGluZm8uaWRlbnRpZmllciA9IGlkZW50aWZpZXIo
KTsKKyAgICBpbmZvLnR5cGUgPSB0eXBlKCk7CisgICAgaW5mby5uYW1lID0gbmFtZSgpOworICAg
IGluZm8udXJsID0gdXJsKCk7CisgICAgaW5mby5oYXNMb2NhbERlYnVnZ2VyID0gaGFzTG9jYWxE
ZWJ1Z2dlcigpOworICAgIGluZm8ucmVtb3RlRGVidWdnaW5nQWxsb3dlZCA9IHJlbW90ZURlYnVn
Z2luZ0FsbG93ZWQoKTsKKyAgICByZXR1cm4gaW5mbzsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45MDI3NGFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCkBAIC0wLDAgKzEsOTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisKKyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZV9o
CisjZGVmaW5lIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVfaAorCisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7CitzdHJ1Y3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm87
CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUgewor
cHVibGljOgorICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUoKTsKKyAgICB2aXJ0dWFsIH5S
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCk7CisKKyAgICB2b2lkIGluaXQoKTsKKyAgICB2b2lk
IHVwZGF0ZSgpOworCisgICAgdW5zaWduZWQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0SWRlbnRpZmllcih1bnNpZ25lZCBpZGVudGlmaWVy
KSB7IG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KKworICAgIGJvb2wgcmVtb3RlRGVidWdn
aW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZDsgfQorICAgIHZvaWQgc2V0UmVt
b3RlRGVidWdnaW5nQWxsb3dlZChib29sKTsKKworICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVJbmZvIGluZm8oKSBjb25zdDsKKworICAgIGVudW0gRGVidWdnYWJsZVR5cGUgeyBKYXZhU2Ny
aXB0LCBXZWIgfTsKKyAgICB2aXJ0dWFsIERlYnVnZ2FibGVUeXBlIHR5cGUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8v
IEphdmFTY3JpcHQgYW5kIFdlYgorICAgIHZpcnR1YWwgU3RyaW5nIHVybCgpIGNvbnN0IHsgcmV0
dXJuIFN0cmluZygpOyB9IC8vIFdlYgorICAgIHZpcnR1YWwgYm9vbCBoYXNMb2NhbERlYnVnZ2Vy
KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCkg
eyB9IC8vIERlZmF1bHQgaXMgdG8gZG8gbm90aGluZy4KKworcHJpdmF0ZToKKyAgICB1bnNpZ25l
ZCBtX2lkZW50aWZpZXI7CisgICAgYm9vbCBtX2FsbG93ZWQ7Cit9OworCitzdHJ1Y3QgUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZUluZm8geworICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJ
bmZvKCkKKyAgICAgICAgOiBpZGVudGlmaWVyKDApCisgICAgICAgICwgdHlwZShSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlOjpKYXZhU2NyaXB0KQorICAgICAgICAsIGhhc0xvY2FsRGVidWdnZXIo
ZmFsc2UpCisgICAgICAgICwgcmVtb3RlRGVidWdnaW5nQWxsb3dlZChmYWxzZSkKKyAgICB7Cisg
ICAgfQorCisgICAgdW5zaWduZWQgaWRlbnRpZmllcjsKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlOjpEZWJ1Z2dhYmxlVHlwZSB0eXBlOworICAgIFN0cmluZyBuYW1lOworICAgIFN0cmlu
ZyB1cmw7CisgICAgYm9vbCBoYXNMb2NhbERlYnVnZ2VyOworICAgIGJvb2wgcmVtb3RlRGVidWdn
aW5nQWxsb3dlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8g
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZV9oCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNGQ4ODIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCisKKyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b25faAorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbl9oCisKKyNp
bXBvcnQgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZS5oIgorI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbXBvcnQgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCitPQkpDX0NMQVNTIE5TU3RyaW5nOworCituYW1l
c3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24gRklOQUwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24+LCBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsK
K3B1YmxpYzoKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbihSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlKiwgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyLCBOU1N0
cmluZyAqZGVzdGluYXRpb24sIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkRlYnVnZ2FibGVU
eXBlKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbigp
OworCisgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKCkgY29uc3Q7CisgICAgTlNTdHJpbmcgKmNv
bm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CisgICAgdW5zaWduZWQgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgYm9vbCBzZXR1cCgpOworCisgICAg
dm9pZCBjbG9zZSgpOworICAgIHZvaWQgY2xvc2VGcm9tRGVidWdnYWJsZSgpOworCisgICAgdm9p
ZCBzZW5kTWVzc2FnZVRvQmFja2VuZChOU1N0cmluZyAqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworCitwcml2YXRlOgor
ICAgIHZvaWQgZGlzcGF0Y2hTeW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSk7CisgICAg
dm9pZCBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSk7CisKKyAgICAv
LyBUaGlzIGNvbm5lY3Rpb24gZnJvbSB0aGUgUmVtb3RlSW5zcGVjdG9yIHNpbmdsZXRvbiB0byB0
aGUgRGVidWdnYWJsZQorICAgIC8vIGNhbiBiZSB1c2VkIG9uIG11bHRpcGxlIHRocmVhZHMuIFNv
IGFueSBhY2Nlc3MgdG8gdGhlIGRlYnVnZ2FibGUKKyAgICAvLyBpdHNlbGYgbXVzdCB0YWtlIHRo
aXMgbG9jayB0byBlbnN1cmUgbV9kZWJ1Z2dhYmxlIGlzIHZhbGlkLgorICAgIE11dGV4IG1fZGVi
dWdnYWJsZUxvY2s7CisKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBtX2RlYnVnZ2Fi
bGU7CisgICAgZGlzcGF0Y2hfcXVldWVfdCBtX3F1ZXVlRm9yRGVidWdnYWJsZTsKKyAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IG1fY29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBtX2Rlc3RpbmF0aW9uOworICAgIHVuc2lnbmVkIG1faWRlbnRpZmllcjsKKyAgICBi
b29sIG1fY29ubmVjdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRp
ZiAvLyBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbl9oCisKKyNlbmRpZiAvLyBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1t
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNWZmZmVhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCkBAIC0w
LDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbXBvcnQg
IlJlbW90ZUluc3BlY3Rvci5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCA8d3RmL2lv
cy9XZWJDb3JlVGhyZWFkLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbihSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlLCBOU1N0
cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIsIE5TU3RyaW5nICpkZXN0aW5hdGlvbiwgUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUgdHlwZSkKKyAgICA6IG1fZGVidWdn
YWJsZShkZWJ1Z2dhYmxlKQorICAgICwgbV9xdWV1ZUZvckRlYnVnZ2FibGUoTlVMTCkKKyAgICAs
IG1fY29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgLCBtX2Rl
c3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgICwgbV9pZGVudGlmaWVyKGRlYnVnZ2FibGUtPmlk
ZW50aWZpZXIoKSkKKyAgICAsIG1fY29ubmVjdGVkKGZhbHNlKQoreworICAgIC8vIFdlYiBkZWJ1
Z2dhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIG9uIHRoZSBtYWluIHF1ZXVlIChvciB0aGUgV2ViVGhy
ZWFkIG9uIGlPUykuIFNpZ25hbCB0aGF0IHdpdGggYSBOVUxMIG1fcXVldWVGb3JEZWJ1Z2dhYmxl
LgorICAgIC8vIEhvd2V2ZXIsIEphdmFTY3JpcHQgZGVidWdnYWJsZXMgY2FuIGJlIGFjY2Vzc2Vk
IGZyb20gYW55IHRocmVhZC9xdWV1ZSwgc28gd2UgY3JlYXRlIGEgcXVldWUgZm9yIGVhY2ggSmF2
YVNjcmlwdCBkZWJ1Z2dhYmxlLgorICAgIGlmICh0eXBlID09IFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGU6OkphdmFTY3JpcHQpCisgICAgICAgIG1fcXVldWVGb3JEZWJ1Z2dhYmxlID0gZGlzcGF0
Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuSmF2YVNjcmlwdENvcmUucmVtb3RlLWluc3BlY3Rv
ci14cGMtY29ubmVjdGlvbiIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7Cit9CisKK1JlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjp+UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb24oKQoreworICAgIGlmIChtX3F1ZXVlRm9yRGVidWdnYWJsZSkgeworICAgICAgICBk
aXNwYXRjaF9yZWxlYXNlKG1fcXVldWVGb3JEZWJ1Z2dhYmxlKTsKKyAgICAgICAgbV9xdWV1ZUZv
ckRlYnVnZ2FibGUgPSBOVUxMOworICAgIH0KK30KKworTlNTdHJpbmcgKlJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uOjpkZXN0aW5hdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFtbbV9kZXN0aW5hdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07Cit9CisKK05TU3RyaW5nICpSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y29ubmVjdGlvbklkZW50aWZpZXIoKSBj
b25zdAoreworICAgIHJldHVybiBbW21fY29ubmVjdGlvbklkZW50aWZpZXIgY29weV0gYXV0b3Jl
bGVhc2VdOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpk
aXNwYXRjaFN5bmNPbkRlYnVnZ2FibGUodm9pZCAoXmJsb2NrKSgpKQoreworICAgIGlmIChtX3F1
ZXVlRm9yRGVidWdnYWJsZSkKKyAgICAgICAgZGlzcGF0Y2hfc3luYyhtX3F1ZXVlRm9yRGVidWdn
YWJsZSwgYmxvY2spOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBlbHNlIGlmIChXZWJDb3JlV2Vi
VGhyZWFkSXNFbmFibGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQoKSkKKyAgICAgICAg
V2ViQ29yZVdlYlRocmVhZFJ1blN5bmMoYmxvY2spOworI2VuZGlmCisgICAgZWxzZQorICAgICAg
ICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKK30KKwor
dm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0Y2hBc3luY09u
RGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpCit7CisgICAgaWYgKG1fcXVldWVGb3JEZWJ1Z2dh
YmxlKQorICAgICAgICBkaXNwYXRjaF9hc3luYyhtX3F1ZXVlRm9yRGVidWdnYWJsZSwgYmxvY2sp
OworI2lmIFBMQVRGT1JNKElPUykKKyAgICBlbHNlIGlmIChXZWJDb3JlV2ViVGhyZWFkSXNFbmFi
bGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQoKSkKKyAgICAgICAgV2ViQ29yZVdlYlRo
cmVhZFJ1bihibG9jayk7CisjZW5kaWYKKyAgICBlbHNlCisgICAgICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKK30KKworYm9vbCBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXAoKQoreworICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX2RlYnVnZ2FibGVMb2NrKTsKKworICAgIGlmICghbV9kZWJ1Z2dhYmxlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBkaXNwYXRjaFN5bmNPbkRlYnVnZ2FibGUoXnsKKyAgICAg
ICAgaWYgKCFtX2RlYnVnZ2FibGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAobV9kZWJ1Z2dhYmxlLT5oYXNMb2NhbERlYnVnZ2Vy
KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9kZWJ1Z2dhYmxlLT5jb25uZWN0
KHRoaXMpOworICAgICAgICBtX2Nvbm5lY3RlZCA9IHRydWU7CisgICAgfSk7CisKKyAgICByZXR1
cm4gbV9jb25uZWN0ZWQ7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb246OmNsb3NlRnJvbURlYnVnZ2FibGUoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X2RlYnVnZ2FibGVMb2NrKTsKKworICAgIG1fZGVidWdnYWJsZSA9IG51bGxwdHI7Cit9CisKK3Zv
aWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAgICBy
ZWYoKTsKKyAgICBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKF57CisgICAgICAgIHsKKyAgICAg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2FibGVMb2NrKTsKKworICAgICAgICAg
ICAgaWYgKG1fZGVidWdnYWJsZSkgeworICAgICAgICAgICAgICAgIGlmIChtX2Nvbm5lY3RlZCkK
KyAgICAgICAgICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlLT5kaXNjb25uZWN0KCk7CisKKyAgICAg
ICAgICAgICAgICBtX2RlYnVnZ2FibGUgPSBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGRlcmVmKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb246OnNlbmRNZXNzYWdlVG9CYWNrZW5kKE5TU3RyaW5nICptZXNz
YWdlKQoreworICAgIHJlZigpOworICAgIGRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUoXnsKKyAg
ICAgICAgeworICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGVidWdnYWJsZUxvY2sp
OworCisgICAgICAgICAgICBpZiAobV9kZWJ1Z2dhYmxlKQorICAgICAgICAgICAgICAgIG1fZGVi
dWdnYWJsZS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKG1lc3NhZ2UpOworICAg
ICAgICB9CisgICAgICAgIGRlcmVmKCk7CisgICAgfSk7Cit9CisKK2Jvb2wgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS5zZW5kTWVzc2Fn
ZVRvUmVtb3RlRnJvbnRlbmQoaWRlbnRpZmllcigpLCBtZXNzYWdlKTsKKworICAgIHJldHVybiB0
cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZjM2YWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
KworI2lmbmRlZiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uX2gKKyNkZWZpbmUgUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbl9oCisKKyNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+
CisjaW1wb3J0IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbXBvcnQgPHhwYy94cGMuaD4KKworT0JK
Q19DTEFTUyBOU1N0cmluZzsKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OworCituYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKKworY2xhc3MgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbik7CisKK3B1
YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+
Q2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uUmVjZWl2ZWRN
ZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCBOU1N0cmluZyAqbWVzc2FnZU5h
bWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHhw
Y0Nvbm5lY3Rpb25GYWlsZWQoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiopID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3QpID0gMDsKKyAgICB9OworCisgICAg
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90LCBDbGllbnQqKTsK
KyAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKCk7CisKKyAgICB2b2lk
IGNsb3NlKCk7CisgICAgdm9pZCBzZW5kTWVzc2FnZShOU1N0cmluZyAqbWVzc2FnZU5hbWUsIE5T
RGljdGlvbmFyeSAqdXNlckluZm8pOworCitwcml2YXRlOgorICAgIE5TRGljdGlvbmFyeSAqZGVz
ZXJpYWxpemVNZXNzYWdlKHhwY19vYmplY3RfdCk7CisgICAgdm9pZCBoYW5kbGVFdmVudCh4cGNf
b2JqZWN0X3QpOworCisgICAgeHBjX2Nvbm5lY3Rpb25fdCBtX2Nvbm5lY3Rpb247CisgICAgZGlz
cGF0Y2hfcXVldWVfdCBtX3F1ZXVlOworICAgIENsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb25faAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iN2NmMjZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpAQCAt
MCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbi5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKworI2lmIF9f
aGFzX2luY2x1ZGUoPENvcmVGb3VuZGF0aW9uL0NGWFBDQnJpZGdlLmg+KQorI2ltcG9ydCA8Q29y
ZUZvdW5kYXRpb24vQ0ZYUENCcmlkZ2UuaD4KKyNlbHNlCitleHRlcm4geHBjX29iamVjdF90IF9D
RlhQQ0NyZWF0ZVhQQ01lc3NhZ2VXaXRoQ0ZPYmplY3QoQ0ZUeXBlUmVmKTsKK2V4dGVybiBDRlR5
cGVSZWYgX0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4cGNfb2JqZWN0X3QpOwor
I2VuZGlmCisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCisvLyBDb25zdGFudHMgcHJpdmF0ZSB0
byB0aGlzIGZpbGUgZm9yIG1lc3NhZ2Ugc2VyaWFsaXphdGlvbiBvbiBib3RoIGVuZHMuCisjZGVm
aW5lIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25NZXNzYWdlTmFtZUtleSBAIm1lc3NhZ2VO
YW1lIgorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uVXNlckluZm9LZXkgQCJ1
c2VySW5mbyIKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRN
ZXNzYWdlS2V5ICJtc2dEYXRhIgorCitSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgQ2xp
ZW50KiBjbGllbnQpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fcXVl
dWUoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuSmF2YVNjcmlwdENvcmUucmVtb3Rl
LWluc3BlY3Rvci14cGMtY29ubmVjdGlvbiIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpCisgICAg
LCBtX2NsaWVudChjbGllbnQpCit7CisgICAgeHBjX3JldGFpbihtX2Nvbm5lY3Rpb24pOworICAg
IHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUobV9jb25uZWN0aW9uLCBtX3F1ZXVlKTsK
KyAgICBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiB3ZWFrVGhpcyA9IHRoaXM7CisgICAg
eHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uLCBeKHhwY19vYmpl
Y3RfdCBvYmplY3QpIHsKKyAgICAgICAgd2Vha1RoaXMtPmhhbmRsZUV2ZW50KG9iamVjdCk7Cisg
ICAgfSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1fY29ubmVjdGlvbik7Cit9CisKK1Jl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246On5SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
KCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50KTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7
Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAg
IGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICB4cGNfY29ubmVjdGlv
bl9jYW5jZWwobV9jb25uZWN0aW9uKTsKKyAgICB4cGNfcmVsZWFzZShtX2Nvbm5lY3Rpb24pOwor
ICAgIG1fY29ubmVjdGlvbiA9IE5VTEw7CisKKyAgICBkaXNwYXRjaF9yZWxlYXNlKG1fcXVldWUp
OworICAgIG1fcXVldWUgPSBOVUxMOworCisgICAgbV9jbGllbnQgPSBudWxscHRyOworfQorCitO
U0RpY3Rpb25hcnkgKlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVz
c2FnZSh4cGNfb2JqZWN0X3Qgb2JqZWN0KQoreworICAgIGlmICh4cGNfZ2V0X3R5cGUob2JqZWN0
KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgeHBj
X29iamVjdF90IHhwY0RpY3Rpb25hcnkgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUob2JqZWN0
LCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXkpOworICAg
IGlmICgheHBjRGljdGlvbmFyeSB8fCB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgIT0gWFBD
X1RZUEVfRElDVElPTkFSWSkgeworICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAgICAgICBt
X2NsaWVudC0+eHBjQ29ubmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UodGhpcywgb2JqZWN0KTsKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkg
PSBzdGF0aWNfY2FzdDxOU0RpY3Rpb25hcnkgKj4oX0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBD
TWVzc2FnZSh4cGNEaWN0aW9uYXJ5KSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkaWN0aW9u
YXJ5LCAiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7CisgICAgcmV0dXJuIFtk
aWN0aW9uYXJ5IGF1dG9yZWxlYXNlXTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3Qgb2JqZWN0KQoreworICAgIGlmICghbV9j
b25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoeHBjX2dldF90eXBlKG9iamVj
dCkgPT0gWFBDX1RZUEVfRVJST1IpIHsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAg
ICAgbV9jbGllbnQtPnhwY0Nvbm5lY3Rpb25GYWlsZWQodGhpcyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBOU0RpY3Rpb25hcnkgKmRhdGFEaWN0aW9uYXJ5ID0gZGVzZXJpYWxpemVN
ZXNzYWdlKG9iamVjdCk7CisgICAgaWYgKCFkYXRhRGljdGlvbmFyeSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBbZGF0YURpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5
OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25NZXNzYWdlTmFtZUtleV07CisgICAgTlNEaWN0
aW9uYXJ5ICp1c2VySW5mbyA9IFtkYXRhRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6UmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5XTsKKyAgICBpZiAobV9jbGllbnQpCisgICAg
ICAgIG1fY2xpZW50LT54cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKHRoaXMsIG1lc3NhZ2Us
IHVzZXJJbmZvKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5k
TWVzc2FnZShOU1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7
CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aE9iamVjdDptZXNzYWdlTmFtZSBmb3JLZXk6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bk1lc3NhZ2VOYW1lS2V5XTsKKyAgICBpZiAodXNlckluZm8pCisgICAgICAgIFtkaWN0aW9uYXJ5
IHNldE9iamVjdDp1c2VySW5mbyBmb3JLZXk6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblVz
ZXJJbmZvS2V5XTsKKworICAgIHhwY19vYmplY3RfdCB4cGNEaWN0aW9uYXJ5ID0gX0NGWFBDQ3Jl
YXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoQ0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkpOwor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoeHBjRGljdGlvbmFyeSAmJiB4cGNfZ2V0X3R5cGUoeHBj
RGljdGlvbmFyeSkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSwgIlVuYWJsZSB0byBzZXJpYWxpemUg
eHBjIG1lc3NhZ2UiKTsKKyAgICBpZiAoIXhwY0RpY3Rpb25hcnkpCisgICAgICAgIHJldHVybjsK
KworICAgIHhwY19vYmplY3RfdCBtc2cgPSB4cGNfZGljdGlvbmFyeV9jcmVhdGUoTlVMTCwgTlVM
TCwgMCk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1zZywgUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5LCB4cGNEaWN0aW9uYXJ5KTsKKyAgICB4
cGNfcmVsZWFzZSh4cGNEaWN0aW9uYXJ5KTsKKworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVz
c2FnZShtX2Nvbm5lY3Rpb24sIG1zZyk7CisKKyAgICB4cGNfcmVsZWFzZShtc2cpOworfQorCit9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwppbmRleCAyMDYzMTQ3Li40ZDYzMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTEx
LTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1h
bmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvaW9zL1dlYkNvcmVUaHJlYWQuY3BwOgorICAgICAg
ICAqIHd0Zi9pb3MvV2ViQ29yZVRocmVhZC5oOgorICAgICAgICBFeHBvc2UgV2ViVGhyZWFkUnVu
L1dlYlRocmVhZFJ1blN5bmMgaU9TIG1ldGhvZHMgZGVmaW5lZCBpbiBXZWJDb3JlIHRocm91Z2gK
KyAgICAgICAgV1RGIHNvIHRoYXQgSmF2YVNjcmlwdENvcmUgY2FuIHVzZSBpdC4gQW5vdGhlciBz
dWNoIG1ldGhvZCBhbHJlYWR5IGV4aXN0ZWQuCisKIDIwMTMtMTEtMjAgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjaW5nIFZNRW50cnlTY29wZSB0byB1
cGRhdGUgdGhlIFZNIHN0YWNrIGxpbWl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvaW9z
L1dlYkNvcmVUaHJlYWQuY3BwIGIvU291cmNlL1dURi93dGYvaW9zL1dlYkNvcmVUaHJlYWQuY3Bw
CmluZGV4IDQyNzQ0NjYuLmYwN2RjMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2lvcy9X
ZWJDb3JlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5j
cHAKQEAgLTI4LDQgKzI4LDcgQEAKIAogI2lmIFVTRShXRUJfVEhSRUFEKQogV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKSh2b2lkKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBib29sICgqV2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCkodm9p
ZCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCAoKldlYkNvcmVXZWJUaHJlYWRSdW4pKHZvaWQg
KF5ibG9jaykoKSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCAoKldlYkNvcmVXZWJUaHJlYWRS
dW5TeW5jKSh2b2lkICheYmxvY2spKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5oIGIvU291cmNlL1dURi93dGYvaW9zL1dlYkNvcmVUaHJl
YWQuaAppbmRleCAxMGUyNmE3Li44MTljZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9p
b3MvV2ViQ29yZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFk
LmgKQEAgLTMzLDYgKzMzLDkgQEAgZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogZXh0ZXJuIGJvb2wg
KCpXZWJDb3JlV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKSh2b2lkKTsKK2V4dGVybiBib29s
ICgqV2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCkodm9pZCk7CitleHRlcm4gdm9pZCAoKldlYkNv
cmVXZWJUaHJlYWRSdW4pKHZvaWQgKF5ibG9jaykoKSk7CitleHRlcm4gdm9pZCAoKldlYkNvcmVX
ZWJUaHJlYWRSdW5TeW5jKSh2b2lkICheYmxvY2spKCkpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMK
IH0K
</data>
<flag name="commit-queue"
          id="240894"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217725</attachid>
            <date>2013-11-22 16:16:40 -0800</date>
            <delta_ts>2013-12-02 12:33:25 -0800</delta_ts>
            <desc>[PATCH] Part 1 - JSC remote inspector debugging connection management</desc>
            <filename>part1d.patch</filename>
            <type>text/plain</type>
            <size>73256</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGNiYzE2NTkuLmZjMWI5NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2gg
UmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2
YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNDYxMworCisgICAgICAgIE1vdmUgdGhlIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSBy
ZW1vdGUgZGVidWdnZXIgY29ubmVjdGlvbiBtYW5hZ2VtZW50CisgICAgICAgIGludG8gSmF2YVNj
cmlwdENvcmUgKG9yaWdpbmFsbHkgZnJvbSBXZWJLaXQvbWFjKS4gSW5jbHVkZSBlbmhhbmNlbWVu
dHM6CisKKyAgICAgICAgICAqIGFsbG93IGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgcmVtb3RlIGRl
YnVnZ2FibGUgdGFyZ2V0cywKKyAgICAgICAgICAgIGV2ZW50dWFsbHkgYXQgbGVhc3QgYSBKU0Nv
bnRleHQsIFdlYlZpZXcsIFdLVmlldy4KKyAgICAgICAgICAqIGFsbG93IGRlYnVnZ2FibGVzIHRv
IGJlIHJlZ2lzdGVyZWQgYW5kIGRlYnVnZ2VkIG9uIGFueSB0aHJlYWQuIFVubGlrZQorICAgICAg
ICAgICAgV2ViVmlld3MsIEpTQ29udGV4dHMgbWF5IGJlIHJ1biBlbnRpcmVseSBvZmYgb2YgdGhl
IG1haW4gdGhyZWFkLgorICAgICAgICAgICogbW92ZSB0aGUgcmVtb3RlIGNvbm5lY3Rpb24gKFhQ
QyBjb25uZWN0aW9uKSBpdHNlbGYgb2ZmIG9mIHRoZSBtYWluIHRocmVhZCwKKyAgICAgICAgICAg
IGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6flJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlOjppbml0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6dXBkYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluZm8pOgorICAgICAgICBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlIGRlZmluZXMgYSBkZWJ1Z2dhYmxlIHRhcmdldC4gQXMgbG9uZyBhcwor
ICAgICAgICBzb21ldGhpbmcgY3JlYXRlcyBhIGRlYnVnZ2FibGUgYW5kIGlzIHNldCB0byBhbGxv
dyByZW1vdGUgaW5zcGVjdGlvbgorICAgICAgICBpdCB3aWxsIGJlIGxpc3RlZCBpbiByZW1vdGUg
ZGVidWdnZXJzLiBGb3IgdGhlIGRpZmZlcmVudCB0eXBlcyBvZgorICAgICAgICBkZWJ1Z2dhYmxl
cyAoSmF2YVNjcmlwdCBhbmQgV2ViKSB0aGVyZSBpcyBkaWZmZXJlbnQgYmFzaWMgaW5mb3JtYXRp
b24KKyAgICAgICAgdGhhdCBtYXkgYmUgbGlzdGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsOjp+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKToKKyAgICAg
ICAgVGhlIG9ubHkgdGhpbmcgYSBkZWJ1Z2dhYmxlIG5lZWRzIGZvciByZW1vdGUgZGVidWdnaW5n
IGlzIGFuCisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBhIHdheSB0byBzZW5kIG1l
c3NhZ2VzIHRvIGEgcmVtb3RlIGZyb250ZW5kLgorICAgICAgICBUaGlzIGNsYXNzIHByb3ZpZGVz
IHRoYXQgbWV0aG9kLCBhbmQgaXMgdmVuZGVkIHRvIHRoZQorICAgICAgICBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlIHdoZW4gYSByZW1vdGUgY29ubmVjdGlvbiBpcyBzZXR1cC4KKworICAgICAg
ICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOiBBZGRlZC4KKyAgICAgICAgU2lu
Z2xldG9uLCBjcmVhdGVkIGF0IGxlYXN0IHdoZW4gdGhlIGZpcnN0IERlYnVnZ2FibGUgaXMgY3Jl
YXRlZC4KKyAgICAgICAgVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBsaXN0IG9mIGRlYnVnZ2FibGVz
LCBhbnkgY29ubmVjdGlvbiB0byBhCisgICAgICAgIHJlbW90ZSBkZWJ1Z2dlciBwcm94eSAoWFBD
IHNlcnZpY2UgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiKS4KKworICAgICAgICAoSW5zcGVjdG9y
OjpkaXNwYXRjaEFzeW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3Rvcjo6bmV4dEF2YWlsYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlckRlYnVnZ2FibGUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGUpOgorICAgICAgICBE
ZWJ1Z2dhYmxlIG1hbmFnZW1lbnQuIFdoZW4gZGVidWdnYWJsZXMgYXJlIGFkZGVkLCByZW1vdmVk
LCBvciB1cGRhdGVkCisgICAgICAgIHdlIHN0YXNoIGEgY29weSBvZiB0aGUgZGVidWdnYWJsZSBp
bmZvcm1hdGlvbiBhbmQgcHVzaCBhbiB1cGRhdGUgdG8KKyAgICAgICAgZGVidWdnZXJzLiBTdGFz
aGluZyBhIGNvcHkgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBSZW1vdGVJbnNwZWN0b3IKKyAg
ICAgICAgaXMgYSB0aHJlYWQgc2FmZSB3YXkgdG8gYXZvaWQgd2Fsa2luZyBvdmVyIGFsbCBkZWJ1
Z2dhYmxlcyB0byBnYXRoZXIKKyAgICAgICAgdGhlIGluZm9ybWF0aW9uIHdoZW4gaXQgaXMgbmVl
ZGVkLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0b3ApOgorICAgICAgICBSdW50aW1l
IEFQSSB0byBlbmFibGUgLyBkaXNhYmxlIHRoZSBmZWF0dXJlLgorCisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nTm93KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ1Nvb24pOgorICAgICAgICBQdXNoaW5n
IGEgbGlzdGluZyB0byByZW1vdGUgZGVidWdnZXJzLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVk
TWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVj
dGlvbkZhaWxlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29u
bmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UpOgorICAgICAgICBYUEMgc2V0dXAsIHNlbmQsIGFuZCBy
ZWNlaXZlIGhhbmRsaW5nLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKToKKyAgICAgICAgQXBwbGljYXRpb25zIGJlaW5n
IGRlYnVnZ2VkIG1heSB3YW50IHRvIGtub3cgd2hlbiBhIGRlYnVnCisgICAgICAgIHNlc3Npb24g
aXMgYWN0aXZlLiBUaGlzIHByb3ZpZGVzIHRoYXQgbm90aWZpY2F0aW9uLgorCisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldExpc3Rp
bmdNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZl
ZEluZGljYXRlTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6
cmVjZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UpOgorICAgICAgICBEaXNwYXRjaGluZyBpbmNv
bWluZyByZW1vdGUgZGVidWdnaW5nIHByb3RvY29sIG1lc3NhZ2VzLgorICAgICAgICBUaGVzZSBh
cmUgd3JhcHBpbmcgYWJvdmUgdGhlIGluc3BlY3RvciBwcm90b2NvbCBtZXNzYWdlcy4KKworICAg
ICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg6IEFkZGVk
LgorICAgICAgICBQcm90b2NvbCBtZXNzYWdlcyBhbmQgZGljdGlvbmFyeSBrZXlzIGluc2lkZSB0
aGUgbWVzc2FnZXMuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUluZm86OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg6IEFkZGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb24ubW06IEFkZGVkLgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVu
IHRoZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb246OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246On5SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbik6CisgICAgICAgIEFsbG93IGZvciBkaXNwYXRj
aGluZyBtZXNzYWdlcyBvbiBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzIG9uIGEgZGlzcGF0Y2hfcXVl
dWUKKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgbWFpbiBxdWV1ZS4KKworICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGVzdGluYXRpb24pOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBOZWVkZWQgaW4gdGhlIHJlbW90ZSBkZWJ1
Z2dpbmcgcHJvdG9jb2wgdG8gaWRlbnRpZnkgdGhlIHJlbW90ZSBkZWJ1Z2dlci4KKworICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0
Y2hTeW5jT25EZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXAp
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bjo6Y2xvc2VGcm9tRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICBUaGUgY29ubmVjdGlvbiBpcyBhIHRo
aW4gY2hhbm5lbCBiZXR3ZWVuIHRoZSB0d28gc2lkZXMgdGhhdCBjYW4gYmUgY2xvc2VkCisgICAg
ICAgIGZyb20gZWl0aGVyIHNpZGUsIHNvIHRoZXJlIGlzIHNvbWUgbG9naWMgYXJvdW5kIG11bHRp
LXRocmVhZGVkIGFjY2Vzcy4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50Ojp+Q2xpZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06IEFkZGVkLgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24pOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVz
c2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246
OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3
ZWVuIHRoZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhbiBYUEMgc2VydmljZQorICAg
ICAgICBuYW1lZCAiY29tLmFwcGxlLndlYmluc3BlY3RvciIuIFRoaXMgaGFuZGxlcyBzZXJpYWxp
emF0aW9uIG9mIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1lc3NhZ2VzIHRvIGFuZCBmcm9tIHRo
ZSBzZXJ2aWNlLiBUaGUgcmVjZWl2aW5nIGlzIGRvbmUgb24gYSBub24tbWFpbiBxdWV1ZS4KKwog
MjAxMy0xMS0yMSAgQmFsYXpzIEtpbHZhZHkgIDxraWx2YWR5YkBob21lamlubmkuY29tPgogCiAg
ICAgICAgIFtNSVBTXSBCdWlsZCBmYWlscyBzaW5jZSByMTU5NTQ1LgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBhM2ZiMGRhMy4uMDAyMjM0NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTg4Myw2ICs4ODMsMTYgQEAKIAkJQTE3MTJCNDExMUM3QjIzNTAwN0E1MzE1
IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQTAwOUMwMTgzMUEyMkQw
MENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQzE1NkVFRDNCMDA1NjZDQjIgLyogTWFjcm9B
c3NlbWJsZXJBUk02NC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0IxNTZF
RUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU5NDU1OEYxODI0NUVGRDAwQ0MzODQzIC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OEUxODI0NUVERTAwQ0MzODQzIC8qIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUuY3BwICovOyB9OworCQlBNTk0NTU5NTE4MjQ3OUVCMDBDQzM4NDMgLyog
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTExODIz
NDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBS
ZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tICov
OyB9OworCQlBNUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3Rh
bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJB
MTVFMzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVCQTE1RUIxODIz
NDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNDE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCAqLzsg
fTsKKwkJQTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uLm1tICovOyB9OworCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJFNjkgLyogUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24uaCAqLzsgfTsKKwkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLzsgfTsKKwkJQTVCQTE1RjAxODIzNDVBRjAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUVGMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTcwMDg3MzkxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVj
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCUE3
MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQz
IC8qIE1hcENvbnN0cnVjdG9yLmggKi87IH07CiAJCUE3MDA4NzNEMTdDQkU4RDMwMEMzRTY0MyAv
KiBNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi87
IH07CkBAIC0yMTkwLDYgKzIyMDAsMTYgQEAKIAkJQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8q
IFJlZ0V4cENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
Z0V4cENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCM0UxMUM3
QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEy
QjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1
OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUuY3BwOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5NDU1OTQxODI0NzlFQjAw
Q0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaDsgcGF0aCA9IGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3IuaDsgcGF0aCA9IGluc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE1QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3IubW07IHBh
dGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTMxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
ckNvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVJbnNw
ZWN0b3JDb25zdGFudHMuaDsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
Q29uc3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QkExNUU0MTgyMzQw
QjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29u
bmVjdGlvbi5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFNTE4
MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE1QkExNUU2MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24uaDsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFNzE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24ubW07IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QkExNUVGMTgyMzQ1QUYwMEE4
MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaDsgcGF0aCA9IGluc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzAwODczNzE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFwQ29uc3RydWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzAwODczODE3Q0JFODUzMDBDM0U2NDMg
LyogTWFwQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFw
Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwMDg3M0IxN0NC
RThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNYXBQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjY4OCw2ICsyNzA4LDcgQEAKIAkJCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcgLyog
RnJhbWV3b3JrcyAqLywKIAkJCQkwRkVBMDlGQzE3MDUxMzdGMDBCQjcyMkMgLyogZnRsICovLAog
CQkJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovLAorCQkJCUE1QkExNURGMTgy
MzQwOTIwMEE4MkU2OSAvKiBpbnNwZWN0b3IgKi8sCiAJCQkJMTQyOUQ3N0EwRUQyMEQ3MzAwQjg5
NjE5IC8qIGludGVycHJldGVyICovLAogCQkJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBq
aXQgKi8sCiAJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovLApAQCAtNDEz
Niw2ICs0MTU3LDMxIEBACiAJCQlwYXRoID0gYnl0ZWNvZGU7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQlBNUJBMTVERjE4MjM0MDkyMDBBODJFNjkgLyogaW5zcGVjdG9yICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBNUJBMTVFMDE4
MjM0MDlEMDBBODJFNjkgLyogcmVtb3RlICovLAorCQkJCUE1OTQ1NTk0MTgyNDc5RUIwMENDMzg0
MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLywKKwkJCSk7CisJCQluYW1lID0gaW5z
cGVjdG9yOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQTVCQTE1RTAxODIz
NDA5RDAwQTgyRTY5IC8qIHJlbW90ZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJQTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
ci5oICovLAorCQkJCUE1QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3Iu
bW0gKi8sCisJCQkJQTVCQTE1RTMxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckNv
bnN0YW50cy5oICovLAorCQkJCUE1QkExNUVGMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlLmggKi8sCisJCQkJQTU5NDU1OEUxODI0NUVERTAwQ0MzODQzIC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwICovLAorCQkJCUE1QkExNUU0MTgyMzQwQjMwMEE4
MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oICovLAorCQkJCUE1
QkExNUU1MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbi5tbSAqLywKKwkJCQlBNUJBMTVFNjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5oICovLAorCQkJCUE1QkExNUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSByZW1v
dGU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAt
NDIwNiw2ICs0MjUyLDcgQEAKIAkJCQk4NjY3MzlEMjEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50
ZWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4MTZFMUMxNTRDQzU2QzAwQjgwNTRDIC8qIEJs
b2NrQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFQzBFMTZGNUNEMDBCMzQ0
NjAgLyogQm9vbGVhbk9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RUExODIzNDBC
NDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCN0YzOTgxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseUlubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZl
bnRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTQyNzUsNiArNDMyMiw3IEBACiAJCQkJMEYxNjAx
NUUxNTYxOThDOTAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMDVDM0I0MTY4M0NGOTIwMEJBRjQ1QiAvKiBERkdBcnJheWlm
eVNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ4NTE1RTQ4MTFC
MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUJBMTVFQjE4
MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUE3RDlBMjk1MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdBdFRhaWxB
YnN0cmFjdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcxNENBNTE2RUE5MkYyMDBGM0VC
RUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY2MjAxNzYxNDNGQ0QzQjAwNjhCNzdDIC8qIERGR0Jhc2ljQmxvY2suaCBpbiBIZWFkZXJzICov
LApAQCAtNDM1MCw2ICs0Mzk4LDcgQEAKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJDNDAgLyog
REZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5
NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE1QkExNUVEMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyog
REZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NzEx
NDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY3MDI1QUExNzE0QjBGQzAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5o
IGluIEhlYWRlcnMgKi8sCkBAIC00NDk5LDYgKzQ1NDgsNyBAQAogCQkJCTg2Q0NFRkRFMEY0MTNG
ODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA3NzZCRjE0RkYw
MDJCMDAxMDIzMzIgLyogSklUQ29tcGlsYXRpb25FZmZvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQUY3RUZFMTY1QkE5MUYwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE1QkExNUYwMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTRFMUYxODEyNEFDRTAwOUI2
QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkND
ODVBMTBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC00
NjcwLDYgKzQ3MjAsNyBAQAogCQkJCTE0RDJGM0RCMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRT
cGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRDZGMTIxMzUzOUE0MTAwQjAyRTg2IC8qIE1h
cmtTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIxMTIyRTMxNUREOUFCMzAwNzkwRTNBIC8q
IE1hcmtTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTQ1NTk1MTgyNDc5RUIw
MENDMzg0MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0M0MwRTE2RjVDRDAwQjM0NDYwIC8qIE1hdGhPYmplY3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkwMjEzRTNFMTIzQTQwQzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTQ4MzcsNiArNDg4OCw3IEBACiAJCQkJMTQyRTMxM0MxMzRGRjBB
NjAwQUZBREI1IC8qIFdlYWsuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RTg0RjlGMTRFRTFBQ0Mw
MEQ2RDVENCAvKiBXZWFrQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QkZDRTY5MTBDREIx
RkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1QkExNUU4MTgy
MzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
RjcyNTY2MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0RTg0RkEyMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrSW1wbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTRCRTdEMzMxNzEzNUNGNDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTU1OTIsNiArNTY0NCw3IEBACiAJCQkJMTQ0NjlEREUxMDdFQzdFNzAwNjUw
NDQ2IC8qIExvb2t1cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBDQzE0QkJCMTdBMDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEI3
MjNCMjEyRDdEQTQ2MDAzQkQ1RUQgLyogTWFjaGluZVN0YWNrTWFya2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUIzRUNGMTYyMzdGNkMwMEFCNjdBRCAv
KiBNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkM1NjhFMDExQTIxM0VF
MDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcy
OTAwOUMxNzk3NkM2MDAwMzE3Mjk4IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC01NzE5LDYgKzU3NzIsOSBAQAogCQkJCUE3Q0EzQUU1MTdEQTQxQUUwMDY1MzhB
RiAvKiBXZWFrTWFwUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RTg0RkEwMTRF
RTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzgxNTBC
MTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4g
U291cmNlcyAqLywKKwkJCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQlBNUJBMTVFRTE4
MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3RTVBQjNBMTc5OUU0QjIwMEQyODMzRCAvKiBYODZEaXNhc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYzQzZEOUMxNTIxMTExQTAwNTg1RTRFIC8qIFlhcnJD
YW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg0MTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTBhOGVhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxf
aAorI2RlZmluZSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAorCisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwgeworcHVibGljOgorICAgIHZpcnR1YWwgfkluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCgpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0
b3IKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2Q0MDNiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yLmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisK
KyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9yX2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yX2gKKwor
I2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCIKKyNpbXBvcnQg
IlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCIKKyNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+
CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CisKK09CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpD
X0NMQVNTIE5TRGljdGlvbmFyeTsKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGU7CitzdHJ1Y3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm87CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvciBGSU5BTCA6
IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBSZW1vdGVJbnNwZWN0b3ImIHNoYXJlZCgpOworICAgIGZyaWVuZCBjbGFzcyBO
ZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3I+OworCisgICAgdm9pZCByZWdpc3RlckRlYnVn
Z2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSopOworICAgIHZvaWQgdW5yZWdpc3RlckRl
YnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSopOworICAgIHZvaWQgdXBkYXRlRGVi
dWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7CisgICAgdm9pZCBzZW5kTWVzc2Fn
ZVRvUmVtb3RlRnJvbnRlbmQodW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKKworICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQor
ICAgIGJvb2wgaGFzQWN0aXZlRGVidWdTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBY3Rp
dmVEZWJ1Z1Nlc3Npb247IH0KKworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lkIHN0b3AoKTsK
KworcHJpdmF0ZToKKyAgICBSZW1vdGVJbnNwZWN0b3IoKTsKKworICAgIHVuc2lnbmVkIG5leHRB
dmFpbGFibGVJZGVudGlmaWVyKCk7CisKKyAgICB2b2lkIHNldHVwWFBDQ29ubmVjdGlvbklmTmVl
ZGVkKCk7CisKKyAgICBOU0RpY3Rpb25hcnkgKmxpc3RpbmdGb3JEZWJ1Z2dhYmxlKGNvbnN0IFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvJikgY29uc3Q7CisgICAgdm9pZCBwdXNoTGlzdGlu
Z05vdygpOworICAgIHZvaWQgcHVzaExpc3RpbmdTb29uKCk7CisKKyAgICB2b2lkIHVwZGF0ZUhh
c0FjdGl2ZURlYnVnU2Vzc2lvbigpOworCisgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25S
ZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICpt
ZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHhwY0Nvbm5lY3Rpb25GYWlsZWQoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uVW5oYW5kbGVkTWVzc2Fn
ZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgeHBjX29iamVjdF90KSBPVkVSUklERTsK
KworICAgIHZvaWQgcmVjZWl2ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7
CisgICAgdm9pZCByZWNlaXZlZERhdGFNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOwor
ICAgIHZvaWQgcmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7
CisgICAgdm9pZCByZWNlaXZlZEdldExpc3RpbmdNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlcklu
Zm8pOworICAgIHZvaWQgcmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbyk7CisgICAgdm9pZCByZWNlaXZlZENvbm5lY3Rpb25EaWVkTWVzc2FnZShOU0RpY3Rpb25h
cnkgKnVzZXJJbmZvKTsKKworICAgIC8vIERlYnVnZ2FibGVzIGNhbiBiZSByZWdpc3RlcmVkIGZy
b20gYW55IHRocmVhZCBhdCBhbnkgdGltZS4KKyAgICAvLyBBbnkgZGVidWdnYWJsZSBjYW4gc2Vu
ZCBtZXNzYWdlcyBvdmVyIHRoZSBYUEMgY29ubmVjdGlvbi4KKyAgICAvLyBTbyBsb2NrIGFjY2Vz
cyB0byBhbGwgbWFwcyBhbmQgc3RhdGUgYXMgdGhleSBjYW4gY2hhbmdlCisgICAgLy8gZnJvbSBh
bnkgdGhyZWFkLgorICAgIE11dGV4IG1fbG9jazsKKworICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0
ZDo6cGFpcjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiwgUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUluZm8+PiBtX2RlYnVnZ2FibGVNYXA7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRy
PFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPj4gbV9jb25uZWN0aW9uTWFwOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uPiBtX3hwY0Nv
bm5lY3Rpb247CisgICAgdW5zaWduZWQgbV9uZXh0QXZhaWxhYmxlSWRlbnRpZmllcjsKKyAgICBp
bnQgbV9ub3RpZnlUb2tlbjsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBib29sIG1faGFzQWN0
aXZlRGVidWdTZXNzaW9uOworICAgIGJvb2wgbV9wdXNoU2NoZWR1bGVkOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
KworI2VuZGlmIC8vIFdlYkluc3BlY3RvclNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5YjQxZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5t
bQpAQCAtMCwwICsxLDQ4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yLmgi
CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2ltcG9ydCAiSW5pdGlhbGl6ZVRo
cmVhZGluZy5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmgiCisjaW1wb3J0
ICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgiCisjaW1wb3J0IDxub3RpZnkuaD4KKyNpbXBv
cnQgPHhwYy94cGMuaD4KKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgPHd0
Zi9pb3MvV2ViQ29yZVRocmVhZC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBJbnNwZWN0b3Igewor
CitzdGF0aWMgdm9pZCBkaXNwYXRjaEFzeW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKHZv
aWQgKF5ibG9jaykoKSkKK3sKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKFdlYkNvcmVXZWJU
aHJlYWRJc0VuYWJsZWQgJiYgV2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCgpKSB7CisgICAgICAg
IFdlYkNvcmVXZWJUaHJlYWRSdW4oYmxvY2spOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9j
ayk7Cit9CisKK1JlbW90ZUluc3BlY3RvciYgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0b3I+IHNoYXJlZDsKKworICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBe
eworICAgICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICAgICAgV1RGOjppbml0
aWFsaXplTWFpblRocmVhZCgpOworICAgICAgICBzaGFyZWQuZ2V0KCkuc3RhcnQoKTsKKyAgICB9
KTsKKworICAgIHJldHVybiBzaGFyZWQ7Cit9CisKK1JlbW90ZUluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yKCkKKyAgICA6IG1fbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIoMSkKKyAgICAsIG1fbm90
aWZ5VG9rZW4oMCkKKyAgICAsIG1fZW5hYmxlZChmYWxzZSkKKyAgICAsIG1faGFzQWN0aXZlRGVi
dWdTZXNzaW9uKGZhbHNlKQorICAgICwgbV9wdXNoU2NoZWR1bGVkKGZhbHNlKQoreworfQorCit1
bnNpZ25lZCBSZW1vdGVJbnNwZWN0b3I6Om5leHRBdmFpbGFibGVJZGVudGlmaWVyKCkKK3sKKyAg
ICB1bnNpZ25lZCBuZXh0VmFsaWRJZGVudGlmaWVyOworICAgIGRvIHsKKyAgICAgICAgbmV4dFZh
bGlkSWRlbnRpZmllciA9IG1fbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIrKzsKKyAgICB9IHdoaWxl
ICghbmV4dFZhbGlkSWRlbnRpZmllciB8fCBuZXh0VmFsaWRJZGVudGlmaWVyID09IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB8fCBtX2RlYnVnZ2FibGVNYXAuY29udGFpbnMo
bmV4dFZhbGlkSWRlbnRpZmllcikpOworICAgIHJldHVybiBuZXh0VmFsaWRJZGVudGlmaWVyOwor
fQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVnaXN0ZXJEZWJ1Z2dhYmxlKFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
bG9jayk7CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gbmV4dEF2YWlsYWJsZUlkZW50aWZp
ZXIoKTsKKyAgICBkZWJ1Z2dhYmxlLT5zZXRJZGVudGlmaWVyKGlkZW50aWZpZXIpOworCisgICAg
YXV0byByZXN1bHQgPSBtX2RlYnVnZ2FibGVNYXAuc2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV9w
YWlyKGRlYnVnZ2FibGUsIGRlYnVnZ2FibGUtPmluZm8oKSkpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBpZiAoZGVidWdnYWJsZS0+cmVtb3Rl
RGVidWdnaW5nQWxsb3dlZCgpKQorICAgICAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30KKwordm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnVucmVnaXN0ZXJEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUqIGRlYnVnZ2FibGUpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gZGVidWdnYWJsZS0+aWRlbnRpZmllcigpOwor
ICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCB3YXNSZW1v
dmVkID0gbV9kZWJ1Z2dhYmxlTWFwLnJlbW92ZShpZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOworCisgICAgaWYgKFJlZlB0cjxSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC50
YWtlKGlkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5jbG9zZUZyb21EZWJ1Z2dhYmxl
KCk7CisKKyAgICBpZiAoZGVidWdnYWJsZS0+cmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpKQorICAg
ICAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0
ZURlYnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSkKK3sKKyAg
ICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIg
PSBkZWJ1Z2dhYmxlLT5pZGVudGlmaWVyKCk7CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fZGVidWdnYWJsZU1hcC5zZXQoaWRlbnRp
Zmllciwgc3RkOjptYWtlX3BhaXIoZGVidWdnYWJsZSwgZGVidWdnYWJsZS0+aW5mbygpKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBpZiAo
ZGVidWdnYWJsZS0+cmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpKQorICAgICAgICBwdXNoTGlzdGlu
Z1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGVG
cm9udGVuZCh1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBpZiAoIW1feHBjQ29ubmVjdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChpZGVudGlmaWVy
KTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIE5TRGljdGlv
bmFyeSAqdXNlckluZm8gPSBAeworICAgICAgICBXSVJSYXdEYXRhS2V5OiBbc3RhdGljX2Nhc3Q8
TlNTdHJpbmcgKj4obWVzc2FnZSkgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddLAorICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubmVjdGlvbi0+Y29u
bmVjdGlvbklkZW50aWZpZXIoKSwKKyAgICAgICAgV0lSRGVzdGluYXRpb25LZXk6IGNvbm5lY3Rp
b24tPmRlc3RpbmF0aW9uKCkKKyAgICB9OworCisgICAgbV94cGNDb25uZWN0aW9uLT5zZW5kTWVz
c2FnZShXSVJSYXdEYXRhTWVzc2FnZSwgdXNlckluZm8pOworfQorCit2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnQoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAg
aWYgKG1fZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9lbmFibGVkID0gdHJ1ZTsK
KworICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaChXSVJTZXJ2aWNlQXZhaWxhYmxlTm90aWZp
Y2F0aW9uLCAmbV9ub3RpZnlUb2tlbiwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRD
SF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXihpbnQpIHsKKyAgICAgICAgUmVtb3RlSW5z
cGVjdG9yOjpzaGFyZWQoKS5zZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCgpOworICAgIH0pOwor
CisgICAgbm90aWZ5X3Bvc3QoV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9u
KTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0b3AoKQoreworICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKCFtX2VuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fZW5hYmxlZCA9IGZhbHNlOworCisgICAgbV9wdXNoU2NoZWR1bGVkID0gZmFsc2U7
CisKKyAgICBmb3IgKGF1dG8gaXQgPSBtX2Nvbm5lY3Rpb25NYXAuYmVnaW4oKSwgZW5kID0gbV9j
b25uZWN0aW9uTWFwLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGl0LT52YWx1ZS0+
Y2xvc2UoKTsKKyAgICBtX2Nvbm5lY3Rpb25NYXAuY2xlYXIoKTsKKworICAgIHVwZGF0ZUhhc0Fj
dGl2ZURlYnVnU2Vzc2lvbigpOworCisgICAgaWYgKG1feHBjQ29ubmVjdGlvbikgeworICAgICAg
ICBtX3hwY0Nvbm5lY3Rpb24tPmNsb3NlKCk7CisgICAgICAgIG1feHBjQ29ubmVjdGlvbiA9IG51
bGxwdHI7CisgICAgfQorCisgICAgbm90aWZ5X2NhbmNlbChtX25vdGlmeVRva2VuKTsKK30KKwor
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCkKK3sKKyAg
ICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmIChtX3hwY0Nvbm5lY3Rpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiA9IHhw
Y19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2UoV0lSWFBDTWFjaFBvcnROYW1lLCBkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCAwKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIG1feHBjQ29ubmVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbj4oY29ubmVjdGlvbiwgdGhpcyk7CisgICAgbV94cGNDb25u
ZWN0aW9uLT5zZW5kTWVzc2FnZShAInN5biIsIG5pbCk7IC8vIFNlbmQgYSBzaW1wbGUgbWVzc2Fn
ZSB0byBpbml0aWFsaXplIHRoZSBYUEMgY29ubmVjdGlvbi4KKyAgICB4cGNfcmVsZWFzZShjb25u
ZWN0aW9uKTsKKworICAgIHB1c2hMaXN0aW5nU29vbigpOworfQorCisjcHJhZ21hIG1hcmsgLSBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpDbGllbnQKKwordm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbiosIE5TU3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sK
KyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmIChbbWVzc2FnZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOldJUlBlcm1pc3Npb25EZW5pZWRdKSB7CisgICAgICAgIHN0b3AoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOldJUlNvY2tldERhdGFNZXNzYWdlXSkKKyAgICAgICAgcmVjZWl2ZWREYXRhTWVzc2Fn
ZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpX
SVJTb2NrZXRTZXR1cE1lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZFNldHVwTWVzc2FnZSh1c2Vy
SW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJXZWJQ
YWdlQ2xvc2VNZXNzYWdlXSkKKyAgICAgICAgcmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2UodXNlcklu
Zm8pOworICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSQXBwbGlj
YXRpb25HZXRMaXN0aW5nTWVzc2FnZV0pCisgICAgICAgIHJlY2VpdmVkR2V0TGlzdGluZ01lc3Nh
Z2UodXNlckluZm8pOworICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
V0lSSW5kaWNhdGVNZXNzYWdlXSkKKyAgICAgICAgcmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UodXNl
ckluZm8pOworICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSQ29u
bmVjdGlvbkRpZWRNZXNzYWdlXSkKKyAgICAgICAgcmVjZWl2ZWRDb25uZWN0aW9uRGllZE1lc3Nh
Z2UodXNlckluZm8pOworICAgIGVsc2UKKyAgICAgICAgTlNMb2coQCJVbnJlY29nbml6ZWQgUmVt
b3RlSW5zcGVjdG9yIFhQQyBNZXNzYWdlOiAlQCIsIG1lc3NhZ2VOYW1lKTsKK30KKwordm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25GYWlsZWQoUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbiopCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBtX3B1
c2hTY2hlZHVsZWQgPSBmYWxzZTsKKworICAgIGZvciAoYXV0byBpdCA9IG1fY29ubmVjdGlvbk1h
cC5iZWdpbigpLCBlbmQgPSBtX2Nvbm5lY3Rpb25NYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkK
KyAgICAgICAgaXQtPnZhbHVlLT5jbG9zZSgpOworICAgIG1fY29ubmVjdGlvbk1hcC5jbGVhcigp
OworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAgICBpZiAobV94cGND
b25uZWN0aW9uKSB7CisgICAgICAgIG1feHBjQ29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICAgICAg
bV94cGNDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yOjp4cGNDb25uZWN0aW9uVW5oYW5kbGVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uKiwgeHBjX29iamVjdF90KQoreworICAgIC8vIEludGVudGlvbmFsbHkgaWdub3JlZC4K
K30KKworI3ByYWdtYSBtYXJrIC0gTGlzdGluZ3MKKworTlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNw
ZWN0b3I6Omxpc3RpbmdGb3JEZWJ1Z2dhYmxlKGNvbnN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVJbmZvJiBkZWJ1Z2dhYmxlSW5mbykgY29uc3QKK3sKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5
ICpkZWJ1Z2dhYmxlRGV0YWlscyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwor
CisgICAgW2RlYnVnZ2FibGVEZXRhaWxzIHNldE9iamVjdDpAKGRlYnVnZ2FibGVJbmZvLmlkZW50
aWZpZXIpIGZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07CisKKyAgICBzd2l0Y2ggKGRlYnVn
Z2FibGVJbmZvLnR5cGUpIHsKKyAgICBjYXNlIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6Okph
dmFTY3JpcHQ6IHsKKyAgICAgICAgTlNTdHJpbmcgKm5hbWUgPSBkZWJ1Z2dhYmxlSW5mby5uYW1l
OworICAgICAgICBbZGVidWdnYWJsZURldGFpbHMgc2V0T2JqZWN0Om5hbWUgZm9yS2V5OldJUlRp
dGxlS2V5XTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6V2ViOiB7CisgICAgICAgIE5TU3RyaW5nICp1cmwgPSBkZWJ1Z2dhYmxlSW5m
by51cmw7CisgICAgICAgIE5TU3RyaW5nICp0aXRsZSA9IGRlYnVnZ2FibGVJbmZvLm5hbWU7Cisg
ICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6dXJsIGZvcktleTpXSVJVUkxLZXld
OworICAgICAgICBbZGVidWdnYWJsZURldGFpbHMgc2V0T2JqZWN0OnRpdGxlIGZvcktleTpXSVJU
aXRsZUtleV07CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKFJl
ZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG1f
Y29ubmVjdGlvbk1hcC5nZXQoZGVidWdnYWJsZUluZm8uaWRlbnRpZmllcikpCisgICAgICAgIFtk
ZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6Y29ubmVjdGlvbi0+Y29ubmVjdGlvbklkZW50aWZp
ZXIoKSBmb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOworCisgICAgaWYgKGRlYnVn
Z2FibGVJbmZvLmhhc0xvY2FsRGVidWdnZXIpCisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBz
ZXRPYmplY3Q6QFlFUyBmb3JLZXk6V0lSSGFzTG9jYWxEZWJ1Z2dlcktleV07CisKKyAgICByZXR1
cm4gZGVidWdnYWJsZURldGFpbHM7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlz
dGluZ05vdygpCit7CisgICAgQVNTRVJUKG1feHBjQ29ubmVjdGlvbik7CisgICAgaWYgKCFtX3hw
Y0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHVzaFNjaGVkdWxlZCA9IGZh
bHNlOworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IHJlc3BvbnNlID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKGF1dG8g
aXQgPSBtX2RlYnVnZ2FibGVNYXAuYmVnaW4oKSwgZW5kID0gbV9kZWJ1Z2dhYmxlTWFwLmVuZCgp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgY29uc3QgUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUluZm8mIGRlYnVnZ2FibGVJbmZvID0gaXQtPnZhbHVlLnNlY29uZDsKKyAgICAgICAgaWYg
KGRlYnVnZ2FibGVJbmZvLnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQpIHsKKyAgICAgICAgICAgIE5T
RGljdGlvbmFyeSAqZGV0YWlscyA9IGxpc3RpbmdGb3JEZWJ1Z2dhYmxlKGRlYnVnZ2FibGVJbmZv
KTsKKyAgICAgICAgICAgIFtyZXNwb25zZSBzZXRPYmplY3Q6ZGV0YWlscyBmb3JLZXk6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIldSIsIGRlYnVnZ2FibGVJbmZvLmlkZW50aWZpZXJdXTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBv
dXRnb2luZyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7Cisg
ICAgW291dGdvaW5nIHNldE9iamVjdDpyZXNwb25zZS5nZXQoKSBmb3JLZXk6V0lSTGlzdGluZ0tl
eV07CisKKyAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJUkxpc3RpbmdNZXNzYWdl
LCBvdXRnb2luZy5nZXQoKSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGlu
Z1Nvb24oKQoreworICAgIGlmICghbV94cGNDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9wdXNoU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3B1c2hT
Y2hlZHVsZWQgPSB0cnVlOworICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFU
Q0hfVElNRV9OT1csIDAuMDIgKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1
ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeeworICAgICAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgaWYgKG1fcHVzaFNjaGVkdWxlZCkKKyAg
ICAgICAgICAgIHB1c2hMaXN0aW5nTm93KCk7CisgICAgfSk7Cit9CisKKyNwcmFnbWEgbWFyayAt
IEFjdGl2ZSBEZWJ1Z2dlciBTZXNzaW9ucworCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRl
SGFzQWN0aXZlRGVidWdTZXNzaW9uKCkKK3sKKyAgICBib29sIGhhc0FjdGl2ZURlYnVnZ2VyU2Vz
c2lvbiA9ICFtX2Nvbm5lY3Rpb25NYXAuaXNFbXB0eSgpOworICAgIGlmIChoYXNBY3RpdmVEZWJ1
Z2dlclNlc3Npb24gPT0gbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24pCisgICAgICAgIHJldHVybjsK
KworICAgIG1faGFzQWN0aXZlRGVidWdTZXNzaW9uID0gaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9u
OworCisgICAgLy8gRklYTUU6IEV4cG9zZSBzb21lIHdheSB0byBhY2Nlc3MgdGhpcyBzdGF0ZSBp
biBhbiBlbWJlZGRlci4KKyAgICAvLyBMZWdhY3kgaU9TIFdlYktpdCAxIGhhZCBhIG5vdGlmaWNh
dGlvbi4gVGhpcyB3aWxsIG5lZWQgdG8gYmUgc21hcnRlciB3aXRoIFdlYktpdDIuCit9CisKKyNw
cmFnbWEgbWFyayAtIFJlY2VpdmVkIFhQQyBNZXNzYWdlcworCit2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBO
U051bWJlciAqcGFnZUlkID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmll
cktleV07CisgICAgaWYgKCFwYWdlSWQpCisgICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5n
ICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSQ29ubmVj
dGlvbklkZW50aWZpZXJLZXldOworICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nICpzZW5kZXIgPSBbdXNlckluZm8gb2JqZWN0Rm9y
S2V5OldJUlNlbmRlcktleV07CisgICAgaWYgKCFzZW5kZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBbcGFnZUlkIHVuc2lnbmVkSW50VmFsdWVdOworICAg
IGlmIChtX2Nvbm5lY3Rpb25NYXAuY29udGFpbnMoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gaXQgPSBtX2RlYnVnZ2FibGVNYXAuZmluZChpZGVudGlmaWVyKTsKKyAg
ICBpZiAoaXQgPT0gbV9kZWJ1Z2dhYmxlTWFwLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBBdHRlbXB0IHRvIGNyZWF0ZSBhIGNvbm5lY3Rpb24uIFRoaXMgbWF5IGZhaWwgaWYgdGhl
IHBhZ2UgYWxyZWFkeSBoYXMgYW4gaW5zcGVjdG9yIG9yIGlmIGl0IGRpc2FsbG93cyBpbnNwZWN0
aW9uLgorICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUgPSBpdC0+dmFs
dWUuZmlyc3Q7CisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gZGVidWdnYWJsZUlu
Zm8gPSBpdC0+dmFsdWUuc2Vjb25kOworICAgIFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlQ29ubmVjdGlvbihkZWJ1Z2dhYmxlLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc2Vu
ZGVyLCBkZWJ1Z2dhYmxlSW5mby50eXBlKSk7CisgICAgaWYgKCFjb25uZWN0aW9uLT5zZXR1cCgp
KSB7CisgICAgICAgIGNvbm5lY3Rpb24tPmNsb3NlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX2Nvbm5lY3Rpb25NYXAuc2V0KGlkZW50aWZpZXIsIGNvbm5lY3Rpb24ucmVsZWFz
ZSgpKTsKKworICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOworCisgICAgcHVzaExp
c3RpbmdTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERhdGFNZXNz
YWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFt1
c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOworICAgIGlmICghcGFn
ZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBwYWdlSWRlbnRpZmllciA9IFtw
YWdlSWQgdW5zaWduZWRJbnRWYWx1ZV07CisgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChwYWdlSWRl
bnRpZmllcik7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBO
U0RhdGEgKmRhdGEgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlNvY2tldERhdGFLZXldOwor
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gbWVzc2FnZSA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAg
ICBjb25uZWN0aW9uLT5zZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlLmdldCgpKTsKK30KKwor
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdlKE5TRGljdGlvbmFy
eSAqdXNlckluZm8pCit7CisgICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFt1c2VySW5mbyBvYmplY3RG
b3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOworICAgIGlmICghcGFnZUlkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbdXNlckluZm8g
b2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIWNvbm5l
Y3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBpZGVudGlm
aWVyID0gW3BhZ2VJZCB1bnNpZ25lZEludFZhbHVlXTsKKyAgICBSZWZQdHI8UmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0
KGlkZW50aWZpZXIpOworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFbY29ubmVjdGlvbklkZW50aWZpZXIgaXNFcXVhbFRvU3RyaW5nOmNvbm5lY3Rpb24t
PmNvbm5lY3Rpb25JZGVudGlmaWVyKCldKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25uZWN0
aW9uLT5jbG9zZSgpOworICAgIG1fY29ubmVjdGlvbk1hcC5yZW1vdmUoaWRlbnRpZmllcik7CisK
KyAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKKworICAgIHB1c2hMaXN0aW5nU29v
bigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRHZXRMaXN0aW5nTWVzc2Fn
ZShOU0RpY3Rpb25hcnkgKikKK3sKKyAgICBwdXNoTGlzdGluZ05vdygpOworfQorCit2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbykKK3sKKyAgICBOU051bWJlciAqcGFnZUlkID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpX
SVJQYWdlSWRlbnRpZmllcktleV07CisgICAgaWYgKCFwYWdlSWQpCisgICAgICAgIHJldHVybjsK
KworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBbcGFnZUlkIHVuc2lnbmVkSW50VmFsdWVdOwor
ICAgIEJPT0wgaW5kaWNhdGVFbmFibGVkID0gW1t1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSSW5k
aWNhdGVFbmFibGVkS2V5XSBib29sVmFsdWVdOworCisgICAgZGlzcGF0Y2hBc3luY09uUXVldWVT
YWZlRm9yQW55RGVidWdnYWJsZSheeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2Nr
KTsKKworICAgICAgICBhdXRvIGl0ID0gbV9kZWJ1Z2dhYmxlTWFwLmZpbmQoaWRlbnRpZmllcik7
CisgICAgICAgIGlmIChpdCA9PSBtX2RlYnVnZ2FibGVNYXAuZW5kKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSA9
IGl0LT52YWx1ZS5maXJzdDsKKyAgICAgICAgZGVidWdnYWJsZS0+c2V0SW5kaWNhdGluZyhpbmRp
Y2F0ZUVuYWJsZWQpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2
ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBO
U1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJ
UkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGl0ID0gbV9jb25uZWN0aW9uTWFwLmJlZ2lu
KCk7CisgICAgYXV0byBlbmQgPSBtX2Nvbm5lY3Rpb25NYXAuZW5kKCk7CisgICAgZm9yICg7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoW2Nvbm5lY3Rpb25JZGVudGlmaWVyIGlzRXF1
YWxUb1N0cmluZzppdC0+dmFsdWUtPmNvbm5lY3Rpb25JZGVudGlmaWVyKCldKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKGl0ID09IGVuZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0
aW9uID0gaXQtPnZhbHVlOworICAgIGNvbm5lY3Rpb24tPmNsb3NlKCk7CisgICAgbV9jb25uZWN0
aW9uTWFwLnJlbW92ZShpdCk7CisKKyAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZhMWY5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50
cy5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFJlbW90ZUluc3BlY3RvckNvbnN0YW50c19oCisjZGVmaW5lIFJl
bW90ZUluc3BlY3RvckNvbnN0YW50c19oCisKKy8vIFdJUkNvbnN0YW50cyBhcmUgIldlYiBJbnNw
ZWN0b3IgUmVsYXkiIGNvbnN0YW50cyBzaGFyZWQgYmV0d2VlbgorLy8gdGhlIFdlYkluc3BlY3Rv
ciBmcmFtZXdvcmsgb24gdGhlIE9TIFggc2lkZSwgd2ViaW5zcGVjdG9yZCwgYW5kCisvLyBpT1Mg
V2ViS2l0IG9uIHRoZSBkZXZpY2Ugc2lkZS4KKworI2RlZmluZSBXSVJTaW11bGF0b3JUQ1BQb3J0
TnVtYmVyICAgICAgICAgICAgICAgMjc3NTMKKyNkZWZpbmUgV0lSWFBDTWFjaFBvcnROYW1lICAg
ICAgICAgICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yIgorI2RlZmluZSBXSVJT
ZXJ2aWNlQXZhaWxhYmxlTm90aWZpY2F0aW9uICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0
b3JkLmF2YWlsYWJsZSIKKyNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZp
Y2F0aW9uICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFiaWxpdHlfY2hlY2siCisjZGVm
aW5lIFdJUlNlcnZpY2VFbmFibGVkTm90aWZpY2F0aW9uICAgICAgICAgICAiY29tLmFwcGxlLndl
Ymluc3BlY3RvcmQuZW5hYmxlZCIKKyNkZWZpbmUgV0lSU2VydmljZURpc2FibGVkTm90aWZpY2F0
aW9uICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5kaXNhYmxlZCIKKworCisjZGVm
aW5lIFdJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSAgICAgICAgICAgICBAIldJUkFwcGxpY2F0
aW9uSWRlbnRpZmllcktleSIKKyNkZWZpbmUgV0lSQXBwbGljYXRpb25OYW1lS2V5ICAgICAgICAg
ICAgICAgICAgIEAiV0lSQXBwbGljYXRpb25OYW1lS2V5IgorI2RlZmluZSBXSVJJc0FwcGxpY2F0
aW9uUHJveHlLZXkgICAgICAgICAgICAgICAgQCJXSVJJc0FwcGxpY2F0aW9uUHJveHlLZXkiCisj
ZGVmaW5lIFdJUkhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkgICAgICAgICBAIldJUkhvc3RB
cHBsaWNhdGlvbklkZW50aWZpZXJLZXkiCisjZGVmaW5lIFdJUkhvc3RBcHBsaWNhdGlvbk5hbWVL
ZXkgICAgICAgICAgICAgICBAIldJUkhvc3RBcHBsaWNhdGlvbk5hbWVLZXkiCisjZGVmaW5lIFdJ
UkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5ICAgICAgICAgICAgICBAIldJUkNvbm5lY3Rpb25JZGVu
dGlmaWVyS2V5IgorI2RlZmluZSBXSVJQYWdlSWRlbnRpZmllcktleSAgICAgICAgICAgICAgICAg
ICAgQCJXSVJQYWdlSWRlbnRpZmllcktleSIKKyNkZWZpbmUgV0lSSGFzTG9jYWxEZWJ1Z2dlcktl
eSAgICAgICAgICAgICAgICAgIEAiV0lSSGFzTG9jYWxEZWJ1Z2dlcktleSIKKyNkZWZpbmUgV0lS
VGl0bGVLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSVGl0bGVLZXkiCisjZGVm
aW5lIFdJUlVSTEtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJUlVSTEtleSIK
KyNkZWZpbmUgV0lSVXNlckluZm9LZXkgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSVXNl
ckluZm9LZXkiCisjZGVmaW5lIFdJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleSAgICAgICAgICAg
ICBAIldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleSIKKyNkZWZpbmUgV0lSTWVzc2FnZURhdGFL
ZXkgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSTWVzc2FnZURhdGFLZXkiCisjZGVmaW5lIFdJ
UkFwcGxpY2F0aW9uR2V0TGlzdGluZ01lc3NhZ2UgICAgICAgICBAIldJUkFwcGxpY2F0aW9uR2V0
TGlzdGluZ01lc3NhZ2UiCisjZGVmaW5lIFdJUkluZGljYXRlTWVzc2FnZSAgICAgICAgICAgICAg
ICAgICAgICBAIldJUkluZGljYXRlTWVzc2FnZSIKKyNkZWZpbmUgV0lSSW5kaWNhdGVFbmFibGVk
S2V5ICAgICAgICAgICAgICAgICAgIEAiV0lSSW5kaWNhdGVFbmFibGVkS2V5IgorI2RlZmluZSBX
SVJTZW5kZXJLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJTZW5kZXJLZXkiCisj
ZGVmaW5lIFdJUlNvY2tldERhdGFLZXkgICAgICAgICAgICAgICAgICAgICAgICBAIldJUlNvY2tl
dERhdGFLZXkiCisjZGVmaW5lIFdJUlNvY2tldERhdGFNZXNzYWdlICAgICAgICAgICAgICAgICAg
ICBAIldJUlNvY2tldERhdGFNZXNzYWdlIgorI2RlZmluZSBXSVJTb2NrZXRTZXR1cE1lc3NhZ2Ug
ICAgICAgICAgICAgICAgICAgQCJXSVJTb2NrZXRTZXR1cE1lc3NhZ2UiCisjZGVmaW5lIFdJUldl
YlBhZ2VDbG9zZU1lc3NhZ2UgICAgICAgICAgICAgICAgICBAIldJUldlYlBhZ2VDbG9zZU1lc3Nh
Z2UiCisjZGVmaW5lIFdJUlJhd0RhdGFNZXNzYWdlICAgICAgICAgICAgICAgICAgICAgICBAIldJ
UlJhd0RhdGFNZXNzYWdlIgorI2RlZmluZSBXSVJSYXdEYXRhS2V5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQCJXSVJSYXdEYXRhS2V5IgorI2RlZmluZSBXSVJMaXN0aW5nTWVzc2FnZSAgICAg
ICAgICAgICAgICAgICAgICAgQCJXSVJMaXN0aW5nTWVzc2FnZSIKKyNkZWZpbmUgV0lSTGlzdGlu
Z0tleSAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSTGlzdGluZ0tleSIKKyNkZWZpbmUg
V0lSRGVzdGluYXRpb25LZXkgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSRGVzdGluYXRpb25L
ZXkiCisjZGVmaW5lIFdJUkNvbm5lY3Rpb25EaWVkTWVzc2FnZSAgICAgICAgICAgICAgICBAIldJ
UkNvbm5lY3Rpb25EaWVkTWVzc2FnZSIKKworLy8gVGhlc2UgZGVmaW5pdGlvbnMgYXJlIHNoYXJl
ZCB3aXRoIGEgU2ltdWxhdG9yIHdlYmluc3BlY3RvcmQgYW5kCisvLyBPUyBYIHByb2Nlc3MgY29t
bXVuaWNhdGluZyB3aXRoIGl0LgorCisjZGVmaW5lIFdJUlNpbXVsYXRvckJ1aWxkS2V5ICAgICAg
ICAgICAgICAgICAgICBAIldJUlNpbXVsYXRvckJ1aWxkS2V5IgorI2RlZmluZSBXSVJTaW11bGF0
b3JQcm9kdWN0VmVyc2lvbktleSAgICAgICAgICAgQCJXSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lv
bktleSIKKyNkZWZpbmUgV0lSU2ltdWxhdG9yTmFtZUtleSAgICAgICAgICAgICAgICAgICAgIEAi
V0lSU2ltdWxhdG9yTmFtZUtleSIKKworLy8gVGhlc2UgZGVmaW5pdGlvbnMgYXJlIHNoYXJlZCBi
ZXR3ZWVuIHdlYmluc3BlY3RvcmQgYW5kIFdlYktpdC4KKworI2RlZmluZSBXSVJQZXJtaXNzaW9u
RGVuaWVkICAgICAgICAgICAgICAgICAgICAgQCJXSVJQZXJtaXNzaW9uRGVuaWVkIgorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZmRmMWQ5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUu
Y3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZS5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3Iu
aCIKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6
OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUoKQorICAgIDogbV9pZGVudGlmaWVyKDApCisgICAg
LCBtX2FsbG93ZWQoZmFsc2UpCit7Cit9CisKK1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6On5S
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCkKK3sKKyAgICBSZW1vdGVJbnNwZWN0b3I6OnNoYXJl
ZCgpLnVucmVnaXN0ZXJEZWJ1Z2dhYmxlKHRoaXMpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGU6OmluaXQoKQoreworICAgIFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkucmVn
aXN0ZXJEZWJ1Z2dhYmxlKHRoaXMpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGU6OnVwZGF0ZSgpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS51cGRhdGVEZWJ1
Z2dhYmxlKHRoaXMpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OnNldFJl
bW90ZURlYnVnZ2luZ0FsbG93ZWQoYm9vbCBhbGxvd2VkKQoreworICAgIGlmIChtX2FsbG93ZWQg
PT0gYWxsb3dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hbGxvd2VkID0gYWxsb3dlZDsK
KworICAgIHVwZGF0ZSgpOworfQorCitSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjppbmZvKCkgY29uc3QKK3sKKyAgICBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlSW5mbyBpbmZvOworICAgIGluZm8uaWRlbnRpZmllciA9IGlkZW50aWZpZXIo
KTsKKyAgICBpbmZvLnR5cGUgPSB0eXBlKCk7CisgICAgaW5mby5uYW1lID0gbmFtZSgpOworICAg
IGluZm8udXJsID0gdXJsKCk7CisgICAgaW5mby5oYXNMb2NhbERlYnVnZ2VyID0gaGFzTG9jYWxE
ZWJ1Z2dlcigpOworICAgIGluZm8ucmVtb3RlRGVidWdnaW5nQWxsb3dlZCA9IHJlbW90ZURlYnVn
Z2luZ0FsbG93ZWQoKTsKKyAgICByZXR1cm4gaW5mbzsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45MDI3NGFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCkBAIC0wLDAgKzEsOTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisKKyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZV9o
CisjZGVmaW5lIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVfaAorCisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7CitzdHJ1Y3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm87
CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUgewor
cHVibGljOgorICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUoKTsKKyAgICB2aXJ0dWFsIH5S
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCk7CisKKyAgICB2b2lkIGluaXQoKTsKKyAgICB2b2lk
IHVwZGF0ZSgpOworCisgICAgdW5zaWduZWQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0SWRlbnRpZmllcih1bnNpZ25lZCBpZGVudGlmaWVy
KSB7IG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KKworICAgIGJvb2wgcmVtb3RlRGVidWdn
aW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZDsgfQorICAgIHZvaWQgc2V0UmVt
b3RlRGVidWdnaW5nQWxsb3dlZChib29sKTsKKworICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVJbmZvIGluZm8oKSBjb25zdDsKKworICAgIGVudW0gRGVidWdnYWJsZVR5cGUgeyBKYXZhU2Ny
aXB0LCBXZWIgfTsKKyAgICB2aXJ0dWFsIERlYnVnZ2FibGVUeXBlIHR5cGUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8v
IEphdmFTY3JpcHQgYW5kIFdlYgorICAgIHZpcnR1YWwgU3RyaW5nIHVybCgpIGNvbnN0IHsgcmV0
dXJuIFN0cmluZygpOyB9IC8vIFdlYgorICAgIHZpcnR1YWwgYm9vbCBoYXNMb2NhbERlYnVnZ2Vy
KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCkg
eyB9IC8vIERlZmF1bHQgaXMgdG8gZG8gbm90aGluZy4KKworcHJpdmF0ZToKKyAgICB1bnNpZ25l
ZCBtX2lkZW50aWZpZXI7CisgICAgYm9vbCBtX2FsbG93ZWQ7Cit9OworCitzdHJ1Y3QgUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZUluZm8geworICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJ
bmZvKCkKKyAgICAgICAgOiBpZGVudGlmaWVyKDApCisgICAgICAgICwgdHlwZShSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlOjpKYXZhU2NyaXB0KQorICAgICAgICAsIGhhc0xvY2FsRGVidWdnZXIo
ZmFsc2UpCisgICAgICAgICwgcmVtb3RlRGVidWdnaW5nQWxsb3dlZChmYWxzZSkKKyAgICB7Cisg
ICAgfQorCisgICAgdW5zaWduZWQgaWRlbnRpZmllcjsKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlOjpEZWJ1Z2dhYmxlVHlwZSB0eXBlOworICAgIFN0cmluZyBuYW1lOworICAgIFN0cmlu
ZyB1cmw7CisgICAgYm9vbCBoYXNMb2NhbERlYnVnZ2VyOworICAgIGJvb2wgcmVtb3RlRGVidWdn
aW5nQWxsb3dlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8g
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZV9oCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNGQ4ODIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCisKKyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b25faAorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbl9oCisKKyNp
bXBvcnQgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZS5oIgorI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbXBvcnQgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCitPQkpDX0NMQVNTIE5TU3RyaW5nOworCituYW1l
c3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24gRklOQUwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24+LCBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsK
K3B1YmxpYzoKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbihSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlKiwgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyLCBOU1N0
cmluZyAqZGVzdGluYXRpb24sIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkRlYnVnZ2FibGVU
eXBlKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbigp
OworCisgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKCkgY29uc3Q7CisgICAgTlNTdHJpbmcgKmNv
bm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CisgICAgdW5zaWduZWQgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgYm9vbCBzZXR1cCgpOworCisgICAg
dm9pZCBjbG9zZSgpOworICAgIHZvaWQgY2xvc2VGcm9tRGVidWdnYWJsZSgpOworCisgICAgdm9p
ZCBzZW5kTWVzc2FnZVRvQmFja2VuZChOU1N0cmluZyAqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworCitwcml2YXRlOgor
ICAgIHZvaWQgZGlzcGF0Y2hTeW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSk7CisgICAg
dm9pZCBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSk7CisKKyAgICAv
LyBUaGlzIGNvbm5lY3Rpb24gZnJvbSB0aGUgUmVtb3RlSW5zcGVjdG9yIHNpbmdsZXRvbiB0byB0
aGUgRGVidWdnYWJsZQorICAgIC8vIGNhbiBiZSB1c2VkIG9uIG11bHRpcGxlIHRocmVhZHMuIFNv
IGFueSBhY2Nlc3MgdG8gdGhlIGRlYnVnZ2FibGUKKyAgICAvLyBpdHNlbGYgbXVzdCB0YWtlIHRo
aXMgbG9jayB0byBlbnN1cmUgbV9kZWJ1Z2dhYmxlIGlzIHZhbGlkLgorICAgIE11dGV4IG1fZGVi
dWdnYWJsZUxvY2s7CisKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBtX2RlYnVnZ2Fi
bGU7CisgICAgZGlzcGF0Y2hfcXVldWVfdCBtX3F1ZXVlRm9yRGVidWdnYWJsZTsKKyAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IG1fY29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBtX2Rlc3RpbmF0aW9uOworICAgIHVuc2lnbmVkIG1faWRlbnRpZmllcjsKKyAgICBi
b29sIG1fY29ubmVjdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRp
ZiAvLyBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbl9oCisKKyNlbmRpZiAvLyBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1t
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNWZmZmVhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCkBAIC0w
LDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbXBvcnQg
IlJlbW90ZUluc3BlY3Rvci5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCA8d3RmL2lv
cy9XZWJDb3JlVGhyZWFkLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbihSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlLCBOU1N0
cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIsIE5TU3RyaW5nICpkZXN0aW5hdGlvbiwgUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUgdHlwZSkKKyAgICA6IG1fZGVidWdn
YWJsZShkZWJ1Z2dhYmxlKQorICAgICwgbV9xdWV1ZUZvckRlYnVnZ2FibGUoTlVMTCkKKyAgICAs
IG1fY29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgLCBtX2Rl
c3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgICwgbV9pZGVudGlmaWVyKGRlYnVnZ2FibGUtPmlk
ZW50aWZpZXIoKSkKKyAgICAsIG1fY29ubmVjdGVkKGZhbHNlKQoreworICAgIC8vIFdlYiBkZWJ1
Z2dhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIG9uIHRoZSBtYWluIHF1ZXVlIChvciB0aGUgV2ViVGhy
ZWFkIG9uIGlPUykuIFNpZ25hbCB0aGF0IHdpdGggYSBOVUxMIG1fcXVldWVGb3JEZWJ1Z2dhYmxl
LgorICAgIC8vIEhvd2V2ZXIsIEphdmFTY3JpcHQgZGVidWdnYWJsZXMgY2FuIGJlIGFjY2Vzc2Vk
IGZyb20gYW55IHRocmVhZC9xdWV1ZSwgc28gd2UgY3JlYXRlIGEgcXVldWUgZm9yIGVhY2ggSmF2
YVNjcmlwdCBkZWJ1Z2dhYmxlLgorICAgIGlmICh0eXBlID09IFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGU6OkphdmFTY3JpcHQpCisgICAgICAgIG1fcXVldWVGb3JEZWJ1Z2dhYmxlID0gZGlzcGF0
Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuSmF2YVNjcmlwdENvcmUucmVtb3RlLWluc3BlY3Rv
ci14cGMtY29ubmVjdGlvbiIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7Cit9CisKK1JlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjp+UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb24oKQoreworICAgIGlmIChtX3F1ZXVlRm9yRGVidWdnYWJsZSkgeworICAgICAgICBk
aXNwYXRjaF9yZWxlYXNlKG1fcXVldWVGb3JEZWJ1Z2dhYmxlKTsKKyAgICAgICAgbV9xdWV1ZUZv
ckRlYnVnZ2FibGUgPSBOVUxMOworICAgIH0KK30KKworTlNTdHJpbmcgKlJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uOjpkZXN0aW5hdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFtbbV9kZXN0aW5hdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07Cit9CisKK05TU3RyaW5nICpSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y29ubmVjdGlvbklkZW50aWZpZXIoKSBj
b25zdAoreworICAgIHJldHVybiBbW21fY29ubmVjdGlvbklkZW50aWZpZXIgY29weV0gYXV0b3Jl
bGVhc2VdOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpk
aXNwYXRjaFN5bmNPbkRlYnVnZ2FibGUodm9pZCAoXmJsb2NrKSgpKQoreworICAgIGlmIChtX3F1
ZXVlRm9yRGVidWdnYWJsZSkKKyAgICAgICAgZGlzcGF0Y2hfc3luYyhtX3F1ZXVlRm9yRGVidWdn
YWJsZSwgYmxvY2spOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBlbHNlIGlmIChXZWJDb3JlV2Vi
VGhyZWFkSXNFbmFibGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQoKSkKKyAgICAgICAg
V2ViQ29yZVdlYlRocmVhZFJ1blN5bmMoYmxvY2spOworI2VuZGlmCisgICAgZWxzZQorICAgICAg
ICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKK30KKwor
dm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0Y2hBc3luY09u
RGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpCit7CisgICAgaWYgKG1fcXVldWVGb3JEZWJ1Z2dh
YmxlKQorICAgICAgICBkaXNwYXRjaF9hc3luYyhtX3F1ZXVlRm9yRGVidWdnYWJsZSwgYmxvY2sp
OworI2lmIFBMQVRGT1JNKElPUykKKyAgICBlbHNlIGlmIChXZWJDb3JlV2ViVGhyZWFkSXNFbmFi
bGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQoKSkKKyAgICAgICAgV2ViQ29yZVdlYlRo
cmVhZFJ1bihibG9jayk7CisjZW5kaWYKKyAgICBlbHNlCisgICAgICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKK30KKworYm9vbCBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXAoKQoreworICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX2RlYnVnZ2FibGVMb2NrKTsKKworICAgIGlmICghbV9kZWJ1Z2dhYmxlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBkaXNwYXRjaFN5bmNPbkRlYnVnZ2FibGUoXnsKKyAgICAg
ICAgaWYgKCFtX2RlYnVnZ2FibGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAobV9kZWJ1Z2dhYmxlLT5oYXNMb2NhbERlYnVnZ2Vy
KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9kZWJ1Z2dhYmxlLT5jb25uZWN0
KHRoaXMpOworICAgICAgICBtX2Nvbm5lY3RlZCA9IHRydWU7CisgICAgfSk7CisKKyAgICByZXR1
cm4gbV9jb25uZWN0ZWQ7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb246OmNsb3NlRnJvbURlYnVnZ2FibGUoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X2RlYnVnZ2FibGVMb2NrKTsKKworICAgIG1fZGVidWdnYWJsZSA9IG51bGxwdHI7Cit9CisKK3Zv
aWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAgICBy
ZWYoKTsKKyAgICBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKF57CisgICAgICAgIHsKKyAgICAg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2FibGVMb2NrKTsKKworICAgICAgICAg
ICAgaWYgKG1fZGVidWdnYWJsZSkgeworICAgICAgICAgICAgICAgIGlmIChtX2Nvbm5lY3RlZCkK
KyAgICAgICAgICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlLT5kaXNjb25uZWN0KCk7CisKKyAgICAg
ICAgICAgICAgICBtX2RlYnVnZ2FibGUgPSBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGRlcmVmKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb246OnNlbmRNZXNzYWdlVG9CYWNrZW5kKE5TU3RyaW5nICptZXNz
YWdlKQoreworICAgIHJlZigpOworICAgIGRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUoXnsKKyAg
ICAgICAgeworICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGVidWdnYWJsZUxvY2sp
OworCisgICAgICAgICAgICBpZiAobV9kZWJ1Z2dhYmxlKQorICAgICAgICAgICAgICAgIG1fZGVi
dWdnYWJsZS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKG1lc3NhZ2UpOworICAg
ICAgICB9CisgICAgICAgIGRlcmVmKCk7CisgICAgfSk7Cit9CisKK2Jvb2wgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS5zZW5kTWVzc2Fn
ZVRvUmVtb3RlRnJvbnRlbmQoaWRlbnRpZmllcigpLCBtZXNzYWdlKTsKKworICAgIHJldHVybiB0
cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZjM2YWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
KworI2lmbmRlZiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uX2gKKyNkZWZpbmUgUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbl9oCisKKyNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+
CisjaW1wb3J0IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbXBvcnQgPHhwYy94cGMuaD4KKworT0JK
Q19DTEFTUyBOU1N0cmluZzsKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OworCituYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKKworY2xhc3MgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbik7CisKK3B1
YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+
Q2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uUmVjZWl2ZWRN
ZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCBOU1N0cmluZyAqbWVzc2FnZU5h
bWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHhw
Y0Nvbm5lY3Rpb25GYWlsZWQoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiopID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3QpID0gMDsKKyAgICB9OworCisgICAg
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90LCBDbGllbnQqKTsK
KyAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKCk7CisKKyAgICB2b2lk
IGNsb3NlKCk7CisgICAgdm9pZCBzZW5kTWVzc2FnZShOU1N0cmluZyAqbWVzc2FnZU5hbWUsIE5T
RGljdGlvbmFyeSAqdXNlckluZm8pOworCitwcml2YXRlOgorICAgIE5TRGljdGlvbmFyeSAqZGVz
ZXJpYWxpemVNZXNzYWdlKHhwY19vYmplY3RfdCk7CisgICAgdm9pZCBoYW5kbGVFdmVudCh4cGNf
b2JqZWN0X3QpOworCisgICAgeHBjX2Nvbm5lY3Rpb25fdCBtX2Nvbm5lY3Rpb247CisgICAgZGlz
cGF0Y2hfcXVldWVfdCBtX3F1ZXVlOworICAgIENsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb25faAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5hZDE2OTk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpAQCAt
MCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbi5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKworI2lmIF9f
aGFzX2luY2x1ZGUoPENvcmVGb3VuZGF0aW9uL0NGWFBDQnJpZGdlLmg+KQorI2ltcG9ydCA8Q29y
ZUZvdW5kYXRpb24vQ0ZYUENCcmlkZ2UuaD4KKyNlbHNlCitleHRlcm4gIkMiIHhwY19vYmplY3Rf
dCBfQ0ZYUENDcmVhdGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KENGVHlwZVJlZik7CitleHRlcm4g
IkMiIENGVHlwZVJlZiBfQ0ZYUENDcmVhdGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY19vYmpl
Y3RfdCk7CisjZW5kaWYKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKKy8vIENvbnN0YW50cyBw
cml2YXRlIHRvIHRoaXMgZmlsZSBmb3IgbWVzc2FnZSBzZXJpYWxpemF0aW9uIG9uIGJvdGggZW5k
cy4KKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1lc3NhZ2VOYW1lS2V5IEAi
bWVzc2FnZU5hbWUiCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25Vc2VySW5m
b0tleSBAInVzZXJJbmZvIgorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uU2Vy
aWFsaXplZE1lc3NhZ2VLZXkgIm1zZ0RhdGEiCisKK1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b246OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0
aW9uLCBDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAg
ICwgbV9xdWV1ZShkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5KYXZhU2NyaXB0Q29y
ZS5yZW1vdGUtaW5zcGVjdG9yLXhwYy1jb25uZWN0aW9uIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFM
KSkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKK3sKKyAgICB4cGNfcmV0YWluKG1fY29ubmVjdGlv
bik7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShtX2Nvbm5lY3Rpb24sIG1f
cXVldWUpOworICAgIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qIHdlYWtUaGlzID0gdGhp
czsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX2Nvbm5lY3Rpb24sIF4o
eHBjX29iamVjdF90IG9iamVjdCkgeworICAgICAgICB3ZWFrVGhpcy0+aGFuZGxlRXZlbnQob2Jq
ZWN0KTsKKyAgICB9KTsKKyAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUobV9jb25uZWN0aW9uKTsK
K30KKworUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24oKQoreworICAgIEFTU0VSVCghbV9jbGllbnQpOworICAgIEFTU0VSVCghbV9jb25u
ZWN0aW9uKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSgp
Cit7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIHhwY19j
b25uZWN0aW9uX2NhbmNlbChtX2Nvbm5lY3Rpb24pOworICAgIHhwY19yZWxlYXNlKG1fY29ubmVj
dGlvbik7CisgICAgbV9jb25uZWN0aW9uID0gTlVMTDsKKworICAgIGRpc3BhdGNoX3JlbGVhc2Uo
bV9xdWV1ZSk7CisgICAgbV9xdWV1ZSA9IE5VTEw7CisKKyAgICBtX2NsaWVudCA9IG51bGxwdHI7
Cit9CisKK05TRGljdGlvbmFyeSAqUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6ZGVzZXJp
YWxpemVNZXNzYWdlKHhwY19vYmplY3RfdCBvYmplY3QpCit7CisgICAgaWYgKHhwY19nZXRfdHlw
ZShvYmplY3QpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICB4cGNfb2JqZWN0X3QgeHBjRGljdGlvbmFyeSA9IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1
ZShvYmplY3QsIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25TZXJpYWxpemVkTWVzc2FnZUtl
eSk7CisgICAgaWYgKCF4cGNEaWN0aW9uYXJ5IHx8IHhwY19nZXRfdHlwZSh4cGNEaWN0aW9uYXJ5
KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKSB7CisgICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAg
ICAgICAgIG1fY2xpZW50LT54cGNDb25uZWN0aW9uVW5oYW5kbGVkTWVzc2FnZSh0aGlzLCBvYmpl
Y3QpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIE5TRGljdGlvbmFyeSAqZGlj
dGlvbmFyeSA9IHN0YXRpY19jYXN0PE5TRGljdGlvbmFyeSAqPihfQ0ZYUENDcmVhdGVDRk9iamVj
dEZyb21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGRpY3Rpb25hcnksICJVbmFibGUgdG8gZGVzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKKyAgICBy
ZXR1cm4gW2RpY3Rpb25hcnkgYXV0b3JlbGVhc2VdOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCBvYmplY3QpCit7CisgICAg
aWYgKCFtX2Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh4cGNfZ2V0X3R5
cGUob2JqZWN0KSA9PSBYUENfVFlQRV9FUlJPUikgeworICAgICAgICBpZiAobV9jbGllbnQpCisg
ICAgICAgICAgICBtX2NsaWVudC0+eHBjQ29ubmVjdGlvbkZhaWxlZCh0aGlzKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIE5TRGljdGlvbmFyeSAqZGF0YURpY3Rpb25hcnkgPSBkZXNl
cmlhbGl6ZU1lc3NhZ2Uob2JqZWN0KTsKKyAgICBpZiAoIWRhdGFEaWN0aW9uYXJ5KQorICAgICAg
ICByZXR1cm47CisKKyAgICBOU1N0cmluZyAqbWVzc2FnZSA9IFtkYXRhRGljdGlvbmFyeSBvYmpl
Y3RGb3JLZXk6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1lc3NhZ2VOYW1lS2V5XTsKKyAg
ICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gW2RhdGFEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uVXNlckluZm9LZXldOworICAgIGlmIChtX2NsaWVu
dCkKKyAgICAgICAgbV9jbGllbnQtPnhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2UodGhpcywg
bWVzc2FnZSwgdXNlckluZm8pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b246OnNlbmRNZXNzYWdlKE5TU3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbykKK3sKKyAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
TlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlXaXRoT2JqZWN0Om1lc3NhZ2VOYW1lIGZvcktleTpSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uTWVzc2FnZU5hbWVLZXldOworICAgIGlmICh1c2VySW5mbykKKyAgICAgICAgW2Rp
Y3Rpb25hcnkgc2V0T2JqZWN0OnVzZXJJbmZvIGZvcktleTpSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uVXNlckluZm9LZXldOworCisgICAgeHBjX29iamVjdF90IHhwY0RpY3Rpb25hcnkgPSBf
Q0ZYUENDcmVhdGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KChDRkRpY3Rpb25hcnlSZWYpZGljdGlv
bmFyeSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9uYXJ5ICYmIHhwY19nZXRf
dHlwZSh4cGNEaWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB4cGMgbWVzc2FnZSIpOworICAgIGlmICgheHBjRGljdGlvbmFyeSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgeHBjX29iamVjdF90IG1zZyA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShO
VUxMLCBOVUxMLCAwKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobXNnLCBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0RpY3Rpb25hcnkp
OworICAgIHhwY19yZWxlYXNlKHhwY0RpY3Rpb25hcnkpOworCisgICAgeHBjX2Nvbm5lY3Rpb25f
c2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbiwgbXNnKTsKKworICAgIHhwY19yZWxlYXNlKG1zZyk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IDIwNjMxNDcuLjRkNjMwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5l
Y3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9pb3MvV2ViQ29yZVRocmVhZC5jcHA6
CisgICAgICAgICogd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmg6CisgICAgICAgIEV4cG9zZSBXZWJU
aHJlYWRSdW4vV2ViVGhyZWFkUnVuU3luYyBpT1MgbWV0aG9kcyBkZWZpbmVkIGluIFdlYkNvcmUg
dGhyb3VnaAorICAgICAgICBXVEYgc28gdGhhdCBKYXZhU2NyaXB0Q29yZSBjYW4gdXNlIGl0LiBB
bm90aGVyIHN1Y2ggbWV0aG9kIGFscmVhZHkgZXhpc3RlZC4KKwogMjAxMy0xMS0yMCAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNpbmcgVk1FbnRyeVNj
b3BlIHRvIHVwZGF0ZSB0aGUgVk0gc3RhY2sgbGltaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRo
cmVhZC5jcHAKaW5kZXggNDI3NDQ2Ni4uZjA3ZGMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvaW9zL1dlYkNvcmVUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3Jl
VGhyZWFkLmNwcApAQCAtMjgsNCArMjgsNyBAQAogCiAjaWYgVVNFKFdFQl9USFJFQUQpCiBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCAoKldlYkNvcmVXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQp
KHZvaWQpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFkSXNFbmFi
bGVkKSh2b2lkKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1
bikodm9pZCAoXmJsb2NrKSgpKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkICgqV2ViQ29yZVdl
YlRocmVhZFJ1blN5bmMpKHZvaWQgKF5ibG9jaykoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2Vi
Q29yZVRocmVhZC5oCmluZGV4IDEwZTI2YTcuLjgxOWNlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYvaW9zL1dlYkNv
cmVUaHJlYWQuaApAQCAtMzMsNiArMzMsOSBAQCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiBleHRl
cm4gYm9vbCAoKldlYkNvcmVXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQpKHZvaWQpOworZXh0
ZXJuIGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKSh2b2lkKTsKK2V4dGVybiB2b2lk
ICgqV2ViQ29yZVdlYlRocmVhZFJ1bikodm9pZCAoXmJsb2NrKSgpKTsKK2V4dGVybiB2b2lkICgq
V2ViQ29yZVdlYlRocmVhZFJ1blN5bmMpKHZvaWQgKF5ibG9jaykoKSk7CiAKICNpZmRlZiBfX2Nw
bHVzcGx1cwogfQo=
</data>
<flag name="review"
          id="240909"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218236</attachid>
            <date>2013-12-02 16:37:08 -0800</date>
            <delta_ts>2013-12-02 17:08:20 -0800</delta_ts>
            <desc>[PATCH] Combined For Bots</desc>
            <filename>for-bots.patch</filename>
            <type>text/plain</type>
            <size>195440</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5oCmluZGV4IDEyNjdiN2EuLmY5ZDdjZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaApAQCAtMTY0LDYgKzE2NCwxMiBA
QCBPQkpDX1ZJU0lCTEUKICovCiBAcHJvcGVydHkocmVhZG9ubHksIHJldGFpbikgSlNWaXJ0dWFs
TWFjaGluZSAqdmlydHVhbE1hY2hpbmU7CiAKKy8qIQorQHByb3BlcnR5CitAZGlzY3Vzc2lvbiBO
YW1lIG9mIHRoZSBKU0NvbnRleHQuIEV4cG9zZWQgd2hlbiByZW1vdGUgZGVidWdnaW5nIHRoZSBj
b250ZXh0LgorKi8KK0Bwcm9wZXJ0eShjb3B5KSBOU1N0cmluZyAqbmFtZTsKKwogQGVuZAogCiAv
KiEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggYmM4ZmMxYS4uNDdk
Y2IwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTE2Niw2ICsx
NjYsMjIgQEAKICAgICByZXR1cm4gbV92aXJ0dWFsTWFjaGluZTsKIH0KIAorLSAoTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTR2xvYmFsQ29udGV4dENvcHlOYW1l
KG1fY29udGV4dCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
cmV0dXJuIFsoTlNTdHJpbmcgKilKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBuYW1lKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZUpTID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZT
dHJpbmcoKENGU3RyaW5nUmVmKVtuYW1lIGNvcHldKTsKKyAgICBKU0dsb2JhbENvbnRleHRTZXRO
YW1lKG1fY29udGV4dCwgbmFtZUpTKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UobmFtZUpTKTsKK30K
KwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gSlNDb250ZXh0KFN1YnNjcmlwdFN1cHBvcnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggZjBhNDM1Yy4u
ODFiNjFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApA
QCAtMjEzLDYgKzIxMywzNyBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFs
Q29udGV4dChKU0NvbnRleHRSZWYgY3R4KQogICAgIHJldHVybiB0b0dsb2JhbFJlZihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSk7CiB9CiAKK0pTU3RyaW5nUmVmIEpT
R2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCit7CisgICAgaWYg
KCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBBUElFbnRy
eVNoaW0gZW50cnlTaGltKGV4ZWMpOworCisgICAgU3RyaW5nIG5hbWUgPSBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCktPm5hbWUoKTsKKyAgICBpZiAobmFtZS5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKS5sZWFr
UmVmKCk7Cit9CisKK3ZvaWQgSlNHbG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRS
ZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7
CisKKyAgICBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnNldE5hbWUobmFtZSA/IG5hbWUt
PnN0cmluZygpIDogU3RyaW5nKCkpOworfQorCisKIGNsYXNzIEJhY2t0cmFjZUZ1bmN0b3Igewog
cHVibGljOgogICAgIEJhY2t0cmFjZUZ1bmN0b3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5z
aWduZWQgcmVtYWluaW5nQ2FwYWNpdHlGb3JGcmFtZUNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuaAppbmRleCA3NzA1OTU1Li5lYWI3YTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgKQEAgLTEzMyw2ICsxMzMsMjQgQEAgSlNf
RVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBj
dHgpIEFWQUlMQUJMRV9JTl9XRUIKICovCiBKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpT
Q29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEw
XzcsIDRfMCk7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyBhIGNvcHkgb2YgdGhl
IG5hbWUgb2YgYSBjb250ZXh0LgorQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHdob3Nl
IG5hbWUgeW91IHdhbnQgdG8gZ2V0LgorQHJlc3VsdCBUaGUgbmFtZSBmb3IgY3R4LgorQGRpc2N1
c3Npb24gQSBKU0dsb2JhbENvbnRleHQncyBuYW1lIGlzIGV4cG9zZWQgZm9yIHJlbW90ZSBkZWJ1
Z2dpbmcgdG8gbWFrZSBpdAorZWFzaWVyIHRvIGlkZW50aWZ5IHRoZSBjb250ZXh0IHlvdSB3b3Vs
ZCBsaWtlIHRvIGF0dGFjaCB0by4KKyovCitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNHbG9iYWxD
b250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCk7CisKKy8qIQorQGZ1bmN0aW9u
CitAYWJzdHJhY3QgU2V0cyB0aGUgcmVtb3RlIGRlYnVnZ2luZyBuYW1lIGZvciBhIGNvbnRleHQu
CitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBuYW1lLgor
QHBhcmFtIG5hbWUgVGhlIHJlbW90ZSBkZWJ1Z2dpbmcgbmFtZSB0byBzZXQgb24gY3R4LgorKi8K
K0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldE5hbWUoSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgbmFtZSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiNDQzYmUyLi41NTY3ZGRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzEgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNo
IFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEph
dmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtlIEpTQ29udGV4dCBAY2xhc3MgYW5kIEphdmFTY3JpcHRDb3JlOjpKU0NvbnRleHRS
ZWYKKyAgICAgICAgIkphdmFTY3JpcHQiIFJlbW90ZSBEZWJ1Z2dhYmxlcy4KKworICAgICAgICAq
IEFQSS9KU0NvbnRleHQuaDoKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAo
LVtKU0NvbnRleHQgbmFtZV0pOgorICAgICAgICAoLVtKU0NvbnRleHQgc2V0TmFtZTpdKToKKyAg
ICAgICAgT2JqQyBBUEkgdG8gZW5hYmxlL2Rpc2FibGUgSlNDb250ZXh0IHJlbW90ZSBpbnNwZWN0
aW9uIGFuZCBnaXZlIGEgbmFtZS4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuaDoKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dEdl
dE5hbWUpOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0U2V0TmFtZSk6CisgICAgICAgIEMgQVBJ
IHRvIGdpdmUgYSBKU0NvbnRleHQgYSBuYW1lLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNldE5hbWUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6Om5hbWUpOgorICAgICAgICBTaGFyZWQgaGFuZGxpbmcgb2YgdGhlIEFQSXMgYWJvdmUuCisK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OkpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6bmFtZSk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzY29ubmVjdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90
ZUZyb250ZW5kKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5o
OiBBZGRlZC4KKyAgICAgICAgU3R1YiBmb3IgdGhlIGFjdHVhbCByZW1vdGUgZGVidWdnaW5nIGlt
cGxlbWVudGF0aW9uLiBXZSB3aWxsIHB1c2gKKyAgICAgICAgZG93biB0aGUgYXBwcm9wcmlhdGUg
V2ViQ29yZS9pbnNwZWN0b3IgcGVpY2VzIHN1aXRhYmxlIGZvciBkZWJ1Z2dpbmcKKyAgICAgICAg
anVzdCBhIEphdmFTY3JpcHQgY29udGV4dC4KKworMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVt
b3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNj
cmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDYxMworCisgICAgICAgIE1vdmUgdGhlIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSByZW1v
dGUgZGVidWdnZXIgY29ubmVjdGlvbiBtYW5hZ2VtZW50CisgICAgICAgIGludG8gSmF2YVNjcmlw
dENvcmUgKG9yaWdpbmFsbHkgZnJvbSBXZWJLaXQvbWFjKS4gSW5jbHVkZSBlbmhhbmNlbWVudHM6
CisKKyAgICAgICAgICAqIGFsbG93IGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgcmVtb3RlIGRlYnVn
Z2FibGUgdGFyZ2V0cywKKyAgICAgICAgICAgIGV2ZW50dWFsbHkgYXQgbGVhc3QgYSBKU0NvbnRl
eHQsIFdlYlZpZXcsIFdLVmlldy4KKyAgICAgICAgICAqIGFsbG93IGRlYnVnZ2FibGVzIHRvIGJl
IHJlZ2lzdGVyZWQgYW5kIGRlYnVnZ2VkIG9uIGFueSB0aHJlYWQuIFVubGlrZQorICAgICAgICAg
ICAgV2ViVmlld3MsIEpTQ29udGV4dHMgbWF5IGJlIHJ1biBlbnRpcmVseSBvZmYgb2YgdGhlIG1h
aW4gdGhyZWFkLgorICAgICAgICAgICogbW92ZSB0aGUgcmVtb3RlIGNvbm5lY3Rpb24gKFhQQyBj
b25uZWN0aW9uKSBpdHNlbGYgb2ZmIG9mIHRoZSBtYWluIHRocmVhZCwKKyAgICAgICAgICAgIGl0
IGRvZXNuJ3QgbmVlZCB0byBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlLmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6flJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlOjppbml0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6dXBkYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluZm8pOgorICAgICAgICBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlIGRlZmluZXMgYSBkZWJ1Z2dhYmxlIHRhcmdldC4gQXMgbG9uZyBhcworICAg
ICAgICBzb21ldGhpbmcgY3JlYXRlcyBhIGRlYnVnZ2FibGUgYW5kIGlzIHNldCB0byBhbGxvdyBy
ZW1vdGUgaW5zcGVjdGlvbgorICAgICAgICBpdCB3aWxsIGJlIGxpc3RlZCBpbiByZW1vdGUgZGVi
dWdnZXJzLiBGb3IgdGhlIGRpZmZlcmVudCB0eXBlcyBvZgorICAgICAgICBkZWJ1Z2dhYmxlcyAo
SmF2YVNjcmlwdCBhbmQgV2ViKSB0aGVyZSBpcyBkaWZmZXJlbnQgYmFzaWMgaW5mb3JtYXRpb24K
KyAgICAgICAgdGhhdCBtYXkgYmUgbGlzdGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsOjp+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKToKKyAgICAgICAg
VGhlIG9ubHkgdGhpbmcgYSBkZWJ1Z2dhYmxlIG5lZWRzIGZvciByZW1vdGUgZGVidWdnaW5nIGlz
IGFuCisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBhIHdheSB0byBzZW5kIG1lc3Nh
Z2VzIHRvIGEgcmVtb3RlIGZyb250ZW5kLgorICAgICAgICBUaGlzIGNsYXNzIHByb3ZpZGVzIHRo
YXQgbWV0aG9kLCBhbmQgaXMgdmVuZGVkIHRvIHRoZQorICAgICAgICBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlIHdoZW4gYSByZW1vdGUgY29ubmVjdGlvbiBpcyBzZXR1cC4KKworICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOiBBZGRlZC4KKyAgICAgICAgU2luZ2xl
dG9uLCBjcmVhdGVkIGF0IGxlYXN0IHdoZW4gdGhlIGZpcnN0IERlYnVnZ2FibGUgaXMgY3JlYXRl
ZC4KKyAgICAgICAgVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBsaXN0IG9mIGRlYnVnZ2FibGVzLCBh
bnkgY29ubmVjdGlvbiB0byBhCisgICAgICAgIHJlbW90ZSBkZWJ1Z2dlciBwcm94eSAoWFBDIHNl
cnZpY2UgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiKS4KKworICAgICAgICAoSW5zcGVjdG9yOjpk
aXNwYXRjaEFzeW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6bmV4dEF2YWlsYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGUpOgorICAgICAgICBEZWJ1
Z2dhYmxlIG1hbmFnZW1lbnQuIFdoZW4gZGVidWdnYWJsZXMgYXJlIGFkZGVkLCByZW1vdmVkLCBv
ciB1cGRhdGVkCisgICAgICAgIHdlIHN0YXNoIGEgY29weSBvZiB0aGUgZGVidWdnYWJsZSBpbmZv
cm1hdGlvbiBhbmQgcHVzaCBhbiB1cGRhdGUgdG8KKyAgICAgICAgZGVidWdnZXJzLiBTdGFzaGlu
ZyBhIGNvcHkgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBSZW1vdGVJbnNwZWN0b3IKKyAgICAg
ICAgaXMgYSB0aHJlYWQgc2FmZSB3YXkgdG8gYXZvaWQgd2Fsa2luZyBvdmVyIGFsbCBkZWJ1Z2dh
YmxlcyB0byBnYXRoZXIKKyAgICAgICAgdGhlIGluZm9ybWF0aW9uIHdoZW4gaXQgaXMgbmVlZGVk
LgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0b3ApOgorICAgICAgICBSdW50aW1lIEFQ
SSB0byBlbmFibGUgLyBkaXNhYmxlIHRoZSBmZWF0dXJlLgorCisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nTm93KToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ1Nvb24pOgorICAgICAgICBQdXNoaW5nIGEg
bGlzdGluZyB0byByZW1vdGUgZGVidWdnZXJzLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVz
c2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlv
bkZhaWxlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVj
dGlvblVuaGFuZGxlZE1lc3NhZ2UpOgorICAgICAgICBYUEMgc2V0dXAsIHNlbmQsIGFuZCByZWNl
aXZlIGhhbmRsaW5nLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBk
YXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKToKKyAgICAgICAgQXBwbGljYXRpb25zIGJlaW5nIGRl
YnVnZ2VkIG1heSB3YW50IHRvIGtub3cgd2hlbiBhIGRlYnVnCisgICAgICAgIHNlc3Npb24gaXMg
YWN0aXZlLiBUaGlzIHByb3ZpZGVzIHRoYXQgbm90aWZpY2F0aW9uLgorCisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldExpc3RpbmdN
ZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZElu
ZGljYXRlTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVj
ZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UpOgorICAgICAgICBEaXNwYXRjaGluZyBpbmNvbWlu
ZyByZW1vdGUgZGVidWdnaW5nIHByb3RvY29sIG1lc3NhZ2VzLgorICAgICAgICBUaGVzZSBhcmUg
d3JhcHBpbmcgYWJvdmUgdGhlIGluc3BlY3RvciBwcm90b2NvbCBtZXNzYWdlcy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg6IEFkZGVkLgor
ICAgICAgICBQcm90b2NvbCBtZXNzYWdlcyBhbmQgZGljdGlvbmFyeSBrZXlzIGluc2lkZSB0aGUg
bWVzc2FnZXMuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm86OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24ubW06IEFkZGVkLgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVuIHRo
ZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGUuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb246OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246On5SZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbik6CisgICAgICAgIEFsbG93IGZvciBkaXNwYXRjaGlu
ZyBtZXNzYWdlcyBvbiBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzIG9uIGEgZGlzcGF0Y2hfcXVldWUK
KyAgICAgICAgaW5zdGVhZCBvZiB0aGUgbWFpbiBxdWV1ZS4KKworICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGVzdGluYXRpb24pOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y29u
bmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBOZWVkZWQgaW4gdGhlIHJlbW90ZSBkZWJ1Z2dp
bmcgcHJvdG9jb2wgdG8gaWRlbnRpZnkgdGhlIHJlbW90ZSBkZWJ1Z2dlci4KKworICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0Y2hT
eW5jT25EZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXApOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
Y2xvc2VGcm9tRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICBUaGUgY29ubmVjdGlvbiBpcyBhIHRoaW4g
Y2hhbm5lbCBiZXR3ZWVuIHRoZSB0d28gc2lkZXMgdGhhdCBjYW4gYmUgY2xvc2VkCisgICAgICAg
IGZyb20gZWl0aGVyIHNpZGUsIHNvIHRoZXJlIGlzIHNvbWUgbG9naWMgYXJvdW5kIG11bHRpLXRo
cmVhZGVkIGFjY2Vzcy4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50Ojp+Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06IEFkZGVkLgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24pOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2Fn
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVu
IHRoZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhbiBYUEMgc2VydmljZQorICAgICAg
ICBuYW1lZCAiY29tLmFwcGxlLndlYmluc3BlY3RvciIuIFRoaXMgaGFuZGxlcyBzZXJpYWxpemF0
aW9uIG9mIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1lc3NhZ2VzIHRvIGFuZCBmcm9tIHRoZSBz
ZXJ2aWNlLiBUaGUgcmVjZWl2aW5nIGlzIGRvbmUgb24gYSBub24tbWFpbiBxdWV1ZS4KKwogMjAx
My0xMi0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3Jl
cyB0byBsb2NhbCBjYXB0dXJlZCB2YXJpYWJsZXMgc2hvdWxkIGJlIGludGVyY2VwdGVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY2NTg1NWYuLmU4M2ZmN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODYsNiArODg2LDE4IEBACiAJCUExNzEyQjQxMTFDN0Iy
MzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEwMDlD
MDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0MxNTZFRUQzQjAwNTY2Q0Iy
IC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1OTQ1NThGMTgyNDVFRkQwMEND
Mzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKKwkJQTU5NDU1OTIxODI0NzQ0NzAw
Q0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5MDE4MjQ3NDQ3MDBDQzM4NDMgLyog
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKKwkJQTU5NDU1OTMxODI0NzQ0NzAw
Q0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OTExODI0NzQ0NzAwQ0MzODQzIC8qIEpT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oICovOyB9OworCQlBNTk0NTU5NTE4MjQ3OUVCMDBDQzM4
NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1
RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2
OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
Lm1tICovOyB9OworCQlBNUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
Q29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNUJBMTVFMzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVCQTE1
RUIxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVF
NDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24u
aCAqLzsgfTsKKwkJQTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uLm1tICovOyB9OworCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJFNjkg
LyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLzsgfTsKKwkJQTVCQTE1RUUxODIzNDBCNDAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNzE4MjM0MEIzMDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLzsgfTsKKwkJQTVCQTE1RjAxODIzNDVB
RjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUVGMTgyMzQ1QUYwMEE4MkU2OSAv
KiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcwMDg3MzkxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENv
bnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi87IH07
CiAJCUE3MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3MzgxN0NCRTg1MzAw
QzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggKi87IH07CiAJCUE3MDA4NzNEMTdDQkU4RDMwMEMz
RTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5j
cHAgKi87IH07CkBAIC0yMTk2LDYgKzIyMDgsMTggQEAKIAkJQTE3MTJCM0ExMUM3QjIxMjAwN0E1
MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlZ0V4cENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJC
M0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGUuY3BwOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5NDU1OTAxODI0
NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4NDMgLyog
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbC5oOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyogUmVt
b3RlSW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUlu
c3BlY3Rvci5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTIxODIzNDBCMzAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFJlbW90ZUluc3BlY3Rvci5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFMzE4MjM0MEIzMDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oOyBwYXRoID0gaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTVCQTE1RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg7IHBhdGggPSBpbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE1QkExNUU1MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tOyBwYXRoID0gaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oOyBwYXRoID0gaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1QkExNUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTVCQTE1RUYxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZS5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0
MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNYXBDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
MDA4NzM4MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYXBDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzAwODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcFByb3RvdHlwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjk0LDYgKzI3MTgsNyBAQAogCQkJCTA4NjdE
NjlBRkU4NDAyOEZDMDJBQUMwNyAvKiBGcmFtZXdvcmtzICovLAogCQkJCTBGRUEwOUZDMTcwNTEz
N0YwMEJCNzIyQyAvKiBmdGwgKi8sCiAJCQkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8qIGhl
YXAgKi8sCisJCQkJQTVCQTE1REYxODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAqLywKIAkJ
CQkxNDI5RDc3QTBFRDIwRDczMDBCODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8sCiAJCQkJMTQyOUQ5
MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLywKIAkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUy
NzIgLyogbGxpbnQgKi8sCkBAIC0zNDc3LDYgKzM1MDIsOCBAQAogCQkJCTBGMkI2NkM4MTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCAq
LywKIAkJCQkxNERFMEQ2ODBEMDI0MzE0MDBBQUNDQTIgLyogSlNHbG9iYWxPYmplY3QuY3BwICov
LAogCQkJCUE4RTg5NDMzMENEMDYwM0YwMDM2NzE3OSAvKiBKU0dsb2JhbE9iamVjdC5oICovLAor
CQkJCUE1OTQ1NTkwMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUu
Y3BwICovLAorCQkJCUE1OTQ1NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERl
YnVnZ2FibGUuaCAqLywKIAkJCQlCQzc1NkZDNjBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwICovLAogCQkJCUJDNzU2RkM3MEUyMDMxQjIwMERFN0QxMiAvKiBK
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oICovLAogCQkJCTBGMkI2NkNBMTdCNkI1QUIwMEE3QUUz
RiAvKiBKU0ludDE2QXJyYXkuaCAqLywKQEAgLTQxNDUsNiArNDE3MiwzMSBAQAogCQkJcGF0aCA9
IGJ5dGVjb2RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTVCQTE1REYx
ODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJQTVCQTE1RTAxODIzNDA5RDAwQTgyRTY5IC8qIHJlbW90ZSAq
LywKKwkJCQlBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsLmggKi8sCisJCQkpOworCQkJbmFtZSA9IGluc3BlY3RvcjsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CisJCUE1QkExNUUwMTgyMzQwOUQwMEE4MkU2OSAvKiByZW1vdGUgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1QkExNUUxMTgy
MzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCAqLywKKwkJCQlBNUJBMTVFMjE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tICovLAorCQkJCUE1QkExNUUzMTgyMzQw
QjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCAqLywKKwkJCQlBNUJBMTVF
RjE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oICovLAorCQkJ
CUE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNw
cCAqLywKKwkJCQlBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb24uaCAqLywKKwkJCQlBNUJBMTVFNTE4MjM0MEIzMDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gKi8sCisJCQkJQTVCQTE1RTYx
ODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLywKKwkJ
CQlBNUJBMTVFNzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gcmVtb3RlOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhl
YWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQyMTUsNiArNDI2Nyw3IEBACiAJCQkJODY2
NzM5RDIxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0ODE2RTFDMTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEMzRUMwRTE2RjVDRDAwQjM0NDYwIC8qIEJvb2xlYW5PYmplY3QuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE1QkExNUVBMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0
b3JDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk3MTVFRDhFNDYwMEYxNjdC
MiAvKiBCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk4MTVFRDhFNDYwMEYx
NjdCMiAvKiBCdXR0ZXJmbHlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI3RjE0
QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBA
IC00Mjg1LDYgKzQzMzgsNyBAQAogCQkJCTBGMTYwMTVFMTU2MTk4QzkwMEMyNTg3QyAvKiBERkdB
cmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA1QzNC
NDE2ODNDRjkyMDBCQUY0NUIgLyogREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY2Mzk0ODUxNUU0ODExQjAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RUIxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5QTI5
NTE3QTBCQzc0MDBFRTI2MTggLyogREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY3MTRDQTUxNkVBOTJGMjAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIwMTc2MTQzRkNEM0IwMDY4Qjc3QyAv
KiBERkdCYXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLywKQEAgLTQzNjAsNiArNDQxNCw3IEBACiAJ
CQkJMEZEOEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBo
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyogREZH
T1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkwQzdGIC8q
IERGR09TUkV4aXRCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUJBMTVFRDE4MjM0MEI0MDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZGQjkyMUMxNkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JF
eGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMw
RSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtNDQxOCw2
ICs0NDczLDcgQEAKIAkJCQkwRkVBMEEwODE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZU
TEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3
MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1
OTQ1NTkzMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRUEwQTBBMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExD
b21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBDMTcwNTEzREIwMEJCNzIy
QyAvKiBGVExDb21waWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ1MTAsNiArNDU2Niw3IEBACiAJ
CQkJODZDQ0VGREUwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERpc2Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRC
QTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIx
NEUxRjE4MTI0QUNFMDA5QjZCNEQgLyogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKQEAgLTQ2ODEsNiArNDczOCw3IEBACiAJCQkJMTREMkYzREIxMzlGNEJFMjAw
NDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJENkYxMjEzNTM5
QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjExMjJFMzE1
REQ5QUIzMDA3OTBFM0EgLyogTWFya1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTU5NDU1OTUxODI0NzlFQjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODYxMkU0Q0QxNTIzODlFQzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzQzBFMTZGNUNEMDBCMzQ0NjAgLyogTWF0aE9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNBNDBDMjAwRDQyMkYzIC8qIE1l
bW9yeVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLApAQCAtNDg0OSw2ICs0OTA3LDcgQEAKIAkJ
CQkxNDJFMzEzQzEzNEZGMEE2MDBBRkFEQjUgLyogV2Vhay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTRFODRGOUYxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRGNzI1NjYxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVPd25l
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRFODRGQTIxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtJ
bXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEJFN0QzMzE3MTM1Q0Y0MDBEMTgwN0EgLyogV2Vh
a0lubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTQ0Myw2ICs1NTAyLDcgQEAKIAkJCQlBN0I0
OEY0OTBFRTg5MzZGMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NkRCNjQ2NDBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFsbG9jYXRv
ckZpeGVkVk1Qb29sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTZBMUQ1MTUwMDFDRjQwMDI5
OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1OTQ1NTky
MTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZCMTA1ODUxNjc1NDgwRjAwRjhBQjZFIC8qIEV4aXRLaW5kLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRUEwQTFDMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhl
YXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMUUxNzA4QjAwNzAwQkI3MjJDIC8qIEZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NjA0LDYgKzU2
NjQsNyBAQAogCQkJCTE0NDY5RERFMTA3RUM3RTcwMDY1MDQ0NiAvKiBMb29rdXAuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCNzIzQjIxMkQ3REE0NjAwM0JENUVEIC8q
IE1hY2hpbmVTdGFja01hcmtlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTk0NTU4RjE4MjQ1
RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkVCM0VDRjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1i
bGVyQVJNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAv
KiBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTczMSw2ICs1Nzky
LDkgQEAKIAkJCQlBN0NBM0FFNTE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEU4NEZBMDE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1Nl
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyogV3Jp
dGVCYXJyaWVyU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUJBMTVFOTE4MjM0MEIz
MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTVCQTE1
RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlBN0U1QUIzQTE3
OTlFNEIyMDBEMjgzM0QgLyogWDg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJl
dGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
SW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCnNpbWlsYXJp
dHkgaW5kZXggNjklCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9y
ZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCmluZGV4IGMzMjBm
ZGUuLmZhMGE4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9y
ZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIwICsyMywxOSBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7Ci1AY2xhc3MgV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb247CisjaWZuZGVmIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbF9oCisjZGVmaW5lIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oCiAKLUBpbnRl
cmZhY2UgV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCA6IE5TT2JqZWN0IHsKLUBwcml2YXRlCi0g
ICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKl9yZW1vdGU7Ci0gICAgV2Vi
SW5zcGVjdG9yQ2xpZW50KiBfbG9jYWw7Ci19CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKLSsgKFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKiljcmVhdGVDaGFubmVsRm9yUGFn
ZUlkOih1bnNpZ25lZClwYWdlSWQgY29ubmVjdGlvbjooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb24gKiljb25uZWN0aW9uOworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLS0gKHZv
aWQpY2xvc2VGcm9tTG9jYWxTaWRlOwotLSAodm9pZCljbG9zZUZyb21SZW1vdGVTaWRlOwotLSAo
dm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKLS0gKHZvaWQp
c2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKK2NsYXNzIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKCkgeyB9CisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKK307CiAKLUBlbmQKK30gLy8gbmFtZXNwYWNlIElu
c3BlY3RvcgorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsX2gp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzZDQw
M2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKKworI2lmbmRlZiBSZW1vdGVJbnNwZWN0b3JfaAorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3Jf
aAorCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oIgorI2lt
cG9ydCAiUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIgorI2ltcG9ydCA8d3RmL0Zvcndh
cmQuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KKworT0JKQ19DTEFTUyBOU1N0cmluZzsK
K09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OworCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xh
c3MgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTsKK3N0cnVjdCBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlSW5mbzsKKworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVjdG9yIEZJ
TkFMIDogcHVibGljIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OkNsaWVudCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlbW90ZUluc3BlY3RvciYgc2hhcmVkKCk7CisgICAgZnJpZW5kIGNs
YXNzIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj47CisKKyAgICB2b2lkIHJlZ2lzdGVy
RGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7CisgICAgdm9pZCB1bnJlZ2lz
dGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7CisgICAgdm9pZCB1cGRh
dGVEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqKTsKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9SZW1vdGVGcm9udGVuZCh1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpOworCisgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVk
OyB9CisgICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2hh
c0FjdGl2ZURlYnVnU2Vzc2lvbjsgfQorCisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgc3Rv
cCgpOworCitwcml2YXRlOgorICAgIFJlbW90ZUluc3BlY3RvcigpOworCisgICAgdW5zaWduZWQg
bmV4dEF2YWlsYWJsZUlkZW50aWZpZXIoKTsKKworICAgIHZvaWQgc2V0dXBYUENDb25uZWN0aW9u
SWZOZWVkZWQoKTsKKworICAgIE5TRGljdGlvbmFyeSAqbGlzdGluZ0ZvckRlYnVnZ2FibGUoY29u
c3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8mKSBjb25zdDsKKyAgICB2b2lkIHB1c2hM
aXN0aW5nTm93KCk7CisgICAgdm9pZCBwdXNoTGlzdGluZ1Nvb24oKTsKKworICAgIHZvaWQgdXBk
YXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVj
dGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgTlNTdHJp
bmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRN
ZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3QpIE9WRVJS
SURFOworCisgICAgdm9pZCByZWNlaXZlZFNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJ
bmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkRGF0YU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5m
byk7CisgICAgdm9pZCByZWNlaXZlZERpZENsb3NlTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJ
bmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkR2V0TGlzdGluZ01lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1
c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZEluZGljYXRlTWVzc2FnZShOU0RpY3Rpb25hcnkg
KnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKE5TRGlj
dGlvbmFyeSAqdXNlckluZm8pOworCisgICAgLy8gRGVidWdnYWJsZXMgY2FuIGJlIHJlZ2lzdGVy
ZWQgZnJvbSBhbnkgdGhyZWFkIGF0IGFueSB0aW1lLgorICAgIC8vIEFueSBkZWJ1Z2dhYmxlIGNh
biBzZW5kIG1lc3NhZ2VzIG92ZXIgdGhlIFhQQyBjb25uZWN0aW9uLgorICAgIC8vIFNvIGxvY2sg
YWNjZXNzIHRvIGFsbCBtYXBzIGFuZCBzdGF0ZSBhcyB0aGV5IGNhbiBjaGFuZ2UKKyAgICAvLyBm
cm9tIGFueSB0aHJlYWQuCisgICAgTXV0ZXggbV9sb2NrOworCisgICAgSGFzaE1hcDx1bnNpZ25l
ZCwgc3RkOjpwYWlyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqLCBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlSW5mbz4+IG1fZGVidWdnYWJsZU1hcDsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBS
ZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25N
YXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24+IG1f
eHBjQ29ubmVjdGlvbjsKKyAgICB1bnNpZ25lZCBtX25leHRBdmFpbGFibGVJZGVudGlmaWVyOwor
ICAgIGludCBtX25vdGlmeVRva2VuOworICAgIGJvb2wgbV9lbmFibGVkOworICAgIGJvb2wgbV9o
YXNBY3RpdmVEZWJ1Z1Nlc3Npb247CisgICAgYm9vbCBtX3B1c2hTY2hlZHVsZWQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQorCisjZW5kaWYgLy8gV2ViSW5zcGVjdG9yU2VydmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzliNDFkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yLm1tCkBAIC0wLDAgKzEsNDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0
b3IuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW1wb3J0ICJJbml0aWFs
aXplVGhyZWFkaW5nLmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCIKKyNp
bXBvcnQgIlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCIKKyNpbXBvcnQgPG5vdGlmeS5oPgor
I2ltcG9ydCA8eHBjL3hwYy5oPgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Cisj
aW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9y
dCA8d3RmL2lvcy9XZWJDb3JlVGhyZWFkLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNoQXN5bmNPblF1ZXVlU2FmZUZvckFueURlYnVnZ2Fi
bGUodm9pZCAoXmJsb2NrKSgpKQoreworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoV2ViQ29y
ZVdlYlRocmVhZElzRW5hYmxlZCAmJiBXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKCkpIHsKKyAg
ICAgICAgV2ViQ29yZVdlYlRocmVhZFJ1bihibG9jayk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisjZW5kaWYKKworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IGJsb2NrKTsKK30KKworUmVtb3RlSW5zcGVjdG9yJiBSZW1vdGVJbnNwZWN0b3I6OnNoYXJlZCgp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj4gc2hhcmVkOwor
CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOworICAgIGRpc3BhdGNoX29uY2UoJm9u
Y2UsIF57CisgICAgICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgICAgICBXVEY6
OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisgICAgICAgIHNoYXJlZC5nZXQoKS5zdGFydCgpOwor
ICAgIH0pOworCisgICAgcmV0dXJuIHNoYXJlZDsKK30KKworUmVtb3RlSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3IoKQorICAgIDogbV9uZXh0QXZhaWxhYmxlSWRlbnRpZmllcigxKQorICAgICwg
bV9ub3RpZnlUb2tlbigwKQorICAgICwgbV9lbmFibGVkKGZhbHNlKQorICAgICwgbV9oYXNBY3Rp
dmVEZWJ1Z1Nlc3Npb24oZmFsc2UpCisgICAgLCBtX3B1c2hTY2hlZHVsZWQoZmFsc2UpCit7Cit9
CisKK3Vuc2lnbmVkIFJlbW90ZUluc3BlY3Rvcjo6bmV4dEF2YWlsYWJsZUlkZW50aWZpZXIoKQor
eworICAgIHVuc2lnbmVkIG5leHRWYWxpZElkZW50aWZpZXI7CisgICAgZG8geworICAgICAgICBu
ZXh0VmFsaWRJZGVudGlmaWVyID0gbV9uZXh0QXZhaWxhYmxlSWRlbnRpZmllcisrOworICAgIH0g
d2hpbGUgKCFuZXh0VmFsaWRJZGVudGlmaWVyIHx8IG5leHRWYWxpZElkZW50aWZpZXIgPT0gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIHx8IG1fZGVidWdnYWJsZU1hcC5jb250
YWlucyhuZXh0VmFsaWRJZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIG5leHRWYWxpZElkZW50aWZp
ZXI7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWdpc3RlckRlYnVnZ2FibGUoUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBuZXh0QXZhaWxhYmxlSWRl
bnRpZmllcigpOworICAgIGRlYnVnZ2FibGUtPnNldElkZW50aWZpZXIoaWRlbnRpZmllcik7CisK
KyAgICBhdXRvIHJlc3VsdCA9IG1fZGVidWdnYWJsZU1hcC5zZXQoaWRlbnRpZmllciwgc3RkOjpt
YWtlX3BhaXIoZGVidWdnYWJsZSwgZGVidWdnYWJsZS0+aW5mbygpKSk7CisgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgIGlmIChkZWJ1Z2dhYmxlLT5y
ZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkpCisgICAgICAgIHB1c2hMaXN0aW5nU29vbigpOworfQor
Cit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlckRlYnVnZ2FibGUoUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9s
b2NrKTsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBkZWJ1Z2dhYmxlLT5pZGVudGlmaWVy
KCk7CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIHdh
c1JlbW92ZWQgPSBtX2RlYnVnZ2FibGVNYXAucmVtb3ZlKGlkZW50aWZpZXIpOworICAgIEFTU0VS
VF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7CisKKyAgICBpZiAoUmVmUHRyPFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9u
TWFwLnRha2UoaWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmNsb3NlRnJvbURlYnVn
Z2FibGUoKTsKKworICAgIGlmIChkZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkp
CisgICAgICAgIHB1c2hMaXN0aW5nU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
dXBkYXRlRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlKQor
eworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgdW5zaWduZWQgaWRlbnRp
ZmllciA9IGRlYnVnZ2FibGUtPmlkZW50aWZpZXIoKTsKKyAgICBpZiAoIWlkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9kZWJ1Z2dhYmxlTWFwLnNldChp
ZGVudGlmaWVyLCBzdGQ6Om1ha2VfcGFpcihkZWJ1Z2dhYmxlLCBkZWJ1Z2dhYmxlLT5pbmZvKCkp
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdC5pc05ld0VudHJ5KTsKKworICAg
IGlmIChkZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkpCisgICAgICAgIHB1c2hM
aXN0aW5nU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1Jl
bW90ZUZyb250ZW5kKHVuc2lnbmVkIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
K3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmICghbV94cGNDb25u
ZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KGlkZW50
aWZpZXIpOworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNE
aWN0aW9uYXJ5ICp1c2VySW5mbyA9IEB7CisgICAgICAgIFdJUlJhd0RhdGFLZXk6IFtzdGF0aWNf
Y2FzdDxOU1N0cmluZyAqPihtZXNzYWdlKSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ10sCisgICAgICAgIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5OiBjb25uZWN0aW9u
LT5jb25uZWN0aW9uSWRlbnRpZmllcigpLAorICAgICAgICBXSVJEZXN0aW5hdGlvbktleTogY29u
bmVjdGlvbi0+ZGVzdGluYXRpb24oKQorICAgIH07CisKKyAgICBtX3hwY0Nvbm5lY3Rpb24tPnNl
bmRNZXNzYWdlKFdJUlJhd0RhdGFNZXNzYWdlLCB1c2VySW5mbyk7Cit9CisKK3ZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjpzdGFydCgpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisK
KyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2VuYWJsZWQgPSB0
cnVlOworCisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKFdJUlNlcnZpY2VBdmFpbGFibGVO
b3RpZmljYXRpb24sICZtX25vdGlmeVRva2VuLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJ
U1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeKGludCkgeworICAgICAgICBSZW1v
dGVJbnNwZWN0b3I6OnNoYXJlZCgpLnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7CisgICAg
fSk7CisKKyAgICBub3RpZnlfcG9zdChXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmlj
YXRpb24pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RvcCgpCit7CisgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBpZiAoIW1fZW5hYmxlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9lbmFibGVkID0gZmFsc2U7CisKKyAgICBtX3B1c2hTY2hlZHVsZWQgPSBm
YWxzZTsKKworICAgIGZvciAoYXV0byBpdCA9IG1fY29ubmVjdGlvbk1hcC5iZWdpbigpLCBlbmQg
PSBtX2Nvbm5lY3Rpb25NYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnZh
bHVlLT5jbG9zZSgpOworICAgIG1fY29ubmVjdGlvbk1hcC5jbGVhcigpOworCisgICAgdXBkYXRl
SGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAgICBpZiAobV94cGNDb25uZWN0aW9uKSB7Cisg
ICAgICAgIG1feHBjQ29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICAgICAgbV94cGNDb25uZWN0aW9u
ID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBub3RpZnlfY2FuY2VsKG1fbm90aWZ5VG9rZW4pOwor
fQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQoKQor
eworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKG1feHBjQ29ubmVj
dGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9u
ID0geHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShXSVJYUENNYWNoUG9ydE5hbWUs
IGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIDApOworICAgIGlmICghY29ubmVjdGlvbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV94cGNDb25uZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uPihjb25uZWN0aW9uLCB0aGlzKTsKKyAgICBtX3hw
Y0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKEAic3luIiwgbmlsKTsgLy8gU2VuZCBhIHNpbXBsZSBt
ZXNzYWdlIHRvIGluaXRpYWxpemUgdGhlIFhQQyBjb25uZWN0aW9uLgorICAgIHhwY19yZWxlYXNl
KGNvbm5lY3Rpb24pOworCisgICAgcHVzaExpc3RpbmdTb29uKCk7Cit9CisKKyNwcmFnbWEgbWFy
ayAtIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OkNsaWVudAorCit2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uKiwgTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZv
KQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKFttZXNzYWdl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSUGVybWlzc2lvbkRlbmllZF0pIHsKKyAgICAgICAgc3Rv
cCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFttZXNzYWdlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6V0lSU29ja2V0RGF0YU1lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZERhdGFN
ZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOldJUlNvY2tldFNldHVwTWVzc2FnZV0pCisgICAgICAgIHJlY2VpdmVkU2V0dXBNZXNzYWdl
KHVzZXJJbmZvKTsKKyAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJ
UldlYlBhZ2VDbG9zZU1lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZERpZENsb3NlTWVzc2FnZSh1
c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJB
cHBsaWNhdGlvbkdldExpc3RpbmdNZXNzYWdlXSkKKyAgICAgICAgcmVjZWl2ZWRHZXRMaXN0aW5n
TWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0
cmluZzpXSVJJbmRpY2F0ZU1lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZEluZGljYXRlTWVzc2Fn
ZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpX
SVJDb25uZWN0aW9uRGllZE1lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZENvbm5lY3Rpb25EaWVk
TWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZQorICAgICAgICBOU0xvZyhAIlVucmVjb2duaXpl
ZCBSZW1vdGVJbnNwZWN0b3IgWFBDIE1lc3NhZ2U6ICVAIiwgbWVzc2FnZU5hbWUpOworfQorCit2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uKikKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAg
IG1fcHVzaFNjaGVkdWxlZCA9IGZhbHNlOworCisgICAgZm9yIChhdXRvIGl0ID0gbV9jb25uZWN0
aW9uTWFwLmJlZ2luKCksIGVuZCA9IG1fY29ubmVjdGlvbk1hcC5lbmQoKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgICAgICBpdC0+dmFsdWUtPmNsb3NlKCk7CisgICAgbV9jb25uZWN0aW9uTWFwLmNs
ZWFyKCk7CisKKyAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKKworICAgIGlmICht
X3hwY0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgbV94cGNDb25uZWN0aW9uLT5jbG9zZSgpOworICAg
ICAgICBtX3hwY0Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgIH0KK30KKwordm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3QpCit7CisgICAgLy8gSW50ZW50aW9uYWxseSBpZ25v
cmVkLgorfQorCisjcHJhZ21hIG1hcmsgLSBMaXN0aW5ncworCitOU0RpY3Rpb25hcnkgKlJlbW90
ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvckRlYnVnZ2FibGUoY29uc3QgUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUluZm8mIGRlYnVnZ2FibGVJbmZvKSBjb25zdAoreworICAgIE5TTXV0YWJsZURpY3Rp
b25hcnkgKmRlYnVnZ2FibGVEZXRhaWxzID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFy
eV07CisKKyAgICBbZGVidWdnYWJsZURldGFpbHMgc2V0T2JqZWN0OkAoZGVidWdnYWJsZUluZm8u
aWRlbnRpZmllcikgZm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsKKworICAgIHN3aXRjaCAo
ZGVidWdnYWJsZUluZm8udHlwZSkgeworICAgIGNhc2UgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZTo6SmF2YVNjcmlwdDogeworICAgICAgICBOU1N0cmluZyAqbmFtZSA9IGRlYnVnZ2FibGVJbmZv
Lm5hbWU7CisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6bmFtZSBmb3JLZXk6
V0lSVGl0bGVLZXldOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlOjpXZWI6IHsKKyAgICAgICAgTlNTdHJpbmcgKnVybCA9IGRlYnVnZ2Fi
bGVJbmZvLnVybDsKKyAgICAgICAgTlNTdHJpbmcgKnRpdGxlID0gZGVidWdnYWJsZUluZm8ubmFt
ZTsKKyAgICAgICAgW2RlYnVnZ2FibGVEZXRhaWxzIHNldE9iamVjdDp1cmwgZm9yS2V5OldJUlVS
TEtleV07CisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6dGl0bGUgZm9yS2V5
OldJUlRpdGxlS2V5XTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBp
ZiAoUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9u
ID0gbV9jb25uZWN0aW9uTWFwLmdldChkZWJ1Z2dhYmxlSW5mby5pZGVudGlmaWVyKSkKKyAgICAg
ICAgW2RlYnVnZ2FibGVEZXRhaWxzIHNldE9iamVjdDpjb25uZWN0aW9uLT5jb25uZWN0aW9uSWRl
bnRpZmllcigpIGZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07CisKKyAgICBpZiAo
ZGVidWdnYWJsZUluZm8uaGFzTG9jYWxEZWJ1Z2dlcikKKyAgICAgICAgW2RlYnVnZ2FibGVEZXRh
aWxzIHNldE9iamVjdDpAWUVTIGZvcktleTpXSVJIYXNMb2NhbERlYnVnZ2VyS2V5XTsKKworICAg
IHJldHVybiBkZWJ1Z2dhYmxlRGV0YWlsczsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnB1
c2hMaXN0aW5nTm93KCkKK3sKKyAgICBBU1NFUlQobV94cGNDb25uZWN0aW9uKTsKKyAgICBpZiAo
IW1feHBjQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wdXNoU2NoZWR1bGVk
ID0gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gcmVzcG9uc2Ug
PSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIGZvciAo
YXV0byBpdCA9IG1fZGVidWdnYWJsZU1hcC5iZWdpbigpLCBlbmQgPSBtX2RlYnVnZ2FibGVNYXAu
ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBjb25zdCBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlSW5mbyYgZGVidWdnYWJsZUluZm8gPSBpdC0+dmFsdWUuc2Vjb25kOworICAgICAg
ICBpZiAoZGVidWdnYWJsZUluZm8ucmVtb3RlRGVidWdnaW5nQWxsb3dlZCkgeworICAgICAgICAg
ICAgTlNEaWN0aW9uYXJ5ICpkZXRhaWxzID0gbGlzdGluZ0ZvckRlYnVnZ2FibGUoZGVidWdnYWJs
ZUluZm8pOworICAgICAgICAgICAgW3Jlc3BvbnNlIHNldE9iamVjdDpkZXRhaWxzIGZvcktleTpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiV1IiwgZGVidWdnYWJsZUluZm8uaWRlbnRpZmll
cl1dOworICAgICAgICB9CisgICAgfQorCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25h
cnk+IG91dGdvaW5nID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRd
KTsKKyAgICBbb3V0Z29pbmcgc2V0T2JqZWN0OnJlc3BvbnNlLmdldCgpIGZvcktleTpXSVJMaXN0
aW5nS2V5XTsKKworICAgIG1feHBjQ29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lSTGlzdGluZ01l
c3NhZ2UsIG91dGdvaW5nLmdldCgpKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnB1c2hM
aXN0aW5nU29vbigpCit7CisgICAgaWYgKCFtX3hwY0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtX3B1c2hTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
cHVzaFNjaGVkdWxlZCA9IHRydWU7CisgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShE
SVNQQVRDSF9USU1FX05PVywgMC4wMiAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9nbG9i
YWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57CisgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBpZiAobV9wdXNoU2NoZWR1bGVk
KQorICAgICAgICAgICAgcHVzaExpc3RpbmdOb3coKTsKKyAgICB9KTsKK30KKworI3ByYWdtYSBt
YXJrIC0gQWN0aXZlIERlYnVnZ2VyIFNlc3Npb25zCisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1
cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKQoreworICAgIGJvb2wgaGFzQWN0aXZlRGVidWdn
ZXJTZXNzaW9uID0gIW1fY29ubmVjdGlvbk1hcC5pc0VtcHR5KCk7CisgICAgaWYgKGhhc0FjdGl2
ZURlYnVnZ2VyU2Vzc2lvbiA9PSBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbikKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24gPSBoYXNBY3RpdmVEZWJ1Z2dlclNl
c3Npb247CisKKyAgICAvLyBGSVhNRTogRXhwb3NlIHNvbWUgd2F5IHRvIGFjY2VzcyB0aGlzIHN0
YXRlIGluIGFuIGVtYmVkZGVyLgorICAgIC8vIExlZ2FjeSBpT1MgV2ViS2l0IDEgaGFkIGEgbm90
aWZpY2F0aW9uLiBUaGlzIHdpbGwgbmVlZCB0byBiZSBzbWFydGVyIHdpdGggV2ViS2l0Mi4KK30K
KworI3ByYWdtYSBtYXJrIC0gUmVjZWl2ZWQgWFBDIE1lc3NhZ2VzCisKK3ZvaWQgUmVtb3RlSW5z
cGVjdG9yOjpyZWNlaXZlZFNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQorewor
ICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlBhZ2VJZGVu
dGlmaWVyS2V5XTsKKyAgICBpZiAoIXBhZ2VJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNT
dHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJD
b25uZWN0aW9uSWRlbnRpZmllcktleV07CisgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgTlNTdHJpbmcgKnNlbmRlciA9IFt1c2VySW5mbyBvYmpl
Y3RGb3JLZXk6V0lSU2VuZGVyS2V5XTsKKyAgICBpZiAoIXNlbmRlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IFtwYWdlSWQgdW5zaWduZWRJbnRWYWx1ZV07
CisgICAgaWYgKG1fY29ubmVjdGlvbk1hcC5jb250YWlucyhpZGVudGlmaWVyKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBpdCA9IG1fZGVidWdnYWJsZU1hcC5maW5kKGlkZW50aWZpZXIp
OworICAgIGlmIChpdCA9PSBtX2RlYnVnZ2FibGVNYXAuZW5kKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIEF0dGVtcHQgdG8gY3JlYXRlIGEgY29ubmVjdGlvbi4gVGhpcyBtYXkgZmFpbCBp
ZiB0aGUgcGFnZSBhbHJlYWR5IGhhcyBhbiBpbnNwZWN0b3Igb3IgaWYgaXQgZGlzYWxsb3dzIGlu
c3BlY3Rpb24uCisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSA9IGl0
LT52YWx1ZS5maXJzdDsKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyBkZWJ1Z2dh
YmxlSW5mbyA9IGl0LT52YWx1ZS5zZWNvbmQ7CisgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gYWRvcHRSZWYobmV3IFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKGRlYnVnZ2FibGUsIGNvbm5lY3Rpb25JZGVudGlmaWVy
LCBzZW5kZXIsIGRlYnVnZ2FibGVJbmZvLnR5cGUpKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24tPnNl
dHVwKCkpIHsKKyAgICAgICAgY29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fY29ubmVjdGlvbk1hcC5zZXQoaWRlbnRpZmllciwgY29ubmVjdGlvbi5y
ZWxlYXNlKCkpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAgICBw
dXNoTGlzdGluZ1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0
YU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBOU051bWJlciAqcGFnZUlk
ID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07CisgICAgaWYg
KCFwYWdlSWQpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHBhZ2VJZGVudGlmaWVy
ID0gW3BhZ2VJZCB1bnNpZ25lZEludFZhbHVlXTsKKyAgICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KHBh
Z2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIE5TRGF0YSAqZGF0YSA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSU29ja2V0RGF0YUtl
eV07CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtZXNzYWdlID0gYWRvcHROUyhbW05TU3RyaW5n
IGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10p
OworICAgIGNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UuZ2V0KCkpOwor
fQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2UoTlNEaWN0
aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBOU051bWJlciAqcGFnZUlkID0gW3VzZXJJbmZvIG9i
amVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07CisgICAgaWYgKCFwYWdlSWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFt1c2Vy
SW5mbyBvYmplY3RGb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOworICAgIGlmICgh
Y29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIGlk
ZW50aWZpZXIgPSBbcGFnZUlkIHVuc2lnbmVkSW50VmFsdWVdOworICAgIFJlZlB0cjxSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1h
cC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoIVtjb25uZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6Y29ubmVj
dGlvbi0+Y29ubmVjdGlvbklkZW50aWZpZXIoKV0pCisgICAgICAgIHJldHVybjsKKworICAgIGNv
bm5lY3Rpb24tPmNsb3NlKCk7CisgICAgbV9jb25uZWN0aW9uTWFwLnJlbW92ZShpZGVudGlmaWVy
KTsKKworICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOworCisgICAgcHVzaExpc3Rp
bmdTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldExpc3RpbmdN
ZXNzYWdlKE5TRGljdGlvbmFyeSAqKQoreworICAgIHB1c2hMaXN0aW5nTm93KCk7Cit9CisKK3Zv
aWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEluZGljYXRlTWVzc2FnZShOU0RpY3Rpb25hcnkg
KnVzZXJJbmZvKQoreworICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbdXNlckluZm8gb2JqZWN0Rm9y
S2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIXBhZ2VJZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IFtwYWdlSWQgdW5zaWduZWRJbnRWYWx1
ZV07CisgICAgQk9PTCBpbmRpY2F0ZUVuYWJsZWQgPSBbW3VzZXJJbmZvIG9iamVjdEZvcktleTpX
SVJJbmRpY2F0ZUVuYWJsZWRLZXldIGJvb2xWYWx1ZV07CisKKyAgICBkaXNwYXRjaEFzeW5jT25R
dWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKF57CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X2xvY2spOworCisgICAgICAgIGF1dG8gaXQgPSBtX2RlYnVnZ2FibGVNYXAuZmluZChpZGVudGlm
aWVyKTsKKyAgICAgICAgaWYgKGl0ID09IG1fZGVidWdnYWJsZU1hcC5lbmQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dh
YmxlID0gaXQtPnZhbHVlLmZpcnN0OworICAgICAgICBkZWJ1Z2dhYmxlLT5zZXRJbmRpY2F0aW5n
KGluZGljYXRlRW5hYmxlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpy
ZWNlaXZlZENvbm5lY3Rpb25EaWVkTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQorewor
ICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFt1c2VySW5mbyBvYmplY3RGb3JL
ZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOworICAgIGlmICghY29ubmVjdGlvbklkZW50
aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaXQgPSBtX2Nvbm5lY3Rpb25NYXAu
YmVnaW4oKTsKKyAgICBhdXRvIGVuZCA9IG1fY29ubmVjdGlvbk1hcC5lbmQoKTsKKyAgICBmb3Ig
KDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmIChbY29ubmVjdGlvbklkZW50aWZpZXIg
aXNFcXVhbFRvU3RyaW5nOml0LT52YWx1ZS0+Y29ubmVjdGlvbklkZW50aWZpZXIoKV0pCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoaXQgPT0gZW5kKQorICAgICAgICByZXR1
cm47CisKKyAgICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNv
bm5lY3Rpb24gPSBpdC0+dmFsdWU7CisgICAgY29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICBtX2Nv
bm5lY3Rpb25NYXAucmVtb3ZlKGl0KTsKKworICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lv
bigpOworfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVj
dG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaApzaW1p
bGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0
b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaApyZW5hbWUgdG8gU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRz
LmgKaW5kZXggMWYzYmMzMi4uMjZhMWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29u
c3RhbnRzLmgKQEAgLTIzLDE2ICsyMywxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnNfaAotI2RlZmluZSBXZWJJbnNwZWN0b3JS
ZWxheURlZmluaXRpb25zX2gKKyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzX2gKKyNk
ZWZpbmUgUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzX2gKIAogLy8gV0lSQ29uc3RhbnRzIGFyZSAi
V2ViIEluc3BlY3RvciBSZWxheSIgY29uc3RhbnRzIHNoYXJlZCBiZXR3ZWVuCi0vLyB0aGUgV2Vi
SW5zcGVjdG9yIGZyYW1ld29yayBvbiB0aGUgZGVidWdnZXIgc2lkZSwgd2ViaW5zcGVjdG9yZCwK
LS8vIGFuZCBXZWJLaXQgb24gdGhlIGRlYnVnZ2FibGUgYXBwbGljYXRpb24gc2lkZS4KKy8vIHRo
ZSBXZWJJbnNwZWN0b3IgZnJhbWV3b3JrIG9uIHRoZSBPUyBYIHNpZGUsIHdlYmluc3BlY3RvcmQs
IGFuZAorLy8gaU9TIFdlYktpdCBvbiB0aGUgZGV2aWNlIHNpZGUuCiAKICNkZWZpbmUgV0lSU2lt
dWxhdG9yVENQUG9ydE51bWJlciAgICAgICAgICAgICAgIDI3NzUzCiAjZGVmaW5lIFdJUlhQQ01h
Y2hQb3J0TmFtZSAgICAgICAgICAgICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvciIK
LSNkZWZpbmUgV0lSWFBDRGVidWdnZXJTZXJ2aWNlTmFtZSAgICAgICAgICAgICAgICJjb20uYXBw
bGUud2ViaW5zcGVjdG9yLmRlYnVnZ2VyIgogI2RlZmluZSBXSVJTZXJ2aWNlQXZhaWxhYmxlTm90
aWZpY2F0aW9uICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF2YWlsYWJsZSIKICNk
ZWZpbmUgV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9uICJjb20uYXBwbGUu
d2ViaW5zcGVjdG9yZC5hdmFpbGFiaWxpdHlfY2hlY2siCiAjZGVmaW5lIFdJUlNlcnZpY2VFbmFi
bGVkTm90aWZpY2F0aW9uICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuZW5hYmxl
ZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNw
cApzaW1pbGFyaXR5IGluZGV4IDUxJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJ
bnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJv
bGxlci5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcAppbmRleCBmOGJmNWU4Li5mZGYxZDk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3Rv
clNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyNiAr
MjMsNTkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotQGNsYXNzIFdlYkluc3BlY3RvclNlcnZl
cjsKLUBjbGFzcyBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbjsKLUBjbGFzcyBX
ZWJJbnNwZWN0b3JYUENXcmFwcGVyOwotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciA6IE5TT2JqZWN0IHsKLUBwcml2YXRlCi0gICAgV2Vi
SW5zcGVjdG9yU2VydmVyICpfc2VydmVyOyAvLyB3ZWFrLCB0aGUgc2VydmVyIHNob3VsZCBuZXZl
ciBkZWFsbG9jYXRlLgotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9vcGVuQ29ubmVjdGlvbnM7
Ci0gICAgQk9PTCBfaGFzU2NoZWR1bGVkUHVzaDsKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgiCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1
ZGUgIlJlbW90ZUluc3BlY3Rvci5oIgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZTo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSgpCisgICAgOiBt
X2lkZW50aWZpZXIoMCkKKyAgICAsIG1fYWxsb3dlZChmYWxzZSkKK3sKK30KKworUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZTo6flJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUoKQoreworICAgIFJl
bW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkudW5yZWdpc3RlckRlYnVnZ2FibGUodGhpcyk7CiB9CiAK
LS0gKGlkKWluaXRXaXRoU2VydmVyOihXZWJJbnNwZWN0b3JTZXJ2ZXIgKilzZXJ2ZXI7Cit2b2lk
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluaXQoKQoreworICAgIFJlbW90ZUluc3BlY3Rv
cjo6c2hhcmVkKCkucmVnaXN0ZXJEZWJ1Z2dhYmxlKHRoaXMpOworfQorCit2b2lkIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGU6OnVwZGF0ZSgpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFy
ZWQoKS51cGRhdGVEZWJ1Z2dhYmxlKHRoaXMpOworfQogCi0tICh2b2lkKWNsb3NlQWxsQ29ubmVj
dGlvbnM7Cit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OnNldFJlbW90ZURlYnVnZ2lu
Z0FsbG93ZWQoYm9vbCBhbGxvd2VkKQoreworICAgIGlmIChtX2FsbG93ZWQgPT0gYWxsb3dlZCkK
KyAgICAgICAgcmV0dXJuOwogCi0tICh2b2lkKXB1c2hMaXN0aW5nOwotLSAodm9pZClyZWNlaXZl
ZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGljdGlvbmFyeSAq
KXVzZXJJbmZvOworICAgIG1fYWxsb3dlZCA9IGFsbG93ZWQ7CiAKLS0gKHZvaWQpY29ubmVjdGlv
bkNsb3Npbmc6KFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uICopY29ubmVjdGlv
bjsKKyAgICB1cGRhdGUoKTsKK30KKworUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6aW5mbygpIGNvbnN0Cit7CisgICAgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUluZm8gaW5mbzsKKyAgICBpbmZvLmlkZW50aWZpZXIgPSBpZGVudGlmaWVy
KCk7CisgICAgaW5mby50eXBlID0gdHlwZSgpOworICAgIGluZm8ubmFtZSA9IG5hbWUoKTsKKyAg
ICBpbmZvLnVybCA9IHVybCgpOworICAgIGluZm8uaGFzTG9jYWxEZWJ1Z2dlciA9IGhhc0xvY2Fs
RGVidWdnZXIoKTsKKyAgICBpbmZvLnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQgPSByZW1vdGVEZWJ1
Z2dpbmdBbGxvd2VkKCk7CisgICAgcmV0dXJuIGluZm87Cit9CiAKLS0gKHZvaWQpc2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25h
cnkgKil1c2VySW5mbzsKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCi1AZW5kCisjZW5kaWYg
Ly8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAyNzRhZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGUuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQorCisjaWZuZGVmIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVfaAorI2RlZmluZSBSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlX2gKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
Oworc3RydWN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvOworCitjbGFzcyBKU19FWFBP
UlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlIHsKK3B1YmxpYzoKKyAgICBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCk7CisgICAgdmlydHVhbCB+UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZSgpOworCisgICAgdm9pZCBpbml0KCk7CisgICAgdm9pZCB1cGRhdGUoKTsKKworICAg
IHVuc2lnbmVkIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAg
ICB2b2lkIHNldElkZW50aWZpZXIodW5zaWduZWQgaWRlbnRpZmllcikgeyBtX2lkZW50aWZpZXIg
PSBpZGVudGlmaWVyOyB9CisKKyAgICBib29sIHJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKSBjb25z
dCB7IHJldHVybiBtX2FsbG93ZWQ7IH0KKyAgICB2b2lkIHNldFJlbW90ZURlYnVnZ2luZ0FsbG93
ZWQoYm9vbCk7CisKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyBpbmZvKCkgY29u
c3Q7CisKKyAgICBlbnVtIERlYnVnZ2FibGVUeXBlIHsgSmF2YVNjcmlwdCwgV2ViIH07CisgICAg
dmlydHVhbCBEZWJ1Z2dhYmxlVHlwZSB0eXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3Ry
aW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBKYXZhU2NyaXB0IGFuZCBX
ZWIKKyAgICB2aXJ0dWFsIFN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAv
LyBXZWIKKyAgICB2aXJ0dWFsIGJvb2wgaGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpIHsgfSAvLyBEZWZhdWx0IGlz
IHRvIGRvIG5vdGhpbmcuCisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV9pZGVudGlmaWVyOwor
ICAgIGJvb2wgbV9hbGxvd2VkOworfTsKKworc3RydWN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVJbmZvIHsKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbygpCisgICAgICAgIDog
aWRlbnRpZmllcigwKQorICAgICAgICAsIHR5cGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6
SmF2YVNjcmlwdCkKKyAgICAgICAgLCBoYXNMb2NhbERlYnVnZ2VyKGZhbHNlKQorICAgICAgICAs
IHJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIHVuc2ln
bmVkIGlkZW50aWZpZXI7CisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6RGVidWdnYWJs
ZVR5cGUgdHlwZTsKKyAgICBTdHJpbmcgbmFtZTsKKyAgICBTdHJpbmcgdXJsOworICAgIGJvb2wg
aGFzTG9jYWxEZWJ1Z2dlcjsKKyAgICBib29sIHJlbW90ZURlYnVnZ2luZ0FsbG93ZWQ7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVfaAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjRkODgyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisj
aWZuZGVmIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uX2gKKyNkZWZpbmUgUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb25faAorCisjaW1wb3J0ICJJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaCIKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCIK
KyNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CisjaW1wb3J0IDx3dGYvVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaD4KKworT0JKQ19DTEFTUyBOU1N0cmluZzsKKworbmFtZXNwYWNlIEluc3BlY3RvciB7
CisKK2NsYXNzIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uIEZJTkFMIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uPiwgcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CitwdWJsaWM6CisgICAgUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZSosIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciwgTlNTdHJpbmcgKmRlc3RpbmF0aW9u
LCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpEZWJ1Z2dhYmxlVHlwZSk7CisgICAgdmlydHVh
bCB+UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oKTsKKworICAgIE5TU3RyaW5n
ICpkZXN0aW5hdGlvbigpIGNvbnN0OworICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmll
cigpIGNvbnN0OworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KKworICAgIGJvb2wgc2V0dXAoKTsKKworICAgIHZvaWQgY2xvc2UoKTsKKyAg
ICB2b2lkIGNsb3NlRnJvbURlYnVnZ2FibGUoKTsKKworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Jh
Y2tlbmQoTlNTdHJpbmcgKik7CisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGRpc3BhdGNo
U3luY09uRGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpOworICAgIHZvaWQgZGlzcGF0Y2hBc3lu
Y09uRGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpOworCisgICAgLy8gVGhpcyBjb25uZWN0aW9u
IGZyb20gdGhlIFJlbW90ZUluc3BlY3RvciBzaW5nbGV0b24gdG8gdGhlIERlYnVnZ2FibGUKKyAg
ICAvLyBjYW4gYmUgdXNlZCBvbiBtdWx0aXBsZSB0aHJlYWRzLiBTbyBhbnkgYWNjZXNzIHRvIHRo
ZSBkZWJ1Z2dhYmxlCisgICAgLy8gaXRzZWxmIG11c3QgdGFrZSB0aGlzIGxvY2sgdG8gZW5zdXJl
IG1fZGVidWdnYWJsZSBpcyB2YWxpZC4KKyAgICBNdXRleCBtX2RlYnVnZ2FibGVMb2NrOworCisg
ICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogbV9kZWJ1Z2dhYmxlOworICAgIGRpc3BhdGNo
X3F1ZXVlX3QgbV9xdWV1ZUZvckRlYnVnZ2FibGU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBt
X2Nvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9kZXN0aW5h
dGlvbjsKKyAgICB1bnNpZ25lZCBtX2lkZW50aWZpZXI7CisgICAgYm9vbCBtX2Nvbm5lY3RlZDsK
K307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb25faAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZmZlYTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbQpAQCAtMCwwICsxLDE2NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCIKKwor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3Iu
aCIKKworI2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgPHd0Zi9pb3MvV2ViQ29yZVRocmVhZC5o
PgorI2VuZGlmCisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlQ29ubmVjdGlvbjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSwgTlNTdHJpbmcgKmNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBOU1N0cmluZyAqZGVzdGluYXRpb24sIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGU6OkRlYnVnZ2FibGVUeXBlIHR5cGUpCisgICAgOiBtX2RlYnVnZ2FibGUoZGVidWdnYWJsZSkK
KyAgICAsIG1fcXVldWVGb3JEZWJ1Z2dhYmxlKE5VTEwpCisgICAgLCBtX2Nvbm5lY3Rpb25JZGVu
dGlmaWVyKGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICwgbV9kZXN0aW5hdGlvbihkZXN0aW5h
dGlvbikKKyAgICAsIG1faWRlbnRpZmllcihkZWJ1Z2dhYmxlLT5pZGVudGlmaWVyKCkpCisgICAg
LCBtX2Nvbm5lY3RlZChmYWxzZSkKK3sKKyAgICAvLyBXZWIgZGVidWdnYWJsZXMgbXVzdCBiZSBh
Y2Nlc3NlZCBvbiB0aGUgbWFpbiBxdWV1ZSAob3IgdGhlIFdlYlRocmVhZCBvbiBpT1MpLiBTaWdu
YWwgdGhhdCB3aXRoIGEgTlVMTCBtX3F1ZXVlRm9yRGVidWdnYWJsZS4KKyAgICAvLyBIb3dldmVy
LCBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzIGNhbiBiZSBhY2Nlc3NlZCBmcm9tIGFueSB0aHJlYWQv
cXVldWUsIHNvIHdlIGNyZWF0ZSBhIHF1ZXVlIGZvciBlYWNoIEphdmFTY3JpcHQgZGVidWdnYWJs
ZS4KKyAgICBpZiAodHlwZSA9PSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpKYXZhU2NyaXB0
KQorICAgICAgICBtX3F1ZXVlRm9yRGVidWdnYWJsZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgi
Y29tLmFwcGxlLkphdmFTY3JpcHRDb3JlLnJlbW90ZS1pbnNwZWN0b3IteHBjLWNvbm5lY3Rpb24i
LCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworfQorCitSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKCkKK3sKKyAg
ICBpZiAobV9xdWV1ZUZvckRlYnVnZ2FibGUpIHsKKyAgICAgICAgZGlzcGF0Y2hfcmVsZWFzZSht
X3F1ZXVlRm9yRGVidWdnYWJsZSk7CisgICAgICAgIG1fcXVldWVGb3JEZWJ1Z2dhYmxlID0gTlVM
TDsKKyAgICB9Cit9CisKK05TU3RyaW5nICpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbjo6ZGVzdGluYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBbW21fZGVzdGluYXRpb24g
Y29weV0gYXV0b3JlbGVhc2VdOworfQorCitOU1N0cmluZyAqUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb246OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gW1ttX2Nvbm5lY3Rpb25JZGVudGlmaWVyIGNvcHldIGF1dG9yZWxlYXNlXTsKK30KKwordm9p
ZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jT25EZWJ1
Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSkKK3sKKyAgICBpZiAobV9xdWV1ZUZvckRlYnVnZ2FibGUp
CisgICAgICAgIGRpc3BhdGNoX3N5bmMobV9xdWV1ZUZvckRlYnVnZ2FibGUsIGJsb2NrKTsKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgZWxzZSBpZiAoV2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCAm
JiBXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKCkpCisgICAgICAgIFdlYkNvcmVXZWJUaHJlYWRS
dW5TeW5jKGJsb2NrKTsKKyNlbmRpZgorICAgIGVsc2UKKyAgICAgICAgZGlzcGF0Y2hfc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9jayk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUodm9pZCAo
XmJsb2NrKSgpKQoreworICAgIGlmIChtX3F1ZXVlRm9yRGVidWdnYWJsZSkKKyAgICAgICAgZGlz
cGF0Y2hfYXN5bmMobV9xdWV1ZUZvckRlYnVnZ2FibGUsIGJsb2NrKTsKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgZWxzZSBpZiAoV2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCAmJiBXZWJDb3JlV2Vi
VGhyZWFkSXNFbmFibGVkKCkpCisgICAgICAgIFdlYkNvcmVXZWJUaHJlYWRSdW4oYmxvY2spOwor
I2VuZGlmCisgICAgZWxzZQorICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBibG9jayk7Cit9CisKK2Jvb2wgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb246OnNldHVwKCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9kZWJ1Z2dhYmxl
TG9jayk7CisKKyAgICBpZiAoIW1fZGVidWdnYWJsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgZGlzcGF0Y2hTeW5jT25EZWJ1Z2dhYmxlKF57CisgICAgICAgIGlmICghbV9kZWJ1Z2dh
YmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKG1fZGVidWdnYWJsZS0+aGFzTG9jYWxEZWJ1Z2dlcigpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIG1fZGVidWdnYWJsZS0+Y29ubmVjdCh0aGlzKTsKKyAgICAgICAg
bV9jb25uZWN0ZWQgPSB0cnVlOworICAgIH0pOworCisgICAgcmV0dXJuIG1fY29ubmVjdGVkOwor
fQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZUZyb21E
ZWJ1Z2dhYmxlKCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9kZWJ1Z2dhYmxlTG9jayk7
CisKKyAgICBtX2RlYnVnZ2FibGUgPSBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZSgpCit7CisgICAgcmVmKCk7CisgICAgZGlzcGF0
Y2hBc3luY09uRGVidWdnYWJsZSheeworICAgICAgICB7CisgICAgICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9kZWJ1Z2dhYmxlTG9jayk7CisKKyAgICAgICAgICAgIGlmIChtX2RlYnVnZ2Fi
bGUpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9jb25uZWN0ZWQpCisgICAgICAgICAgICAgICAg
ICAgIG1fZGVidWdnYWJsZS0+ZGlzY29ubmVjdCgpOworCisgICAgICAgICAgICAgICAgbV9kZWJ1
Z2dhYmxlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBkZXJl
ZigpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uOjpzZW5kTWVzc2FnZVRvQmFja2VuZChOU1N0cmluZyAqbWVzc2FnZSkKK3sKKyAgICByZWYo
KTsKKyAgICBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKF57CisgICAgICAgIHsKKyAgICAgICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2FibGVMb2NrKTsKKworICAgICAgICAgICAg
aWYgKG1fZGVidWdnYWJsZSkKKyAgICAgICAgICAgICAgICBtX2RlYnVnZ2FibGUtPmRpc3BhdGNo
TWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChtZXNzYWdlKTsKKyAgICAgICAgfQorICAgICAgICBk
ZXJlZigpOworICAgIH0pOworfQorCitib29sIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorewor
ICAgIFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkuc2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5k
KGlkZW50aWZpZXIoKSwgbWVzc2FnZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5z
cGVjdG9yWFBDV3JhcHBlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oCnNpbWlsYXJpdHkgaW5kZXggNTAlCmNv
cHkgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3Rv
clhQQ1dyYXBwZXIuaApjb3B5IHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaAppbmRleCAzZjk0NGVjLi4wYmYzNmFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYklu
c3BlY3RvclhQQ1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDMyICsyMyw0OSBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2lmbmRlZiBSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uX2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbl9oCisKKyNpbXBv
cnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CisjaW1wb3J0IDx3dGYvTm9uY29weWFibGUuaD4KICNp
bXBvcnQgPHhwYy94cGMuaD4KIAotQGNsYXNzIFdlYkluc3BlY3RvclhQQ1dyYXBwZXI7Ci0KLUBw
cm90b2NvbCBXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGUgPE5TT2JqZWN0PgotLSAodm9p
ZCl4cGNDb25uZWN0aW9uOihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopY29ubmVjdGlvbiByZWNl
aXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGljdGlvbmFy
eSAqKXVzZXJJbmZvOwotLSAodm9pZCl4cGNDb25uZWN0aW9uRmFpbGVkOihXZWJJbnNwZWN0b3JY
UENXcmFwcGVyICopY29ubmVjdGlvbjsKLUBvcHRpb25hbAotLSAodm9pZCl4cGNDb25uZWN0aW9u
OihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopY29ubmVjdGlvbiB1bmhhbmRsZWRNZXNzYWdlOih4
cGNfb2JqZWN0X3QpbWVzc2FnZTsKLUBlbmQKLQotQGludGVyZmFjZSBXZWJJbnNwZWN0b3JYUENX
cmFwcGVyIDogTlNPYmplY3QKLXsKLSAgICBpZCA8V2ViSW5zcGVjdG9yWFBDV3JhcHBlckRlbGVn
YXRlPiBfZGVsZWdhdGU7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fdCBfY29ubmVjdGlvbjsKLSAgICBO
U1N0cmluZyAqX3RhZzsKLX0KLQotLSAoV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWluaXRXaXRo
Q29ubmVjdGlvbjooeHBjX2Nvbm5lY3Rpb25fdCljb25uZWN0aW9uOwotLSAodm9pZCljbG9zZTsK
LS0gKHZvaWQpc2VuZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5T
RGljdGlvbmFyeSAqKXVzZXJJbmZvOwotCi1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBp
ZCA8V2ViSW5zcGVjdG9yWFBDV3JhcHBlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uOwotQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGF2YWlsYWJsZTsKLUBwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSBOU1N0cmluZyAqdGFnOwotCi1AZW5kCitPQkpDX0NMQVNTIE5TU3RyaW5n
OworT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitj
bGFzcyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKTsKKworcHVibGljOgorICAgIGNsYXNz
IENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5
ICp1c2VySW5mbykgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvbkZhaWxl
ZChSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKikgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgeHBjQ29ubmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbiosIHhwY19vYmplY3RfdCkgPSAwOworICAgIH07CisKKyAgICBSZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QsIENsaWVudCopOworICAgIHZpcnR1YWwgflJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2
b2lkIHNlbmRNZXNzYWdlKE5TU3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbyk7CisKK3ByaXZhdGU6CisgICAgTlNEaWN0aW9uYXJ5ICpkZXNlcmlhbGl6ZU1lc3NhZ2Uo
eHBjX29iamVjdF90KTsKKyAgICB2b2lkIGhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCk7CisKKyAg
ICB4cGNfY29ubmVjdGlvbl90IG1fY29ubmVjdGlvbjsKKyAgICBkaXNwYXRjaF9xdWV1ZV90IG1f
cXVldWU7CisgICAgQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgorCisjZW5kaWYgLy8gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbl9oCisKKyNlbmRp
ZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMTY5
OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCkBAIC0wLDAgKzEsMTQ2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgiCisKKyNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorCisjaWYgX19oYXNfaW5jbHVkZSg8Q29y
ZUZvdW5kYXRpb24vQ0ZYUENCcmlkZ2UuaD4pCisjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRlhQ
Q0JyaWRnZS5oPgorI2Vsc2UKK2V4dGVybiAiQyIgeHBjX29iamVjdF90IF9DRlhQQ0NyZWF0ZVhQ
Q01lc3NhZ2VXaXRoQ0ZPYmplY3QoQ0ZUeXBlUmVmKTsKK2V4dGVybiAiQyIgQ0ZUeXBlUmVmIF9D
RlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjX29iamVjdF90KTsKKyNlbmRpZgor
CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworLy8gQ29uc3RhbnRzIHByaXZhdGUgdG8gdGhpcyBm
aWxlIGZvciBtZXNzYWdlIHNlcmlhbGl6YXRpb24gb24gYm90aCBlbmRzLgorI2RlZmluZSBSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uTWVzc2FnZU5hbWVLZXkgQCJtZXNzYWdlTmFtZSIKKyNk
ZWZpbmUgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5IEAidXNlckluZm8i
CisjZGVmaW5lIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25TZXJpYWxpemVkTWVzc2FnZUtl
eSAibXNnRGF0YSIKKworUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6UmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIENsaWVudCogY2xp
ZW50KQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX3F1ZXVlKGRpc3Bh
dGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlLnJlbW90ZS1pbnNwZWN0
b3IteHBjLWNvbm5lY3Rpb24iLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKQorICAgICwgbV9jbGll
bnQoY2xpZW50KQoreworICAgIHhwY19yZXRhaW4obV9jb25uZWN0aW9uKTsKKyAgICB4cGNfY29u
bmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKG1fY29ubmVjdGlvbiwgbV9xdWV1ZSk7CisgICAgUmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiogd2Vha1RoaXMgPSB0aGlzOworICAgIHhwY19jb25u
ZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3Qgb2Jq
ZWN0KSB7CisgICAgICAgIHdlYWtUaGlzLT5oYW5kbGVFdmVudChvYmplY3QpOworICAgIH0pOwor
ICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShtX2Nvbm5lY3Rpb24pOworfQorCitSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uOjp+UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbigpCit7Cisg
ICAgQVNTRVJUKCFtX2NsaWVudCk7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOworfQorCit2
b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAgICBpZiAoIW1f
Y29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgeHBjX2Nvbm5lY3Rpb25fY2FuY2Vs
KG1fY29ubmVjdGlvbik7CisgICAgeHBjX3JlbGVhc2UobV9jb25uZWN0aW9uKTsKKyAgICBtX2Nv
bm5lY3Rpb24gPSBOVUxMOworCisgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3F1ZXVlKTsKKyAgICBt
X3F1ZXVlID0gTlVMTDsKKworICAgIG1fY2xpZW50ID0gbnVsbHB0cjsKK30KKworTlNEaWN0aW9u
YXJ5ICpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1lc3NhZ2UoeHBj
X29iamVjdF90IG9iamVjdCkKK3sKKyAgICBpZiAoeHBjX2dldF90eXBlKG9iamVjdCkgIT0gWFBD
X1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHhwY19vYmplY3Rf
dCB4cGNEaWN0aW9uYXJ5ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG9iamVjdCwgUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5KTsKKyAgICBpZiAoIXhw
Y0RpY3Rpb25hcnkgfHwgeHBjX2dldF90eXBlKHhwY0RpY3Rpb25hcnkpICE9IFhQQ19UWVBFX0RJ
Q1RJT05BUlkpIHsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQt
PnhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKHRoaXMsIG9iamVjdCk7CisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgfQorCisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gc3RhdGlj
X2Nhc3Q8TlNEaWN0aW9uYXJ5ICo+KF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2Uo
eHBjRGljdGlvbmFyeSkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGljdGlvbmFyeSwgIlVu
YWJsZSB0byBkZXNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIpOworICAgIHJldHVybiBbZGljdGlvbmFy
eSBhdXRvcmVsZWFzZV07Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6
aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG9iamVjdCkKK3sKKyAgICBpZiAoIW1fY29ubmVjdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHhwY19nZXRfdHlwZShvYmplY3QpID09IFhQ
Q19UWVBFX0VSUk9SKSB7CisgICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgICAgIG1fY2xp
ZW50LT54cGNDb25uZWN0aW9uRmFpbGVkKHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGljdGlvbmFyeSA9IGRlc2VyaWFsaXplTWVzc2FnZShv
YmplY3QpOworICAgIGlmICghZGF0YURpY3Rpb25hcnkpCisgICAgICAgIHJldHVybjsKKworICAg
IE5TU3RyaW5nICptZXNzYWdlID0gW2RhdGFEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uTWVzc2FnZU5hbWVLZXldOworICAgIE5TRGljdGlvbmFyeSAq
dXNlckluZm8gPSBbZGF0YURpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OlJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb25Vc2VySW5mb0tleV07CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZSh0aGlzLCBtZXNzYWdlLCB1c2VySW5m
byk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2Uo
TlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAgIGlm
ICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBOU011dGFibGVEaWN0aW9u
YXJ5ICpkaWN0aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3Q6bWVzc2FnZU5hbWUgZm9yS2V5OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25NZXNzYWdl
TmFtZUtleV07CisgICAgaWYgKHVzZXJJbmZvKQorICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmpl
Y3Q6dXNlckluZm8gZm9yS2V5OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25Vc2VySW5mb0tl
eV07CisKKyAgICB4cGNfb2JqZWN0X3QgeHBjRGljdGlvbmFyeSA9IF9DRlhQQ0NyZWF0ZVhQQ01l
c3NhZ2VXaXRoQ0ZPYmplY3QoKENGRGljdGlvbmFyeVJlZilkaWN0aW9uYXJ5KTsKKyAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKHhwY0RpY3Rpb25hcnkgJiYgeHBjX2dldF90eXBlKHhwY0RpY3Rpb25h
cnkpID09IFhQQ19UWVBFX0RJQ1RJT05BUlksICJVbmFibGUgdG8gc2VyaWFsaXplIHhwYyBtZXNz
YWdlIik7CisgICAgaWYgKCF4cGNEaWN0aW9uYXJ5KQorICAgICAgICByZXR1cm47CisKKyAgICB4
cGNfb2JqZWN0X3QgbXNnID0geHBjX2RpY3Rpb25hcnlfY3JlYXRlKE5VTEwsIE5VTEwsIDApOwor
ICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtc2csIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb25TZXJpYWxpemVkTWVzc2FnZUtleSwgeHBjRGljdGlvbmFyeSk7CisgICAgeHBjX3JlbGVh
c2UoeHBjRGljdGlvbmFyeSk7CisKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UobV9j
b25uZWN0aW9uLCBtc2cpOworCisgICAgeHBjX3JlbGVhc2UobXNnKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCBiYTNkNDIyLi5iMzM3YTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMjUsNiArMTI1LDExIEBACiAjaW5jbHVkZSAiSlNQ
cm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCIKICNlbmRpZiAvLyBFTkFCTEUoUFJPTUlTRVMpCiAK
KyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdERl
YnVnZ2FibGUuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3IuaCIKKyNlbmRpZgorCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QubHV0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTg3LDYg
KzE5MiwxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUp
CiAKICAgICBtX2RlYnVnZ2VyID0gMDsKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
ICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5pbml0KCk7
CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5zZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKHRy
dWUpOworI2VuZGlmCisKICAgICByZXNldChwcm90b3R5cGUoKSk7CiB9CiAKQEAgLTc2MCw0ICs3
NzEsMzEgQEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlRXZh
bENvZGVCbG9jayhDYWxsRnJhbWUqIGNhbGxGcmFtZSwKICAgICByZXR1cm4gdW5saW5rZWRDb2Rl
QmxvY2s7CiB9CiAKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldFJlbW90ZURlYnVnZ2luZ0VuYWJs
ZWQoYm9vbCBlbmFibGVkKQoreworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIG1f
aW5zcGVjdG9yRGVidWdnYWJsZS0+c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChlbmFibGVkKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOworI2VuZGlmCit9CisKK2Jvb2wgSlNH
bG9iYWxPYmplY3Q6OnJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoKSBjb25zdAoreworI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHJldHVybiBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnJl
bW90ZURlYnVnZ2luZ0FsbG93ZWQoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIG1fbmFtZSA9IG5hbWU7CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAg
ICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnVwZGF0ZSgpOworI2VuZGlmCit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKaW5kZXggNGJkNzQ0Ni4uNjMxZmJiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01OCw2ICs1OCw3IEBAIGNsYXNzIEZ1bmN0
aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgR2V0dGVyU2V0
dGVyOwogY2xhc3MgR2xvYmFsQ29kZUJsb2NrOworY2xhc3MgSlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlOwogY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOwogY2xhc3MgSlNQcm9taXNlUmVzb2x2ZXJQ
cm90b3R5cGU7CiBjbGFzcyBKU1N0YWNrOwpAQCAtMjI5LDggKzIzMCwxNCBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIAogICAgIHZvaWQqIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OlRhYmxlU2l6
ZV07IC8vIFNwZWNpYWwgcG9pbnRlcnMgdXNlZCBieSB0aGUgTExJbnQgYW5kIEpJVC4KIAorICAg
IFN0cmluZyBtX25hbWU7CisKICAgICBEZWJ1Z2dlciogbV9kZWJ1Z2dlcjsKIAorI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0dsb2JhbE9iamVjdERl
YnVnZ2FibGU+IG1faW5zcGVjdG9yRGVidWdnYWJsZTsKKyNlbmRpZgorCiAgICAgUmVmUHRyPFdh
dGNocG9pbnRTZXQ+IG1fbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQ7CiAgICAgUmVm
UHRyPFdhdGNocG9pbnRTZXQ+IG1faGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50OwogICAgIFJlZlB0
cjxXYXRjaHBvaW50U2V0PiBtX3ZhckluamVjdGlvbldhdGNocG9pbnQ7CkBAIC00MjAsNiArNDI3
LDEyIEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIHByb21pc2VXcmFwcGVyQ2FsbGJhY2tTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VXcmFwcGVyQ2FsbGJhY2tTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICNlbmRpZiAvLyBFTkFCTEUoUFJPTUlTRVMpCiAKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIHNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBib29sIHJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoKSBjb25zdDsKKwor
ICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIGNvbnN0IFN0cmluZyYg
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCiAgICAgSlNBcnJheUJ1ZmZlclByb3Rv
dHlwZSogYXJyYXlCdWZmZXJQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2FycmF5QnVmZmVy
UHJvdG90eXBlLmdldCgpOyB9CiAKICNkZWZpbmUgREVGSU5FX0FDQ0VTU09SU19GT1JfU0lNUExF
X1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBq
c05hbWUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1v
dGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcApzaW1pbGFyaXR5IGluZGV4IDUzJQpyZW5h
bWUgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3Rv
clhQQ1dyYXBwZXIuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcAppbmRleCAzZjk0NGVjLi5iMjhmMzEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQ
Q1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdERlYnVnZ2FibGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMywzMiArMjMsNDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0jaW1wb3J0IDx4cGMveHBjLmg+CisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgiCiAK
LUBjbGFzcyBXZWJJbnNwZWN0b3JYUENXcmFwcGVyOworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQogCi1AcHJvdG9jb2wgV2ViSW5zcGVjdG9yWFBDV3JhcHBlckRlbGVnYXRlIDxOU09iamVj
dD4KLS0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5l
Y3Rpb24gcmVjZWl2ZWRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihO
U0RpY3Rpb25hcnkgKil1c2VySW5mbzsKLS0gKHZvaWQpeHBjQ29ubmVjdGlvbkZhaWxlZDooV2Vi
SW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb247Ci1Ab3B0aW9uYWwKLS0gKHZvaWQpeHBj
Q29ubmVjdGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb24gdW5oYW5kbGVk
TWVzc2FnZTooeHBjX29iamVjdF90KW1lc3NhZ2U7Ci1AZW5kCisjaW5jbHVkZSAiSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRl
ICJSZW1vdGVJbnNwZWN0b3IuaCIKIAotQGludGVyZmFjZSBXZWJJbnNwZWN0b3JYUENXcmFwcGVy
IDogTlNPYmplY3QKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK25hbWVzcGFjZSBKU0Mg
eworCitKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZShK
U0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0KQogewotICAgIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGU+IF9kZWxl
Z2F0ZTsKLSAgICB4cGNfY29ubmVjdGlvbl90IF9jb25uZWN0aW9uOwotICAgIE5TU3RyaW5nICpf
dGFnOwogfQogCi0tIChXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopaW5pdFdpdGhDb25uZWN0aW9u
Oih4cGNfY29ubmVjdGlvbl90KWNvbm5lY3Rpb247Ci0tICh2b2lkKWNsb3NlOwotLSAodm9pZClz
ZW5kTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5
ICopdXNlckluZm87CitTdHJpbmcgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpuYW1lKCkgY29u
c3QKK3sKKyAgICBTdHJpbmcgbmFtZSA9IG1fZ2xvYmFsT2JqZWN0Lm5hbWUoKTsKKyAgICByZXR1
cm4gbmFtZS5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIkpTQ29udGV4dCIpIDogbmFtZTsKK30K
Kwordm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIC8vIENyZWF0ZSBh
biBJbnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JGcm9udGVuZCwgSW5zcGVjdG9yQmFja2Vu
ZCwgYW5kIEFnZW50cy4KKyAgICAvLyAiSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250
ZW5kIi4KK30KKwordm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoKQor
eworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgLy8gIkluc3BlY3RvckNvbnRyb2xsZXI6
OmRpc2Nvbm5lY3RGcm9udGVuZCIuCit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJikKK3sKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIC8vICJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNw
YXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQiCit9CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3Np
Z24pIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGU+IGRlbGVnYXRlOwotQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb247Ci1A
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgYXZhaWxhYmxlOwotQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICp0YWc7Cit9IC8vIG5hbWVzcGFjZSBKU0MKIAot
QGVuZAorI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJW
aWV3Q29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmgKc2ltaWxhcml0eSBpbmRleCA1MyUKcmVuYW1lIGZyb20gU291cmNl
L1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbi5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdERlYnVnZ2FibGUuaAppbmRleCBjN2E1YmNjLi42ZjJkOWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZl
cldlYlZpZXdDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDMzICsyMywzOSBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1AY2xhc3MgV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbDsKLUBjbGFzcyBXZWJJbnNwZWN0
b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXI7CisjaWZuZGVmIEpTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZV9oCisjZGVmaW5lIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZV9oCiAKLUBp
bnRlcmZhY2UgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gOiBOU09iamVjdCB7
Ci1AcHJpdmF0ZQotICAgIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKl9jaGFubmVsOworI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb25Db250cm9sbGVyICpfY29udHJvbGxlcjsgLy8gd2VhaywgdGhlIGNvbnRyb2xs
ZXIgb3ducyB1cy4KLSAgICBOU1N0cmluZyAqX2Nvbm5lY3Rpb25JZGVudGlmaWVyOwotICAgIE5T
U3RyaW5nICpfZGVzdGluYXRpb247Ci0gICAgTlNOdW1iZXIgKl9pZGVudGlmaWVyOwotfQorI2lu
Y2x1ZGUgIlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KIAotLSAoaWQpaW5pdFdpdGhDb250cm9sbGVyOihXZWJJbnNwZWN0b3JTZXJ2ZXJX
ZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgKiljb250cm9sbGVyIGNvbm5lY3Rpb25JZGVudGlm
aWVyOihOU1N0cmluZyAqKWNvbm5lY3Rpb25JZGVudGlmaWVyIGRlc3RpbmF0aW9uOihOU1N0cmlu
ZyAqKWRlc3RpbmF0aW9uIGlkZW50aWZpZXI6KE5TTnVtYmVyICopaWRlbnRpZmllcjsKLS0gKEJP
T0wpc2V0dXBDaGFubmVsOwotLSAoTlNTdHJpbmcgKiljb25uZWN0aW9uSWRlbnRpZmllcjsKLS0g
KE5TTnVtYmVyICopaWRlbnRpZmllcjsKK25hbWVzcGFjZSBKU0MgewogCi0vLyBNZXNzYWdlcyBm
cm9tIHRoZSBJbnNwZWN0b3JTZXJ2ZXIuCi0tICh2b2lkKXJlY2VpdmVkRGF0YTooTlNEaWN0aW9u
YXJ5ICopZGljdGlvbmFyeTsKLS0gKHZvaWQpcmVjZWl2ZWREaWRDbG9zZTooTlNEaWN0aW9uYXJ5
ICopZGljdGlvbmFyeTsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OwogCi0vLyBNZXNzYWdlcyBmcm9t
IHRoZSBDaGFubmVsLgotLSAodm9pZCljbGVhckNoYW5uZWw7Ci0tICh2b2lkKXNlbmRNZXNzYWdl
VG9Gcm9udGVuZDooTlNTdHJpbmcgKiltZXNzYWdlOworY2xhc3MgSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlIEZJTkFMIDogcHVibGljIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlKTsK
K3B1YmxpYzoKKyAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUoSlNHbG9iYWxPYmplY3QmKTsK
KyAgICB+SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlKCkgeyB9CiAKLS8vIE1lc3NhZ2VzIHRvIHRo
ZSBDaGFubmVsLgotLSAodm9pZClzZW5kTWVzc2FnZVRvQmFja2VuZDooTlNTdHJpbmcgKiltZXNz
YWdlOworICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpE
ZWJ1Z2dhYmxlVHlwZSB0eXBlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpKYXZhU2NyaXB0OyB9CiAKLUBlbmQKKyAgICB2aXJ0
dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGhhc0xv
Y2FsRGVidWdnZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmly
dHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBKU0dsb2JhbE9iamVjdCYgbV9n
bG9iYWxPYmplY3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IDRlNDQ2YWUuLmIxNzExNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5l
Y3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9pb3MvV2ViQ29yZVRocmVhZC5jcHA6
CisgICAgICAgICogd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmg6CisgICAgICAgIEV4cG9zZSBXZWJU
aHJlYWRSdW4vV2ViVGhyZWFkUnVuU3luYyBpT1MgbWV0aG9kcyBkZWZpbmVkIGluIFdlYkNvcmUg
dGhyb3VnaAorICAgICAgICBXVEYgc28gdGhhdCBKYXZhU2NyaXB0Q29yZSBjYW4gdXNlIGl0LiBB
bm90aGVyIHN1Y2ggbWV0aG9kIGFscmVhZHkgZXhpc3RlZC4KKwogMjAxMy0xMS0zMCAgcGVhdm9A
b3V0bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNvbT4KIAogICAgICAgICBbV2luXSBTb21lIEph
dmFTY3JpcHQgZGF0ZSB0ZXN0cyBhcmUgZmFpbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL2lvcy9XZWJDb3JlVGhyZWFkLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhy
ZWFkLmNwcAppbmRleCA0Mjc0NDY2Li5mMDdkYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9pb3MvV2ViQ29yZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvaW9zL1dlYkNvcmVU
aHJlYWQuY3BwCkBAIC0yOCw0ICsyOCw3IEBACiAKICNpZiBVU0UoV0VCX1RIUkVBRCkKIFdURl9F
WFBPUlRfUFJJVkFURSBib29sICgqV2ViQ29yZVdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCko
dm9pZCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCAoKldlYkNvcmVXZWJUaHJlYWRJc0VuYWJs
ZWQpKHZvaWQpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgKCpXZWJDb3JlV2ViVGhyZWFkUnVu
KSh2b2lkICheYmxvY2spKCkpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgKCpXZWJDb3JlV2Vi
VGhyZWFkUnVuU3luYykodm9pZCAoXmJsb2NrKSgpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvaW9zL1dlYkNvcmVUaHJlYWQuaCBiL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJD
b3JlVGhyZWFkLmgKaW5kZXggMTBlMjZhNy4uODE5Y2VlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvaW9zL1dlYkNvcmVUaHJlYWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29y
ZVRocmVhZC5oCkBAIC0zMyw2ICszMyw5IEBAIGV4dGVybiAiQyIgewogI2VuZGlmCiAKIGV4dGVy
biBib29sICgqV2ViQ29yZVdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCkodm9pZCk7CitleHRl
cm4gYm9vbCAoKldlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQpKHZvaWQpOworZXh0ZXJuIHZvaWQg
KCpXZWJDb3JlV2ViVGhyZWFkUnVuKSh2b2lkICheYmxvY2spKCkpOworZXh0ZXJuIHZvaWQgKCpX
ZWJDb3JlV2ViVGhyZWFkUnVuU3luYykodm9pZCAoXmJsb2NrKSgpKTsKIAogI2lmZGVmIF9fY3Bs
dXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzhiNmJhMi4uZWI0ZDA3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDYzIEBACisyMDEzLTExLTIyICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIG1pc3NpbmcgZm9sZGVycyBhbmQg
ZmlsZXMgdG8gWGNvZGUgcHJvamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI0ODAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKzIw
MTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rp
b24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGEgV2ViQ29yZTo6UGFnZSBhICJXZWIiIFJl
bW90ZSBEZWJ1Z2dhYmxlLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVtb3RlSW5zcGVj
dGlvbkFsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UmVtb3RlSW5zcGVjdGlv
bkFsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVtb3RlSW5zcGVjdG9ySW5mb3Jt
YXRpb25EaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2Uv
UGFnZURlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6UGFnZURlYnVnZ2FibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6Om5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZURlYnVnZ2FibGU6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJs
ZTo6aGFzTG9jYWxEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6
Y29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6ZGlzY29ubmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJl
bW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjpzZXRJbmRp
Y2F0aW5nKToKKyAgICAgICAgTWFrZSBhIHBhZ2UgYSAiV2ViIiBkZWJ1Z2dhYmxlLgorCisgICAg
ICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICBNaXNjLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjppbmRpY2F0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OmhpZGVJbmRpY2F0ZSk6CisgICAg
ICAgIEZvcndhcmQgaW5kaWNhdGUgbWV0aG9kcyB0byBXZWJLaXQgY2xpZW50cy4KKworICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZGlkQ2hhbmdlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCk6CisgICAgICAgIFB1c2ggdXBkYXRlcyB3aGVuIHJlbW90ZSBkZWJ1
Z2dhYmxlIGluZm9ybWF0aW9uIGxpa2UgdGhlIFBhZ2UncworICAgICAgICBVUkwgb3IgdGl0bGUg
Y2hhbmdlLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
OgorICAgICAgICBSZS1leHBvcnQgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwg
YXMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsCisgICAgICAgIHRvIGF2b2lkIG5l
ZWRsZXNzbHkgdXBkYXRpbmcgY29kZSBhbGwgb3ZlciB0aGUgcGxhY2UuCisKKyAgICAgICAgKiBw
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKToKKyAgICAgICAgTWFrZSB0aGUgIkluc3BlY3QgRWxl
bWVudCIgY29udGV4dCBtZW51IHdvcmsgY29ycmVjdGx5IHdoZW4gdGhlcmUgaXMgYQorICAgICAg
ICByZW1vdGUgaW5zcGVjdG9yIGluc3RlYWQgb2YgYSBsb2NhbCBpbnNwZWN0b3IuCisKIDIwMTMt
MTItMDIgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIHNl
dHRpbmcgdG8gb3B0IGludG8gYSBtb2RlIHdoZXJlIHRoZSBiYWNrZ3JvdW5kIGV4dGVuZHMgYW5k
IGZpeGVkIGVsZW1lbnRzIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAyYjhhNTQ4Li45MTZlMDYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjgwNiw2ICsyODA2LDcgQEAgX19aTjdXZWJDb3Jl
MzNRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXRFdgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKK19fWk43V2ViQ29yZTRQYWdlMjZzZXRSZW1vdGVJbnNwZWN0
aW9uQWxsb3dlZEViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyN2Rpc3BhdGNo
TWVzc2FnZUZyb21Gcm9udGVuZEVSS04zV1RGNlN0cmluZ0UKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzVmNDA5
NS4uMGU3OTgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMzUyMyw2ICszNTIzLDggQEAKIAkJQTU1NkMyODkxODMyMDZBODAw
OENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTZDMjg3MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTU3MzJCMEExMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzMy
QjA4MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5jcHAgKi87IH07CiAJCUE1NzMy
QjBCMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8q
IERhdGVDb21wb25lbnRzLmggKi87IH07CisJCUE1QTJBRjBCMTgyOTczNDMwMERFMTcyOSAvKiBQ
YWdlRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUEyQUYwOTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwICov
OyB9OworCQlBNUEyQUYwQzE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjBBMTgyOTcz
NDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICovOyB9OwogCQlBNUFCQjc4NzEzQjkwNEJD
MDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyog
TGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi87IH07CiAJCUE1QUM0QUVGMTgzMzY5NzUwMDcx
MTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFDNEFFRDE4MzM2OTc1MDA3MTE0RTAgLyog
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwICovOyB9OwogCQlBNUFDNEFGMDE4MzM2OTc1
MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUM0QUVFMTgzMzY5NzUwMDcxMTRFMCAv
KiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDMyNCw2ICsxMDMyNiwxMiBAQAogCQlBNTU2QzI4
NzE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NzMyQjA4MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29t
cG9uZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRlQ29t
cG9uZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NzMyQjA5MTM2QTE2
MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEYXRlQ29tcG9uZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
NTkzQ0Y3MjE4NDAyQ0U5MDBCRkNFMjcgLyogcHJvdG9jb2wgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBwcm90b2NvbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGNzMxODQwMkQ0QjAwQkZDRTI3IC8qIENv
ZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBDb2RlR2VuZXJhdG9y
SW5zcGVjdG9yLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y3NDE4NDAy
RDRCMDBCRkNFMjcgLyogQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRo
b247IHBhdGggPSBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGNzUxODQwMkQ0QjAwQkZDRTI3IC8qIGNvbWJpbmUtamF2
YXNjcmlwdC1yZXNvdXJjZXMucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0gImNvbWJpbmUtamF2YXNjcmlw
dC1yZXNvdXJjZXMucGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUEyQUYwOTE4
Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGFnZURlYnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNUEyQUYwQTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZURlYnVnZ2FibGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBQkI3ODYxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVC
cmVha0l0ZXJhdG9yUG9vbElDVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
aW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTVBQzRBRUQxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBQzRBRUUxODMz
Njk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDQxOCw3ICsxNDQyNiwxMSBAQAogCQkxQzgxQjk0
RDBFOTczMkQ5MDAyNjZFMDcgLyogaW5zcGVjdG9yICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBNTkzQ0Y3MjE4NDAyQ0U5MDBCRkNFMjcgLyogcHJvdG9j
b2wgKi8sCiAJCQkJQTUxODIyNTMxN0UyOENGMTAwQTlCQTFEIC8qIFNjcmlwdHMgKi8sCisJCQkJ
QTU5M0NGNzMxODQwMkQ0QjAwQkZDRTI3IC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgKi8s
CisJCQkJQTU5M0NGNzQxODQwMkQ0QjAwQkZDRTI3IC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JT
dHJpbmdzLnB5ICovLAorCQkJCUE1OTNDRjc1MTg0MDJENEIwMEJGQ0UyNyAvKiBjb21iaW5lLWph
dmFzY3JpcHQtcmVzb3VyY2VzLnBsICovLAogCQkJCUYzNUFFNUFCMTQ5MjVGNUIwMDRENTc3NiAv
KiBCaW5kaW5nVmlzaXRvcnMuaCAqLywKIAkJCQkyREYyRTlENDE2NkUzOTc0MDAzNUJFRjIgLyog
Q29uc29sZUFQSVR5cGVzLmggKi8sCiAJCQkJNDFGMDYxOEQwRjVGMDY5ODAwQTA3RUFDIC8qIENv
bnNvbGVNZXNzYWdlLmNwcCAqLywKQEAgLTE1NjkwLDYgKzE1NzAyLDggQEAKIAkJCQlDRDA4Mjg1
QjE3NTcyNTA4MDBFQzVGQjcgLyogUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCAqLywKIAkJ
CQlEQUFDQjNEOTE2RjI0MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNvbGUuY3BwICovLAogCQkJCURB
QUNCM0RBMTZGMjQxNjQwMDY2NjEzNSAvKiBQYWdlQ29uc29sZS5oICovLAorCQkJCUE1QTJBRjA5
MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgKi8sCisJCQkJQTVBMkFGMEEx
ODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi8sCiAJCQkJOTMwMkIwQkMwRDc5
RjgyOTAwQzdFRTgzIC8qIFBhZ2VHcm91cC5jcHAgKi8sCiAJCQkJOTMwMkIwQkUwRDc5RjgyQzAw
QzdFRTgzIC8qIFBhZ2VHcm91cC5oICovLAogCQkJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5OSAv
KiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwICovLApAQCAtMjMwNDIsNiArMjMwNTYsNyBAQAog
CQkJCUQwMDBFQkEzMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTRENThFQkIxN0I4RjEyODAwQ0JEQ0E4IC8qIEVsZW1lbnRU
cmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQjc3QTM4MEFERDc5MjUwMEVBNEI4MSAv
KiBGcmFtZUxvYWRlclR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUEyQUYwQzE4Mjk3MzQz
MDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1ODQzNjg2
MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2MjhEMjE0RTEyMTMxRUY0MDA1NURDRkMgLyogRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTE3MkFGNzAxODBGMjg5NTAwRkJBREI5IC8qIENyeXB0b0tleVVz
YWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTI3Nzc1LDYgKzI3NzkwLDcgQEAKIAkJCQlCMkFGRkM3
RjBEMDBBNUMxMDAzMDA3NEQgLyogU2ltcGxlRm9udERhdGFNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlDNUExRUE3QzE1MkJDRjA0MDA0RDAwQjYgLyogU2ltcGxpZnlNYXJrdXBDb21tYW5kLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZEMDBEN0E0MTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVz
YW1wbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1QTJBRjBCMTgyOTczNDMwMERFMTcyOSAv
KiBQYWdlRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTMyN0Q2MTExQTMzQTJC
MDA0RjlENjUgLyogU2lua0RvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUND
MEVGODZENDcwMDlEMENBRiAvKiBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxNTBGOUYyMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKaW5kZXggMmNjOTViMS4uMjdiZDc4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNTYsMTIgKzU2
LDIwIEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsK
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8o
KSkpOworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgc2V0UmVtb3RlRGVidWdn
aW5nRW5hYmxlZChmYWxzZSk7CisjZW5kaWYKIH0KIAogdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCogdGhpc1ZhbHVlKQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzVmFsdWUpOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZv
KCkpKTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHNldFJlbW90ZURlYnVn
Z2luZ0VuYWJsZWQoZmFsc2UpOworI2VuZGlmCiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IEpTRE9NR2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA3MGExOWM5Li40NGU3
ZWExNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKQEAg
LTUyLDYgKzUyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZv
aWQgaW5kaWNhdGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGlkZUluZGljYXRpb24oKSB7IH0K
KwogICAgIHZpcnR1YWwgYm9vbCBjYW5DbGVhckJyb3dzZXJDYWNoZSgpIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQnJvd3NlckNhY2hlKCkgeyB9CiAgICAgdmlydHVh
bCBib29sIGNhbkNsZWFyQnJvd3NlckNvb2tpZXMoKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGQ3
NTE2YTUuLmU5NTg5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKQEAgLTg0LDYgKzg0LDkgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6
SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3Rv
ckMKICAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9pbnNwZWN0b3JDbGllbnQoaW5zcGVjdG9y
Q2xpZW50KQogICAgICwgbV9pc1VuZGVyVGVzdChmYWxzZSkKKyNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKKyAgICAsIG1faGFzUmVtb3RlRnJvbnRlbmQoZmFsc2UpCisjZW5kaWYKIHsKICAg
ICBPd25QdHI8SW5zcGVjdG9yQWdlbnQ+IGluc3BlY3RvckFnZW50UHRyKEluc3BlY3RvckFnZW50
OjpjcmVhdGUocGFnZSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5nZXQoKSkpOwogICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2Vu
dFB0ci5nZXQoKTsKQEAgLTE0OCw3ICsxNTEsNiBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNw
ZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwog
ICAgIG1fYWdlbnRzLmFwcGVuZChwcm9maWxlckFnZW50UHRyLnJlbGVhc2UoKSk7CiAKICAgICBt
X2FnZW50cy5hcHBlbmQoSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmNyZWF0ZShtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7Ci0K
ICNlbmRpZgogCiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvcldvcmtlckFnZW50OjpjcmVh
dGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKSk7CkBAIC0yMDMsNiArMjA1LDI0IEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoUGFzc093
blB0cjxJbnNwZWN0b3JGcm9udGVuCiAgICAgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCA9IGlu
c3BlY3RvckZyb250ZW5kQ2xpZW50OwogfQogCitib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhh
c0xvY2FsRnJvbnRlbmQoKSBjb25zdAoreworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
ICAgIHJldHVybiBoYXNGcm9udGVuZCgpICYmICFtX2hhc1JlbW90ZUZyb250ZW5kOworI2Vsc2UK
KyAgICByZXR1cm4gaGFzRnJvbnRlbmQoKTsKKyNlbmRpZgorfQorCitib29sIEluc3BlY3RvckNv
bnRyb2xsZXI6Omhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKKyAgICByZXR1cm4gbV9oYXNSZW1vdGVGcm9udGVuZDsKKyNlbHNlCisgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFz
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OwpAQCAtMjMzLDYgKzI1MywxMSBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbgogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1lbnRp
bmdBZ2VudHMobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKTsKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmZyb250ZW5kQ3JlYXRlZCgpOworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCisgICAgaWYgKCFtX2hhc1JlbW90ZUZyb250ZW5kKQorICAgICAgICBtX3BhZ2UtPnJl
bW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CisjZW5kaWYKIH0KIAogdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoKQpAQCAtMjUwLDEwICsyNzUs
MTcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoKQogICAg
IG1fb3ZlcmxheS0+ZnJlZVBhZ2UoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZy
b250ZW5kRGVsZXRlZCgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dW5yZWdpc3Rl
ckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKTsKKworI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlmICghbV9oYXNSZW1vdGVGcm9udGVuZCkK
KyAgICAgICAgbV9wYWdlLT5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOwor
I2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCiB7CisgICAgQVNT
RVJUKCFoYXNSZW1vdGVGcm9udGVuZCgpKTsKKwogICAgIGlmICghZW5hYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTMxNSw3ICszNDcsOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
Omluc3BlY3QoTm9kZSogbm9kZSkKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgc2hvdygpOworICAgIGlmICghaGFzUmVtb3RlRnJvbnRlbmQoKSkKKyAgICAgICAg
c2hvdygpOwogCiAgICAgbV9kb21BZ2VudC0+aW5zcGVjdChub2RlKTsKIH0KQEAgLTM1Miw2ICsz
ODUsMTUgQEAgTm9kZSogSW5zcGVjdG9yQ29udHJvbGxlcjo6aGlnaGxpZ2h0ZWROb2RlKCkgY29u
c3QKICAgICByZXR1cm4gbV9vdmVybGF5LT5oaWdobGlnaHRlZE5vZGUoKTsKIH0KIAordm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykKK3sKKyAg
ICAvLyBGSVhNRTogRm9yIG5vbi1pT1MgY2xpZW50cywgd2Ugc2hvdWxkIGhhdmUgSW5zcGVjdG9y
T3ZlcmxheSBkbyBzb21ldGhpbmcgaGVyZS4KKyAgICBpZiAoaW5kaWNhdGluZykKKyAgICAgICAg
bV9pbnNwZWN0b3JDbGllbnQtPmluZGljYXRlKCk7CisgICAgZWxzZQorICAgICAgICBtX2luc3Bl
Y3RvckNsaWVudC0+aGlkZUluZGljYXRpb24oKTsKK30KKwogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpwcm9maWxlckVuYWJsZWQoKSBj
b25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmgKaW5kZXggOTVlYzdlMy4uODM5Zjk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC05MiwxNyArOTIsMjYgQEAgcHVibGljOgogICAg
IHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
CiAKICAgICBib29sIGhhc0Zyb250ZW5kKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbDsgfQorICAgIGJvb2wgaGFzTG9jYWxGcm9udGVuZCgpIGNvbnN0OworICAg
IGJvb2wgaGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdDsKKwogICAgIHZvaWQgY29ubmVjdEZyb250
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOwogICAgIHZvaWQgZGlzY29ubmVjdEZyb250
ZW5kKCk7CiAgICAgdm9pZCBzZXRQcm9jZXNzSWQobG9uZyk7CiAgICAgdm9pZCB3ZWJWaWV3UmVz
aXplZChjb25zdCBJbnRTaXplJik7CiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAg
ICB2b2lkIHNldEhhc1JlbW90ZUZyb250ZW5kKGJvb2wgaGFzUmVtb3RlKSB7IG1faGFzUmVtb3Rl
RnJvbnRlbmQgPSBoYXNSZW1vdGU7IH0KKyNlbmRpZgorCiAgICAgdm9pZCBpbnNwZWN0KE5vZGUq
KTsKICAgICB2b2lkIGRyYXdIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAgICAg
dm9pZCBnZXRIaWdobGlnaHQoSGlnaGxpZ2h0KikgY29uc3Q7CiAgICAgdm9pZCBoaWRlSGlnaGxp
Z2h0KCk7CiAgICAgTm9kZSogaGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CiAKKyAgICB2b2lkIHNl
dEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKTsKKwogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OwogCiAgICAgYm9v
bCBpc1VuZGVyVGVzdCgpOwpAQCAtMTUzLDYgKzE2MiwxMCBAQCBwcml2YXRlOgogICAgIEluc3Bl
Y3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CiAgICAgSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eSBtX2FnZW50czsKICAgICBib29sIG1faXNVbmRlclRlc3Q7CisKKyNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKKyAgICBib29sIG1faGFzUmVtb3RlRnJvbnRlbmQ7CisjZW5kaWYKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwuaAppbmRleCBiMzIxNGVmLi5hMzk2NmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCkBAIC0xLDQgKzEsNSBAQAog
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CkBAIC0yMCwyMiArMjEsMTYgQEAKICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAotI2RlZmluZSBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWxfaAorI2lmbmRlZiBXRUJDT1JFX0luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbF9oCisjZGVmaW5lIFdFQkNPUkVfSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsX2gKIAotI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCB7IH07Cit9CiAKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7Ci1wdWJsaWM6
Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKCkgeyB9Ci0gICAgdmlydHVh
bCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFkZWZpbmVkKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbF9oKQorI2VuZGlmIC8vICFkZWZpbmVkKFdFQkNPUkVfSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCBmMzQ3NGMzLi5iOGY3ZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTMzMTksNiArMzMxOSwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRs
ZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICBtX2NsaWVudC5zZXRNYWluRnJhbWVE
b2N1bWVudFJlYWR5KHRydWUpOyAvLyB1cGRhdGUgb2JzZXJ2ZXJzIHdpdGggbmV3IERPTURvY3Vt
ZW50CiAgICAgICAgIG1fY2xpZW50LmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGxvYWRlci0+dGl0
bGUoKSk7CiAgICAgfQorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgaWYgKG1f
ZnJhbWUuaXNNYWluRnJhbWUoKSkKKyAgICAgICAgbV9mcmFtZS5wYWdlKCktPnJlbW90ZUluc3Bl
Y3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CisjZW5kaWYKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6ZGlkQ2hhbmdlSWNvbnMoSWNvblR5cGUgdHlwZSkKQEAgLTMzNDAsOSArMzM0NSwxMiBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogCiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkKCZtX2ZyYW1lLCBtX2RvY3VtZW50TG9hZGVy
LmdldCgpKTsKIAotICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpCisgICAgaWYgKG1fZnJh
bWUuaXNNYWluRnJhbWUoKSkgewogICAgICAgICBtX2ZyYW1lLnBhZ2UoKS0+ZmVhdHVyZU9ic2Vy
dmVyKCktPmRpZENvbW1pdExvYWQoKTsKLQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
ICAgICAgICBtX2ZyYW1lLnBhZ2UoKS0+cmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFu
Z2UoKTsKKyNlbmRpZgorICAgIH0KIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6dGVsbENsaWVudEFi
b3V0UGFzdE1lbW9yeUNhY2hlTG9hZHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGM3YTNjZDIuLmE1ZWExODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTg5Miw3ICs4OTIsNyBA
QCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogI2VuZGlmICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgfSBlbHNlIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAg
ICAgICAgICAgICAgIGlmICghKGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPnBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5oYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpKSkgeworICAgICAg
ICAgICAgICAgIGlmICghKGZyYW1lLT5wYWdlKCkgJiYgKGZyYW1lLT5wYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSB8fCBmcmFtZS0+cGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmhhc1JlbW90ZUZyb250ZW5kKCkpKSkgewogI2Vu
ZGlmCiAKICAgICAgICAgICAgICAgICAvLyBJbiBHVEsrIHVuYXZhaWxhYmxlIGl0ZW1zIGFyZSBu
b3QgaGlkZGVuIGJ1dCBpbnNlbnNpdGl2ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDhkOTI5OTcu
LmFlNzIwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUg
IlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCiAj
aW5jbHVkZSAiUGFnZUNvbnNvbGUuaCIKKyNpbmNsdWRlICJQYWdlRGVidWdnYWJsZS5oIgogI2lu
Y2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKICNpbmNsdWRl
ICJQbHVnSW5DbGllbnQuaCIKQEAgLTE4Niw2ICsxODcsOSBAQCBQYWdlOjpQYWdlKFBhZ2VDbGll
bnRzJiBwYWdlQ2xpZW50cykKICAgICAsIG1fc2NyaXB0ZWRBbmltYXRpb25zU3VzcGVuZGVkKGZh
bHNlKQogICAgICwgbV9wYWdlVGhyb3R0bGVyKHN0ZDo6bWFrZV91bmlxdWU8UGFnZVRocm90dGxl
cj4oKnRoaXMpKQogICAgICwgbV9jb25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnNvbGU+
KCp0aGlzKSkKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICAsIG1faW5zcGVjdG9y
RGVidWdnYWJsZShzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCisjZW5k
aWYKICAgICAsIG1fbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlc0NvdW50KDApIC8vIE5P
VEU6IE9ubHkgY2FsbGVkIGZyb20gSW50ZXJuYWxzIGZvciBTcGF0aWFsIE5hdmlnYXRpb24gdGVz
dGluZy4KICAgICAsIG1fZnJhbWVzSGFuZGxpbmdCZWZvcmVVbmxvYWRFdmVudCgwKQogewpAQCAt
MjAzLDYgKzIwNywxMCBAQCBQYWdlOjpQYWdlKFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50cykKICNp
Zm5kZWYgTkRFQlVHCiAgICAgcGFnZUNvdW50ZXIuaW5jcmVtZW50KCk7CiAjZW5kaWYKKworI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+aW5p
dCgpOworI2VuZGlmCiB9CiAKIFBhZ2U6On5QYWdlKCkKQEAgLTEyOTEsNiArMTI5OSwyMyBAQCB2
b2lkIFBhZ2U6OmFkZEZvb3RlcldpdGhIZWlnaHQoaW50IGZvb3RlckhlaWdodCkKIH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCitib29sIFBhZ2U6OnJlbW90ZUluc3Bl
Y3Rpb25BbGxvd2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JEZWJ1Z2dhYmxl
LT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCk7Cit9CisKK3ZvaWQgUGFnZTo6c2V0UmVtb3RlSW5z
cGVjdGlvbkFsbG93ZWQoYm9vbCBhbGxvd2VkKQoreworICAgIG1faW5zcGVjdG9yRGVidWdnYWJs
ZS0+c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChhbGxvd2VkKTsKK30KKwordm9pZCBQYWdlOjpy
ZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpIGNvbnN0Cit7CisgICAgbV9pbnNw
ZWN0b3JEZWJ1Z2dhYmxlLT51cGRhdGUoKTsKK30KKyNlbmRpZgorCiB2b2lkIFBhZ2U6OmFkZExh
eW91dE1pbGVzdG9uZXMoTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQogewogICAgIC8vIElu
IHRoZSBmdXR1cmUsIHdlIG1heSB3YW50IGEgZnVuY3Rpb24gdGhhdCByZXBsYWNlcyBtX2xheW91
dE1pbGVzdG9uZXMgaW5zdGVhZCBvZiBqdXN0IGFkZGluZyB0byBpdC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggYjY3ODM4OC4uNDVjZDQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTgwLDYgKzgwLDcgQEAgY2xh
c3MgTWVkaWFDYW5TdGFydExpc3RlbmVyOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2VBY3Rpdml0
eUFzc2VydGlvblRva2VuOwogY2xhc3MgUGFnZUNvbnNvbGU7CitjbGFzcyBQYWdlRGVidWdnYWJs
ZTsKIGNsYXNzIFBhZ2VHcm91cDsKIGNsYXNzIFBhZ2VUaHJvdHRsZXI7CiBjbGFzcyBQbHVnSW5D
bGllbnQ7CkBAIC0xNzgsNiArMTc5LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlY3JlbWVudFN1
YmZyYW1lQ291bnQoKSB7IEFTU0VSVChtX3N1YmZyYW1lQ291bnQpOyAtLW1fc3ViZnJhbWVDb3Vu
dDsgfQogICAgIGludCBzdWJmcmFtZUNvdW50KCkgY29uc3QgeyBjaGVja1N1YmZyYW1lQ291bnRD
b25zaXN0ZW5jeSgpOyByZXR1cm4gbV9zdWJmcmFtZUNvdW50OyB9CiAKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKyAgICBib29sIHJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRSZW1vdGVJbnNwZWN0aW9uQWxsb3dlZChib29sIGFsbG93ZWQpOworICAg
IHZvaWQgcmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKSBjb25zdDsKKyNlbmRp
ZgorCiAgICAgQ2hyb21lJiBjaHJvbWUoKSBjb25zdCB7IHJldHVybiAqbV9jaHJvbWU7IH0KICAg
ICBEcmFnQ2FyZXRDb250cm9sbGVyJiBkcmFnQ2FyZXRDb250cm9sbGVyKCkgY29uc3QgeyByZXR1
cm4gKm1fZHJhZ0NhcmV0Q29udHJvbGxlcjsgfQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBA
IC01MzIsNiArNTM5LDEwIEBAIHByaXZhdGU6CiAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFBh
Z2VUaHJvdHRsZXI+IG1fcGFnZVRocm90dGxlcjsKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8
UGFnZUNvbnNvbGU+IG1fY29uc29sZTsKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
ICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxQYWdlRGVidWdnYWJsZT4gbV9pbnNwZWN0b3JEZWJ1
Z2dhYmxlOworI2VuZGlmCisKICAgICBIYXNoU2V0PFN0cmluZz4gbV9zZWVuUGx1Z2luczsKICAg
ICBIYXNoU2V0PFN0cmluZz4gbV9zZWVuTWVkaWFFbmdpbmVzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZURlYnVnZ2FibGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNl
YTBhZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dh
YmxlLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dh
YmxlLmgiCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgorI2luY2x1ZGUg
IlBhZ2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitQYWdlRGVidWdnYWJsZTo6UGFnZURlYnVnZ2FibGUoUGFnZSYgcGFnZSkKKyAgICA6
IG1fcGFnZShwYWdlKQoreworfQorCitTdHJpbmcgUGFnZURlYnVnZ2FibGU6Om5hbWUoKSBjb25z
dAoreworICAgIGlmICghbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQo
KS0+dGl0bGUoKTsKK30KKworU3RyaW5nIFBhZ2VEZWJ1Z2dhYmxlOjp1cmwoKSBjb25zdAorewor
ICAgIGlmICghbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKworICAgIFN0cmluZyB1cmwgPSBtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nKCk7CisgICAgcmV0dXJuIHVybC5pc0VtcHR5KCkgPyBBU0NJSUxpdGVy
YWwoImFib3V0OmJsYW5rIikgOiB1cmw7Cit9CisKK2Jvb2wgUGFnZURlYnVnZ2FibGU6Omhhc0xv
Y2FsRGVidWdnZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhZ2UuaW5zcGVjdG9yQ29udHJv
bGxlcigpLT5oYXNMb2NhbEZyb250ZW5kKCk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2FibGU6OmNv
bm5lY3QoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGNoYW5uZWwpCit7Cisg
ICAgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNw
ZWN0b3JDb250cm9sbGVyKCk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+c2V0SGFzUmVtb3Rl
RnJvbnRlbmQodHJ1ZSk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+Y29ubmVjdEZyb250ZW5k
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKj4oY2hh
bm5lbCkpOworfQorCit2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KCkKK3sKKyAgICBJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gbV9wYWdlLmluc3BlY3Rv
ckNvbnRyb2xsZXIoKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5kaXNjb25uZWN0RnJvbnRl
bmQoKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5zZXRIYXNSZW1vdGVGcm9udGVuZChmYWxz
ZSk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVG
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9wYWdlLmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOworfQorCit2
b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykKK3sKKyAg
ICBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbmRpY2F0aW5nKGluZGljYXRpbmcp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90
ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
RGVidWdnYWJsZS5oCnNpbWlsYXJpdHkgaW5kZXggNTQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaApy
ZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oCmluZGV4IGVhNWIy
ZTMuLjkyNDI5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9y
ZW1vdGUvV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDI5ICsyMyw0MSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2lmbmRlZiBQYWdlRGVidWdnYWJsZV9oCisjZGVmaW5l
IFBhZ2VEZWJ1Z2dhYmxlX2gKIAotY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50OworI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQogCi1AcHJvdG9jb2wgV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0
cnlEZWxlZ2F0ZQotLSAodm9pZClkaWRSZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50
KiljbGllbnQ7Ci0tICh2b2lkKWRpZFVucmVnaXN0ZXJDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVu
dCopY2xpZW50OwotQGVuZAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGUuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAotQGludGVyZmFj
ZSBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSA6IE5TT2JqZWN0IHsKLUBwcml2YXRlCi0gICAg
dW5zaWduZWQgX25leHRBdmFpbGFibGVQYWdlSWQ7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgV2Vi
SW5zcGVjdG9yQ2xpZW50Kj4gX3BhZ2VDbGllbnRNYXA7Ci0gICAgaWQgPFdlYkluc3BlY3RvckNs
aWVudFJlZ2lzdHJ5RGVsZWdhdGU+IF9kZWxlZ2F0ZTsKLX0KK25hbWVzcGFjZSBXZWJDb3JlIHsK
IAotQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaWQgPFdlYkluc3BlY3RvckNsaWVudFJl
Z2lzdHJ5RGVsZWdhdGU+IGRlbGVnYXRlOworY2xhc3MgUGFnZTsKIAotKyAoV2ViSW5zcGVjdG9y
Q2xpZW50UmVnaXN0cnkgKilzaGFyZWRSZWdpc3RyeTsKK2NsYXNzIFBhZ2VEZWJ1Z2dhYmxlIEZJ
TkFMIDogcHVibGljIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZURlYnVnZ2FibGUpOworcHVibGljOgorICAgIFBhZ2VE
ZWJ1Z2dhYmxlKFBhZ2UmKTsKKyAgICB+UGFnZURlYnVnZ2FibGUoKSB7IH0KIAotLSAodm9pZCly
ZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQ7Ci0tICh2b2lkKXVucmVn
aXN0ZXJDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVudCopY2xpZW50OwotLSAoV2ViSW5zcGVjdG9y
Q2xpZW50KiljbGllbnRGb3JQYWdlSWQ6KHVuc2lnbmVkKXBhZ2VJZDsKLS0gKE5TRGljdGlvbmFy
eSAqKWluc3BlY3RhYmxlV2ViVmlld3M7CisgICAgdmlydHVhbCBJbnNwZWN0b3I6OlJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGU6OkRlYnVnZ2FibGVUeXBlIHR5cGUoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OldlYjsgfQogCi1A
ZW5kCisgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgU3RyaW5nIHVybCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNMb2Nh
bERlYnVnZ2VyKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJ
bnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkaXNjb25uZWN0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
TWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykgT1ZFUlJJ
REU7CisKK3ByaXZhdGU6CisgICAgUGFnZSYgbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNlbmRpZiAv
LyAhZGVmaW5lZChQYWdlRGVidWdnYWJsZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5NDhjNWY1Li5kYTI1Mzky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1v
dGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2Ny
aXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMy0xMi0wMiAgQmV0aCBE
YWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgc2V0dGluZyB0byBvcHQg
aW50byBhIG1vZGUgd2hlcmUgdGhlIGJhY2tncm91bmQgZXh0ZW5kcyBhbmQgZml4ZWQgZWxlbWVu
dHMgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjZDdmNWYyLi45NDI1YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3OCwyNCArMzc4LDExIEBACiAJCUExMEMxRDhEMTgy
MDMwNUUwMDM2ODgzQSAvKiBXZWJQREZWaWV3UGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMEMxRDg4MTgyMDMwNUUwMDM2ODgzQSAv
KiBXZWJQREZWaWV3UGxhY2Vob2xkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBMTBDMUQ4RTE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmll
d1BsYWNlaG9sZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTEwQzFEODkxODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZpZXdQbGFjZWhvbGRlci5t
bSAqLzsgfTsKIAkJQTE3QTExQjExODBEQzg0ODAwRTU0OThDIC8qIFdlYlBsdWdpblBhY2thZ2VQ
cml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MTdBMTFCMDE4MERDODQ4MDBFNTQ5OEMgLyogV2ViUGx1Z2luUGFja2FnZVByaXZhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNTIxNEZDNzEz
Qjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUyMTRGQzExM0I5NzVDODAwMDAx
NUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCAqLzsgfTsKLQkJQTUyMTRGQzgxM0I5
NzVDODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTIxNEZDMjEzQjk3NUM4MDAwMDE1
RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbSAqLzsgfTsKLQkJQTUyMjA5RjgxM0M1
M0U3NTAwNEJBN0IxIC8qIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MjIwOUY3MTNDNTNFNzUwMDRC
QTdCMSAvKiBXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTU1RTIwRkYxNEQ3MjY0QzAwMzE1NDlF
IC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1RTIwRkQxNEQ3MjY0
QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxl
ci5oICovOyB9OwotCQlBNTVFMjEwMDE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2Vy
dmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1RTIwRkUxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbSAqLzsgfTsKIAkJQTU2
MDk0NjYxNEQ4QUQyNjAwNzk5QThBIC8qIFdlYkluZGljYXRlTGF5ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NjA5NDY0MTREOEFEMjYwMDc5OUE4
QSAvKiBXZWJJbmRpY2F0ZUxheWVyLmggKi87IH07CiAJCUE1NjA5NDY3MTREOEFEMjYwMDc5OUE4
QSAvKiBXZWJJbmRpY2F0ZUxheWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU2MDk0NjUxNEQ4QUQyNjAwNzk5QThBIC8qIFdlYkluZGljYXRlTGF5
ZXIubW0gKi87IH07CiAJCUE1Njg3QkRBMTM1Qjc5MUEwMDc0Q0JDQiAvKiBXZWJOb2RlSGlnaGxp
Z2h0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
Njg3QkQ4MTM1Qjc5MUEwMDc0Q0JDQiAvKiBXZWJOb2RlSGlnaGxpZ2h0ZXIuaCAqLzsgfTsKIAkJ
QTU2ODdCREIxMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1Njg3QkQ5MTM1Qjc5MUEw
MDc0Q0JDQiAvKiBXZWJOb2RlSGlnaGxpZ2h0ZXIubW0gKi87IH07Ci0JCUE1N0MyOEE3MTNCQUE1
QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QzI4QTExM0JBQTVB
RDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmggKi87IH07
Ci0JCUE1N0MyOEE4MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1N0MyOEEyMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbi5tbSAqLzsgfTsKLQkJQTU3QzI4QTkxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYklu
c3BlY3RvclNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTU3QzI4QTMxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlci5oICov
OyB9OwotCQlBNTdDMjhBQTEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QzI4QTQx
M0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlci5tbSAqLzsgfTsKLQkJQTU3QzI4
QUIxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0MyOEE1MTNCQUE1QUQwMDcw
QUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTU3QzI4QUMxM0JBQTVBRDAwNzBBQ0FCIC8qIFdl
Ykluc3BlY3RvclhQQ1dyYXBwZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1N0MyOEE2MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENX
cmFwcGVyLm0gKi87IH07CiAJCUE1N0UyRjI0MTIwNzQ5RTYwMDA0OERGMyAvKiBXZWJRdW90YU1h
bmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
N0UyRjIyMTIwNzQ5RTYwMDA0OERGMyAvKiBXZWJRdW90YU1hbmFnZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNTdFQjc4RjEzQjk3QTRFMDA4
RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0VCNzhEMTNCOTdBNEUwMDhENjkxRCAvKiBX
ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oICovOyB9OwotCQlBNTdFQjc5MDEzQjk3QTRFMDA4
RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdFQjc4RTEzQjk3QTRFMDA4RDY5MUQgLyog
V2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0gKi87IH07CiAJCUE1OEE1Nzk5MTQzRTcyNzAw
MDEyNUY1MCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4QTU3OTcxNDNFNzI3MDAwMTI1RjUwIC8q
IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi87IH07CiAJCUE1OEE1NzlBMTQzRTcyNzAw
MDEyNUY1MCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OEE1Nzk4MTQzRTcyNzAwMDEyNUY1MCAv
KiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tbSAqLzsgfTsKIAkJQTVERUZDMEExMUQ1MzMx
QzAwODg1MjczIC8qIFdlYlNlY3VyaXR5T3JpZ2luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVERUZDMDcxMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNl
Y3VyaXR5T3JpZ2luLm1tICovOyB9OwpAQCAtNzc4LDI0ICs3NjUsMTEgQEAKIAkJQTEwQzFEODkx
ODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZpZXdQbGFjZWhvbGRlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlBERlZpZXdQbGFjZWhvbGRlci5tbTsgcGF0
aCA9IGlvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbTsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OwogCQlBMTBDMUQ4RjE4MjAzMDdEMDAzNjg4M0EgLyogV2ViS2l0LmlPUy5l
eHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmV4cG9ydHM7IG5hbWUgPSBXZWJLaXQuaU9TLmV4cDsg
cGF0aCA9IGlvcy9XZWJLaXQuaU9TLmV4cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTE3QTExQjAxODBEQzg0ODAwRTU0OThDIC8qIFdlYlBsdWdpblBhY2thZ2VQcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBsdWdpblBhY2thZ2VQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MjE0RkMxMTNCOTc1QzgwMDAwMTVFRiAv
KiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaDsgcGF0aCA9IHJlbW90ZS9XZWJJbnNw
ZWN0b3JSZW1vdGVDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MjE0
RkMyMTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yUmVtb3RlQ2hh
bm5lbC5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTIyMDlGNzEzQzUzRTc1MDA0QkE3QjEgLyogV2Vi
SW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmg7IHBhdGggPSByZW1vdGUvV2ViSW5z
cGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlB
NTVFMjBGRDE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oOyBwYXRoID0gcmVtb3Rl
L1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBNTVFMjBGRTE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb25Db250cm9sbGVyLm1tOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTU2MDk0NjQxNEQ4QUQyNjAwNzk5QThBIC8qIFdlYkluZGljYXRlTGF5ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5kaWNhdGVMYXllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTYwOTQ2NTE0RDhBRDI2MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVM
YXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluZGlj
YXRlTGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1Njg3QkQ4MTM1Qjc5
MUEwMDc0Q0JDQiAvKiBXZWJOb2RlSGlnaGxpZ2h0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViTm9kZUhpZ2hsaWdodGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1Njg3QkQ5MTM1Qjc5MUEwMDc0Q0JDQiAvKiBXZWJOb2RlSGlnaGxpZ2h0ZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJOb2RlSGlnaGxpZ2h0
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0MyOEExMTNCQUE1QUQwMDcw
QUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlv
bi5oOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0MyOEEyMTNCQUE1QUQwMDcwQUNBQiAv
KiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uLm1tOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdDMjhBMzEzQkFBNUFEMDA3MEFD
QUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFdlYkluc3BlY3RvclNlcnZlci5oOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvclNlcnZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdDMjhBNDEzQkFBNUFEMDA3MEFD
QUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yU2VydmVyLm1tOyBwYXRoID0gcmVtb3RlL1dlYkluc3Bl
Y3RvclNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTUxM0JB
QTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oOyBwYXRoID0gcmVtb3Rl
L1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTU3QzI4QTYxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIubSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBuYW1lID0gV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5t
OyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIubTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTU3RTJGMjIxMjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3RhTWFuYWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJRdW90YU1hbmFnZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3RUI3OEQxM0I5N0E0RTAwOEQ2OTFEIC8q
IFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lmg7IHBhdGggPSByZW1vdGUvV2ViSW5z
cGVjdG9yQ2xpZW50UmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3
RUI3OEUxM0I5N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yQ2xpZW50
UmVnaXN0cnkubW07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OEE1Nzk3MTQzRTcyNzAwMDEyNUY1MCAv
KiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNThBNTc5ODE0M0U3MjcwMDAxMjVGNTAgLyogV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTVERUZDMDcxMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNlY3VyaXR5T3JpZ2luLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU2VjdXJpdHlPcmlnaW4ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDUyLDcgKzEwMjYsNiBAQAogCQkxQzY4RjYz
RjA5NUI1RjlDMDBDMjk4NEUgLyogV2ViSW5zcGVjdG9yICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlBNTIxNEZCRjEzQjk3NTk2MDAwMDE1RUYgLyogcmVt
b3RlICovLAogCQkJCTVEN0JGODEyMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IuaCAq
LywKIAkJCQk1RDdCRjgxMzBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tICovLAog
CQkJCUI4MDQxNzZEMTIxN0E4MzEwMDQ2NkJBRSAvKiBXZWJJbnNwZWN0b3JGcm9udGVuZC5oICov
LApAQCAtMTUwOSwyNiArMTQ4Miw2IEBACiAJCQluYW1lID0gaW9zOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKLQkJQTUyMTRGQkYxM0I5NzU5NjAwMDAxNUVGIC8qIHJlbW90ZSAq
LyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTU3RUI3OEQx
M0I5N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggKi8sCi0JCQkJ
QTU3RUI3OEUxM0I5N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1t
ICovLAotCQkJCUE1MjIwOUY3MTNDNTNFNzUwMDRCQTdCMSAvKiBXZWJJbnNwZWN0b3JSZWxheURl
ZmluaXRpb25zLmggKi8sCi0JCQkJQTUyMTRGQzExM0I5NzVDODAwMDAxNUVGIC8qIFdlYkluc3Bl
Y3RvclJlbW90ZUNoYW5uZWwuaCAqLywKLQkJCQlBNTIxNEZDMjEzQjk3NUM4MDAwMDE1RUYgLyog
V2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbSAqLywKLQkJCQlBNTdDMjhBMzEzQkFBNUFEMDA3
MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLmggKi8sCi0JCQkJQTU3QzI4QTQxM0JBQTVBRDAw
NzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlci5tbSAqLywKLQkJCQlBNTdDMjhBMTEzQkFBNUFE
MDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCAqLywKLQkJ
CQlBNTdDMjhBMjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nv
bm5lY3Rpb24ubW0gKi8sCi0JCQkJQTU1RTIwRkQxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3Bl
Y3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oICovLAotCQkJCUE1NUUyMEZF
MTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNv
bnRyb2xsZXIubW0gKi8sCi0JCQkJQTU3QzI4QTUxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3Bl
Y3RvclhQQ1dyYXBwZXIuaCAqLywKLQkJCQlBNTdDMjhBNjEzQkFBNUFEMDA3MEFDQUIgLyogV2Vi
SW5zcGVjdG9yWFBDV3JhcHBlci5tICovLAotCQkJKTsKLQkJCW5hbWUgPSByZW1vdGU7Ci0JCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQlGNTJDQTZCRDAyREY5RDBGMDE4NjM1Q0Eg
LyogSFRNTCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0x
ODI1LDE1ICsxNzc4LDggQEAKIAkJCQlBMTBDMUQ2NDE4MjAzMDBFMDAzNjg4M0EgLyogV2ViQ2hy
b21lQ2xpZW50SU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDdCRjgxNDBDMkExRDkwMDA4Q0Uw
NkQgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNjY5M0REQzBCRkJBODUy
MDAyMTYwNzIgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTdF
Qjc4RjEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUI4MDQxNzZGMTIxN0E4MzEwMDQ2NkJBRSAvKiBXZWJJbnNwZWN0b3JG
cm9udGVuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E4RkYwRDExMDc1MDI0QTAwQTgwQTA4IC8q
IFdlYkluc3BlY3RvclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MjIwOUY4MTNDNTNF
NzUwMDRCQTdCMSAvKiBXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmggaW4gSGVhZGVycyAq
LywKLQkJCQlBNTIxNEZDNzEzQjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hh
bm5lbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU3QzI4QTkxM0JBQTVBRDAwNzBBQ0FCIC8qIFdl
Ykluc3BlY3RvclNlcnZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU3QzI4QTcxM0JBQTVBRDAw
NzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlBNTVFMjBGRjE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTdDMjhB
QjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTM5ODEwNDIwODI0QkYwMTAwOERGMDM4IC8qIFdlYkphdmFTY3JpcHRUZXh0SW5w
dXRQYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdEMURDQTgxMDY1OTI4QzAwNjhGN0VGIC8q
IFdlYkpTUERGRG9jLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTA4NTA4MjRCRjAxMDA4REYw
MzggLyogV2ViS2V5R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNzYsMTMgKzIyMjIs
NyBAQAogCQkJCTVEN0JGODE1MEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0gaW4g
U291cmNlcyAqLywKIAkJCQkwNjY5M0RERDBCRkJBODUyMDAyMTYwNzIgLyogV2ViSW5zcGVjdG9y
Q2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM3QjBDNjYwRUIyNDY0RDAwQTI4NTAyIC8q
IFdlYkluc3BlY3RvckNsaWVudENGLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1N0VCNzkwMTNC
OTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUI4MDQxNzcwMTIxN0E4MzEwMDQ2NkJBRSAvKiBXZWJJbnNwZWN0b3JGcm9udGVu
ZC5tbSBpbiBTb3VyY2VzICovLAotCQkJCUE1MjE0RkM4MTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJ
bnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTU3QzI4QUExM0JB
QTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlci5tbSBpbiBTb3VyY2VzICovLAotCQkJ
CUE1N0MyOEE4MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAotCQkJCUE1NUUyMTAwMTRENzI2NEMwMDMxNTQ5RSAv
KiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gaW4gU291
cmNlcyAqLywKLQkJCQlBNTdDMjhBQzEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBD
V3JhcHBlci5tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwQzFEMTkxODIwMkY5QzAwMzY4ODNBIC8q
IFdlYkRlZmF1bHRGb3JtRGVsZWdhdGUubSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMEU0MDgy
NEJGMDEwMDhERjAzOCAvKiBXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwubSBpbiBTb3VyY2Vz
ICovLAogCQkJCUExMEMxRDhCMTgyMDMwNUUwMDM2ODgzQSAvKiBXZWJQREZWaWV3SU9TLm1tIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCmluZGV4IDU1MmU3NmIuLjU0YWFjYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2YvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJ
bnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDoKKyAgICAgICAgKFdlYkluc3Bl
Y3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKwogMjAxMy0xMC0yNSAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFVwc3RyZWFtIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKSBhbmQgZW5hYmxlIG9uIGlPUyBhbmQgTWFjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0Yu
Y3BwCmluZGV4IGNhMjJmZGUuLjEyMGUxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2Yv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC05MSwxMiAr
OTEsMTAgQEAgc3RhdGljIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIHNldHRpbmcpCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGNyZWF0ZUtl
eUZvclByZWZlcmVuY2VzKGtleSkuZ2V0KCksIHNldHRpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwogfQogCi0jaWYgIUVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9G
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJuIGRvRGlzcGF0Y2hN
ZXNzYWdlT25Gcm9udGVuZFBhZ2UobV9mcm9udGVuZFBhZ2UsIG1lc3NhZ2UpOwogfQotI2VuZGlm
CiAKIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCgpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2lvcy9DaGFuZ2VMb2cKaW5kZXggYWI0MzYzNS4uYTYzYmU2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9y
IGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGll
bnQ6OldlYkluc3BlY3RvckNsaWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Omlu
c3BlY3RvckRlc3Ryb3llZCk6CisKIDIwMTMtMTEtMTggIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTk0
NTUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnRJT1MubW0KaW5kZXggNWFjYzJlZS4uY2E3NWQxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dElPUy5tbQpAQCAtNDIsMTEgKzQyLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVh
ZC5oPgogI2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KIAotI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCIKLSNpbXBvcnQg
IldlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmll
dyAqd2ViVmlldykKQEAgLTU0LDIzICs0OSwxMSBAQCBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYklu
c3BlY3RvckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQogICAgICwgbV9oaWdobGlnaHRlcihBZG9w
dE5TLCBbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3
OndlYlZpZXddKQogICAgICwgbV9mcm9udGVuZFBhZ2UoMCkKICAgICAsIG1fZnJvbnRlbmRDbGll
bnQoMCkKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAsIG1fcmVtb3RlQ2hhbm5l
bCgwKQotICAgICwgbV9wYWdlSWQoMCkKLSNlbmRpZgogewotI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQotICAgIFtbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnld
IHJlZ2lzdGVyQ2xpZW50OnRoaXNdOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xp
ZW50OjppbnNwZWN0b3JEZXN0cm95ZWQoKQogewotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotICAgIFtbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIHVucmVn
aXN0ZXJDbGllbnQ6dGhpc107Ci0gICAgdGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKHRydWUpOwot
I2VuZGlmCi0KICAgICBkZWxldGUgdGhpczsKIH0KIApAQCAtMTE2LDk0ICs5OSw2IEBAIHZvaWQg
V2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCkK
ICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZp
Y2F0aW9uT25NYWluVGhyZWFkV2l0aE5hbWU6V2ViSW5zcGVjdG9yRGlkU3RvcFNlYXJjaGluZ0Zv
ck5vZGUgb2JqZWN0Omluc3BlY3Rvcl07CiB9CiAKLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1h
cmsgUmVtb3RlIFdlYiBJbnNwZWN0b3IgSW1wbGVtZW50YXRpb24KLQotI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgaWYgKG1fcmVtb3RlQ2hhbm5lbCkg
ewotICAgICAgICBbbV9yZW1vdGVDaGFubmVsIHNlbmRNZXNzYWdlVG9Gcm9udGVuZDptZXNzYWdl
XTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLy8gaU9TIGRvZXMgbm90IGhh
dmUgYSBsb2NhbCBpbnNwZWN0b3IuIFRoZXJlIHNob3VsZCBiZSBubyB3YXkgdG8gcmVhY2ggdGhp
cy4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotCi0g
ICAgcmV0dXJuIGRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2UobV9mcm9udGVuZFBhZ2Us
IG1lc3NhZ2UpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Jh
Y2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIEFTU0VSVChtX3JlbW90ZUNoYW5u
ZWwpOwotCi0gICAgUGFnZSogcGFnZSA9IGNvcmUobV93ZWJWaWV3KTsKLSAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsK
LX0KLQotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNldHVwUmVtb3RlQ29ubmVjdGlvbihXZWJJ
bnNwZWN0b3JSZW1vdGVDaGFubmVsICpyZW1vdGVDaGFubmVsKQotewotICAgIC8vIFRoZXJlIGlz
IGFscmVhZHkgYSBsb2NhbCBzZXNzaW9uLCBkbyBub3QgYWxsb3cgYSByZW1vdGUgc2Vzc2lvbi4K
LSAgICBpZiAoaGFzTG9jYWxTZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IC8vIFRoZXJlIGlzIGFscmVhZHkgYSByZW1vdGUgc2Vzc2lvbiwgZG8gbm90IGFsbG93IGEgbmV3
IHJlbW90ZSBzZXNzaW9uLgotICAgIGlmIChtX3JlbW90ZUNoYW5uZWwpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIG1fcmVtb3RlQ2hhbm5lbCA9IHJlbW90ZUNoYW5uZWw7Ci0KLSAgICBQ
YWdlKiBwYWdlID0gY29yZShtX3dlYlZpZXcpOwotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+Y29ubmVjdEZyb250ZW5kKHRoaXMpOwotCi0gICAgLy8gRm9yY2UgZGV2ZWxvcGVyIGV4
dHJhcyB0byBiZSBlbmFibGVkIGluIFdlYkNvcmUgd2hlbiBhIHJlbW90ZSBjb25uZWN0aW9uIHN0
YXJ0cy4KLSAgICBpZiAocGFnZS0+c2V0dGluZ3MoKSkKLSAgICAgICAgcGFnZS0+c2V0dGluZ3Mo
KS0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKLQotICAgIHJldHVybiB0cnVlOwot
fQotCi12b2lkIFdlYkluc3BlY3RvckNsaWVudDo6dGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKGJv
b2wgZnJvbUxvY2FsU2lkZSkKLXsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWRPckRpc2Fi
bGVkKCkpOwotICAgIGlmICghbV9yZW1vdGVDaGFubmVsKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoZnJvbUxvY2FsU2lkZSkKLSAgICAgICAgW21fcmVtb3RlQ2hhbm5lbCBjbG9zZUZyb21M
b2NhbFNpZGVdOwotCi0gICAgUGFnZSogcGFnZSA9IGNvcmUobV93ZWJWaWV3KTsKLSAgICBpZiAo
cGFnZSkgewotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2Nvbm5lY3RG
cm9udGVuZCgpOwotCi0gICAgICAgIC8vIFJlc3RvcmUgZGV2ZWxvcGVyIGV4dHJhcyBzZXR0aW5n
IGluIFdlYkNvcmUuCi0gICAgICAgIGlmIChwYWdlICYmIHBhZ2UtPnNldHRpbmdzKCkpCi0gICAg
ICAgICAgICBwYWdlLT5zZXR0aW5ncygpLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKFtbbV93
ZWJWaWV3IHByZWZlcmVuY2VzXSBkZXZlbG9wZXJFeHRyYXNFbmFibGVkXSk7Ci0gICAgfQotCi0g
ICAgaWYgKGZyb21Mb2NhbFNpZGUpCi0gICAgICAgIFttX3JlbW90ZUNoYW5uZWwgcmVsZWFzZV07
Ci0KLSAgICBtX3JlbW90ZUNoYW5uZWwgPSAwOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVu
dDo6aGFzTG9jYWxTZXNzaW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2Ug
IT0gMDsKLX0KLQotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNhbkJlUmVtb3RlbHlJbnNwZWN0
ZWQoKSBjb25zdAotewotICAgIHJldHVybiBbbV93ZWJWaWV3IGNhbkJlUmVtb3RlbHlJbnNwZWN0
ZWRdOwotfQotCi1XZWJWaWV3ICpXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RlZFdlYlZpZXco
KQotewotICAgIHJldHVybiBtX3dlYlZpZXc7Ci19Ci0jZW5kaWYKLQogCiAjcHJhZ21hIG1hcmsg
LQogI3ByYWdtYSBtYXJrIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50IEltcGxlbWVudGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKaW5kZXggZmM3ZDA2ZC4uNWNiODI4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDY0IEBACisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9y
IGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAg
ICAgICAgUmVtb3ZlIHRoZSBvbGQgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpIGNvbm5lY3Rpb24g
bWFuYWdlbWVudCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRp
dGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCk6CisgICAgICAgICogV2ViSW5zcGVjdG9y
L3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW06IFJlbW92
ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmlu
aXRpb25zLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNw
ZWN0b3JSZW1vdGVDaGFubmVsLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3Jl
bW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFdl
Ykluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyLmg6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIubW06IFJlbW92ZWQuCisg
ICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24ubW06IFJlbW92ZWQuCisgICAgICAgICogV2Vi
SW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRy
b2xsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbTogUmVtb3ZlZC4KKyAgICAg
ICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIu
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXQuZXhwOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJh
bWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfZW5hYmxlUmVtb3RlSW5z
cGVjdG9yXSk6CisgICAgICAgICgrW1dlYlZpZXcgX2Rpc2FibGVSZW1vdGVJbnNwZWN0b3JdKToK
KyAgICAgICAgKCtbV2ViVmlldyBfZGlzYWJsZUF1dG9TdGFydFJlbW90ZUluc3BlY3Rvcl0pOgor
ICAgICAgICAoK1tXZWJWaWV3IF9pc1JlbW90ZUluc3BlY3RvckVuYWJsZWRdKToKKyAgICAgICAg
KCtbV2ViVmlldyBfaGFzUmVtb3RlSW5zcGVjdG9yU2Vzc2lvbl0pOgorICAgICAgICAoLVtXZWJW
aWV3IGFsbG93c1JlbW90ZUluc3BlY3Rpb25dKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRBbGxv
d3NSZW1vdGVJbnNwZWN0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEluZGljYXRpbmdG
b3JSZW1vdGVJbnNwZWN0b3I6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0SG9zdEFwcGxpY2F0
aW9uQnVuZGxlSWQ6bmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfZGlkQ29tbWl0TG9hZEZv
ckZyYW1lOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEuaDoKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6
CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGRlYWxsb2NdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoK
KworMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29u
bmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYxMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjppbmRpY2F0ZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6OmhpZGVJbmRpY2F0ZSk6CisgICAgICAgIEhvb2sgdXAgV2ViVmll
dyBpbmRpY2F0aW9uIHRocm91Z2ggdGhpcyBuZXcgcGF0aC4KKwogMjAxMy0xMS0yOCAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGZlYXR1cmU6IENT
UyB2YXJpYWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggMTg3NWFjMC4uNmU3OGExYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KQEAgLTEzOCwxMCArMTM4LDYgQEAKICNpbXBvcnQgIldlYkhvc3RlZE5ldHNj
YXBlUGx1Z2luVmlldy5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
LSNpbXBvcnQgIldlYkluc3BlY3RvclNlcnZlci5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIApAQCAtNjIxLDEyICs2MTcs
NiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aQogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRp
ZFJlY2VpdmVUaXRsZUZvckZyYW1lRnVuYykKICAgICAgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rp
b24gb2YgdGl0bGUuCiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlv
bnMtPmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZp
ZXc6ZGlkUmVjZWl2ZVRpdGxlOmZvckZyYW1lOiksIChOU1N0cmluZyAqKXRpdGxlLnN0cmluZygp
LCBtX3dlYkZyYW1lLmdldCgpKTsKLQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAg
IEJPT0wgaXNNYWluRnJhbWUgPSBbd2ViVmlldyBtYWluRnJhbWVdID09IG1fd2ViRnJhbWUuZ2V0
KCk7Ci0gICAgaWYgKGlzTWFpbkZyYW1lKQotICAgICAgICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5z
cGVjdG9yU2VydmVyXSBwdXNoTGlzdGluZ107Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKaW5kZXggNTUxYWY3Zi4uMjJmM2MwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTczLDYgKzczLDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpIE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2b2lk
IGluZGljYXRlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGhpZGVJbmRpY2F0aW9uKCkg
T1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29s
KSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29u
c3QgU3RyaW5nJikgT1ZFUlJJREU7CkBAIC04NSwyMiArODgsNiBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHJlbGVhc2VGcm9udGVuZCgpOwogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0g
ICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKTsKLQotICAgIGJvb2wg
c2V0dXBSZW1vdGVDb25uZWN0aW9uKFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKnJlbW90ZUNo
YW5uZWwpOwotICAgIHZvaWQgdGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKGJvb2wgZnJvbUxvY2Fs
U2lkZSk7Ci0KLSAgICB1bnNpZ25lZCBwYWdlSWQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJZDsg
fQotICAgIHZvaWQgc2V0UGFnZUlkKHVuc2lnbmVkIHBhZ2VJZCkgeyBtX3BhZ2VJZCA9IHBhZ2VJ
ZDsgfQotCi0gICAgYm9vbCBoYXNMb2NhbFNlc3Npb24oKSBjb25zdDsKLQotICAgIGJvb2wgY2Fu
QmVSZW1vdGVseUluc3BlY3RlZCgpIGNvbnN0OwotCi0gICAgV2ViVmlldyAqaW5zcGVjdGVkV2Vi
VmlldygpOwotI2VuZGlmCi0KIHByaXZhdGU6CiAgICAgUGFzc093blB0cjxXZWJDb3JlOjpJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4gY3JlYXRlRnJvbnRlbmRTZXR0aW5n
cygpOwogCkBAIC0xMDgsMTEgKzk1LDYgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8V2ViTm9k
ZUhpZ2hsaWdodGVyPiBtX2hpZ2hsaWdodGVyOwogICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRl
bmRQYWdlOwogICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50
OwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgV2ViSW5zcGVjdG9yUmVtb3Rl
Q2hhbm5lbCAqbV9yZW1vdGVDaGFubmVsOwotICAgIHVuc2lnbmVkIG1fcGFnZUlkOwotI2VuZGlm
CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbQppbmRleCBlNDM4YzZkLi5lMjVlYmU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1t
CkBAIC01NSwxMSArNTUsNiBAQAogI2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L0Jhc2U2NC5oPgogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0jaW1w
b3J0ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9y
UmVtb3RlQ2hhbm5lbC5oIgotI2VuZGlmCi0KIFNPRlRfTElOS19TVEFHRURfRlJBTUVXT1JLKFdl
Ykluc3BlY3RvclVJLCBQcml2YXRlRnJhbWV3b3JrcywgQSkKIAogLy8gVGhlIG1hcmdpbiBmcm9t
IHRoZSB0b3AgYW5kIHJpZ2h0IG9mIHRoZSBkb2NrIGJ1dHRvbiAoc2FtZSBhcyB0aGUgZnVsbCBz
Y3JlZW4gYnV0dG9uKS4KQEAgLTEzNSwyMyArMTMwLDExIEBAIFdlYkluc3BlY3RvckNsaWVudDo6
V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgLCBtX2hpZ2hsaWdodGVy
KGFkb3B0TlMoW1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2Vi
Vmlldzp3ZWJWaWV3XSkpCiAgICAgLCBtX2Zyb250ZW5kUGFnZSgwKQogICAgICwgbV9mcm9udGVu
ZENsaWVudCgwKQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9yZW1vdGVD
aGFubmVsKDApCi0gICAgLCBtX3BhZ2VJZCgwKQotI2VuZGlmCiB7Ci0jaWYgRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdp
c3RyeV0gcmVnaXN0ZXJDbGllbnQ6dGhpc107Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiB7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0g
dW5yZWdpc3RlckNsaWVudDp0aGlzXTsKLSAgICB0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24odHJ1
ZSk7Ci0jZW5kaWYKLQogICAgIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKICAgICBkZWxldGUg
dGhpczsKIH0KQEAgLTE5Nyw2ICsxODAsMTYgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omhp
ZGVIaWdobGlnaHQoKQogICAgIFttX2hpZ2hsaWdodGVyLmdldCgpIGhpZGVIaWdobGlnaHRdOwog
fQogCit2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5kaWNhdGUoKQoreworICAgIFttX3dlYlZp
ZXcgc2V0SW5kaWNhdGluZ0ZvclJlbW90ZUluc3BlY3RvcjpZRVNdOworfQorCit2b2lkIFdlYklu
c3BlY3RvckNsaWVudDo6aGlkZUluZGljYXRpb24oKQoreworICAgIFttX3dlYlZpZXcgc2V0SW5k
aWNhdGluZ0ZvclJlbW90ZUluc3BlY3RvcjpOT107Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yQ2xp
ZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCkKIHsKICAgICBXZWJJbnNw
ZWN0b3IgKmluc3BlY3RvciA9IFttX3dlYlZpZXcgaW5zcGVjdG9yXTsKQEAgLTIxNSw3OCArMjA4
LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnJlbGVhc2VGcm9udGVuZCgpCiAgICAgbV9m
cm9udGVuZFBhZ2UgPSAwOwogfQogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi1ib29s
IFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKLXsKLSAgICBpZiAobV9yZW1vdGVDaGFubmVsKSB7Ci0gICAgICAgIFttX3JlbW90
ZUNoYW5uZWwgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOm1lc3NhZ2VdOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFn
ZShtX2Zyb250ZW5kUGFnZSwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50
OjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgQVNT
RVJUKG1fcmVtb3RlQ2hhbm5lbCk7Ci0KLSAgICBQYWdlKiBwYWdlID0gY29yZShtX3dlYlZpZXcp
OwotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbUZy
b250ZW5kKG1lc3NhZ2UpOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2V0dXBSZW1v
dGVDb25uZWN0aW9uKFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKnJlbW90ZUNoYW5uZWwpCi17
Ci0gICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIGxvY2FsIHNlc3Npb24sIGRvIG5vdCBhbGxvdyBh
IHJlbW90ZSBzZXNzaW9uLgotICAgIGlmIChoYXNMb2NhbFNlc3Npb24oKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIHJlbW90ZSBzZXNzaW9uLCBk
byBub3QgYWxsb3cgYSBuZXcgcmVtb3RlIHNlc3Npb24uCi0gICAgaWYgKG1fcmVtb3RlQ2hhbm5l
bCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQVNTRVJUKFtbbV93ZWJWaWV3IHByZWZl
cmVuY2VzXSBkZXZlbG9wZXJFeHRyYXNFbmFibGVkXSk7Ci0KLSAgICBtX3JlbW90ZUNoYW5uZWwg
PSByZW1vdGVDaGFubmVsOwotCi0gICAgUGFnZSogcGFnZSA9IGNvcmUobV93ZWJWaWV3KTsKLSAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVuZCh0aGlzKTsKLQot
ICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFdlYkluc3BlY3RvckNsaWVudDo6dGVhcmRvd25S
ZW1vdGVDb25uZWN0aW9uKGJvb2wgZnJvbUxvY2FsU2lkZSkKLXsKLSAgICBpZiAoIW1fcmVtb3Rl
Q2hhbm5lbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGZyb21Mb2NhbFNpZGUpCi0gICAg
ICAgIFttX3JlbW90ZUNoYW5uZWwgY2xvc2VGcm9tTG9jYWxTaWRlXTsKLQotICAgIGlmIChQYWdl
KiBwYWdlID0gY29yZShtX3dlYlZpZXcpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPmRpc2Nvbm5lY3RGcm9udGVuZCgpOwotCi0gICAgaWYgKGZyb21Mb2NhbFNpZGUpCi0g
ICAgICAgIFttX3JlbW90ZUNoYW5uZWwgcmVsZWFzZV07Ci0KLSAgICBtX3JlbW90ZUNoYW5uZWwg
PSAwOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6aGFzTG9jYWxTZXNzaW9uKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UgIT0gMDsKLX0KLQotYm9vbCBXZWJJbnNw
ZWN0b3JDbGllbnQ6OmNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQoKSBjb25zdAotewotICAgIHJldHVy
biBbbV93ZWJWaWV3IGNhbkJlUmVtb3RlbHlJbnNwZWN0ZWRdOwotfQotCi1XZWJWaWV3ICpXZWJJ
bnNwZWN0b3JDbGllbnQ6Omluc3BlY3RlZFdlYlZpZXcoKQotewotICAgIHJldHVybiBtX3dlYlZp
ZXc7Ci19Ci0jZW5kaWYKLQogCiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgV2ViSW5zcGVjdG9y
V2luZG93Q29udHJvbGxlciogd2luZG93Q29udHJvbGxlciwgSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciwgUGFnZSogZnJvbnRlbmRQYWdlLCBXVEY6OlBhc3NPd25QdHI8
U2V0dGluZ3M+IHNldHRpbmdzKQogICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChp
bnNwZWN0b3JDb250cm9sbGVyLCAgZnJvbnRlbmRQYWdlLCBzZXR0aW5ncykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yQ2xpZW50
UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYklu
c3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
MDk0OGQ1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1v
dGUvV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMDMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50
UmVnaXN0cnkuaCIKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW1wb3J0ICJX
ZWJWaWV3UHJpdmF0ZS5oIgotCi1AaW1wbGVtZW50YXRpb24gV2ViSW5zcGVjdG9yQ2xpZW50UmVn
aXN0cnkKLQotQHN5bnRoZXNpemUgZGVsZWdhdGUgPSBfZGVsZWdhdGU7Ci0KLSsgKFdlYkluc3Bl
Y3RvckNsaWVudFJlZ2lzdHJ5ICopc2hhcmVkUmVnaXN0cnkKLXsKLSAgICBzdGF0aWMgV2ViSW5z
cGVjdG9yQ2xpZW50UmVnaXN0cnkgKnNoYXJlZFJlZ2lzdHJ5ID0gW1tXZWJJbnNwZWN0b3JDbGll
bnRSZWdpc3RyeSBhbGxvY10gaW5pdF07Ci0gICAgcmV0dXJuIHNoYXJlZFJlZ2lzdHJ5OwotfQot
Ci0tIChpZClpbml0Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfbmV4dEF2YWlsYWJsZVBhZ2VJZCA9IDE7Ci0K
LSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodW5zaWduZWQpX2dldE5leHRBdmFpbGFibGVQYWdl
SWQKLXsKLSAgICAvLyBCb3VuZGFyeSB2YWx1ZXMsIDAgYW5kIFVJTlRfTUFYLCBhcmUgaW52YWxp
ZCBIYXNoTWFwIGtleXMuCi0gICAgdW5zaWduZWQgbmV4dFZhbGlkUGFnZUlkOwotICAgIGRvIHsK
LSAgICAgICAgbmV4dFZhbGlkUGFnZUlkID0gX25leHRBdmFpbGFibGVQYWdlSWQrKzsKLSAgICB9
IHdoaWxlICghbmV4dFZhbGlkUGFnZUlkIHx8IG5leHRWYWxpZFBhZ2VJZCA9PSBVSU5UX01BWCB8
fCBfcGFnZUNsaWVudE1hcC5jb250YWlucyhuZXh0VmFsaWRQYWdlSWQpKTsKLSAgICByZXR1cm4g
bmV4dFZhbGlkUGFnZUlkOwotfQotCi0tICh2b2lkKXJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0
b3JDbGllbnQqKWNsaWVudAotewotICAgIHVuc2lnbmVkIHBhZ2VJZCA9IFtzZWxmIF9nZXROZXh0
QXZhaWxhYmxlUGFnZUlkXTsKLSAgICBfcGFnZUNsaWVudE1hcC5zZXQocGFnZUlkLCBjbGllbnQp
OwotICAgIGNsaWVudC0+c2V0UGFnZUlkKHBhZ2VJZCk7Ci0gICAgW19kZWxlZ2F0ZSBkaWRSZWdp
c3RlckNsaWVudDpjbGllbnRdOwotfQotCi0tICh2b2lkKXVucmVnaXN0ZXJDbGllbnQ6KFdlYklu
c3BlY3RvckNsaWVudCopY2xpZW50Ci17Ci0gICAgdW5zaWduZWQgcGFnZUlkID0gY2xpZW50LT5w
YWdlSWQoKTsKLSAgICBfcGFnZUNsaWVudE1hcC5yZW1vdmUocGFnZUlkKTsKLSAgICBbX2RlbGVn
YXRlIGRpZFVucmVnaXN0ZXJDbGllbnQ6Y2xpZW50XTsKLX0KLQotLSAoV2ViSW5zcGVjdG9yQ2xp
ZW50KiljbGllbnRGb3JQYWdlSWQ6KHVuc2lnbmVkKXBhZ2VJZAotewotICAgIHJldHVybiBfcGFn
ZUNsaWVudE1hcC5nZXQocGFnZUlkKTsKLX0KLQotLSAoTlNEaWN0aW9uYXJ5ICopaW5zcGVjdGFi
bGVXZWJWaWV3cwotewotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbTlNN
dXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aENhcGFjaXR5Ol9wYWdlQ2xpZW50TWFwLnNp
emUoKV07Ci0KLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBXZWJJbnNwZWN0b3JDbGllbnQqPjo6aXRl
cmF0b3IgZW5kID0gX3BhZ2VDbGllbnRNYXAuZW5kKCk7Ci0gICAgZm9yIChIYXNoTWFwPHVuc2ln
bmVkLCBXZWJJbnNwZWN0b3JDbGllbnQqPjo6aXRlcmF0b3IgaXQgPSBfcGFnZUNsaWVudE1hcC5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgV2ViVmlldyAqd2ViVmlldyA9IGl0
LT52YWx1ZS0+aW5zcGVjdGVkV2ViVmlldygpOwotICAgICAgICBpZiAoIVt3ZWJWaWV3IGNhbkJl
UmVtb3RlbHlJbnNwZWN0ZWRdKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgTlNO
dW1iZXIgKnBhZ2VJZCA9IFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6aXQtPmtleV07
Ci0gICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp3ZWJWaWV3IGZvcktleTpwYWdlSWRdOwot
ICAgIH0KLQotICAgIHJldHVybiBkaWN0aW9uYXJ5OwotfQotCi1AZW5kCi0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0
b3JSZW1vdGVDaGFubmVsLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90
ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjOGZmY2Q2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rv
ci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JS
ZW1vdGVDaGFubmVsLmgiCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVudC5oIgotI2ltcG9y
dCAiV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclNl
cnZlcldlYlZpZXdDb25uZWN0aW9uLmgiCi0jaW1wb3J0ICJXZWJLaXRMb2dnaW5nLmgiCi0jaW1w
b3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLUBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yUmVtb3Rl
Q2hhbm5lbCAoKQotLSAoaWQpaW5pdFdpdGhSZW1vdGU6KFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uICopcmVtb3RlIGxvY2FsOihXZWJJbnNwZWN0b3JDbGllbnQqKWxvY2FsOwot
QGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbAotCi0rIChX
ZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICopY3JlYXRlQ2hhbm5lbEZvclBhZ2VJZDoodW5zaWdu
ZWQpcGFnZUlkIGNvbm5lY3Rpb246KFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
ICopY29ubmVjdGlvbgotewotICAgIC8vIEdldCB0aGUgSW5zcGVjdG9yIGNsaWVudC4gSXRzIHBv
c3NpYmxlIHRoZSBwYWdlIGNsb3NlZCBiZWZvcmUgdGhlIHJlbW90ZSBjbGllbnQgcmVxdWVzdGVk
IGl0LgotICAgIFdlYkluc3BlY3RvckNsaWVudCAqaW5zcGVjdG9yQ2xpZW50ID0gW1tXZWJJbnNw
ZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gY2xpZW50Rm9yUGFnZUlkOnBhZ2VJ
ZF07Ci0gICAgaWYgKCFpbnNwZWN0b3JDbGllbnQpIHsKLSAgICAgICAgTE9HKFJlbW90ZUluc3Bl
Y3RvciwgIldlYkluc3BlY3RvclJlbW90ZUNoYW5uZWw6IFBhZ2UgcmVxdWVzdGVkIG5vIGxvbmdl
ciBleGlzdHM6ICgldSkiLCBwYWdlSWQpOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQot
ICAgIC8vIFRoZSBXZWJWaWV3IGRvZXMgbm90IGFsbG93IHJlbW90ZSBpbnNwZWN0aW9uLgotICAg
IGlmICghaW5zcGVjdG9yQ2xpZW50LT5jYW5CZVJlbW90ZWx5SW5zcGVjdGVkKCkpIHsKLSAgICAg
ICAgTE9HKFJlbW90ZUluc3BlY3RvciwgIldlYkluc3BlY3RvclJlbW90ZUNoYW5uZWw6IFdlYlZp
ZXcgZm9yIFBhZ2UgKCV1KSBkb2VzIG5vdCBhbGxvdyByZW1vdGUgaW5zcGVjdGlvbi4iLCBwYWdl
SWQpOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIC8vIFRoZSBjaGFubmVsIGlz
IHJlbGVhc2VkIGJ5IHdoaWNoZXZlciBzaWRlIGNsb3NlcyB0aGUgY2hhbm5lbC4gVGhlIGNoYW5u
ZWwgY291bGQgYmUgY2xvc2VkCi0gICAgLy8gcmVtb3RlbHkgYnkgdGhlIHNvY2tldCBjbG9zaW5n
ICh0aGUgdXNlciBuYXZpZ2F0aW5nIGF3YXkgZnJvbSB0aGUgcmVtb3RlIGluc3BlY3RvciBwYWdl
KS4KLSAgICAvLyBJdCBjb3VsZCBiZSBjbG9zZWQgbG9jYWxseSBieSB0aGUgUGFnZSBiZWluZyBk
ZXN0cm95ZWQsIGxpa2UgdGhlIGJyb3dzZXIgb3IgdGFiIGJlaW5nIGNsb3NlZC4KLSAgICAvLyBT
ZXR0aW5nIHVwIHRoZSBjb25uZWN0aW9uIGNhbiBmYWlsIGlmIHRoZXJlIGlzIGFscmVhZHkgYW4g
ZXhpc3Rpbmcgc2Vzc2lvbi4KLSAgICBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICpjaGFubmVs
ID0gW1tXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsIGFsbG9jXSBpbml0V2l0aFJlbW90ZTpjb25u
ZWN0aW9uIGxvY2FsOmluc3BlY3RvckNsaWVudF07Ci0gICAgaWYgKCFpbnNwZWN0b3JDbGllbnQt
PnNldHVwUmVtb3RlQ29ubmVjdGlvbihjaGFubmVsKSkgewotICAgICAgICBMT0coUmVtb3RlSW5z
cGVjdG9yLCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbDogU2V0dGluZyB1cCBhIHJlbW90ZSBz
ZXNzaW9uIGZhaWxlZC4gUHJvYmFibHkgYWxyZWFkeSBhIGxvY2FsIHNlc3Npb24uIik7Ci0gICAg
ICAgIFtjaGFubmVsIHJlbGVhc2VdOwotICAgICAgICBjaGFubmVsID0gbmlsOwotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIH0KLQotICAgIHJldHVybiBjaGFubmVsOwotfQotCi0tIChpZClpbml0
V2l0aFJlbW90ZTooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKilyZW1vdGUg
bG9jYWw6KFdlYkluc3BlY3RvckNsaWVudCopbG9jYWwKLXsKLSAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9yZW1vdGUg
PSByZW1vdGU7Ci0gICAgX2xvY2FsID0gbG9jYWw7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQot
LSAodm9pZCljbG9zZUZyb21Mb2NhbFNpZGUKLXsKLSAgICAvLyBMb2NhbCBzaWRlIHdpbGwgcmVs
ZWFzZS4gTWFrZSBzdXJlIHRoZSByZW1vdGUgc2lkZSBjbGVhcnMgaXRzIHJlZmVyZW5jZSB0byB0
aGUgY2hhbm5lbC4KLSAgICBbX3JlbW90ZSBjbGVhckNoYW5uZWxdOwotfQotCi0tICh2b2lkKWNs
b3NlRnJvbVJlbW90ZVNpZGUKLXsKLSAgICAvLyBSZW1vdGUgc2lkZSB3aWxsIHJlbGVhc2UuIE1h
a2Ugc3VyZSB0aGUgbG9jYWwgc2lkZSBjbGVhcnMgaXRzIHJlZmVyZW5jZSB0byB0aGUgY2hhbm5l
bC4KLSAgICBfbG9jYWwtPnRlYXJkb3duUmVtb3RlQ29ubmVjdGlvbihmYWxzZSk7Ci19Ci0KLS0g
KHZvaWQpc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2UKLXsKLSAgICBb
X3JlbW90ZSBzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6bWVzc2FnZV07Ci19Ci0KLS0gKHZvaWQpc2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZQotewotICAgIF9sb2NhbC0+c2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSk7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNl
cnZlci5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0
b3JTZXJ2ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y2NzkwZi4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3Rv
clNlcnZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVu
dFJlZ2lzdHJ5LmgiCi0KLUBjbGFzcyBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlv
bkNvbnRyb2xsZXI7Ci1AY2xhc3MgV2ViSW5zcGVjdG9yWFBDV3JhcHBlcjsKLQotQGludGVyZmFj
ZSBXZWJJbnNwZWN0b3JTZXJ2ZXIgOiBOU09iamVjdCA8V2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0
cnlEZWxlZ2F0ZT4gewotQHByaXZhdGUKLSAgICBCT09MIF9pc0VuYWJsZWQ7Ci0gICAgQk9PTCBf
aGFzQWN0aXZlRGVidWdTZXNzaW9uOwotICAgIGludCBfbm90aWZ5VG9rZW47Ci0gICAgV2ViSW5z
cGVjdG9yWFBDV3JhcHBlciAqX3hwY0Nvbm5lY3Rpb247Ci0gICAgV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyICpfY29ubmVjdGlvbkNvbnRyb2xsZXI7Ci19Ci0K
LS0gKHZvaWQpc3RhcnQ7Ci0tICh2b2lkKXN0b3A7Ci0tIChCT09MKWlzRW5hYmxlZDsKLS0gKHZv
aWQpcHVzaExpc3Rpbmc7Ci0KLS0gKEJPT0wpaGFzQWN0aXZlRGVidWdTZXNzaW9uOwotLSAodm9p
ZClzZXRIYXNBY3RpdmVEZWJ1Z1Nlc3Npb246KEJPT0wpaGFzU2Vzc2lvbjsKLQotLSAoV2ViSW5z
cGVjdG9yWFBDV3JhcHBlciAqKXhwY0Nvbm5lY3Rpb247Ci0KLUBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2
ZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjOWE3M2EuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2
ZXIubW0KKysrIC9kZXYvbnVsbApAQCAtMSwyMDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
LQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCi0KLSNpbXBvcnQgIldlYkluc3BlY3Rv
ckNsaWVudC5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIgotI2lt
cG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmgiCi0j
aW1wb3J0ICJXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmgiCi0jaW1wb3J0ICJXZWJWaWV3UHJpdmF0
ZS5oIgotI2ltcG9ydCA8bm90aWZ5Lmg+Ci0jaW1wb3J0IDx4cGMveHBjLmg+Ci0KLQotI3ByYWdt
YSBtYXJrIC0KLSNwcmFnbWEgbWFyayBQcml2YXRlIENsYXNzIERldGFpbHMKLQotQGludGVyZmFj
ZSBXZWJJbnNwZWN0b3JTZXJ2ZXIgKCkgPFdlYkluc3BlY3RvclhQQ1dyYXBwZXJEZWxlZ2F0ZT4K
LS0gKHZvaWQpc2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQ7Ci0tICh2b2lkKXhwY0Nvbm5lY3Rp
b246KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uIHJlY2VpdmVkTWVzc2FnZToo
TlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87
Ci0tICh2b2lkKXhwY0Nvbm5lY3Rpb25GYWlsZWQ6KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKilj
b25uZWN0aW9uOwotQGVuZAotCi0KLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgU2VydmVy
IEltcGxlbWVudGF0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0b3JTZXJ2ZXIKLQot
LSAoaWQpaW5pdAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQot
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX2Nvbm5lY3Rpb25Db250cm9sbGVyID0gW1tXZWJJ
bnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRo
U2VydmVyOnNlbGZdOwotCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRS
ZWdpc3RyeV0gc2V0RGVsZWdhdGU6c2VsZl07Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAo
dm9pZClkZWFsbG9jCi17Ci0gICAgLy8gU2luZ2xldG9uIGlzIG5vdCBleHBlY3RlZCB0byBiZSBy
ZWxlYXNlZC4KLQotICAgIFtzZWxmIHN0b3BdOwotCi0gICAgQVNTRVJUKCFfeHBjQ29ubmVjdGlv
bik7Ci0gICAgW19jb25uZWN0aW9uQ29udHJvbGxlciByZWxlYXNlXTsKLQotICAgIFtbV2ViSW5z
cGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIHNldERlbGVnYXRlOm5pbF07Ci0K
LSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpc3RhcnQKLXsKLSAgICBpZiAoX2lz
RW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2lzRW5hYmxlZCA9IFlFUzsKLQotICAg
IG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaChXSVJTZXJ2aWNlQXZhaWxhYmxlTm90aWZpY2F0aW9u
LCAmX25vdGlmeVRva2VuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKGludCB0b2tlbikg
ewotICAgICAgICBbc2VsZiBzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZF07Ci0gICAgfSk7Ci0K
LSAgICBub3RpZnlfcG9zdChXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24p
OwotfQotCi0tICh2b2lkKXN0b3AKLXsKLSAgICBpZiAoIV9pc0VuYWJsZWQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIF9pc0VuYWJsZWQgPSBOTzsKLQotICAgIFtfY29ubmVjdGlvbkNvbnRyb2xs
ZXIgY2xvc2VBbGxDb25uZWN0aW9uc107Ci0KLSAgICBpZiAoX3hwY0Nvbm5lY3Rpb24pIHsKLSAg
ICAgICAgW194cGNDb25uZWN0aW9uIGNsb3NlXTsKLSAgICAgICAgX3hwY0Nvbm5lY3Rpb24uZGVs
ZWdhdGUgPSBuaWw7Ci0gICAgICAgIFtfeHBjQ29ubmVjdGlvbiByZWxlYXNlXTsKLSAgICAgICAg
X3hwY0Nvbm5lY3Rpb24gPSBuaWw7Ci0gICAgfQotCi0gICAgbm90aWZ5X2NhbmNlbChfbm90aWZ5
VG9rZW4pOwotfQotCi0tIChCT09MKWlzRW5hYmxlZAotewotICAgIHJldHVybiBfaXNFbmFibGVk
OwotfQotCi0tIChXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopeHBjQ29ubmVjdGlvbgotewotICAg
IHJldHVybiBfeHBjQ29ubmVjdGlvbjsKLX0KLQotLSAodm9pZClzZXR1cFhQQ0Nvbm5lY3Rpb25J
Zk5lZWRlZAotewotICAgIGlmIChfeHBjQ29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uID0geHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21h
Y2hfc2VydmljZShXSVJYUENNYWNoUG9ydE5hbWUsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IDApOwotICAgIGlmIChjb25uZWN0aW9uKSB7Ci0gICAgICAgIF94cGNDb25uZWN0aW9uID0gW1tX
ZWJJbnNwZWN0b3JYUENXcmFwcGVyIGFsbG9jXSBpbml0V2l0aENvbm5lY3Rpb246Y29ubmVjdGlv
bl07Ci0gICAgICAgIF94cGNDb25uZWN0aW9uLmRlbGVnYXRlID0gc2VsZjsKLSAgICAgICAgW194
cGNDb25uZWN0aW9uIHNlbmRNZXNzYWdlOkAic3luIiB1c2VySW5mbzpuaWxdOwotICAgICAgICB4
cGNfcmVsZWFzZShjb25uZWN0aW9uKTsKLSAgICB9Ci19Ci0KLS0gKHZvaWQpcHVzaExpc3RpbmcK
LXsKLSAgICBpZiAoIV9pc0VuYWJsZWQgfHwgIV94cGNDb25uZWN0aW9uKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBbX2Nvbm5lY3Rpb25Db250cm9sbGVyIHB1c2hMaXN0aW5nXTsKLX0KLQotLSAo
Qk9PTCloYXNBY3RpdmVEZWJ1Z1Nlc3Npb24KLXsKLSAgICByZXR1cm4gX2hhc0FjdGl2ZURlYnVn
U2Vzc2lvbjsKLX0KLQotLSAodm9pZClzZXRIYXNBY3RpdmVEZWJ1Z1Nlc3Npb246KEJPT0wpaGFz
U2Vzc2lvbgotewotICAgIGlmIChfaGFzQWN0aXZlRGVidWdTZXNzaW9uID09IGhhc1Nlc3Npb24p
Ci0gICAgICAgIHJldHVybjsKLQotICAgIF9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24gPSBoYXNTZXNz
aW9uOwotCi0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90
aWZpY2F0aW9uTmFtZTpfV2ViVmlld1JlbW90ZUluc3BlY3Rvckhhc1Nlc3Npb25DaGFuZ2VkTm90
aWZpY2F0aW9uIG9iamVjdDpuaWxdOwotfQotCi0KLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1h
cmsgV2ViSW5zcGVjdG9yWFBDV3JhcHBlckRlbGVnYXRlIEltcGxlbWVudGF0aW9uCi0KLS0gKHZv
aWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKXhwY0Nvbm5lY3Rpb24g
cmVjZWl2ZWRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rp
b25hcnkgKil1c2VySW5mbwotewotICAgIEFTU0VSVCh4cGNDb25uZWN0aW9uID09IF94cGNDb25u
ZWN0aW9uKTsKLQotICAgIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlBlcm1p
c3Npb25EZW5pZWRdKQotICAgICAgICBbc2VsZiBzdG9wXTsKLSAgICBlbHNlCi0gICAgICAgIFtf
Y29ubmVjdGlvbkNvbnRyb2xsZXIgcmVjZWl2ZWRNZXNzYWdlOm1lc3NhZ2VOYW1lIHVzZXJJbmZv
OnVzZXJJbmZvXTsKLX0KLQotLSAodm9pZCl4cGNDb25uZWN0aW9uRmFpbGVkOihXZWJJbnNwZWN0
b3JYUENXcmFwcGVyICopY29ubmVjdGlvbgotewotICAgIFtfY29ubmVjdGlvbkNvbnRyb2xsZXIg
Y2xvc2VBbGxDb25uZWN0aW9uc107Ci0KLSAgICBpZiAoX3hwY0Nvbm5lY3Rpb24pIHsKLSAgICAg
ICAgX3hwY0Nvbm5lY3Rpb24uZGVsZWdhdGUgPSBuaWw7Ci0gICAgICAgIFtfeHBjQ29ubmVjdGlv
biByZWxlYXNlXTsKLSAgICAgICAgX3hwY0Nvbm5lY3Rpb24gPSBuaWw7Ci0gICAgfQotfQotCi0K
LSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnlE
ZWxlZ2F0ZSBpbXBsZW1lbnRhdGlvbgotCi0tICh2b2lkKWRpZFJlZ2lzdGVyQ2xpZW50OihXZWJJ
bnNwZWN0b3JDbGllbnQqKWNsaWVudAotewotICAgIC8vIFdoZW4gYSBXZWJWaWV3IGlzIHJlZ2lz
dGVyZWQgaXQgaGFzIG5vIGNvbnRlbnQuIEJ1dCBzb21lIFdlYlZpZXdzCi0gICAgLy8gbmV2ZXIg
bG9hZCBjb250ZW50IGZyb20gYSBVUkwsIHN1Y2ggYXMgVUlUZXh0RmllbGRzIG9uIGlPUy4KLSAg
ICBbc2VsZiBwdXNoTGlzdGluZ107Ci19Ci0KLS0gKHZvaWQpZGlkVW5yZWdpc3RlckNsaWVudDoo
V2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQKLXsKLSAgICBbc2VsZiBwdXNoTGlzdGluZ107Ci19
Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNw
ZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJW
aWV3Q29ubmVjdGlvbi5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFhZWQ4MS4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTM1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvclNlcnZl
cldlYlZpZXdDb25uZWN0aW9uLmgiCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVudC5oIgot
I2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIgotI2ltcG9ydCAiV2ViSW5z
cGVjdG9yUmVtb3RlQ2hhbm5lbC5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCi0j
aW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCIK
LSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCIKLSNpbXBvcnQgIldlYktpdExvZ2dp
bmcuaCIKLSNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotQGltcGxlbWVudGF0aW9uIFdl
Ykluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uCi0KLS0gKGlkKWluaXRXaXRoQ29udHJv
bGxlcjooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyICopY29u
dHJvbGxlciBjb25uZWN0aW9uSWRlbnRpZmllcjooTlNTdHJpbmcgKiljb25uZWN0aW9uSWRlbnRp
ZmllciBkZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0aW5hdGlvbiBpZGVudGlmaWVyOihOU051
bWJlciAqKWlkZW50aWZpZXIKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICgh
c2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9jb250cm9sbGVyID0gY29udHJvbGxl
cjsKLSAgICBfY29ubmVjdGlvbklkZW50aWZpZXIgPSBbY29ubmVjdGlvbklkZW50aWZpZXIgY29w
eV07Ci0gICAgX2Rlc3RpbmF0aW9uID0gW2Rlc3RpbmF0aW9uIGNvcHldOwotICAgIF9pZGVudGlm
aWVyID0gW2lkZW50aWZpZXIgY29weV07Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoQk9P
TClzZXR1cENoYW5uZWwKLXsKLSAgICBBU1NFUlQoIV9jaGFubmVsKTsKLSAgICB1bnNpZ25lZCBw
YWdlSWQgPSBbX2lkZW50aWZpZXIgdW5zaWduZWRJbnRWYWx1ZV07Ci0gICAgX2NoYW5uZWwgPSBb
V2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCBjcmVhdGVDaGFubmVsRm9yUGFnZUlkOnBhZ2VJZCBj
b25uZWN0aW9uOnNlbGZdOwotICAgIHJldHVybiBfY2hhbm5lbCAhPSBuaWw7Ci19Ci0KLS0gKHZv
aWQpZGVhbGxvYwotewotICAgIEFTU0VSVCghX2NoYW5uZWwpOwotICAgIFtfY29ubmVjdGlvbklk
ZW50aWZpZXIgcmVsZWFzZV07Ci0gICAgW19kZXN0aW5hdGlvbiByZWxlYXNlXTsKLSAgICBbX2lk
ZW50aWZpZXIgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tIChOU1N0cmlu
ZyAqKWNvbm5lY3Rpb25JZGVudGlmaWVyCi17Ci0gICAgcmV0dXJuIFtbX2Nvbm5lY3Rpb25JZGVu
dGlmaWVyIGNvcHldIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoTlNOdW1iZXIgKilpZGVudGlmaWVy
Ci17Ci0gICAgcmV0dXJuIFtbX2lkZW50aWZpZXIgY29weV0gYXV0b3JlbGVhc2VdOwotfQotCi0K
LSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgSW50ZXJhY3Rpb24gd2l0aCB0aGUgY2hhbm5l
bCB0byB0aGUgbG9jYWwgaW5zcGVjdG9yIGJhY2tlbmQKLQotLSAodm9pZCljbGVhckNoYW5uZWwK
LXsKLSAgICBfY2hhbm5lbCA9IG5pbDsKLSAgICBbX2NvbnRyb2xsZXIgY29ubmVjdGlvbkNsb3Np
bmc6c2VsZl07Ci19Ci0KLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAq
KW1lc3NhZ2UKLXsKLSAgICBOU0RhdGEgKmRhdGEgPSBbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgTlNEaWN0aW9uYXJ5ICpvdXRnb2luZyA9IFtO
U0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgZGF0YSwg
V0lSUmF3RGF0YUtleSwKLSAgICAgICAgX2Nvbm5lY3Rpb25JZGVudGlmaWVyLCBXSVJDb25uZWN0
aW9uSWRlbnRpZmllcktleSwKLSAgICAgICAgX2Rlc3RpbmF0aW9uLCBXSVJEZXN0aW5hdGlvbktl
eSwKLSAgICAgICAgbmlsXTsKLQotICAgIFtfY29udHJvbGxlciBzZW5kTWVzc2FnZVRvRnJvbnRl
bmQ6V0lSUmF3RGF0YU1lc3NhZ2UgdXNlckluZm86b3V0Z29pbmddOwotfQotCi0tICh2b2lkKXNl
bmRNZXNzYWdlVG9CYWNrZW5kOihOU1N0cmluZyAqKW1lc3NhZ2UKLXsKLSAgICBBU1NFUlQoX2No
YW5uZWwpOwotICAgIExPRyhSZW1vdGVJbnNwZWN0b3IsICJXZWJJbnNwZWN0b3JTZXJ2ZXJDb25u
ZWN0aW9uOiBSZWNlaXZlZDogfCVzfCIsIFN0cmluZyhtZXNzYWdlKS51dGY4KCkuZGF0YSgpKTsK
LQotICAgIFtfY2hhbm5lbCBzZW5kTWVzc2FnZVRvQmFja2VuZDptZXNzYWdlXTsKLX0KLQotCi0j
cHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIEludGVyYWN0aW9uIHdpdGggdGhlIHNlcnZlciB0
byB0aGUgcmVtb3RlIGluc3BlY3RvciBmcm9udGVuZAotCi0tICh2b2lkKXJlY2VpdmVkRGF0YToo
TlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIE5TRGF0YSAqZGF0YSA9IFtkaWN0aW9u
YXJ5IG9iamVjdEZvcktleTpXSVJTb2NrZXREYXRhS2V5XTsKLSAgICBOU1N0cmluZyAqbWVzc2Fn
ZSA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIGVuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXTsKLSAgICBbc2VsZiBzZW5kTWVzc2FnZVRvQmFja2VuZDptZXNzYWdlXTsK
LSAgICBbbWVzc2FnZSByZWxlYXNlXTsKLX0KLQotLSAodm9pZClyZWNlaXZlZERpZENsb3NlOihO
U0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgaWYgKF9jaGFubmVsKSB7Ci0gICAgICAg
IFtfY2hhbm5lbCBjbG9zZUZyb21SZW1vdGVTaWRlXTsKLSAgICAgICAgW19jaGFubmVsIHJlbGVh
c2VdOwotICAgICAgICBfY2hhbm5lbCA9IG5pbDsKLSAgICB9Ci19Ci0KLUBlbmQKLQotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb25Db250cm9sbGVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWMyMTM2
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsMzg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLSNpbXBvcnQgIldlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oIgotCi0jaW1wb3J0ICJX
ZWJJbnNwZWN0b3JDbGllbnQuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5
LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmgiCi0jaW1wb3J0ICJX
ZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmgiCi0jaW1wb3J0
ICJXZWJWaWV3LmgiCi0jaW1wb3J0ICJXZWJWaWV3UHJpdmF0ZS5oIgotCi0jaWYgUExBVEZPUk0o
SU9TKQotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1dlYkNvcmVUaHJlYWRSdW4uaD4KLSNlbmRpZgotCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJJbnNw
ZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIKLQotLSAoaWQpaW5pdFdpdGhT
ZXJ2ZXI6KFdlYkluc3BlY3RvclNlcnZlciAqKXNlcnZlcgotewotICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX3NlcnZl
ciA9IHNlcnZlcjsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsK
LSAgICBBU1NFUlQoIVtfb3BlbkNvbm5lY3Rpb25zIGNvdW50XSk7Ci0gICAgW19vcGVuQ29ubmVj
dGlvbnMgcmVsZWFzZV07Ci0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpY2xv
c2VBbGxDb25uZWN0aW9ucwotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBXZWJUaHJlYWRSdW4o
XnsKLSNlbmRpZgotCi0gICAgZm9yIChOU051bWJlciAqa2V5IGluIF9vcGVuQ29ubmVjdGlvbnMp
IHsKLSAgICAgICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKmNvbm5lY3Rp
b24gPSBbX29wZW5Db25uZWN0aW9ucyBvYmplY3RGb3JLZXk6a2V5XTsKLSAgICAgICAgW2Nvbm5l
Y3Rpb24gcmVjZWl2ZWREaWRDbG9zZTpuaWxdOwotICAgIH0KLSAgICBbX29wZW5Db25uZWN0aW9u
cyByZW1vdmVBbGxPYmplY3RzXTsKLQotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIF57Ci0gICAgICAgIFtfc2VydmVyIHNldEhhc0FjdGl2ZURlYnVnU2Vzc2lv
bjpOT107Ci0gICAgfSk7Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgfSk7Ci0jZW5kaWYKLX0K
LQotLSAoTlNEaWN0aW9uYXJ5ICopX2xpc3RpbmdGb3JXZWJWaWV3OihXZWJWaWV3ICopd2ViVmll
dyBwYWdlSWQ6KE5TTnVtYmVyICopcGFnZUlkIHJlZ2lzdHJ5OihXZWJJbnNwZWN0b3JDbGllbnRS
ZWdpc3RyeSAqKXJlZ2lzdHJ5Ci17Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqd2ViVmlld0Rl
dGFpbHMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKLQotICAgIC8vIFBhZ2Ug
SUQuCi0gICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDpwYWdlSWQgZm9yS2V5OldJUlBhZ2VJ
ZGVudGlmaWVyS2V5XTsKLQotICAgIC8vIFVSTC4KLSAgICBOU1N0cmluZyAqdXJsID0gW3dlYlZp
ZXcgbWFpbkZyYW1lVVJMXTsKLSAgICBpZiAoIXVybCkKLSAgICAgICAgdXJsID0gQCJhYm91dDpi
bGFuayI7Ci0gICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDp1cmwgZm9yS2V5OldJUlVSTEtl
eV07Ci0KLSAgICAvLyBUaXRsZS4KLSAgICBOU1N0cmluZyAqdGl0bGUgPSBbd2ViVmlldyBtYWlu
RnJhbWVUaXRsZV07Ci0gICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDp0aXRsZSBmb3JLZXk6
V0lSVGl0bGVLZXldOwotCi0gICAgLy8gW09wdGlvbmFsXSBDb25uZWN0aW9uIElkZW50aWZpZXIg
KFJlbW90ZSBEZWJ1Z2dlciBVVUlEKS4KLSAgICAvLyBbT3B0aW9uYWxdIEhhcyBMb2NhbCBEZWJ1
Z2dlciBTZXNzaW9uLgotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uICpj
b25uZWN0aW9uID0gW19vcGVuQ29ubmVjdGlvbnMgb2JqZWN0Rm9yS2V5OnBhZ2VJZF07Ci0gICAg
aWYgKGNvbm5lY3Rpb24pCi0gICAgICAgIFt3ZWJWaWV3RGV0YWlscyBzZXRPYmplY3Q6Y29ubmVj
dGlvbi5jb25uZWN0aW9uSWRlbnRpZmllciBmb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJL
ZXldOwotICAgIGVsc2UgewotICAgICAgICBXZWJJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNs
aWVudCA9IFtyZWdpc3RyeSBjbGllbnRGb3JQYWdlSWQ6W3BhZ2VJZCB1bnNpZ25lZEludFZhbHVl
XV07Ci0gICAgICAgIGlmIChpbnNwZWN0b3JDbGllbnQtPmhhc0xvY2FsU2Vzc2lvbigpKQotICAg
ICAgICAgICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJv
b2w6WUVTXSBmb3JLZXk6V0lSSGFzTG9jYWxEZWJ1Z2dlcktleV07Ci0gICAgfQotCi0jaWYgUExB
VEZPUk0oSU9TKQotICAgIC8vIFtPcHRpb25hbF0gSG9zdCBBcHBsaWNhdGlvbiBJRC4KLSAgICBO
U1N0cmluZyAqaG9zdEFwcGxpY2F0aW9uSWQgPSBbd2ViVmlldyBob3N0QXBwbGljYXRpb25CdW5k
bGVJZF07Ci0gICAgaWYgKGhvc3RBcHBsaWNhdGlvbklkKQotICAgICAgICBbd2ViVmlld0RldGFp
bHMgc2V0T2JqZWN0Omhvc3RBcHBsaWNhdGlvbklkIGZvcktleTpXSVJIb3N0QXBwbGljYXRpb25J
ZGVudGlmaWVyS2V5XTsKLQotICAgIC8vIFtPcHRpb25hbF0gSG9zdCBBcHBsaWNhdGlvbiBOYW1l
LgotICAgIE5TU3RyaW5nICpob3N0QXBwbGljYXRpb25OYW1lID0gW3dlYlZpZXcgaG9zdEFwcGxp
Y2F0aW9uTmFtZV07Ci0gICAgaWYgKGhvc3RBcHBsaWNhdGlvbk5hbWUpCi0gICAgICAgIFt3ZWJW
aWV3RGV0YWlscyBzZXRPYmplY3Q6aG9zdEFwcGxpY2F0aW9uTmFtZSBmb3JLZXk6V0lSSG9zdEFw
cGxpY2F0aW9uTmFtZUtleV07Ci0jZW5kaWYKLQotICAgIC8vIFtPcHRpb25hbF0gUmVtb3RlIElu
c3BlY3RvciBXZWJWaWV3IFVzZXIgSW5mbyBEaWN0aW9uYXJ5LgotICAgIE5TRGljdGlvbmFyeSAq
cmVtb3RlSW5zcGVjdG9yVXNlckluZm8gPSBbd2ViVmlldyByZW1vdGVJbnNwZWN0b3JVc2VySW5m
b107Ci0gICAgaWYgKHJlbW90ZUluc3BlY3RvclVzZXJJbmZvKQotICAgICAgICBbd2ViVmlld0Rl
dGFpbHMgc2V0T2JqZWN0OnJlbW90ZUluc3BlY3RvclVzZXJJbmZvIGZvcktleTpXSVJVc2VySW5m
b0tleV07Ci0KLSAgICByZXR1cm4gd2ViVmlld0RldGFpbHM7Ci19Ci0KLS0gKHZvaWQpX3B1c2hM
aXN0aW5nOihOU1N0cmluZyAqKW9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXIKLXsKLSNpZiBQ
TEFURk9STShJT1MpCi0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSNlbmRpZgot
Ci0gICAgX2hhc1NjaGVkdWxlZFB1c2ggPSBOTzsKLQotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkg
KnJlc3BvbnNlID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAgICBXZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeSAqd2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgPSBbV2Vi
SW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldOwotICAgIE5TRGljdGlvbmFy
eSAqcmVnaXN0ZXJlZFZpZXdzID0gW3dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IGluc3BlY3Rh
YmxlV2ViVmlld3NdOwotICAgIGZvciAoTlNOdW1iZXIgKnBhZ2VJZCBpbiByZWdpc3RlcmVkVmll
d3MpIHsKLSAgICAgICAgV2ViVmlldyAqd2ViVmlldyA9IFtyZWdpc3RlcmVkVmlld3Mgb2JqZWN0
Rm9yS2V5OnBhZ2VJZF07Ci0gICAgICAgIE5TRGljdGlvbmFyeSAqd2ViVmlld0RldGFpbHMgPSBb
c2VsZiBfbGlzdGluZ0ZvcldlYlZpZXc6d2ViVmlldyBwYWdlSWQ6cGFnZUlkIHJlZ2lzdHJ5Ondl
Ykluc3BlY3RvckNsaWVudFJlZ2lzdHJ5XTsKLSAgICAgICAgW3Jlc3BvbnNlIHNldE9iamVjdDp3
ZWJWaWV3RGV0YWlscyBmb3JLZXk6W3BhZ2VJZCBzdHJpbmdWYWx1ZV1dOwotICAgIH0KLQotICAg
IE5TTXV0YWJsZURpY3Rpb25hcnkgKm91dGdvaW5nID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XTsKLSAgICBbb3V0Z29pbmcgc2V0T2JqZWN0OnJlc3BvbnNlIGZvcktleTpXSVJM
aXN0aW5nS2V5XTsKLSAgICBpZiAob3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAg
ICAgW291dGdvaW5nIHNldE9iamVjdDpvcHRpb25hbENvbm5lY3Rpb25JZGVudGlmaWVyIGZvcktl
eTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07Ci0KLSAgICBbc2VsZiBzZW5kTWVzc2FnZVRv
RnJvbnRlbmQ6V0lSTGlzdGluZ01lc3NhZ2UgdXNlckluZm86b3V0Z29pbmddOwotCi0gICAgW291
dGdvaW5nIHJlbGVhc2VdOwotICAgIFtyZXNwb25zZSByZWxlYXNlXTsKLX0KLQotLSAodm9pZClw
dXNoTGlzdGluZzooTlNTdHJpbmcgKilvcHRpb25hbENvbm5lY3Rpb25JZGVudGlmaWVyCi17Ci0j
aWYgUExBVEZPUk0oSU9TKQotICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0jZW5k
aWYKLQotICAgIGlmIChfaGFzU2NoZWR1bGVkUHVzaCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKG9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXIpIHsKLSAgICAgICAgW3NlbGYgX3B1c2hM
aXN0aW5nOm9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXJdOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3Rp
bWUoRElTUEFUQ0hfVElNRV9OT1csIDAuMiAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9n
bG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Ci0gICAg
ICAgIFdlYlRocmVhZFJ1biheewotICAgICAgICAgICAgW3NlbGYgX3B1c2hMaXN0aW5nOm5pbF07
Ci0gICAgICAgIH0pOwotICAgIH0pOwotI2Vsc2UKLSAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6
QHNlbGVjdG9yKF9wdXNoTGlzdGluZzopIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6MC4yXTsK
LSNlbmRpZgotCi0gICAgX2hhc1NjaGVkdWxlZFB1c2ggPSBZRVM7Ci19Ci0KLS0gKHZvaWQpcHVz
aExpc3RpbmcKLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgV2ViVGhyZWFkUnVuKF57Ci0jZW5k
aWYKLQotICAgIFtzZWxmIHB1c2hMaXN0aW5nOm5pbF07Ci0KLSNpZiBQTEFURk9STShJT1MpCi0g
ICAgfSk7Ci0jZW5kaWYKLX0KLQotLSAodm9pZClfcmVjZWl2ZWRTZXR1cDooTlNEaWN0aW9uYXJ5
ICopZGljdGlvbmFyeQotewotICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbZGljdGlvbmFyeSBvYmpl
Y3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOwotICAgIGlmICghcGFnZUlkKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbZGljdGlv
bmFyeSBvYmplY3RGb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOwotICAgIGlmICgh
Y29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICpz
ZW5kZXIgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSU2VuZGVyS2V5XTsKLSAgICBpZiAo
IXNlbmRlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFfb3BlbkNvbm5lY3Rpb25zKQot
ICAgICAgICBfb3BlbkNvbm5lY3Rpb25zID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0XTsKLQotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uICpjb25uZWN0
aW9uID0gW1tXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiBhbGxvY10gaW5pdFdp
dGhDb250cm9sbGVyOnNlbGYgY29ubmVjdGlvbklkZW50aWZpZXI6Y29ubmVjdGlvbklkZW50aWZp
ZXIgZGVzdGluYXRpb246c2VuZGVyIGlkZW50aWZpZXI6cGFnZUlkXTsKLSAgICBpZiAoW2Nvbm5l
Y3Rpb24gc2V0dXBDaGFubmVsXSkKLSAgICAgICAgW19vcGVuQ29ubmVjdGlvbnMgc2V0T2JqZWN0
OmNvbm5lY3Rpb24gZm9yS2V5OnBhZ2VJZF07Ci0gICAgW2Nvbm5lY3Rpb24gcmVsZWFzZV07Ci0K
LSAgICBpZiAoW19vcGVuQ29ubmVjdGlvbnMgY291bnRdID09IDEpIHsKLSAgICAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgIFtfc2Vy
dmVyIHNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjpZRVNdOwotICAgICAgICB9KTsKLSAgICB9Ci0K
LSAgICBbc2VsZiBwdXNoTGlzdGluZ107Ci19Ci0KLS0gKHZvaWQpX3JlY2VpdmVkRGF0YTooTlNE
aWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbZGljdGlv
bmFyeSBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOwotICAgIGlmICghcGFnZUlk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVj
dGlvbiAqY29ubmVjdGlvbiA9IFtfb3BlbkNvbm5lY3Rpb25zIG9iamVjdEZvcktleTpwYWdlSWRd
OwotICAgIEFTU0VSVCghY29ubmVjdGlvbiB8fCBbY29ubmVjdGlvbiBpc0tpbmRPZkNsYXNzOltX
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiBjbGFzc11dKTsKLSAgICBpZiAoIWNv
bm5lY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIFtjb25uZWN0aW9uIHJlY2VpdmVkRGF0
YTpkaWN0aW9uYXJ5XTsKLX0KLQotLSAodm9pZClfcmVjZWl2ZWREaWRDbG9zZTooTlNEaWN0aW9u
YXJ5ICopZGljdGlvbmFyeQotewotICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbZGljdGlvbmFyeSBv
YmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOwotICAgIGlmICghcGFnZUlkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbZGlj
dGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOwotICAgIGlm
ICghY29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkluc3Bl
Y3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uICpjb25uZWN0aW9uID0gW19vcGVuQ29ubmVjdGlv
bnMgb2JqZWN0Rm9yS2V5OnBhZ2VJZF07Ci0gICAgQVNTRVJUKCFjb25uZWN0aW9uIHx8IFtjb25u
ZWN0aW9uIGlzS2luZE9mQ2xhc3M6W1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
IGNsYXNzXV0pOwotICAgIGlmICghY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKCFbY29ubmVjdGlvbklkZW50aWZpZXIgaXNFcXVhbFRvU3RyaW5nOmNvbm5lY3Rpb24uY29u
bmVjdGlvbklkZW50aWZpZXJdKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbY29ubmVjdGlvbiBy
ZWNlaXZlZERpZENsb3NlOmRpY3Rpb25hcnldOwotICAgIFtfb3BlbkNvbm5lY3Rpb25zIHJlbW92
ZU9iamVjdEZvcktleTpwYWdlSWRdOwotCi0gICAgaWYgKCFbX29wZW5Db25uZWN0aW9ucyBjb3Vu
dF0pIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XnsKLSAgICAgICAgICAgIFtfc2VydmVyIHNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjpOT107Ci0g
ICAgICAgIH0pOwotICAgIH0KLQotICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQotLSAodm9p
ZClfcmVjZWl2ZWRHZXRMaXN0aW5nOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAg
W3NlbGYgcHVzaExpc3Rpbmc6W2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25J
ZGVudGlmaWVyS2V5XV07Ci19Ci0KLS0gKHZvaWQpX3JlY2VpdmVkSW5kaWNhdGU6KE5TRGljdGlv
bmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAgICBOU051bWJlciAqcGFnZUlkID0gW2RpY3Rpb25hcnkg
b2JqZWN0Rm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsKLSAgICBpZiAoIXBhZ2VJZCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgV2ViVmlldyAqd2ViVmlldyA9IFtbW1dlYkluc3BlY3RvckNs
aWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XSBpbnNwZWN0YWJsZVdlYlZpZXdzXSBvYmplY3RG
b3JLZXk6cGFnZUlkXTsKLSAgICBpZiAoIXdlYlZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEJPT0wgaW5kaWNhdGVFbmFibGVkID0gW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJJbmRp
Y2F0ZUVuYWJsZWRLZXldIGJvb2xWYWx1ZV07Ci0gICAgW3dlYlZpZXcgc2V0SW5kaWNhdGluZ0Zv
clJlbW90ZUluc3BlY3RvcjppbmRpY2F0ZUVuYWJsZWRdOwotfQotCi0tICh2b2lkKV9yZWNlaXZl
ZENvbm5lY3Rpb25EaWVkOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNTdHJp
bmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldJUkNv
bm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKLSAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBOU0RpY3Rpb25hcnkgKmNvbm5lY3Rpb25zQ29weSA9IFtb
X29wZW5Db25uZWN0aW9ucyBjb3B5XSBhdXRvcmVsZWFzZV07Ci0gICAgZm9yIChOU051bWJlciAq
a2V5IGluIGNvbm5lY3Rpb25zQ29weSkgewotICAgICAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJW
aWV3Q29ubmVjdGlvbiAqY29ubmVjdGlvbiA9IFtjb25uZWN0aW9uc0NvcHkgb2JqZWN0Rm9yS2V5
OmtleV07Ci0gICAgICAgIGlmIChbY29ubmVjdGlvbi5jb25uZWN0aW9uSWRlbnRpZmllciBpc0Vx
dWFsVG9TdHJpbmc6Y29ubmVjdGlvbklkZW50aWZpZXJdKSB7Ci0gICAgICAgICAgICBbY29ubmVj
dGlvbiByZWNlaXZlZERpZENsb3NlOm5pbF07Ci0gICAgICAgICAgICBbX29wZW5Db25uZWN0aW9u
cyByZW1vdmVPYmplY3RGb3JLZXk6a2V5XTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICgh
W19vcGVuQ29ubmVjdGlvbnMgY291bnRdKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgICAgICBbX3NlcnZlciBzZXRIYXNBY3Rp
dmVEZWJ1Z1Nlc3Npb246Tk9dOwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLS0gKHZvaWQpcmVj
ZWl2ZWRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25h
cnkgKil1c2VySW5mbwotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBXZWJUaHJlYWRSdW4oXnsK
LSNlbmRpZgotCi0gICAgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSU29ja2V0
U2V0dXBNZXNzYWdlXSkKLSAgICAgICAgW3NlbGYgX3JlY2VpdmVkU2V0dXA6dXNlckluZm9dOwot
ICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSU29ja2V0RGF0YU1l
c3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWREYXRhOnVzZXJJbmZvXTsKLSAgICBlbHNl
IGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUldlYlBhZ2VDbG9zZU1lc3NhZ2Vd
KQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWREaWRDbG9zZTp1c2VySW5mb107Ci0gICAgZWxzZSBp
ZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJBcHBsaWNhdGlvbkdldExpc3RpbmdN
ZXNzYWdlXSkKLSAgICAgICAgW3NlbGYgX3JlY2VpdmVkR2V0TGlzdGluZzp1c2VySW5mb107Ci0g
ICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJJbmRpY2F0ZU1lc3Nh
Z2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWRJbmRpY2F0ZTp1c2VySW5mb107Ci0gICAgZWxz
ZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJDb25uZWN0aW9uRGllZE1lc3Nh
Z2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWRDb25uZWN0aW9uRGllZDp1c2VySW5mb107Ci0g
ICAgZWxzZQotICAgICAgICBOU0xvZyhAIlVucmVjb2duaXplZCBNZXNzYWdlOiAlQCIsIG1lc3Nh
Z2VOYW1lKTsKLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICB9KTsKLSNlbmRpZgotfQotCi0KLSNw
cmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb24gaW50ZXJmYWNlCi0KLS0gKHZvaWQpY29ubmVjdGlvbkNsb3Npbmc6KFdlYkluc3BlY3Rv
clNlcnZlcldlYlZpZXdDb25uZWN0aW9uICopY29ubmVjdGlvbgotewotI2lmIFBMQVRGT1JNKElP
UykKLSAgICBXZWJUaHJlYWRSdW4oXnsKLSNlbmRpZgotCi0gICAgW19vcGVuQ29ubmVjdGlvbnMg
cmVtb3ZlT2JqZWN0Rm9yS2V5Oltjb25uZWN0aW9uIGlkZW50aWZpZXJdXTsKLQotICAgIGlmICgh
W19vcGVuQ29ubmVjdGlvbnMgY291bnRdKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgICAgICBbX3NlcnZlciBzZXRIYXNBY3Rp
dmVEZWJ1Z1Nlc3Npb246Tk9dOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSNpZiBQTEFURk9STShJ
T1MpCi0gICAgfSk7Ci0jZW5kaWYKLX0KLQotCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJr
IFRocmVhZCBTYWZlIHNlbmQgbWVzc2FnZSB0byBmcm9udGVuZAotCi0tICh2b2lkKXNlbmRNZXNz
YWdlVG9Gcm9udGVuZDooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9u
YXJ5ICopdXNlckluZm8KLXsKLSAgICAvLyBUaGlzIG1heSBiZSBjYWxsZWQgZnJvbSBlaXRoZXIg
dGhlIFdlYlRocmVhZCBvciB0aGUgTWFpblRocmVhZC4gVGhpcwotICAgIC8vIHJlcXVpcmVzIGFj
Y2VzcyB0byB0aGUgV2ViSW5zcGVjdG9yU2VydmVyJ3MgWFBDIENvbm5lY3Rpb24sIHdoaWNoCi0g
ICAgLy8gaXMgbWFuYWdlZCBvbiB0aGUgbWFpbiB0aHJlYWQuIFNvLCBkaXNwYXRjaCB0byB0aGUg
bWFpbiB0aHJlYWQgdG8KLSAgICAvLyBzYWZlbHkgdXNlIHRoZSB4cGMgY29ubmVjdGlvbi4KLSAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICBb
W19zZXJ2ZXIgeHBjQ29ubmVjdGlvbl0gc2VuZE1lc3NhZ2U6bWVzc2FnZU5hbWUgdXNlckluZm86
dXNlckluZm9dOwotICAgIH0pOwotfQotCi1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVy
Lm0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQ
Q1dyYXBwZXIubQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZiMWUwMi4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3Rv
clhQQ1dyYXBwZXIubQorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmgiCi0KLSNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLSNpZiBfX2hhc19pbmNsdWRlKDxDb3JlRm91bmRhdGlvbi9D
RlhQQ0JyaWRnZS5oPikKLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlhQQ0JyaWRnZS5oPgot
I2Vsc2UKLWV4dGVybiB4cGNfb2JqZWN0X3QgX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9i
amVjdChDRlR5cGVSZWYpOwotZXh0ZXJuIENGVHlwZVJlZiBfQ0ZYUENDcmVhdGVDRk9iamVjdEZy
b21YUENNZXNzYWdlKHhwY19vYmplY3RfdCk7Ci0jZW5kaWYKLQotLy8gQ29uc3RhbnRzIHByaXZh
dGUgdG8gdGhpcyBmaWxlIGZvciBtZXNzYWdlIHNlcmlhbGl6YXRpb24gb24gYm90aCBlbmRzLgot
I2RlZmluZSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyTWVzc2FnZU5hbWVLZXkgQCJtZXNzYWdlTmFt
ZSIKLSNkZWZpbmUgV2ViSW5zcGVjdG9yWFBDV3JhcHBlclVzZXJJbmZvS2V5IEAidXNlckluZm8i
Ci0jZGVmaW5lIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJTZXJpYWxpemVkTWVzc2FnZUtleSAibXNn
RGF0YSIKLQotQGludGVyZmFjZSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyICgpCi0tICh2b2lkKV9o
YW5kbGVFdmVudDooeHBjX29iamVjdF90KW9iamVjdDsKLUBlbmQKLQotCi1AaW1wbGVtZW50YXRp
b24gV2ViSW5zcGVjdG9yWFBDV3JhcHBlcgotCi1AZHluYW1pYyBhdmFpbGFibGU7Ci0KLUBzeW50
aGVzaXplIGRlbGVnYXRlID0gX2RlbGVnYXRlOwotQHN5bnRoZXNpemUgY29ubmVjdGlvbiA9IF9j
b25uZWN0aW9uOwotQHN5bnRoZXNpemUgdGFnID0gX3RhZzsKLQotLSAoV2ViSW5zcGVjdG9yWFBD
V3JhcHBlciAqKWluaXRXaXRoQ29ubmVjdGlvbjooeHBjX2Nvbm5lY3Rpb25fdCljb25uZWN0aW9u
Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0KLSAgICBfY29ubmVjdGlvbiA9IHhwY19yZXRhaW4oY29ubmVjdGlvbik7Ci0g
ICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShfY29ubmVjdGlvbiwgZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIo
X2Nvbm5lY3Rpb24sIF4oeHBjX29iamVjdF90IG9iamVjdCkgeyBbc2VsZiBfaGFuZGxlRXZlbnQ6
b2JqZWN0XTsgfSk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKF9jb25uZWN0aW9uKTsKLQot
ICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWNsb3NlCi17Ci0gICAgaWYgKF9jb25uZWN0
aW9uKSB7Ci0gICAgICAgIHhwY19jb25uZWN0aW9uX2NhbmNlbChfY29ubmVjdGlvbik7Ci0gICAg
ICAgIHhwY19yZWxlYXNlKF9jb25uZWN0aW9uKTsKLSAgICAgICAgX2Nvbm5lY3Rpb24gPSBOVUxM
OwotICAgIH0KLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3NlbGYgY2xvc2VdOwotICAg
IFtfdGFnIHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAoTlNEaWN0aW9u
YXJ5ICopX2Rlc2VyaWFsaXplTWVzc2FnZTooeHBjX29iamVjdF90KW9iamVjdAotewotICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoeHBjX2dldF90eXBlKG9iamVjdCkgPT0gWFBDX1RZUEVfRElDVElP
TkFSWSwgIkdvdCB1bmV4cGVjdGVkIG9iamVjdCBmcm9tIGFuIHhwYyBjb25uZWN0aW9uIik7Ci0g
ICAgaWYgKHhwY19nZXRfdHlwZShvYmplY3QpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0KLSAgICB4cGNfb2JqZWN0X3QgeHBjRGljdGlvbmFyeSA9IHhwY19k
aWN0aW9uYXJ5X2dldF92YWx1ZShvYmplY3QsIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJTZXJpYWxp
emVkTWVzc2FnZUtleSk7Ci0gICAgaWYgKCF4cGNEaWN0aW9uYXJ5IHx8IHhwY19nZXRfdHlwZSh4
cGNEaWN0aW9uYXJ5KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKSB7Ci0gICAgICAgIC8vIFRoaXMg
aXNuJ3QgYSBtZXNzYWdlIHR5cGUgdGhhdCB3ZSBrbm93IGhvdyB0byBkZXNlcmlhbGl6ZSwgc28g
d2UgbGV0IG91ciBkZWxlZ2F0ZSB3b3JyeSBhYm91dCBpdC4KLSAgICAgICAgaWYgKFtfZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih4cGNDb25uZWN0aW9uOnVuaGFuZGxlZE1l
c3NhZ2U6KV0pCi0gICAgICAgICAgICBbX2RlbGVnYXRlIHhwY0Nvbm5lY3Rpb246c2VsZiB1bmhh
bmRsZWRNZXNzYWdlOm9iamVjdF07Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAg
TlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gX0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVz
c2FnZSh4cGNEaWN0aW9uYXJ5KTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRpY3Rpb25hcnks
ICJVbmFibGUgdG8gZGVzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKLSAgICBpZiAoIWRpY3Rpb25h
cnkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1cm4gW2RpY3Rpb25hcnkgYXV0b3Jl
bGVhc2VdOwotfQotCi0tICh2b2lkKV9oYW5kbGVFdmVudDooeHBjX29iamVjdF90KW9iamVjdAot
ewotICAgIGlmICghX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICh4cGNf
Z2V0X3R5cGUob2JqZWN0KSA9PSBYUENfVFlQRV9FUlJPUikgewotICAgICAgICBbX2RlbGVnYXRl
IHhwY0Nvbm5lY3Rpb25GYWlsZWQ6c2VsZl07Ci0gICAgICAgIFtzZWxmIGNsb3NlXTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghX2RlbGVnYXRlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBOU0RpY3Rpb25hcnkgKmRhdGFEaWN0aW9uYXJ5ID0gW3NlbGYgX2Rlc2VyaWFsaXpl
TWVzc2FnZTpvYmplY3RdOwotICAgIGlmICghZGF0YURpY3Rpb25hcnkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIE5TU3RyaW5nICptZXNzYWdlID0gW2RhdGFEaWN0aW9uYXJ5IG9iamVjdEZvcktl
eTpXZWJJbnNwZWN0b3JYUENXcmFwcGVyTWVzc2FnZU5hbWVLZXldOwotICAgIE5TRGljdGlvbmFy
eSAqdXNlckluZm8gPSBbZGF0YURpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldlYkluc3BlY3RvclhQ
Q1dyYXBwZXJVc2VySW5mb0tleV07Ci0gICAgW19kZWxlZ2F0ZSB4cGNDb25uZWN0aW9uOnNlbGYg
cmVjZWl2ZWRNZXNzYWdlOm1lc3NhZ2UgdXNlckluZm86dXNlckluZm9dOwotfQotCi0tICh2b2lk
KXNlbmRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25h
cnkgKil1c2VySW5mbwotewotICAgIGlmICghX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybjsK
LQotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlv
bmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptZXNzYWdlTmFtZSBmb3JLZXk6V2ViSW5zcGVjdG9y
WFBDV3JhcHBlck1lc3NhZ2VOYW1lS2V5XTsKLSAgICBpZiAodXNlckluZm8pCi0gICAgICAgIFtk
aWN0aW9uYXJ5IHNldE9iamVjdDp1c2VySW5mbyBmb3JLZXk6V2ViSW5zcGVjdG9yWFBDV3JhcHBl
clVzZXJJbmZvS2V5XTsKLQotICAgIHhwY19vYmplY3RfdCB4cGNEaWN0aW9uYXJ5ID0gX0NGWFBD
Q3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoQ0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkp
OwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoeHBjRGljdGlvbmFyeSAmJiB4cGNfZ2V0X3R5cGUo
eHBjRGljdGlvbmFyeSkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSwgIlVuYWJsZSB0byBzZXJpYWxp
emUgeHBjIG1lc3NhZ2UiKTsKLSAgICBpZiAoIXhwY0RpY3Rpb25hcnkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHhwY19vYmplY3RfdCBtc2cgPSB4cGNfZGljdGlvbmFyeV9jcmVhdGUoTlVMTCwg
TlVMTCwgMCk7Ci0gICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1zZywgV2ViSW5zcGVjdG9y
WFBDV3JhcHBlclNlcmlhbGl6ZWRNZXNzYWdlS2V5LCB4cGNEaWN0aW9uYXJ5KTsKLSAgICB4cGNf
cmVsZWFzZSh4cGNEaWN0aW9uYXJ5KTsKLQotICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2Fn
ZShfY29ubmVjdGlvbiwgbXNnKTsKLQotICAgIHhwY19yZWxlYXNlKG1zZyk7Ci19Ci0KLS0gKEJP
T0wpYXZhaWxhYmxlCi17Ci0gICAgcmV0dXJuIF9jb25uZWN0aW9uICE9IE5VTEw7Ci19Ci0KLUBl
bmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQuZXhwIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViS2l0LmV4cAppbmRleCBmM2ZkMmY0Li41NmY4MTZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQuZXhwCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYktpdC5leHAKQEAgLTIyLDcgKzIyLDYgQEAKIC5vYmpjX2NsYXNzX25hbWVfV2ViSGlz
dG9yeUl0ZW0KIC5vYmpjX2NsYXNzX25hbWVfV2ViSWNvbkRhdGFiYXNlCiAub2JqY19jbGFzc19u
YW1lX1dlYkluc3BlY3RvcgotLm9iamNfY2xhc3NfbmFtZV9XZWJJbnNwZWN0b3JYUENXcmFwcGVy
CiAub2JqY19jbGFzc19uYW1lX1dlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbAogLm9iamNfY2xh
c3NfbmFtZV9XZWJLZXlHZW5lcmF0b3IKIC5vYmpjX2NsYXNzX25hbWVfV2ViS2l0U3RhdGlzdGlj
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGY1ZDM4MzUuLjE4NWFkZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTIxMiw3ICsyMTIsNiBAQAog
I2VuZGlmCiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSNpbXBvcnQgIldlYkluc3Bl
Y3RvclNlcnZlci5oIgogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgIldlYkluZGljYXRlTGF5
ZXIuaCIKICNlbmRpZgpAQCAtMzkxLDEwICszOTAsNiBAQCBzdGF0aWMgV2ViQ2FjaGVNb2RlbCBz
X2NhY2hlTW9kZWwgPSBXZWJDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7CiBzdGF0aWMgY29uc3Qg
Y2hhciB3ZWJWaWV3SXNPcGVuW10gPSAiQXQgbGVhc3Qgb25lIFdlYlZpZXcgaXMgc3RpbGwgb3Bl
bi4iOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLXN0YXRpYyBCT09M
IGF1dG9TdGFydFJlbW90ZUluc3BlY3RvciA9IFlFUzsKLSNlbmRpZgotCiBAaW50ZXJmYWNlIE5T
T2JqZWN0IChXZWJWYWxpZGF0ZVdpdGhvdXREZWxlZ2F0ZSkKIC0gKEJPT0wpdmFsaWRhdGVVc2Vy
SW50ZXJmYWNlSXRlbVdpdGhvdXREZWxlZ2F0ZTooaWQgPE5TVmFsaWRhdGVkVXNlckludGVyZmFj
ZUl0ZW0+KWl0ZW07CiBAZW5kCkBAIC01MjUsNiArNTIwLDcgQEAgTlNTdHJpbmcgKl9XZWJWaWV3
RGlkU3RhcnRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTm90aWZpY2F0aW9uID0gQCJfV2ViVmlld0Rp
ZFN0YXIKIE5TU3RyaW5nICogY29uc3QgV2ViVmlld1dpbGxDbG9zZU5vdGlmaWNhdGlvbiA9IEAi
V2ViVmlld1dpbGxDbG9zZU5vdGlmaWNhdGlvbiI7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKy8vIEZJWE1FOiBMZWdhY3ksIHJlbW92ZSB0aGlzLCBzd2l0Y2ggdG8gc29tZXRoaW5n
IGZyb20gSmF2YVNjcmlwdENvcmUgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuCiBO
U1N0cmluZyAqX1dlYlZpZXdSZW1vdGVJbnNwZWN0b3JIYXNTZXNzaW9uQ2hhbmdlZE5vdGlmaWNh
dGlvbiA9IEAiX1dlYlZpZXdSZW1vdGVJbnNwZWN0b3JIYXNTZXNzaW9uQ2hhbmdlZE5vdGlmaWNh
dGlvbiI7CiAjZW5kaWYKIApAQCAtNzY2LDExICs3NjIsNiBAQCBzdGF0aWMgYm9vbCBzaG91bGRV
c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKCkKICAgICAgICAgCiAgICAg
ICAgIFNldHRpbmdzOjpzZXRTaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRl
cnMoc2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKCkpOwogCi0jaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgICAgIGlmIChhdXRvU3RhcnRSZW1vdGVJbnNw
ZWN0b3IpCi0gICAgICAgICAgICBbV2ViVmlldyBfZW5hYmxlUmVtb3RlSW5zcGVjdG9yXTsKLSNl
bmRpZgotCiAgICAgICAgIGRpZE9uZVRpbWVJbml0aWFsaXphdGlvbiA9IHRydWU7CiAgICAgfQog
CkBAIC03OTgsNiArNzg5LDEwIEBAIHN0YXRpYyBib29sIHNob3VsZFVzZUxlZ2FjeUJhY2tncm91
bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IoKQogICAgIFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFU
byhfcHJpdmF0ZS0+cGFnZSwgbmV3IFdlYlVzZXJNZWRpYUNsaWVudChzZWxmKSk7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIF9wcml2YXRlLT5wYWdlLT5zZXRS
ZW1vdGVJbnNwZWN0aW9uQWxsb3dlZCh0cnVlKTsKKyNlbmRpZgorCiAgICAgX3ByaXZhdGUtPnBh
Z2UtPnNldENhblN0YXJ0TWVkaWEoW3NlbGYgd2luZG93XSk7CiAgICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldHRpbmdzKCkuc2V0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKFtbc2VsZiBwcmVmZXJlbmNl
c10gX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aF0pOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0
aW5ncygpLnNldFVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3Ioc2hvdWxk
VXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpKTsKQEAgLTEyNjcsNjAg
KzEyNjIsNDIgQEAgc3RhdGljIGJvb2wgZmFzdERvY3VtZW50VGVhcmRvd25FbmFibGVkKCkKIH0K
IAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotKyAoV2ViSW5zcGVjdG9yU2VydmVyICop
c2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyCi17Ci0gICAgc3RhdGljIFdlYkluc3BlY3RvclNlcnZl
ciAqc2hhcmVkU2VydmVyID0gW1tXZWJJbnNwZWN0b3JTZXJ2ZXIgYWxsb2NdIGluaXRdOwotICAg
IHJldHVybiBzaGFyZWRTZXJ2ZXI7Ci19Ci0KICsgKHZvaWQpX2VuYWJsZVJlbW90ZUluc3BlY3Rv
cgogewotICAgIFtbV2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIHN0YXJ0XTsKKyAg
ICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGEgbmV3IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
U2VydmVyIGludGVyZmFjZSBvciByZW1vdmUgaXQuCiB9CiAKICsgKHZvaWQpX2Rpc2FibGVSZW1v
dGVJbnNwZWN0b3IKIHsKLSAgICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBz
dG9wXTsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGEgbmV3IEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yU2VydmVyIGludGVyZmFjZSBvciByZW1vdmUgaXQuCiB9CiAKICsgKHZvaWQpX2Rp
c2FibGVBdXRvU3RhcnRSZW1vdGVJbnNwZWN0b3IKIHsKLSAgICBhdXRvU3RhcnRSZW1vdGVJbnNw
ZWN0b3IgPSBOTzsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGEgbmV3IEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yU2VydmVyIGludGVyZmFjZSBvciByZW1vdmUgaXQuCiB9CiAKICsgKEJP
T0wpX2lzUmVtb3RlSW5zcGVjdG9yRW5hYmxlZAogewotICAgIHJldHVybiBbW1dlYlZpZXcgc2hh
cmVkV2ViSW5zcGVjdG9yU2VydmVyXSBpc0VuYWJsZWRdOworICAgIC8vIEZJWE1FOiBNb3ZlIHRo
aXMgdG8gYSBuZXcgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIgaW50ZXJmYWNlIG9y
IHJlbW92ZSBpdC4KKyAgICByZXR1cm4gTk87CiB9CiAKICsgKEJPT0wpX2hhc1JlbW90ZUluc3Bl
Y3RvclNlc3Npb24KIHsKLSAgICByZXR1cm4gW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNl
cnZlcl0gaGFzQWN0aXZlRGVidWdTZXNzaW9uXTsKLX0KLQotLSAoQk9PTCljYW5CZVJlbW90ZWx5
SW5zcGVjdGVkCi17Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBpZiAoIVtbc2VsZiBwcmVmZXJl
bmNlc10gZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZF0pCi0gICAgICAgIHJldHVybiBOTzsKLSNlbmRp
ZgotCi0gICAgcmV0dXJuIFtzZWxmIGFsbG93c1JlbW90ZUluc3BlY3Rpb25dOworICAgIC8vIEZJ
WE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIg
aW50ZXJmYWNlIG9yIHJlbW92ZSBpdC4KKyAgICByZXR1cm4gTk87CiB9CiAKIC0gKEJPT0wpYWxs
b3dzUmVtb3RlSW5zcGVjdGlvbgogewotICAgIHJldHVybiBfcHJpdmF0ZS0+YWxsb3dzUmVtb3Rl
SW5zcGVjdGlvbjsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGEgbmV3IEFQSS4KKyAgICBy
ZXR1cm4gTk87CiB9CiAKIC0gKHZvaWQpc2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbjooQk9PTClh
bGxvdwogewotICAgIGlmIChfcHJpdmF0ZS0+YWxsb3dzUmVtb3RlSW5zcGVjdGlvbiA9PSBhbGxv
dykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX3ByaXZhdGUtPmFsbG93c1JlbW90ZUluc3BlY3Rp
b24gPSBhbGxvdzsKLQotICAgIFtbV2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIHB1
c2hMaXN0aW5nXTsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGEgbmV3IEFQSS4KIH0KIAog
LSAodm9pZClzZXRJbmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOihCT09MKWVuYWJsZWQKQEAg
LTEzNDAsMjkgKzEzMTcsMTUgQEAgc3RhdGljIGJvb2wgZmFzdERvY3VtZW50VGVhcmRvd25FbmFi
bGVkKCkKICAgICAgICAgX3ByaXZhdGUtPmluZGljYXRlTGF5ZXIgPSBuaWw7CiAgICAgfQogI2Vs
c2UKLSAgICAvLyBGSVhNRTogTmVlZHMgaW1wbGVtZW50YXRpb24uCisgICAgLy8gRklYTUU6IE5l
ZWRzIGltcGxlbWVudGF0aW9uIG9yIHB1dCBhbiBpbXBsZW1lbnRhdGlvbiBpbiBXZWJDb3JlOjpJ
bnNwZWN0b3JPdmVybGF5LgogI2VuZGlmCiB9CiAKLS0gKHZvaWQpc2V0UmVtb3RlSW5zcGVjdG9y
VXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvCi17Ci0gICAgaWYgKFtfcHJpdmF0ZS0+
cmVtb3RlSW5zcGVjdG9yVXNlckluZm8gaXNFcXVhbFRvRGljdGlvbmFyeTp1c2VySW5mb10pCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFtfcHJpdmF0ZS0+cmVtb3RlSW5zcGVjdG9yVXNlckluZm8g
cmVsZWFzZV07Ci0gICAgX3ByaXZhdGUtPnJlbW90ZUluc3BlY3RvclVzZXJJbmZvID0gW3VzZXJJ
bmZvIGNvcHldOwotCi0gICAgW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gcHVz
aExpc3RpbmddOwotfQotCi0tIChOU0RpY3Rpb25hcnkgKilyZW1vdGVJbnNwZWN0b3JVc2VySW5m
bwotewotICAgIHJldHVybiBfcHJpdmF0ZS0+cmVtb3RlSW5zcGVjdG9yVXNlckluZm87Ci19Ci0K
ICNpZiBQTEFURk9STShJT1MpCiAtICh2b2lkKXNldEhvc3RBcHBsaWNhdGlvbkJ1bmRsZUlkOihO
U1N0cmluZyAqKWJ1bmRsZUlkIG5hbWU6KE5TU3RyaW5nICopbmFtZQogeworICAgIC8vIEZJWE1F
OiBUaGlzIGhhcyBub3QgeWV0IGJlZW4gcG9ydGVkIHRvIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVj
dG9yU2VydmVyLgorCiAgICAgaWYgKCFbX3ByaXZhdGUtPmhvc3RBcHBsaWNhdGlvbkJ1bmRsZUlk
IGlzRXF1YWxUb1N0cmluZzpidW5kbGVJZF0pIHsKICAgICAgICAgW19wcml2YXRlLT5ob3N0QXBw
bGljYXRpb25CdW5kbGVJZCByZWxlYXNlXTsKICAgICAgICAgX3ByaXZhdGUtPmhvc3RBcHBsaWNh
dGlvbkJ1bmRsZUlkID0gW2J1bmRsZUlkIGNvcHldOwpAQCAtMjExOCw5ICsyMDgxLDYgQEAgc3Rh
dGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBzKQogICAgIGlmIChmcmFtZSA9PSBb
c2VsZiBtYWluRnJhbWVdKQogICAgICAgICBbc2VsZiBfZGlkQ2hhbmdlVmFsdWVGb3JLZXk6IF9X
ZWJNYWluRnJhbWVVUkxLZXldOwogICAgIFtOU0FwcCBzZXRXaW5kb3dzTmVlZFVwZGF0ZTpZRVNd
OwotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIFtbV2ViVmlldyBzaGFyZWRXZWJJ
bnNwZWN0b3JTZXJ2ZXJdIHB1c2hMaXN0aW5nXTsKLSNlbmRpZgogfQogCiAtICh2b2lkKV9kaWRG
aW5pc2hMb2FkRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld0RhdGEuaAppbmRleCAyNDU0MTU4Li40YzI2NzJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCkBAIC0yMDgsOCArMjA4LDYgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgQk9PTCBhbGxvd3NSZW1v
dGVJbnNwZWN0aW9uOwotICAgIE5TRGljdGlvbmFyeSAqcmVtb3RlSW5zcGVjdG9yVXNlckluZm87
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdlYkluZGljYXRlTGF5ZXIgKmluZGljYXRlTGF5ZXI7
CiAgICAgTlNTdHJpbmcgKmhvc3RBcHBsaWNhdGlvbkJ1bmRsZUlkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld0RhdGEubW0KaW5kZXggMDM0M2E5Yy4uZWIwYmNiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCkBAIC05OSwxMCArOTksNiBAQCBXZWJW
aWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXIoTGF5ZXJG
bHVzaENvbnRyb2xsZXIqIGZsdQogICAgIGRhc2hib2FyZEJlaGF2aW9yQWxsb3dXaGVlbFNjcm9s
bGluZyA9IFlFUzsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAg
YWxsb3dzUmVtb3RlSW5zcGVjdGlvbiA9IFlFUzsKLSNlbmRpZgotCiAgICAgc2hvdWxkQ2xvc2VX
aXRoV2luZG93ID0gb2JqY19jb2xsZWN0aW5nRW5hYmxlZCgpOwogCiAgICAgcGx1Z2luRGF0YWJh
c2VDbGllbnRDb3VudCsrOwpAQCAtMTM1LDcgKzEzMSw2IEBAIFdlYlZpZXdMYXllckZsdXNoU2No
ZWR1bGVyOjpXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcihMYXllckZsdXNoQ29udHJvbGxlciog
Zmx1CiAgICAgW21lZGlhU3R5bGUgcmVsZWFzZV07CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKLSAgICBbcmVtb3RlSW5zcGVjdG9yVXNlckluZm8gcmVsZWFzZV07CiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgIFtpbmRpY2F0ZUxheWVyIHJlbGVhc2VdOwogICAgIFtob3N0QXBwbGljYXRp
b25CdW5kbGVJZCByZWxlYXNlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oCmluZGV4IDI2Yzg5ODYuLmNkNTRmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtNjEsOSArNjEsNiBAQCBzdHJ1Y3QgRGljdGF0
aW9uQWx0ZXJuYXRpdmU7CiBAY2xhc3MgV2ViQmFzZVBsdWdpblBhY2thZ2U7CiBAY2xhc3MgV2Vi
RG93bmxvYWQ7CiBAY2xhc3MgV2ViTm9kZUhpZ2hsaWdodDsKLSNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKLUBjbGFzcyBXZWJJbnNwZWN0b3JTZXJ2ZXI7Ci0jZW5kaWYKIAogI2lmZGVmIF9f
Y3BsdXNwbHVzCiAKQEAgLTIxNywxMCArMjE0LDYgQEAgT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5h
dGl2ZXM7CiAtICh2b2lkKV9mdWxsU2NyZWVuUmVuZGVyZXJDaGFuZ2VkOihXZWJDb3JlOjpSZW5k
ZXJCb3gqKXJlbmRlcmVyOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
LSsgKFdlYkluc3BlY3RvclNlcnZlciAqKXNoYXJlZFdlYkluc3BlY3RvclNlcnZlcjsKLSNlbmRp
ZgotCiAvLyBDb252ZXJzaW9uIGZ1bmN0aW9ucyBiZXR3ZWVuIFdlYkNvcmUgcm9vdCB2aWV3IGNv
b3JkaW5hdGVzIGFuZCB3ZWIgdmlldyBjb29yZGluYXRlcy4KIC0gKE5TUG9pbnQpX2NvbnZlcnRQ
b2ludEZyb21Sb290VmlldzooTlNQb2ludClwb2ludDsKIC0gKE5TUmVjdClfY29udmVydFJlY3RG
cm9tUm9vdFZpZXc6KE5TUmVjdClyZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3UHJpdmF0ZS5oCmluZGV4IDJkZGZkZWQuLjUwMWY5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKQEAgLTc3LDYgKzc3LDcgQEAgZXh0ZXJuIE5TU3Ry
aW5nICpXZWJFbGVtZW50SXNJblNjcm9sbEJhcktleTsKIGV4dGVybiBOU1N0cmluZyAqX1dlYlZp
ZXdEaWRTdGFydEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdOb3RpZmljYXRpb247CiAKICNpZiBFTkFC
TEVfUkVNT1RFX0lOU1BFQ1RPUgorLy8gRklYTUU6IExlZ2FjeSwgcmVtb3ZlIHRoaXMsIHN3aXRj
aCB0byBzb21ldGhpbmcgZnJvbSBKYXZhU2NyaXB0Q29yZSBJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3RvclNlcnZlci4KIC8vIE5vdGlmaWNhdGlvbiB3aGVuIHRoZSBudW1iZXIgb2YgaW5zcGVjdG9y
IHNlc3Npb25zIGJlY29tZXMgbm9uLXplcm8gb3IgcmV0dXJucyB0byAwLgogLy8gQ2hlY2sgdGhl
IGN1cnJlbnQgc3RhdGUgdmlhIC1bV2ViVmlldyBfaGFzUmVtb3RlSW5zcGVjdG9yU2Vzc2lvbl0u
CiBleHRlcm4gTlNTdHJpbmcgKl9XZWJWaWV3UmVtb3RlSW5zcGVjdG9ySGFzU2Vzc2lvbkNoYW5n
ZWROb3RpZmljYXRpb247CkBAIC0yNjMsMTUgKzI2NCw2IEBAIHR5cGVkZWYgZW51bSB7CiArIChC
T09MKV9oYXNSZW1vdGVJbnNwZWN0b3JTZXNzaW9uOwogCiAvKiEKLSAgICBAbWV0aG9kIGNhbkJl
UmVtb3RlbHlJbnNwZWN0ZWQKLSAgICBAcmVzdWx0IExvb2tzIGF0IGFsbCB0aGUgZmFjdG9ycyBv
ZiB0aGlzIFdlYlZpZXcgYW5kIHJldHVybnMgd2hldGhlciBvciBub3QKLSAgICB0aGlzIFdlYlZp
ZXcgc2hvdWxkIGFsbG93IGEgUmVtb3RlIFdlYiBJbnNwZWN0b3IgdG8gYXR0YWNoIHRvIGl0LiBU
aGlzIHRha2VzCi0gICAgaW50byBhY2NvdW50IC1hbGxvd3NSZW1vdGVJbnNwZWN0aW9uLCBQcml2
YXRlIEJyb3dzaW5nLCBhbmQgcG90ZW50aWFsbHkgb3RoZXIKLSAgICBmYWN0b3JzLgotKi8KLS0g
KEJPT0wpY2FuQmVSZW1vdGVseUluc3BlY3RlZDsKLQotLyohCiAgICAgQG1ldGhvZCBhbGxvd3NS
ZW1vdGVJbnNwZWN0aW9uCiAgICAgQHJlc3VsdCBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoaXMg
V2ViVmlldyB3aWxsIGFsbG93IGEgUmVtb3RlIFdlYiBJbnNwZWN0b3IKICAgICB0byBhdHRhY2gg
dG8gaXQuCkBAIC0yOTIsMjEgKzI4NCw2IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgQGFic3RyYWN0
IGluZGljYXRlIHRoaXMgV2ViVmlldyBvbiBzY3JlZW4gZm9yIGEgcmVtb3RlIGluc3BlY3Rvci4K
ICovCiAtICh2b2lkKXNldEluZGljYXRpbmdGb3JSZW1vdGVJbnNwZWN0b3I6KEJPT0wpZW5hYmxl
ZDsKLQotLyoKLSAgICBAbWV0aG9kIHNldFJlbW90ZUluc3BlY3RvclVzZXJJbmZvCi0gICAgQHBh
cmFtIHRhZyBUaGUgZGljdGlvbmFyeSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIFdlYlZpZXcu
Ci0gICAgQGFic3RyYWN0IERldmVsb3BlciBzcGVjaWZpZWQgZGljdGlvbmFyeSBmb3IgdGhlIFdl
YlZpZXcgdGhhdCB3aWxsIGJlCi0gICAgc2VudCB0byB0aGUgUmVtb3RlIERlYnVnZ2VyLiBUaGUg
ZGljdGlvbmFyeSBtdXN0IGNvbnRhaW4gcHJvcGVydHkKLSAgICBsaXN0IHNlcmlhbGl6YWJsZSB2
YWx1ZXMuCi0qLwotLSAodm9pZClzZXRSZW1vdGVJbnNwZWN0b3JVc2VySW5mbzooTlNEaWN0aW9u
YXJ5ICopdXNlckluZm87Ci0KLS8qIQotICAgIEBtZXRob2QgcmVtb3RlSW5zcGVjdG9yVXNlcklu
Zm8KLSAgICBAcmVzdWx0IFJldHVybnMgdGhlIGRpY3Rpb25hcnkgYXNzb2NpYXRlZCB3aXRoIHRo
aXMgV2ViVmlldy4KLSovCi0tIChOU0RpY3Rpb25hcnkgKilyZW1vdGVJbnNwZWN0b3JVc2VySW5m
bzsKICNlbmRpZgogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjZmExZDM4Li5iYzg1YzdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0
b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFn
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjoKKyAg
ICAgICAgQWxsb3cgdGhlIFdlYlByb2Nlc3MgdG8gYWNjZXNzIHRoZSAiY29tLmFwcGxlLndlYmlu
c3BlY3RvciIgbmFtZWQKKyAgICAgICAgWFBDIHNlcnZpY2UgdG8gZXhwb3NlIGl0cyBXZWJDb3Jl
OjpQYWdlJ3MgdG8gcmVtb3RlIGRlYnVnZ2Vycy4KKwogMjAxMy0xMi0wMiAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgc2V0dGluZyB0byBvcHQgaW50byBh
IG1vZGUgd2hlcmUgdGhlIGJhY2tncm91bmQgZXh0ZW5kcyBhbmQgZml4ZWQgZWxlbWVudHMgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZGNl
ZDVlZi4uZDExZWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtMzQ1LDYgKzM0NSwxMCBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90
IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAg
ICBXZWJDb3JlOjpwcm92aWRlRGV2aWNlUHJveGltaXR5VG8obV9wYWdlLmdldCgpLCBuZXcgV2Vi
RGV2aWNlUHJveGltaXR5Q2xpZW50KHRoaXMpKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCisgICAgbV9wYWdlLT5zZXRSZW1vdGVJbnNwZWN0aW9uQWxsb3dlZCh0cnVl
KTsKKyNlbmRpZgorCiAgICAgbV9wYWdlLT5zZXRDYW5TdGFydE1lZGlhKGZhbHNlKTsKICAgICBt
X21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cgPSBwYXJhbWV0ZXJzLm1heVN0YXJ0TWVkaWFXaGVu
SW5XaW5kb3c7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29tLmFw
cGxlLldlYlByb2Nlc3Muc2IuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBs
ZS5XZWJQcm9jZXNzLnNiLmluCmluZGV4IDkwYmIwZTYuLmM0NzJjMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgpAQCAt
MTM5LDYgKzEzOSwxMCBAQAogCiAjZW5kaWYKIAorOzsgUmVtb3RlIFdlYiBJbnNwZWN0b3IKKyhh
bGxvdyBtYWNoLWxvb2t1cAorICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLndlYmluc3Bl
Y3RvciIpKQorCiA7OyBWYXJpb3VzIHNlcnZpY2VzIHJlcXVpcmVkIGJ5IEFwcEtpdCBhbmQgb3Ro
ZXIgZnJhbWV3b3JrcwogKGFsbG93IG1hY2gtbG9va3VwCiAgICAgICAgKGdsb2JhbC1uYW1lICJj
b20uYXBwbGUuRGlza0FyYml0cmF0aW9uLmRpc2thcmJpdHJhdGlvbmQiKQo=
</data>
<flag name="commit-queue"
          id="241600"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218243</attachid>
            <date>2013-12-02 17:08:20 -0800</date>
            <delta_ts>2013-12-02 17:54:26 -0800</delta_ts>
            <desc>[PATCH] Combined For Bots 2</desc>
            <filename>for-bots-2.patch</filename>
            <type>text/plain</type>
            <size>200116</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5oCmluZGV4IDEyNjdiN2EuLmY5ZDdjZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaApAQCAtMTY0LDYgKzE2NCwxMiBA
QCBPQkpDX1ZJU0lCTEUKICovCiBAcHJvcGVydHkocmVhZG9ubHksIHJldGFpbikgSlNWaXJ0dWFs
TWFjaGluZSAqdmlydHVhbE1hY2hpbmU7CiAKKy8qIQorQHByb3BlcnR5CitAZGlzY3Vzc2lvbiBO
YW1lIG9mIHRoZSBKU0NvbnRleHQuIEV4cG9zZWQgd2hlbiByZW1vdGUgZGVidWdnaW5nIHRoZSBj
b250ZXh0LgorKi8KK0Bwcm9wZXJ0eShjb3B5KSBOU1N0cmluZyAqbmFtZTsKKwogQGVuZAogCiAv
KiEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggYmM4ZmMxYS4uNDdk
Y2IwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTE2Niw2ICsx
NjYsMjIgQEAKICAgICByZXR1cm4gbV92aXJ0dWFsTWFjaGluZTsKIH0KIAorLSAoTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTR2xvYmFsQ29udGV4dENvcHlOYW1l
KG1fY29udGV4dCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
cmV0dXJuIFsoTlNTdHJpbmcgKilKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBuYW1lKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZUpTID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZT
dHJpbmcoKENGU3RyaW5nUmVmKVtuYW1lIGNvcHldKTsKKyAgICBKU0dsb2JhbENvbnRleHRTZXRO
YW1lKG1fY29udGV4dCwgbmFtZUpTKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UobmFtZUpTKTsKK30K
KwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gSlNDb250ZXh0KFN1YnNjcmlwdFN1cHBvcnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggZjBhNDM1Yy4u
ODFiNjFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApA
QCAtMjEzLDYgKzIxMywzNyBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFs
Q29udGV4dChKU0NvbnRleHRSZWYgY3R4KQogICAgIHJldHVybiB0b0dsb2JhbFJlZihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSk7CiB9CiAKK0pTU3RyaW5nUmVmIEpT
R2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCit7CisgICAgaWYg
KCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBBUElFbnRy
eVNoaW0gZW50cnlTaGltKGV4ZWMpOworCisgICAgU3RyaW5nIG5hbWUgPSBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCktPm5hbWUoKTsKKyAgICBpZiAobmFtZS5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKS5sZWFr
UmVmKCk7Cit9CisKK3ZvaWQgSlNHbG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRS
ZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7
CisKKyAgICBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnNldE5hbWUobmFtZSA/IG5hbWUt
PnN0cmluZygpIDogU3RyaW5nKCkpOworfQorCisKIGNsYXNzIEJhY2t0cmFjZUZ1bmN0b3Igewog
cHVibGljOgogICAgIEJhY2t0cmFjZUZ1bmN0b3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5z
aWduZWQgcmVtYWluaW5nQ2FwYWNpdHlGb3JGcmFtZUNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuaAppbmRleCA3NzA1OTU1Li5lYWI3YTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgKQEAgLTEzMyw2ICsxMzMsMjQgQEAgSlNf
RVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBj
dHgpIEFWQUlMQUJMRV9JTl9XRUIKICovCiBKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpT
Q29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEw
XzcsIDRfMCk7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyBhIGNvcHkgb2YgdGhl
IG5hbWUgb2YgYSBjb250ZXh0LgorQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHdob3Nl
IG5hbWUgeW91IHdhbnQgdG8gZ2V0LgorQHJlc3VsdCBUaGUgbmFtZSBmb3IgY3R4LgorQGRpc2N1
c3Npb24gQSBKU0dsb2JhbENvbnRleHQncyBuYW1lIGlzIGV4cG9zZWQgZm9yIHJlbW90ZSBkZWJ1
Z2dpbmcgdG8gbWFrZSBpdAorZWFzaWVyIHRvIGlkZW50aWZ5IHRoZSBjb250ZXh0IHlvdSB3b3Vs
ZCBsaWtlIHRvIGF0dGFjaCB0by4KKyovCitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNHbG9iYWxD
b250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCk7CisKKy8qIQorQGZ1bmN0aW9u
CitAYWJzdHJhY3QgU2V0cyB0aGUgcmVtb3RlIGRlYnVnZ2luZyBuYW1lIGZvciBhIGNvbnRleHQu
CitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBuYW1lLgor
QHBhcmFtIG5hbWUgVGhlIHJlbW90ZSBkZWJ1Z2dpbmcgbmFtZSB0byBzZXQgb24gY3R4LgorKi8K
K0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldE5hbWUoSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgbmFtZSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiNDQzYmUyLi41NTY3ZGRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzEgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNo
IFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEph
dmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtlIEpTQ29udGV4dCBAY2xhc3MgYW5kIEphdmFTY3JpcHRDb3JlOjpKU0NvbnRleHRS
ZWYKKyAgICAgICAgIkphdmFTY3JpcHQiIFJlbW90ZSBEZWJ1Z2dhYmxlcy4KKworICAgICAgICAq
IEFQSS9KU0NvbnRleHQuaDoKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAo
LVtKU0NvbnRleHQgbmFtZV0pOgorICAgICAgICAoLVtKU0NvbnRleHQgc2V0TmFtZTpdKToKKyAg
ICAgICAgT2JqQyBBUEkgdG8gZW5hYmxlL2Rpc2FibGUgSlNDb250ZXh0IHJlbW90ZSBpbnNwZWN0
aW9uIGFuZCBnaXZlIGEgbmFtZS4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuaDoKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dEdl
dE5hbWUpOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0U2V0TmFtZSk6CisgICAgICAgIEMgQVBJ
IHRvIGdpdmUgYSBKU0NvbnRleHQgYSBuYW1lLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNldE5hbWUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6Om5hbWUpOgorICAgICAgICBTaGFyZWQgaGFuZGxpbmcgb2YgdGhlIEFQSXMgYWJvdmUuCisK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OkpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6bmFtZSk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzY29ubmVjdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90
ZUZyb250ZW5kKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5o
OiBBZGRlZC4KKyAgICAgICAgU3R1YiBmb3IgdGhlIGFjdHVhbCByZW1vdGUgZGVidWdnaW5nIGlt
cGxlbWVudGF0aW9uLiBXZSB3aWxsIHB1c2gKKyAgICAgICAgZG93biB0aGUgYXBwcm9wcmlhdGUg
V2ViQ29yZS9pbnNwZWN0b3IgcGVpY2VzIHN1aXRhYmxlIGZvciBkZWJ1Z2dpbmcKKyAgICAgICAg
anVzdCBhIEphdmFTY3JpcHQgY29udGV4dC4KKworMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVt
b3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNj
cmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDYxMworCisgICAgICAgIE1vdmUgdGhlIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSByZW1v
dGUgZGVidWdnZXIgY29ubmVjdGlvbiBtYW5hZ2VtZW50CisgICAgICAgIGludG8gSmF2YVNjcmlw
dENvcmUgKG9yaWdpbmFsbHkgZnJvbSBXZWJLaXQvbWFjKS4gSW5jbHVkZSBlbmhhbmNlbWVudHM6
CisKKyAgICAgICAgICAqIGFsbG93IGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgcmVtb3RlIGRlYnVn
Z2FibGUgdGFyZ2V0cywKKyAgICAgICAgICAgIGV2ZW50dWFsbHkgYXQgbGVhc3QgYSBKU0NvbnRl
eHQsIFdlYlZpZXcsIFdLVmlldy4KKyAgICAgICAgICAqIGFsbG93IGRlYnVnZ2FibGVzIHRvIGJl
IHJlZ2lzdGVyZWQgYW5kIGRlYnVnZ2VkIG9uIGFueSB0aHJlYWQuIFVubGlrZQorICAgICAgICAg
ICAgV2ViVmlld3MsIEpTQ29udGV4dHMgbWF5IGJlIHJ1biBlbnRpcmVseSBvZmYgb2YgdGhlIG1h
aW4gdGhyZWFkLgorICAgICAgICAgICogbW92ZSB0aGUgcmVtb3RlIGNvbm5lY3Rpb24gKFhQQyBj
b25uZWN0aW9uKSBpdHNlbGYgb2ZmIG9mIHRoZSBtYWluIHRocmVhZCwKKyAgICAgICAgICAgIGl0
IGRvZXNuJ3QgbmVlZCB0byBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlLmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6flJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlOjppbml0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6dXBkYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluZm8pOgorICAgICAgICBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlIGRlZmluZXMgYSBkZWJ1Z2dhYmxlIHRhcmdldC4gQXMgbG9uZyBhcworICAg
ICAgICBzb21ldGhpbmcgY3JlYXRlcyBhIGRlYnVnZ2FibGUgYW5kIGlzIHNldCB0byBhbGxvdyBy
ZW1vdGUgaW5zcGVjdGlvbgorICAgICAgICBpdCB3aWxsIGJlIGxpc3RlZCBpbiByZW1vdGUgZGVi
dWdnZXJzLiBGb3IgdGhlIGRpZmZlcmVudCB0eXBlcyBvZgorICAgICAgICBkZWJ1Z2dhYmxlcyAo
SmF2YVNjcmlwdCBhbmQgV2ViKSB0aGVyZSBpcyBkaWZmZXJlbnQgYmFzaWMgaW5mb3JtYXRpb24K
KyAgICAgICAgdGhhdCBtYXkgYmUgbGlzdGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsOjp+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKToKKyAgICAgICAg
VGhlIG9ubHkgdGhpbmcgYSBkZWJ1Z2dhYmxlIG5lZWRzIGZvciByZW1vdGUgZGVidWdnaW5nIGlz
IGFuCisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBhIHdheSB0byBzZW5kIG1lc3Nh
Z2VzIHRvIGEgcmVtb3RlIGZyb250ZW5kLgorICAgICAgICBUaGlzIGNsYXNzIHByb3ZpZGVzIHRo
YXQgbWV0aG9kLCBhbmQgaXMgdmVuZGVkIHRvIHRoZQorICAgICAgICBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlIHdoZW4gYSByZW1vdGUgY29ubmVjdGlvbiBpcyBzZXR1cC4KKworICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOiBBZGRlZC4KKyAgICAgICAgU2luZ2xl
dG9uLCBjcmVhdGVkIGF0IGxlYXN0IHdoZW4gdGhlIGZpcnN0IERlYnVnZ2FibGUgaXMgY3JlYXRl
ZC4KKyAgICAgICAgVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBsaXN0IG9mIGRlYnVnZ2FibGVzLCBh
bnkgY29ubmVjdGlvbiB0byBhCisgICAgICAgIHJlbW90ZSBkZWJ1Z2dlciBwcm94eSAoWFBDIHNl
cnZpY2UgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiKS4KKworICAgICAgICAoSW5zcGVjdG9yOjpk
aXNwYXRjaEFzeW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6bmV4dEF2YWlsYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGUpOgorICAgICAgICBEZWJ1
Z2dhYmxlIG1hbmFnZW1lbnQuIFdoZW4gZGVidWdnYWJsZXMgYXJlIGFkZGVkLCByZW1vdmVkLCBv
ciB1cGRhdGVkCisgICAgICAgIHdlIHN0YXNoIGEgY29weSBvZiB0aGUgZGVidWdnYWJsZSBpbmZv
cm1hdGlvbiBhbmQgcHVzaCBhbiB1cGRhdGUgdG8KKyAgICAgICAgZGVidWdnZXJzLiBTdGFzaGlu
ZyBhIGNvcHkgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBSZW1vdGVJbnNwZWN0b3IKKyAgICAg
ICAgaXMgYSB0aHJlYWQgc2FmZSB3YXkgdG8gYXZvaWQgd2Fsa2luZyBvdmVyIGFsbCBkZWJ1Z2dh
YmxlcyB0byBnYXRoZXIKKyAgICAgICAgdGhlIGluZm9ybWF0aW9uIHdoZW4gaXQgaXMgbmVlZGVk
LgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0b3ApOgorICAgICAgICBSdW50aW1lIEFQ
SSB0byBlbmFibGUgLyBkaXNhYmxlIHRoZSBmZWF0dXJlLgorCisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nTm93KToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ1Nvb24pOgorICAgICAgICBQdXNoaW5nIGEg
bGlzdGluZyB0byByZW1vdGUgZGVidWdnZXJzLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVz
c2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlv
bkZhaWxlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVj
dGlvblVuaGFuZGxlZE1lc3NhZ2UpOgorICAgICAgICBYUEMgc2V0dXAsIHNlbmQsIGFuZCByZWNl
aXZlIGhhbmRsaW5nLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBk
YXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKToKKyAgICAgICAgQXBwbGljYXRpb25zIGJlaW5nIGRl
YnVnZ2VkIG1heSB3YW50IHRvIGtub3cgd2hlbiBhIGRlYnVnCisgICAgICAgIHNlc3Npb24gaXMg
YWN0aXZlLiBUaGlzIHByb3ZpZGVzIHRoYXQgbm90aWZpY2F0aW9uLgorCisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldExpc3RpbmdN
ZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZElu
ZGljYXRlTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVj
ZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UpOgorICAgICAgICBEaXNwYXRjaGluZyBpbmNvbWlu
ZyByZW1vdGUgZGVidWdnaW5nIHByb3RvY29sIG1lc3NhZ2VzLgorICAgICAgICBUaGVzZSBhcmUg
d3JhcHBpbmcgYWJvdmUgdGhlIGluc3BlY3RvciBwcm90b2NvbCBtZXNzYWdlcy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg6IEFkZGVkLgor
ICAgICAgICBQcm90b2NvbCBtZXNzYWdlcyBhbmQgZGljdGlvbmFyeSBrZXlzIGluc2lkZSB0aGUg
bWVzc2FnZXMuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm86OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24ubW06IEFkZGVkLgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVuIHRo
ZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGUuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb246OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246On5SZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbik6CisgICAgICAgIEFsbG93IGZvciBkaXNwYXRjaGlu
ZyBtZXNzYWdlcyBvbiBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzIG9uIGEgZGlzcGF0Y2hfcXVldWUK
KyAgICAgICAgaW5zdGVhZCBvZiB0aGUgbWFpbiBxdWV1ZS4KKworICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGVzdGluYXRpb24pOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y29u
bmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBOZWVkZWQgaW4gdGhlIHJlbW90ZSBkZWJ1Z2dp
bmcgcHJvdG9jb2wgdG8gaWRlbnRpZnkgdGhlIHJlbW90ZSBkZWJ1Z2dlci4KKworICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0Y2hT
eW5jT25EZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXApOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
Y2xvc2VGcm9tRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICBUaGUgY29ubmVjdGlvbiBpcyBhIHRoaW4g
Y2hhbm5lbCBiZXR3ZWVuIHRoZSB0d28gc2lkZXMgdGhhdCBjYW4gYmUgY2xvc2VkCisgICAgICAg
IGZyb20gZWl0aGVyIHNpZGUsIHNvIHRoZXJlIGlzIHNvbWUgbG9naWMgYXJvdW5kIG11bHRpLXRo
cmVhZGVkIGFjY2Vzcy4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50Ojp+Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06IEFkZGVkLgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24pOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2Fn
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVu
IHRoZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhbiBYUEMgc2VydmljZQorICAgICAg
ICBuYW1lZCAiY29tLmFwcGxlLndlYmluc3BlY3RvciIuIFRoaXMgaGFuZGxlcyBzZXJpYWxpemF0
aW9uIG9mIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1lc3NhZ2VzIHRvIGFuZCBmcm9tIHRoZSBz
ZXJ2aWNlLiBUaGUgcmVjZWl2aW5nIGlzIGRvbmUgb24gYSBub24tbWFpbiBxdWV1ZS4KKwogMjAx
My0xMi0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3Jl
cyB0byBsb2NhbCBjYXB0dXJlZCB2YXJpYWJsZXMgc2hvdWxkIGJlIGludGVyY2VwdGVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNDJhYTY0My4uNGU3Mzc3NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNTksNiArNTksNyBAQCBqYXZhc2NyaXB0
Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rp
c2Fzc2VtYmxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bCBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAgXAorICAgIC1JJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdCBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50IFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMTFiZDA5NS4u
MTg1MTU3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTYxMCw2ICs2MTAsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdXRmX29sZC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaWN1L3VuaWNvZGUvdXR5cGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5p
Y29kZS91dmVyc2lvbi5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQWJzdHJhY3RQQy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9B
YnN0cmFjdFBDLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRD
YWxsLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggYzM2YTg3
OS4uM2VmNDI4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC05
OTQsNiArOTk0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vha1NldC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0SW5saW5lcy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0Lmgi
IC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxB
YnN0cmFjdFBDLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxD
YWNoZWRDYWxsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxD
YWxsRnJhbWUuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycwppbmRleCA4MDEzMmYyLi5iMzQ3YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0yNSw2ICsyNSw5IEBACiAgICAg
PEZpbHRlciBJbmNsdWRlPSJoZWFwIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntiZDQ5ZTVj
Zi05NWQ2LTQxNTEtYjI4Ni04ODM3Y2NkMzQ3ZmF9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwv
RmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iaW5zcGVjdG9yIj4KKyAgICAgIDxVbmlxdWVJ
ZGVudGlmaWVyPnswOWFlMDlkYS0xMjM5LTAwZWEtOGRmZS05MDg3YWUxMjNiYmV9PC9VbmlxdWVJ
ZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iaW50ZXJwcmV0
ZXIiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezEwZDk3ZWEzLTJhZjktNDg5Yy1hNTRlLWQ2
OWVmMmU0Y2EwYX08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0xNzAwLDYg
KzE3MDMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJT
dXBwb3J0LmgiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5j
bHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFic3RyYWN0UEMu
aCI+CiAgICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY2NTg1NWYuLmU4M2ZmN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODYsNiArODg2LDE4IEBACiAJCUExNzEyQjQx
MTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBL
ZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
MUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0MxNTZFRUQzQjAw
NTY2Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJN
NjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1OTQ1NThGMTgyNDVF
RkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1NThFMTgyNDVFREUwMENDMzg0
MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKKwkJQTU5NDU1OTIxODI0
NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5MDE4MjQ3NDQ3MDBDQzM4
NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKKwkJQTU5NDU1OTMxODI0
NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OTExODI0NzQ0NzAwQ0MzODQz
IC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oICovOyB9OworCQlBNTk0NTU5NTE4MjQ3OUVC
MDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyog
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUlu
c3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1QkExNUU5MTgyMzQwQjMw
MEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5z
cGVjdG9yLm1tICovOyB9OworCQlBNUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5z
cGVjdG9yQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUJBMTVFMzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3Rh
bnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QTVCQTE1RUIxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24uaCAqLzsgfTsKKwkJQTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tICovOyB9OworCQlBNUJBMTVFRDE4MjM0MEI0MDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLzsgfTsKKwkJQTVCQTE1RUUxODIzNDBC
NDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNzE4MjM0MEIzMDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLzsgfTsKKwkJQTVCQTE1RjAx
ODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUVGMTgyMzQ1QUYwMEE4
MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcwMDg3MzkxN0NCRTg1MzAwQzNFNjQzIC8q
IE1hcENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAg
Ki87IH07CiAJCUE3MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3MzgxN0NC
RTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggKi87IH07CiAJCUE3MDA4NzNEMTdDQkU4
RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3Rv
dHlwZS5jcHAgKi87IH07CkBAIC0yMTk2LDYgKzIyMDgsMTggQEAKIAkJQTE3MTJCM0ExMUM3QjIx
MjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlZ0V4cENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUuY3BwOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5NDU1
OTAxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4
NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC5oOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkg
LyogUmVtb3RlSW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJl
bW90ZUluc3BlY3Rvci5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTIxODIzNDBCMzAwQTgyRTY5
IC8qIFJlbW90ZUluc3BlY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFJlbW90ZUluc3BlY3Rvci5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFMzE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oOyBwYXRoID0gaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg7IHBhdGggPSBpbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE1QkExNUU1MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tOyBwYXRo
ID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5
IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oOyBwYXRoID0gaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE1QkExNUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTVCQTE1RUYxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZS5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDA4NzM3MTdDQkU4NTMw
MEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNYXBDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE3MDA4NzM4MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXBDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNzAwODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcFByb3RvdHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjk0LDYgKzI3MTgsNyBAQAogCQkJ
CTA4NjdENjlBRkU4NDAyOEZDMDJBQUMwNyAvKiBGcmFtZXdvcmtzICovLAogCQkJCTBGRUEwOUZD
MTcwNTEzN0YwMEJCNzIyQyAvKiBmdGwgKi8sCiAJCQkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1
IC8qIGhlYXAgKi8sCisJCQkJQTVCQTE1REYxODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAq
LywKIAkJCQkxNDI5RDc3QTBFRDIwRDczMDBCODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8sCiAJCQkJ
MTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLywKIAkJCQkwRjQ2ODA5QzE0QkE3RjRE
MDBCRkUyNzIgLyogbGxpbnQgKi8sCkBAIC0zNDc3LDYgKzM1MDIsOCBAQAogCQkJCTBGMkI2NkM4
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGlu
ZXMuaCAqLywKIAkJCQkxNERFMEQ2ODBEMDI0MzE0MDBBQUNDQTIgLyogSlNHbG9iYWxPYmplY3Qu
Y3BwICovLAogCQkJCUE4RTg5NDMzMENEMDYwM0YwMDM2NzE3OSAvKiBKU0dsb2JhbE9iamVjdC5o
ICovLAorCQkJCUE1OTQ1NTkwMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVn
Z2FibGUuY3BwICovLAorCQkJCUE1OTQ1NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9i
amVjdERlYnVnZ2FibGUuaCAqLywKIAkJCQlCQzc1NkZDNjBFMjAzMUIyMDBERTdEMTIgLyogSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwICovLAogCQkJCUJDNzU2RkM3MEUyMDMxQjIwMERFN0Qx
MiAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oICovLAogCQkJCTBGMkI2NkNBMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0ludDE2QXJyYXkuaCAqLywKQEAgLTQxNDUsNiArNDE3MiwzMSBAQAogCQkJ
cGF0aCA9IGJ5dGVjb2RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTVC
QTE1REYxODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTVCQTE1RTAxODIzNDA5RDAwQTgyRTY5IC8qIHJl
bW90ZSAqLywKKwkJCQlBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmggKi8sCisJCQkpOworCQkJbmFtZSA9IGluc3BlY3RvcjsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUE1QkExNUUwMTgyMzQwOUQwMEE4MkU2OSAvKiByZW1v
dGUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1QkEx
NUUxMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCAqLywKKwkJCQlBNUJBMTVF
MjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tICovLAorCQkJCUE1QkExNUUz
MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCAqLywKKwkJCQlB
NUJBMTVFRjE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oICov
LAorCQkJCUE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlLmNwcCAqLywKKwkJCQlBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCAqLywKKwkJCQlBNUJBMTVFNTE4MjM0MEIzMDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gKi8sCisJCQkJQTVC
QTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAq
LywKKwkJCQlBNUJBMTVFNzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbi5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gcmVtb3RlOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQyMTUsNiArNDI2Nyw3IEBACiAJ
CQkJODY2NzM5RDIxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0ODE2RTFDMTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxOEMzRUMwRTE2RjVDRDAwQjM0NDYwIC8qIEJvb2xlYW5PYmplY3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE1QkExNUVBMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJ
bnNwZWN0b3JDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk3MTVFRDhFNDYw
MEYxNjdCMiAvKiBCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk4MTVFRDhF
NDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIx
QzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC00Mjg1LDYgKzQzMzgsNyBAQAogCQkJCTBGMTYwMTVFMTU2MTk4QzkwMEMyNTg3QyAv
KiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjA1QzNCNDE2ODNDRjkyMDBCQUY0NUIgLyogREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2Mzk0ODUxNUU0ODExQjAwNkE1OTdDIC8qIERGR0FycmF5
TW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RUIxODIzNDBCNDAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0Q5QTI5NTE3QTBCQzc0MDBFRTI2MTggLyogREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY3MTRDQTUxNkVBOTJGMjAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1By
b3BhZ2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIwMTc2MTQzRkNEM0IwMDY4
Qjc3QyAvKiBERkdCYXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLywKQEAgLTQzNjAsNiArNDQxNCw3
IEBACiAJCQkJMEZEOEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVh
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIg
LyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkw
QzdGIC8qIERGR09TUkV4aXRCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUJBMTVFRDE4MjM0
MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGQjkyMUMxNkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlv
bkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBE
RkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMw
MDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAt
NDQxOCw2ICs0NDczLDcgQEAKIAkJCQkwRkVBMEEwODE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJi
cmV2aWF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJD
IC8qIEZUTEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYxNzA4QjAw
NzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBBMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBh
YmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAv
KiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBDMTcwNTEzREIw
MEJCNzIyQyAvKiBGVExDb21waWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ1MTAsNiArNDU2Niw3
IEBACiAJCQkJODZDQ0VGREUwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9y
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERp
c2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5
IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4
MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkIxNEUxRjE4MTI0QUNFMDA5QjZCNEQgLyogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKQEAgLTQ2ODEsNiArNDczOCw3IEBACiAJCQkJMTREMkYzREIxMzlG
NEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJENkYx
MjEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjEx
MjJFMzE1REQ5QUIzMDA3OTBFM0EgLyogTWFya1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTU5NDU1OTUxODI0NzlFQjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYxMkU0Q0QxNTIzODlFQzAwQzgzNkJFIC8qIE1hdGNo
UmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzQzBFMTZGNUNEMDBCMzQ0NjAgLyog
TWF0aE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNBNDBDMjAwRDQyMkYz
IC8qIE1lbW9yeVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLApAQCAtNDg0OSw2ICs0OTA3LDcg
QEAKIAkJCQkxNDJFMzEzQzEzNEZGMEE2MDBBRkFEQjUgLyogV2Vhay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTRFODRGOUYxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTRGNzI1NjYxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5k
bGVPd25lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRFODRGQTIxNEVFMUFDQzAwRDZENUQ0IC8q
IFdlYWtJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEJFN0QzMzE3MTM1Q0Y0MDBEMTgwN0Eg
LyogV2Vha0lubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTQ0Myw2ICs1NTAyLDcgQEAKIAkJ
CQlBN0I0OEY0OTBFRTg5MzZGMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NkRCNjQ2NDBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFs
bG9jYXRvckZpeGVkVk1Qb29sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTZBMUQ1MTUwMDFD
RjQwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1
OTQ1NTkyMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZCMTA1ODUxNjc1NDgwRjAwRjhBQjZFIC8qIEV4aXRLaW5kLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTFDMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0
cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMUUxNzA4QjAwNzAwQkI3MjJD
IC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NjA0
LDYgKzU2NjQsNyBAQAogCQkJCTE0NDY5RERFMTA3RUM3RTcwMDY1MDQ0NiAvKiBMb29rdXAuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCNzIzQjIxMkQ3REE0NjAwM0JE
NUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTk0NTU4
RjE4MjQ1RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkVCM0VDRjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3Jv
QXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMx
NzI5OCAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTczMSw2
ICs1NzkyLDkgQEAKIAkJCQlBN0NBM0FFNTE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEU4NEZBMDE0RUUxQUNDMDBENkQ1RDQgLyog
V2Vha1NldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMg
LyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUJBMTVFOTE4
MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlBN0U1
QUIzQTE3OTlFNEIyMDBEMjgzM0QgLyogWDg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyogWWFycklu
dGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCnNp
bWlsYXJpdHkgaW5kZXggNjklCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3Bl
Y3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oCnJlbmFtZSB0byBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCmluZGV4
IGMzMjBmZGUuLmZhMGE4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3Bl
Y3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIwICsyMywxOSBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7Ci1AY2xh
c3MgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb247CisjaWZuZGVmIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbF9oCisjZGVmaW5lIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oCiAK
LUBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCA6IE5TT2JqZWN0IHsKLUBwcml2
YXRlCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKl9yZW1vdGU7Ci0g
ICAgV2ViSW5zcGVjdG9yQ2xpZW50KiBfbG9jYWw7Ci19CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLSsgKFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKiljcmVhdGVDaGFubmVs
Rm9yUGFnZUlkOih1bnNpZ25lZClwYWdlSWQgY29ubmVjdGlvbjooV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb24gKiljb25uZWN0aW9uOworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
LS0gKHZvaWQpY2xvc2VGcm9tTG9jYWxTaWRlOwotLSAodm9pZCljbG9zZUZyb21SZW1vdGVTaWRl
OwotLSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKLS0g
KHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKK2NsYXNzIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKCkgeyB9CisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKK307CiAKLUBlbmQKK30gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjQzZDQwM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKKworI2lmbmRlZiBSZW1vdGVJbnNwZWN0b3JfaAorI2RlZmluZSBSZW1vdGVJbnNw
ZWN0b3JfaAorCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5o
IgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIgorI2ltcG9ydCA8d3Rm
L0ZvcndhcmQuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KKworT0JKQ19DTEFTUyBOU1N0
cmluZzsKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OworCituYW1lc3BhY2UgSW5zcGVjdG9yIHsK
KworY2xhc3MgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTsKK3N0cnVjdCBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlSW5mbzsKKworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVj
dG9yIEZJTkFMIDogcHVibGljIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OkNsaWVudCB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlbW90ZUluc3BlY3RvciYgc2hhcmVkKCk7CisgICAgZnJp
ZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj47CisKKyAgICB2b2lkIHJl
Z2lzdGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7CisgICAgdm9pZCB1
bnJlZ2lzdGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7CisgICAgdm9p
ZCB1cGRhdGVEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqKTsKKyAgICB2b2lk
IHNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZCh1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOworCisgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9l
bmFibGVkOyB9CisgICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKSBjb25zdCB7IHJldHVy
biBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbjsgfQorCisgICAgdm9pZCBzdGFydCgpOworICAgIHZv
aWQgc3RvcCgpOworCitwcml2YXRlOgorICAgIFJlbW90ZUluc3BlY3RvcigpOworCisgICAgdW5z
aWduZWQgbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIoKTsKKworICAgIHZvaWQgc2V0dXBYUENDb25u
ZWN0aW9uSWZOZWVkZWQoKTsKKworICAgIE5TRGljdGlvbmFyeSAqbGlzdGluZ0ZvckRlYnVnZ2Fi
bGUoY29uc3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8mKSBjb25zdDsKKyAgICB2b2lk
IHB1c2hMaXN0aW5nTm93KCk7CisgICAgdm9pZCBwdXNoTGlzdGluZ1Nvb24oKTsKKworICAgIHZv
aWQgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgeHBj
Q29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwg
TlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25Vbmhh
bmRsZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3Qp
IE9WRVJSSURFOworCisgICAgdm9pZCByZWNlaXZlZFNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkg
KnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkRGF0YU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1
c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZERpZENsb3NlTWVzc2FnZShOU0RpY3Rpb25hcnkg
KnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkR2V0TGlzdGluZ01lc3NhZ2UoTlNEaWN0aW9u
YXJ5ICp1c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZEluZGljYXRlTWVzc2FnZShOU0RpY3Rp
b25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdl
KE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworCisgICAgLy8gRGVidWdnYWJsZXMgY2FuIGJlIHJl
Z2lzdGVyZWQgZnJvbSBhbnkgdGhyZWFkIGF0IGFueSB0aW1lLgorICAgIC8vIEFueSBkZWJ1Z2dh
YmxlIGNhbiBzZW5kIG1lc3NhZ2VzIG92ZXIgdGhlIFhQQyBjb25uZWN0aW9uLgorICAgIC8vIFNv
IGxvY2sgYWNjZXNzIHRvIGFsbCBtYXBzIGFuZCBzdGF0ZSBhcyB0aGV5IGNhbiBjaGFuZ2UKKyAg
ICAvLyBmcm9tIGFueSB0aHJlYWQuCisgICAgTXV0ZXggbV9sb2NrOworCisgICAgSGFzaE1hcDx1
bnNpZ25lZCwgc3RkOjpwYWlyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqLCBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlSW5mbz4+IG1fZGVidWdnYWJsZU1hcDsKKyAgICBIYXNoTWFwPHVuc2ln
bmVkLCBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+PiBtX2Nvbm5l
Y3Rpb25NYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24+IG1feHBjQ29ubmVjdGlvbjsKKyAgICB1bnNpZ25lZCBtX25leHRBdmFpbGFibGVJZGVudGlm
aWVyOworICAgIGludCBtX25vdGlmeVRva2VuOworICAgIGJvb2wgbV9lbmFibGVkOworICAgIGJv
b2wgbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247CisgICAgYm9vbCBtX3B1c2hTY2hlZHVsZWQ7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorCisjZW5kaWYgLy8gV2ViSW5zcGVjdG9yU2VydmVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzliNDFkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yLm1tCkBAIC0wLDAgKzEsNDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVJ
bnNwZWN0b3IuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW1wb3J0ICJJ
bml0aWFsaXplVGhyZWFkaW5nLmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMu
aCIKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCIKKyNpbXBvcnQgPG5vdGlm
eS5oPgorI2ltcG9ydCA8eHBjL3hwYy5oPgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL01haW5UaHJlYWQu
aD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZPUk0oSU9TKQor
I2ltcG9ydCA8d3RmL2lvcy9XZWJDb3JlVGhyZWFkLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIElu
c3BlY3RvciB7CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNoQXN5bmNPblF1ZXVlU2FmZUZvckFueURl
YnVnZ2FibGUodm9pZCAoXmJsb2NrKSgpKQoreworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAo
V2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCAmJiBXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKCkp
IHsKKyAgICAgICAgV2ViQ29yZVdlYlRocmVhZFJ1bihibG9jayk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYKKworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIGJsb2NrKTsKK30KKworUmVtb3RlSW5zcGVjdG9yJiBSZW1vdGVJbnNwZWN0b3I6OnNo
YXJlZCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj4gc2hh
cmVkOworCisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOworICAgIGRpc3BhdGNoX29u
Y2UoJm9uY2UsIF57CisgICAgICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgICAg
ICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisgICAgICAgIHNoYXJlZC5nZXQoKS5zdGFy
dCgpOworICAgIH0pOworCisgICAgcmV0dXJuIHNoYXJlZDsKK30KKworUmVtb3RlSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3IoKQorICAgIDogbV9uZXh0QXZhaWxhYmxlSWRlbnRpZmllcigxKQor
ICAgICwgbV9ub3RpZnlUb2tlbigwKQorICAgICwgbV9lbmFibGVkKGZhbHNlKQorICAgICwgbV9o
YXNBY3RpdmVEZWJ1Z1Nlc3Npb24oZmFsc2UpCisgICAgLCBtX3B1c2hTY2hlZHVsZWQoZmFsc2Up
Cit7Cit9CisKK3Vuc2lnbmVkIFJlbW90ZUluc3BlY3Rvcjo6bmV4dEF2YWlsYWJsZUlkZW50aWZp
ZXIoKQoreworICAgIHVuc2lnbmVkIG5leHRWYWxpZElkZW50aWZpZXI7CisgICAgZG8geworICAg
ICAgICBuZXh0VmFsaWRJZGVudGlmaWVyID0gbV9uZXh0QXZhaWxhYmxlSWRlbnRpZmllcisrOwor
ICAgIH0gd2hpbGUgKCFuZXh0VmFsaWRJZGVudGlmaWVyIHx8IG5leHRWYWxpZElkZW50aWZpZXIg
PT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIHx8IG1fZGVidWdnYWJsZU1h
cC5jb250YWlucyhuZXh0VmFsaWRJZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIG5leHRWYWxpZElk
ZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWdpc3RlckRlYnVnZ2FibGUo
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSkKK3sKKyAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9sb2NrKTsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBuZXh0QXZhaWxh
YmxlSWRlbnRpZmllcigpOworICAgIGRlYnVnZ2FibGUtPnNldElkZW50aWZpZXIoaWRlbnRpZmll
cik7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fZGVidWdnYWJsZU1hcC5zZXQoaWRlbnRpZmllciwg
c3RkOjptYWtlX3BhaXIoZGVidWdnYWJsZSwgZGVidWdnYWJsZS0+aW5mbygpKSk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgIGlmIChkZWJ1Z2dh
YmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkpCisgICAgICAgIHB1c2hMaXN0aW5nU29vbigp
OworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlckRlYnVnZ2FibGUoUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBkZWJ1Z2dhYmxlLT5pZGVu
dGlmaWVyKCk7CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBi
b29sIHdhc1JlbW92ZWQgPSBtX2RlYnVnZ2FibGVNYXAucmVtb3ZlKGlkZW50aWZpZXIpOworICAg
IEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7CisKKyAgICBpZiAoUmVmUHRy
PFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gbV9jb25u
ZWN0aW9uTWFwLnRha2UoaWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmNsb3NlRnJv
bURlYnVnZ2FibGUoKTsKKworICAgIGlmIChkZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxv
d2VkKCkpCisgICAgICAgIHB1c2hMaXN0aW5nU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6dXBkYXRlRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dh
YmxlKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgdW5zaWduZWQg
aWRlbnRpZmllciA9IGRlYnVnZ2FibGUtPmlkZW50aWZpZXIoKTsKKyAgICBpZiAoIWlkZW50aWZp
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9kZWJ1Z2dhYmxlTWFw
LnNldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfcGFpcihkZWJ1Z2dhYmxlLCBkZWJ1Z2dhYmxlLT5p
bmZvKCkpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdC5pc05ld0VudHJ5KTsK
KworICAgIGlmIChkZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkpCisgICAgICAg
IHB1c2hMaXN0aW5nU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3Nh
Z2VUb1JlbW90ZUZyb250ZW5kKHVuc2lnbmVkIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmICghbV94
cGNDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8UmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0
KGlkZW50aWZpZXIpOworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IEB7CisgICAgICAgIFdJUlJhd0RhdGFLZXk6IFtz
dGF0aWNfY2FzdDxOU1N0cmluZyAqPihtZXNzYWdlKSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ10sCisgICAgICAgIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5OiBjb25u
ZWN0aW9uLT5jb25uZWN0aW9uSWRlbnRpZmllcigpLAorICAgICAgICBXSVJEZXN0aW5hdGlvbktl
eTogY29ubmVjdGlvbi0+ZGVzdGluYXRpb24oKQorICAgIH07CisKKyAgICBtX3hwY0Nvbm5lY3Rp
b24tPnNlbmRNZXNzYWdlKFdJUlJhd0RhdGFNZXNzYWdlLCB1c2VySW5mbyk7Cit9CisKK3ZvaWQg
UmVtb3RlSW5zcGVjdG9yOjpzdGFydCgpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisKKyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2VuYWJs
ZWQgPSB0cnVlOworCisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKFdJUlNlcnZpY2VBdmFp
bGFibGVOb3RpZmljYXRpb24sICZtX25vdGlmeVRva2VuLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1
ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeKGludCkgeworICAgICAg
ICBSZW1vdGVJbnNwZWN0b3I6OnNoYXJlZCgpLnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7
CisgICAgfSk7CisKKyAgICBub3RpZnlfcG9zdChXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hlY2tO
b3RpZmljYXRpb24pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RvcCgpCit7CisgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBpZiAoIW1fZW5hYmxlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9lbmFibGVkID0gZmFsc2U7CisKKyAgICBtX3B1c2hTY2hlZHVs
ZWQgPSBmYWxzZTsKKworICAgIGZvciAoYXV0byBpdCA9IG1fY29ubmVjdGlvbk1hcC5iZWdpbigp
LCBlbmQgPSBtX2Nvbm5lY3Rpb25NYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAg
aXQtPnZhbHVlLT5jbG9zZSgpOworICAgIG1fY29ubmVjdGlvbk1hcC5jbGVhcigpOworCisgICAg
dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAgICBpZiAobV94cGNDb25uZWN0aW9u
KSB7CisgICAgICAgIG1feHBjQ29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICAgICAgbV94cGNDb25u
ZWN0aW9uID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBub3RpZnlfY2FuY2VsKG1fbm90aWZ5VG9r
ZW4pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVk
ZWQoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKG1feHBj
Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgeHBjX2Nvbm5lY3Rpb25fdCBjb25u
ZWN0aW9uID0geHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShXSVJYUENNYWNoUG9y
dE5hbWUsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIDApOworICAgIGlmICghY29ubmVjdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV94cGNDb25uZWN0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uPihjb25uZWN0aW9uLCB0aGlzKTsKKyAg
ICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKEAic3luIiwgbmlsKTsgLy8gU2VuZCBhIHNp
bXBsZSBtZXNzYWdlIHRvIGluaXRpYWxpemUgdGhlIFhQQyBjb25uZWN0aW9uLgorICAgIHhwY19y
ZWxlYXNlKGNvbm5lY3Rpb24pOworCisgICAgcHVzaExpc3RpbmdTb29uKCk7Cit9CisKKyNwcmFn
bWEgbWFyayAtIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OkNsaWVudAorCit2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uKiwgTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVz
ZXJJbmZvKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKFtt
ZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSUGVybWlzc2lvbkRlbmllZF0pIHsKKyAgICAg
ICAgc3RvcCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFttZXNzYWdlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6V0lSU29ja2V0RGF0YU1lc3NhZ2VdKQorICAgICAgICByZWNlaXZl
ZERhdGFNZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOldJUlNvY2tldFNldHVwTWVzc2FnZV0pCisgICAgICAgIHJlY2VpdmVkU2V0dXBN
ZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOldJUldlYlBhZ2VDbG9zZU1lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZERpZENsb3NlTWVz
c2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpXSVJBcHBsaWNhdGlvbkdldExpc3RpbmdNZXNzYWdlXSkKKyAgICAgICAgcmVjZWl2ZWRHZXRM
aXN0aW5nTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1
YWxUb1N0cmluZzpXSVJJbmRpY2F0ZU1lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZEluZGljYXRl
TWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0
cmluZzpXSVJDb25uZWN0aW9uRGllZE1lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZENvbm5lY3Rp
b25EaWVkTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZQorICAgICAgICBOU0xvZyhAIlVucmVj
b2duaXplZCBSZW1vdGVJbnNwZWN0b3IgWFBDIE1lc3NhZ2U6ICVAIiwgbWVzc2FnZU5hbWUpOwor
fQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvbkZhaWxlZChSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uKikKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsK
KworICAgIG1fcHVzaFNjaGVkdWxlZCA9IGZhbHNlOworCisgICAgZm9yIChhdXRvIGl0ID0gbV9j
b25uZWN0aW9uTWFwLmJlZ2luKCksIGVuZCA9IG1fY29ubmVjdGlvbk1hcC5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPmNsb3NlKCk7CisgICAgbV9jb25uZWN0aW9u
TWFwLmNsZWFyKCk7CisKKyAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKKworICAg
IGlmIChtX3hwY0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgbV94cGNDb25uZWN0aW9uLT5jbG9zZSgp
OworICAgICAgICBtX3hwY0Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgIH0KK30KKwordm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3QpCit7CisgICAgLy8gSW50ZW50aW9uYWxs
eSBpZ25vcmVkLgorfQorCisjcHJhZ21hIG1hcmsgLSBMaXN0aW5ncworCitOU0RpY3Rpb25hcnkg
KlJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvckRlYnVnZ2FibGUoY29uc3QgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUluZm8mIGRlYnVnZ2FibGVJbmZvKSBjb25zdAoreworICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKmRlYnVnZ2FibGVEZXRhaWxzID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGlj
dGlvbmFyeV07CisKKyAgICBbZGVidWdnYWJsZURldGFpbHMgc2V0T2JqZWN0OkAoZGVidWdnYWJs
ZUluZm8uaWRlbnRpZmllcikgZm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsKKworICAgIHN3
aXRjaCAoZGVidWdnYWJsZUluZm8udHlwZSkgeworICAgIGNhc2UgUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6SmF2YVNjcmlwdDogeworICAgICAgICBOU1N0cmluZyAqbmFtZSA9IGRlYnVnZ2Fi
bGVJbmZvLm5hbWU7CisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6bmFtZSBm
b3JLZXk6V0lSVGl0bGVLZXldOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpXZWI6IHsKKyAgICAgICAgTlNTdHJpbmcgKnVybCA9IGRl
YnVnZ2FibGVJbmZvLnVybDsKKyAgICAgICAgTlNTdHJpbmcgKnRpdGxlID0gZGVidWdnYWJsZUlu
Zm8ubmFtZTsKKyAgICAgICAgW2RlYnVnZ2FibGVEZXRhaWxzIHNldE9iamVjdDp1cmwgZm9yS2V5
OldJUlVSTEtleV07CisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6dGl0bGUg
Zm9yS2V5OldJUlRpdGxlS2V5XTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBpZiAoUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25u
ZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChkZWJ1Z2dhYmxlSW5mby5pZGVudGlmaWVyKSkK
KyAgICAgICAgW2RlYnVnZ2FibGVEZXRhaWxzIHNldE9iamVjdDpjb25uZWN0aW9uLT5jb25uZWN0
aW9uSWRlbnRpZmllcigpIGZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07CisKKyAg
ICBpZiAoZGVidWdnYWJsZUluZm8uaGFzTG9jYWxEZWJ1Z2dlcikKKyAgICAgICAgW2RlYnVnZ2Fi
bGVEZXRhaWxzIHNldE9iamVjdDpAWUVTIGZvcktleTpXSVJIYXNMb2NhbERlYnVnZ2VyS2V5XTsK
KworICAgIHJldHVybiBkZWJ1Z2dhYmxlRGV0YWlsczsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnB1c2hMaXN0aW5nTm93KCkKK3sKKyAgICBBU1NFUlQobV94cGNDb25uZWN0aW9uKTsKKyAg
ICBpZiAoIW1feHBjQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wdXNoU2No
ZWR1bGVkID0gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gcmVz
cG9uc2UgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAg
IGZvciAoYXV0byBpdCA9IG1fZGVidWdnYWJsZU1hcC5iZWdpbigpLCBlbmQgPSBtX2RlYnVnZ2Fi
bGVNYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBjb25zdCBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlSW5mbyYgZGVidWdnYWJsZUluZm8gPSBpdC0+dmFsdWUuc2Vjb25kOwor
ICAgICAgICBpZiAoZGVidWdnYWJsZUluZm8ucmVtb3RlRGVidWdnaW5nQWxsb3dlZCkgeworICAg
ICAgICAgICAgTlNEaWN0aW9uYXJ5ICpkZXRhaWxzID0gbGlzdGluZ0ZvckRlYnVnZ2FibGUoZGVi
dWdnYWJsZUluZm8pOworICAgICAgICAgICAgW3Jlc3BvbnNlIHNldE9iamVjdDpkZXRhaWxzIGZv
cktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiV1IiwgZGVidWdnYWJsZUluZm8uaWRl
bnRpZmllcl1dOworICAgICAgICB9CisgICAgfQorCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURp
Y3Rpb25hcnk+IG91dGdvaW5nID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdKTsKKyAgICBbb3V0Z29pbmcgc2V0T2JqZWN0OnJlc3BvbnNlLmdldCgpIGZvcktleTpX
SVJMaXN0aW5nS2V5XTsKKworICAgIG1feHBjQ29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lSTGlz
dGluZ01lc3NhZ2UsIG91dGdvaW5nLmdldCgpKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnB1c2hMaXN0aW5nU29vbigpCit7CisgICAgaWYgKCFtX3hwY0Nvbm5lY3Rpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChtX3B1c2hTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fcHVzaFNjaGVkdWxlZCA9IHRydWU7CisgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hf
dGltZShESVNQQVRDSF9USU1FX05PVywgMC4wMiAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dl
dF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Cisg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBpZiAobV9wdXNoU2No
ZWR1bGVkKQorICAgICAgICAgICAgcHVzaExpc3RpbmdOb3coKTsKKyAgICB9KTsKK30KKworI3By
YWdtYSBtYXJrIC0gQWN0aXZlIERlYnVnZ2VyIFNlc3Npb25zCisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yOjp1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKQoreworICAgIGJvb2wgaGFzQWN0aXZl
RGVidWdnZXJTZXNzaW9uID0gIW1fY29ubmVjdGlvbk1hcC5pc0VtcHR5KCk7CisgICAgaWYgKGhh
c0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbiA9PSBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24gPSBoYXNBY3RpdmVEZWJ1
Z2dlclNlc3Npb247CisKKyAgICAvLyBGSVhNRTogRXhwb3NlIHNvbWUgd2F5IHRvIGFjY2VzcyB0
aGlzIHN0YXRlIGluIGFuIGVtYmVkZGVyLgorICAgIC8vIExlZ2FjeSBpT1MgV2ViS2l0IDEgaGFk
IGEgbm90aWZpY2F0aW9uLiBUaGlzIHdpbGwgbmVlZCB0byBiZSBzbWFydGVyIHdpdGggV2ViS2l0
Mi4KK30KKworI3ByYWdtYSBtYXJrIC0gUmVjZWl2ZWQgWFBDIE1lc3NhZ2VzCisKK3ZvaWQgUmVt
b3RlSW5zcGVjdG9yOjpyZWNlaXZlZFNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZv
KQoreworICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlBh
Z2VJZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIXBhZ2VJZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyID0gW3VzZXJJbmZvIG9iamVjdEZvcktl
eTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07CisgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRp
ZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNTdHJpbmcgKnNlbmRlciA9IFt1c2VySW5m
byBvYmplY3RGb3JLZXk6V0lSU2VuZGVyS2V5XTsKKyAgICBpZiAoIXNlbmRlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IFtwYWdlSWQgdW5zaWduZWRJbnRW
YWx1ZV07CisgICAgaWYgKG1fY29ubmVjdGlvbk1hcC5jb250YWlucyhpZGVudGlmaWVyKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBpdCA9IG1fZGVidWdnYWJsZU1hcC5maW5kKGlkZW50
aWZpZXIpOworICAgIGlmIChpdCA9PSBtX2RlYnVnZ2FibGVNYXAuZW5kKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEF0dGVtcHQgdG8gY3JlYXRlIGEgY29ubmVjdGlvbi4gVGhpcyBtYXkg
ZmFpbCBpZiB0aGUgcGFnZSBhbHJlYWR5IGhhcyBhbiBpbnNwZWN0b3Igb3IgaWYgaXQgZGlzYWxs
b3dzIGluc3BlY3Rpb24uCisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJs
ZSA9IGl0LT52YWx1ZS5maXJzdDsKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyBk
ZWJ1Z2dhYmxlSW5mbyA9IGl0LT52YWx1ZS5zZWNvbmQ7CisgICAgUmVmUHRyPFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gYWRvcHRSZWYobmV3IFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKGRlYnVnZ2FibGUsIGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzZW5kZXIsIGRlYnVnZ2FibGVJbmZvLnR5cGUpKTsKKyAgICBpZiAoIWNvbm5lY3Rp
b24tPnNldHVwKCkpIHsKKyAgICAgICAgY29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1fY29ubmVjdGlvbk1hcC5zZXQoaWRlbnRpZmllciwgY29ubmVj
dGlvbi5yZWxlYXNlKCkpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisK
KyAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2Vp
dmVkRGF0YU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBOU051bWJlciAq
cGFnZUlkID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Cisg
ICAgaWYgKCFwYWdlSWQpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHBhZ2VJZGVu
dGlmaWVyID0gW3BhZ2VJZCB1bnNpZ25lZEludFZhbHVlXTsKKyAgICBSZWZQdHI8UmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAu
Z2V0KHBhZ2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIE5TRGF0YSAqZGF0YSA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSU29ja2V0
RGF0YUtleV07CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtZXNzYWdlID0gYWRvcHROUyhbW05T
U3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ10pOworICAgIGNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UuZ2V0
KCkpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2Uo
TlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBOU051bWJlciAqcGFnZUlkID0gW3VzZXJJ
bmZvIG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07CisgICAgaWYgKCFwYWdlSWQp
CisgICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9
IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOworICAg
IGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2ln
bmVkIGlkZW50aWZpZXIgPSBbcGFnZUlkIHVuc2lnbmVkSW50VmFsdWVdOworICAgIFJlZlB0cjxS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG1fY29ubmVj
dGlvbk1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIVtjb25uZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbklkZW50aWZpZXIoKV0pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGNvbm5lY3Rpb24tPmNsb3NlKCk7CisgICAgbV9jb25uZWN0aW9uTWFwLnJlbW92ZShpZGVu
dGlmaWVyKTsKKworICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOworCisgICAgcHVz
aExpc3RpbmdTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldExp
c3RpbmdNZXNzYWdlKE5TRGljdGlvbmFyeSAqKQoreworICAgIHB1c2hMaXN0aW5nTm93KCk7Cit9
CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEluZGljYXRlTWVzc2FnZShOU0RpY3Rp
b25hcnkgKnVzZXJJbmZvKQoreworICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbdXNlckluZm8gb2Jq
ZWN0Rm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIXBhZ2VJZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IFtwYWdlSWQgdW5zaWduZWRJ
bnRWYWx1ZV07CisgICAgQk9PTCBpbmRpY2F0ZUVuYWJsZWQgPSBbW3VzZXJJbmZvIG9iamVjdEZv
cktleTpXSVJJbmRpY2F0ZUVuYWJsZWRLZXldIGJvb2xWYWx1ZV07CisKKyAgICBkaXNwYXRjaEFz
eW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKF57CisgICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX2xvY2spOworCisgICAgICAgIGF1dG8gaXQgPSBtX2RlYnVnZ2FibGVNYXAuZmluZChp
ZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGl0ID09IG1fZGVidWdnYWJsZU1hcC5lbmQoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBk
ZWJ1Z2dhYmxlID0gaXQtPnZhbHVlLmZpcnN0OworICAgICAgICBkZWJ1Z2dhYmxlLT5zZXRJbmRp
Y2F0aW5nKGluZGljYXRlRW5hYmxlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpyZWNlaXZlZENvbm5lY3Rpb25EaWVkTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZv
KQoreworICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFt1c2VySW5mbyBvYmpl
Y3RGb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOworICAgIGlmICghY29ubmVjdGlv
bklkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaXQgPSBtX2Nvbm5lY3Rp
b25NYXAuYmVnaW4oKTsKKyAgICBhdXRvIGVuZCA9IG1fY29ubmVjdGlvbk1hcC5lbmQoKTsKKyAg
ICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmIChbY29ubmVjdGlvbklkZW50
aWZpZXIgaXNFcXVhbFRvU3RyaW5nOml0LT52YWx1ZS0+Y29ubmVjdGlvbklkZW50aWZpZXIoKV0p
CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoaXQgPT0gZW5kKQorICAgICAg
ICByZXR1cm47CisKKyAgICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b24+IGNvbm5lY3Rpb24gPSBpdC0+dmFsdWU7CisgICAgY29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAg
ICBtX2Nvbm5lY3Rpb25NYXAucmVtb3ZlKGl0KTsKKworICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVn
U2Vzc2lvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
SW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMu
aApzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJ
bnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaApyZW5hbWUgdG8g
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29u
c3RhbnRzLmgKaW5kZXggMWYzYmMzMi4uMjZhMWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yQ29uc3RhbnRzLmgKQEAgLTIzLDE2ICsyMywxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnNfaAotI2RlZmluZSBXZWJJbnNw
ZWN0b3JSZWxheURlZmluaXRpb25zX2gKKyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRz
X2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzX2gKIAogLy8gV0lSQ29uc3RhbnRz
IGFyZSAiV2ViIEluc3BlY3RvciBSZWxheSIgY29uc3RhbnRzIHNoYXJlZCBiZXR3ZWVuCi0vLyB0
aGUgV2ViSW5zcGVjdG9yIGZyYW1ld29yayBvbiB0aGUgZGVidWdnZXIgc2lkZSwgd2ViaW5zcGVj
dG9yZCwKLS8vIGFuZCBXZWJLaXQgb24gdGhlIGRlYnVnZ2FibGUgYXBwbGljYXRpb24gc2lkZS4K
Ky8vIHRoZSBXZWJJbnNwZWN0b3IgZnJhbWV3b3JrIG9uIHRoZSBPUyBYIHNpZGUsIHdlYmluc3Bl
Y3RvcmQsIGFuZAorLy8gaU9TIFdlYktpdCBvbiB0aGUgZGV2aWNlIHNpZGUuCiAKICNkZWZpbmUg
V0lSU2ltdWxhdG9yVENQUG9ydE51bWJlciAgICAgICAgICAgICAgIDI3NzUzCiAjZGVmaW5lIFdJ
UlhQQ01hY2hQb3J0TmFtZSAgICAgICAgICAgICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3Bl
Y3RvciIKLSNkZWZpbmUgV0lSWFBDRGVidWdnZXJTZXJ2aWNlTmFtZSAgICAgICAgICAgICAgICJj
b20uYXBwbGUud2ViaW5zcGVjdG9yLmRlYnVnZ2VyIgogI2RlZmluZSBXSVJTZXJ2aWNlQXZhaWxh
YmxlTm90aWZpY2F0aW9uICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF2YWlsYWJs
ZSIKICNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9uICJjb20u
YXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFiaWxpdHlfY2hlY2siCiAjZGVmaW5lIFdJUlNlcnZp
Y2VFbmFibGVkTm90aWZpY2F0aW9uICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQu
ZW5hYmxlZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1v
dGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwCnNp
bWlsYXJpdHkgaW5kZXggNTElCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3Bl
Y3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaApyZW5hbWUg
dG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZS5jcHAKaW5kZXggYzdhNWJjYy4uZmRmMWQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzMyArMjMsNTkgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotQGNsYXNzIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWw7Ci1AY2xhc3MgV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyOworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCIKIAotQGludGVyZmFj
ZSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiA6IE5TT2JqZWN0IHsKLUBwcml2
YXRlCi0gICAgV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqX2NoYW5uZWw7CisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiAKLSAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVj
dGlvbkNvbnRyb2xsZXIgKl9jb250cm9sbGVyOyAvLyB3ZWFrLCB0aGUgY29udHJvbGxlciBvd25z
IHVzLgotICAgIE5TU3RyaW5nICpfY29ubmVjdGlvbklkZW50aWZpZXI7Ci0gICAgTlNTdHJpbmcg
Kl9kZXN0aW5hdGlvbjsKLSAgICBOU051bWJlciAqX2lkZW50aWZpZXI7CisjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9yLmgiCisK
K25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCkKKyAgICA6IG1faWRlbnRpZmllcigwKQorICAgICwgbV9h
bGxvd2VkKGZhbHNlKQoreworfQorCitSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjp+UmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZSgpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS51
bnJlZ2lzdGVyRGVidWdnYWJsZSh0aGlzKTsKIH0KIAotLSAoaWQpaW5pdFdpdGhDb250cm9sbGVy
OihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgKiljb250cm9s
bGVyIGNvbm5lY3Rpb25JZGVudGlmaWVyOihOU1N0cmluZyAqKWNvbm5lY3Rpb25JZGVudGlmaWVy
IGRlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uIGlkZW50aWZpZXI6KE5TTnVtYmVy
ICopaWRlbnRpZmllcjsKLS0gKEJPT0wpc2V0dXBDaGFubmVsOwotLSAoTlNTdHJpbmcgKiljb25u
ZWN0aW9uSWRlbnRpZmllcjsKLS0gKE5TTnVtYmVyICopaWRlbnRpZmllcjsKK3ZvaWQgUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZTo6aW5pdCgpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFy
ZWQoKS5yZWdpc3RlckRlYnVnZ2FibGUodGhpcyk7Cit9CiAKLS8vIE1lc3NhZ2VzIGZyb20gdGhl
IEluc3BlY3RvclNlcnZlci4KLS0gKHZvaWQpcmVjZWl2ZWREYXRhOihOU0RpY3Rpb25hcnkgKilk
aWN0aW9uYXJ5OwotLSAodm9pZClyZWNlaXZlZERpZENsb3NlOihOU0RpY3Rpb25hcnkgKilkaWN0
aW9uYXJ5Owordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjp1cGRhdGUoKQoreworICAg
IFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkudXBkYXRlRGVidWdnYWJsZSh0aGlzKTsKK30KIAot
Ly8gTWVzc2FnZXMgZnJvbSB0aGUgQ2hhbm5lbC4KLS0gKHZvaWQpY2xlYXJDaGFubmVsOwotLSAo
dm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKK3ZvaWQgUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChib29sIGFs
bG93ZWQpCit7CisgICAgaWYgKG1fYWxsb3dlZCA9PSBhbGxvd2VkKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2FsbG93ZWQgPSBhbGxvd2VkOworCisgICAgdXBkYXRlKCk7Cit9CisKK1JlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluZm8o
KSBjb25zdAoreworICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIGluZm87CisgICAg
aW5mby5pZGVudGlmaWVyID0gaWRlbnRpZmllcigpOworICAgIGluZm8udHlwZSA9IHR5cGUoKTsK
KyAgICBpbmZvLm5hbWUgPSBuYW1lKCk7CisgICAgaW5mby51cmwgPSB1cmwoKTsKKyAgICBpbmZv
Lmhhc0xvY2FsRGVidWdnZXIgPSBoYXNMb2NhbERlYnVnZ2VyKCk7CisgICAgaW5mby5yZW1vdGVE
ZWJ1Z2dpbmdBbGxvd2VkID0gcmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpOworICAgIHJldHVybiBp
bmZvOworfQogCi0vLyBNZXNzYWdlcyB0byB0aGUgQ2hhbm5lbC4KLS0gKHZvaWQpc2VuZE1lc3Nh
Z2VUb0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKK30gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgogCi1AZW5kCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOTAyNzRhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaApAQCAtMCwwICsxLDkxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQorCisjaWZuZGVmIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVf
aAorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlX2gKKworI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsOworc3RydWN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZv
OworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlIHsK
K3B1YmxpYzoKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCk7CisgICAgdmlydHVhbCB+
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSgpOworCisgICAgdm9pZCBpbml0KCk7CisgICAgdm9p
ZCB1cGRhdGUoKTsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KKyAgICB2b2lkIHNldElkZW50aWZpZXIodW5zaWduZWQgaWRlbnRpZmll
cikgeyBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CisKKyAgICBib29sIHJlbW90ZURlYnVn
Z2luZ0FsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWQ7IH0KKyAgICB2b2lkIHNldFJl
bW90ZURlYnVnZ2luZ0FsbG93ZWQoYm9vbCk7CisKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlSW5mbyBpbmZvKCkgY29uc3Q7CisKKyAgICBlbnVtIERlYnVnZ2FibGVUeXBlIHsgSmF2YVNj
cmlwdCwgV2ViIH07CisgICAgdmlydHVhbCBEZWJ1Z2dhYmxlVHlwZSB0eXBlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAv
LyBKYXZhU2NyaXB0IGFuZCBXZWIKKyAgICB2aXJ0dWFsIFN0cmluZyB1cmwoKSBjb25zdCB7IHJl
dHVybiBTdHJpbmcoKTsgfSAvLyBXZWIKKyAgICB2aXJ0dWFsIGJvb2wgaGFzTG9jYWxEZWJ1Z2dl
cigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wp
IHsgfSAvLyBEZWZhdWx0IGlzIHRvIGRvIG5vdGhpbmcuCisKK3ByaXZhdGU6CisgICAgdW5zaWdu
ZWQgbV9pZGVudGlmaWVyOworICAgIGJvb2wgbV9hbGxvd2VkOworfTsKKworc3RydWN0IFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIHsKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
SW5mbygpCisgICAgICAgIDogaWRlbnRpZmllcigwKQorICAgICAgICAsIHR5cGUoUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZTo6SmF2YVNjcmlwdCkKKyAgICAgICAgLCBoYXNMb2NhbERlYnVnZ2Vy
KGZhbHNlKQorICAgICAgICAsIHJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoZmFsc2UpCisgICAgewor
ICAgIH0KKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXI7CisgICAgUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6RGVidWdnYWJsZVR5cGUgdHlwZTsKKyAgICBTdHJpbmcgbmFtZTsKKyAgICBTdHJp
bmcgdXJsOworICAgIGJvb2wgaGFzTG9jYWxEZWJ1Z2dlcjsKKyAgICBib29sIHJlbW90ZURlYnVn
Z2luZ0FsbG93ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8v
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVfaAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjRkODgyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDgwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQorCisjaWZuZGVmIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uX2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb25faAorCisj
aW1wb3J0ICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbXBvcnQgIlJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUuaCIKKyNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CisjaW1wb3J0IDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworT0JKQ19DTEFTUyBOU1N0cmluZzsKKworbmFt
ZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uIEZJTkFMIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uPiwgcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7
CitwdWJsaWM6CisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZSosIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciwgTlNT
dHJpbmcgKmRlc3RpbmF0aW9uLCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpEZWJ1Z2dhYmxl
VHlwZSk7CisgICAgdmlydHVhbCB+UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24o
KTsKKworICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbigpIGNvbnN0OworICAgIE5TU3RyaW5nICpj
b25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0OworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIGJvb2wgc2V0dXAoKTsKKworICAg
IHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIGNsb3NlRnJvbURlYnVnZ2FibGUoKTsKKworICAgIHZv
aWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoTlNTdHJpbmcgKik7CisgICAgdmlydHVhbCBib29sIHNl
bmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKworcHJpdmF0ZToK
KyAgICB2b2lkIGRpc3BhdGNoU3luY09uRGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpOworICAg
IHZvaWQgZGlzcGF0Y2hBc3luY09uRGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpOworCisgICAg
Ly8gVGhpcyBjb25uZWN0aW9uIGZyb20gdGhlIFJlbW90ZUluc3BlY3RvciBzaW5nbGV0b24gdG8g
dGhlIERlYnVnZ2FibGUKKyAgICAvLyBjYW4gYmUgdXNlZCBvbiBtdWx0aXBsZSB0aHJlYWRzLiBT
byBhbnkgYWNjZXNzIHRvIHRoZSBkZWJ1Z2dhYmxlCisgICAgLy8gaXRzZWxmIG11c3QgdGFrZSB0
aGlzIGxvY2sgdG8gZW5zdXJlIG1fZGVidWdnYWJsZSBpcyB2YWxpZC4KKyAgICBNdXRleCBtX2Rl
YnVnZ2FibGVMb2NrOworCisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogbV9kZWJ1Z2dh
YmxlOworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9xdWV1ZUZvckRlYnVnZ2FibGU7CisgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIFJldGFpblB0cjxO
U1N0cmluZz4gbV9kZXN0aW5hdGlvbjsKKyAgICB1bnNpZ25lZCBtX2lkZW50aWZpZXI7CisgICAg
Ym9vbCBtX2Nvbm5lY3RlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5k
aWYgLy8gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb25faAorCisjZW5kaWYgLy8g
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjVmZmZlYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbQpAQCAt
MCwwICsxLDE2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUNvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW1wb3J0
ICJSZW1vdGVJbnNwZWN0b3IuaCIKKworI2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgPHd0Zi9p
b3MvV2ViQ29yZVRocmVhZC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6UmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb24oUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSwgTlNT
dHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyLCBOU1N0cmluZyAqZGVzdGluYXRpb24sIFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGU6OkRlYnVnZ2FibGVUeXBlIHR5cGUpCisgICAgOiBtX2RlYnVn
Z2FibGUoZGVidWdnYWJsZSkKKyAgICAsIG1fcXVldWVGb3JEZWJ1Z2dhYmxlKE5VTEwpCisgICAg
LCBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyKGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICwgbV9k
ZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKKyAgICAsIG1faWRlbnRpZmllcihkZWJ1Z2dhYmxlLT5p
ZGVudGlmaWVyKCkpCisgICAgLCBtX2Nvbm5lY3RlZChmYWxzZSkKK3sKKyAgICAvLyBXZWIgZGVi
dWdnYWJsZXMgbXVzdCBiZSBhY2Nlc3NlZCBvbiB0aGUgbWFpbiBxdWV1ZSAob3IgdGhlIFdlYlRo
cmVhZCBvbiBpT1MpLiBTaWduYWwgdGhhdCB3aXRoIGEgTlVMTCBtX3F1ZXVlRm9yRGVidWdnYWJs
ZS4KKyAgICAvLyBIb3dldmVyLCBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzIGNhbiBiZSBhY2Nlc3Nl
ZCBmcm9tIGFueSB0aHJlYWQvcXVldWUsIHNvIHdlIGNyZWF0ZSBhIHF1ZXVlIGZvciBlYWNoIEph
dmFTY3JpcHQgZGVidWdnYWJsZS4KKyAgICBpZiAodHlwZSA9PSBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlOjpKYXZhU2NyaXB0KQorICAgICAgICBtX3F1ZXVlRm9yRGVidWdnYWJsZSA9IGRpc3Bh
dGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlLnJlbW90ZS1pbnNwZWN0
b3IteHBjLWNvbm5lY3Rpb24iLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworfQorCitSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVD
b25uZWN0aW9uKCkKK3sKKyAgICBpZiAobV9xdWV1ZUZvckRlYnVnZ2FibGUpIHsKKyAgICAgICAg
ZGlzcGF0Y2hfcmVsZWFzZShtX3F1ZXVlRm9yRGVidWdnYWJsZSk7CisgICAgICAgIG1fcXVldWVG
b3JEZWJ1Z2dhYmxlID0gTlVMTDsKKyAgICB9Cit9CisKK05TU3RyaW5nICpSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGVzdGluYXRpb24oKSBjb25zdAoreworICAgIHJldHVy
biBbW21fZGVzdGluYXRpb24gY29weV0gYXV0b3JlbGVhc2VdOworfQorCitOU1N0cmluZyAqUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gW1ttX2Nvbm5lY3Rpb25JZGVudGlmaWVyIGNvcHldIGF1dG9y
ZWxlYXNlXTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hTeW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSkKK3sKKyAgICBpZiAobV9x
dWV1ZUZvckRlYnVnZ2FibGUpCisgICAgICAgIGRpc3BhdGNoX3N5bmMobV9xdWV1ZUZvckRlYnVn
Z2FibGUsIGJsb2NrKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgZWxzZSBpZiAoV2ViQ29yZVdl
YlRocmVhZElzRW5hYmxlZCAmJiBXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKCkpCisgICAgICAg
IFdlYkNvcmVXZWJUaHJlYWRSdW5TeW5jKGJsb2NrKTsKKyNlbmRpZgorICAgIGVsc2UKKyAgICAg
ICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9jayk7Cit9CisK
K3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNP
bkRlYnVnZ2FibGUodm9pZCAoXmJsb2NrKSgpKQoreworICAgIGlmIChtX3F1ZXVlRm9yRGVidWdn
YWJsZSkKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9xdWV1ZUZvckRlYnVnZ2FibGUsIGJsb2Nr
KTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgZWxzZSBpZiAoV2ViQ29yZVdlYlRocmVhZElzRW5h
YmxlZCAmJiBXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKCkpCisgICAgICAgIFdlYkNvcmVXZWJU
aHJlYWRSdW4oYmxvY2spOworI2VuZGlmCisgICAgZWxzZQorICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9jayk7Cit9CisKK2Jvb2wgUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNldHVwKCkKK3sKKyAgICBNdXRleExvY2tlciBs
b2NrZXIobV9kZWJ1Z2dhYmxlTG9jayk7CisKKyAgICBpZiAoIW1fZGVidWdnYWJsZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgZGlzcGF0Y2hTeW5jT25EZWJ1Z2dhYmxlKF57CisgICAg
ICAgIGlmICghbV9kZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fZGVidWdnYWJsZS0+aGFzTG9jYWxEZWJ1Z2dl
cigpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fZGVidWdnYWJsZS0+Y29ubmVj
dCh0aGlzKTsKKyAgICAgICAgbV9jb25uZWN0ZWQgPSB0cnVlOworICAgIH0pOworCisgICAgcmV0
dXJuIG1fY29ubmVjdGVkOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uOjpjbG9zZUZyb21EZWJ1Z2dhYmxlKCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9kZWJ1Z2dhYmxlTG9jayk7CisKKyAgICBtX2RlYnVnZ2FibGUgPSBudWxscHRyOworfQorCit2
b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZSgpCit7CisgICAg
cmVmKCk7CisgICAgZGlzcGF0Y2hBc3luY09uRGVidWdnYWJsZSheeworICAgICAgICB7CisgICAg
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9kZWJ1Z2dhYmxlTG9jayk7CisKKyAgICAgICAg
ICAgIGlmIChtX2RlYnVnZ2FibGUpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9jb25uZWN0ZWQp
CisgICAgICAgICAgICAgICAgICAgIG1fZGVidWdnYWJsZS0+ZGlzY29ubmVjdCgpOworCisgICAg
ICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBkZXJlZigpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvQmFja2VuZChOU1N0cmluZyAqbWVz
c2FnZSkKK3sKKyAgICByZWYoKTsKKyAgICBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKF57Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2FibGVMb2Nr
KTsKKworICAgICAgICAgICAgaWYgKG1fZGVidWdnYWJsZSkKKyAgICAgICAgICAgICAgICBtX2Rl
YnVnZ2FibGUtPmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChtZXNzYWdlKTsKKyAg
ICAgICAgfQorICAgICAgICBkZXJlZigpOworICAgIH0pOworfQorCitib29sIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQoreworICAgIFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkuc2VuZE1lc3Nh
Z2VUb1JlbW90ZUZyb250ZW5kKGlkZW50aWZpZXIoKSwgbWVzc2FnZSk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3Bl
Y3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oCnNpbWls
YXJpdHkgaW5kZXggNTAlCmNvcHkgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
cmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaApjb3B5IHRvIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaAppbmRl
eCAzZjk0NGVjLi4wYmYzNmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNw
ZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDMy
ICsyMyw0OSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2lmbmRlZiBSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uX2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbl9oCisKKyNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CisjaW1wb3J0IDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbXBvcnQgPHhwYy94cGMuaD4KIAotQGNsYXNzIFdlYkluc3BlY3Rv
clhQQ1dyYXBwZXI7Ci0KLUBwcm90b2NvbCBXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGUg
PE5TT2JqZWN0PgotLSAodm9pZCl4cGNDb25uZWN0aW9uOihXZWJJbnNwZWN0b3JYUENXcmFwcGVy
ICopY29ubmVjdGlvbiByZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNl
ckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOwotLSAodm9pZCl4cGNDb25uZWN0aW9uRmFp
bGVkOihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopY29ubmVjdGlvbjsKLUBvcHRpb25hbAotLSAo
dm9pZCl4cGNDb25uZWN0aW9uOihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopY29ubmVjdGlvbiB1
bmhhbmRsZWRNZXNzYWdlOih4cGNfb2JqZWN0X3QpbWVzc2FnZTsKLUBlbmQKLQotQGludGVyZmFj
ZSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyIDogTlNPYmplY3QKLXsKLSAgICBpZCA8V2ViSW5zcGVj
dG9yWFBDV3JhcHBlckRlbGVnYXRlPiBfZGVsZWdhdGU7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fdCBf
Y29ubmVjdGlvbjsKLSAgICBOU1N0cmluZyAqX3RhZzsKLX0KLQotLSAoV2ViSW5zcGVjdG9yWFBD
V3JhcHBlciAqKWluaXRXaXRoQ29ubmVjdGlvbjooeHBjX2Nvbm5lY3Rpb25fdCljb25uZWN0aW9u
OwotLSAodm9pZCljbG9zZTsKLS0gKHZvaWQpc2VuZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2Fn
ZU5hbWUgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOwotCi1AcHJvcGVydHkgKG5v
bmF0b21pYywgYXNzaWduKSBpZCA8V2ViSW5zcGVjdG9yWFBDV3JhcHBlckRlbGVnYXRlPiBkZWxl
Z2F0ZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgeHBjX2Nvbm5lY3Rpb25fdCBj
b25uZWN0aW9uOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGF2YWlsYWJs
ZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqdGFnOwotCi1AZW5kCitP
QkpDX0NMQVNTIE5TU3RyaW5nOworT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CisKK25hbWVzcGFj
ZSBJbnNwZWN0b3IgeworCitjbGFzcyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKTsKKwor
cHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFs
IH5DbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25SZWNlaXZl
ZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICptZXNzYWdl
TmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
eHBjQ29ubmVjdGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKikgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UoUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIHhwY19vYmplY3RfdCkgPSAwOworICAgIH07CisKKyAg
ICBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QsIENsaWVudCop
OworICAgIHZpcnR1YWwgflJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oKTsKKworICAgIHZv
aWQgY2xvc2UoKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKE5TU3RyaW5nICptZXNzYWdlTmFtZSwg
TlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisKK3ByaXZhdGU6CisgICAgTlNEaWN0aW9uYXJ5ICpk
ZXNlcmlhbGl6ZU1lc3NhZ2UoeHBjX29iamVjdF90KTsKKyAgICB2b2lkIGhhbmRsZUV2ZW50KHhw
Y19vYmplY3RfdCk7CisKKyAgICB4cGNfY29ubmVjdGlvbl90IG1fY29ubmVjdGlvbjsKKyAgICBk
aXNwYXRjaF9xdWV1ZV90IG1fcXVldWU7CisgICAgQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbl9oCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmFkMTY5OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCkBA
IC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2ltcG9ydCA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorCisjaWYg
X19oYXNfaW5jbHVkZSg8Q29yZUZvdW5kYXRpb24vQ0ZYUENCcmlkZ2UuaD4pCisjaW1wb3J0IDxD
b3JlRm91bmRhdGlvbi9DRlhQQ0JyaWRnZS5oPgorI2Vsc2UKK2V4dGVybiAiQyIgeHBjX29iamVj
dF90IF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VXaXRoQ0ZPYmplY3QoQ0ZUeXBlUmVmKTsKK2V4dGVy
biAiQyIgQ0ZUeXBlUmVmIF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjX29i
amVjdF90KTsKKyNlbmRpZgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworLy8gQ29uc3RhbnRz
IHByaXZhdGUgdG8gdGhpcyBmaWxlIGZvciBtZXNzYWdlIHNlcmlhbGl6YXRpb24gb24gYm90aCBl
bmRzLgorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uTWVzc2FnZU5hbWVLZXkg
QCJtZXNzYWdlTmFtZSIKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJ
bmZvS2V5IEAidXNlckluZm8iCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25T
ZXJpYWxpemVkTWVzc2FnZUtleSAibXNnRGF0YSIKKworUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90IGNvbm5l
Y3Rpb24sIENsaWVudCogY2xpZW50KQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisg
ICAgLCBtX3F1ZXVlKGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLkphdmFTY3JpcHRD
b3JlLnJlbW90ZS1pbnNwZWN0b3IteHBjLWNvbm5lY3Rpb24iLCBESVNQQVRDSF9RVUVVRV9TRVJJ
QUwpKQorICAgICwgbV9jbGllbnQoY2xpZW50KQoreworICAgIHhwY19yZXRhaW4obV9jb25uZWN0
aW9uKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKG1fY29ubmVjdGlvbiwg
bV9xdWV1ZSk7CisgICAgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiogd2Vha1RoaXMgPSB0
aGlzOworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvbiwg
Xih4cGNfb2JqZWN0X3Qgb2JqZWN0KSB7CisgICAgICAgIHdlYWtUaGlzLT5oYW5kbGVFdmVudChv
YmplY3QpOworICAgIH0pOworICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShtX2Nvbm5lY3Rpb24p
OworfQorCitSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjp+UmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbigpCit7CisgICAgQVNTRVJUKCFtX2NsaWVudCk7CisgICAgQVNTRVJUKCFtX2Nv
bm5lY3Rpb24pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3Nl
KCkKK3sKKyAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgeHBj
X2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29ubmVjdGlvbik7CisgICAgeHBjX3JlbGVhc2UobV9jb25u
ZWN0aW9uKTsKKyAgICBtX2Nvbm5lY3Rpb24gPSBOVUxMOworCisgICAgZGlzcGF0Y2hfcmVsZWFz
ZShtX3F1ZXVlKTsKKyAgICBtX3F1ZXVlID0gTlVMTDsKKworICAgIG1fY2xpZW50ID0gbnVsbHB0
cjsKK30KKworTlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNl
cmlhbGl6ZU1lc3NhZ2UoeHBjX29iamVjdF90IG9iamVjdCkKK3sKKyAgICBpZiAoeHBjX2dldF90
eXBlKG9iamVjdCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIHhwY19vYmplY3RfdCB4cGNEaWN0aW9uYXJ5ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3Zh
bHVlKG9iamVjdCwgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdl
S2V5KTsKKyAgICBpZiAoIXhwY0RpY3Rpb25hcnkgfHwgeHBjX2dldF90eXBlKHhwY0RpY3Rpb25h
cnkpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpIHsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAg
ICAgICAgICAgbV9jbGllbnQtPnhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKHRoaXMsIG9i
amVjdCk7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgTlNEaWN0aW9uYXJ5ICpk
aWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8TlNEaWN0aW9uYXJ5ICo+KF9DRlhQQ0NyZWF0ZUNGT2Jq
ZWN0RnJvbVhQQ01lc3NhZ2UoeHBjRGljdGlvbmFyeSkpOworICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoZGljdGlvbmFyeSwgIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIpOworICAg
IHJldHVybiBbZGljdGlvbmFyeSBhdXRvcmVsZWFzZV07Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG9iamVjdCkKK3sKKyAg
ICBpZiAoIW1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHhwY19nZXRf
dHlwZShvYmplY3QpID09IFhQQ19UWVBFX0VSUk9SKSB7CisgICAgICAgIGlmIChtX2NsaWVudCkK
KyAgICAgICAgICAgIG1fY2xpZW50LT54cGNDb25uZWN0aW9uRmFpbGVkKHRoaXMpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGljdGlvbmFyeSA9IGRl
c2VyaWFsaXplTWVzc2FnZShvYmplY3QpOworICAgIGlmICghZGF0YURpY3Rpb25hcnkpCisgICAg
ICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nICptZXNzYWdlID0gW2RhdGFEaWN0aW9uYXJ5IG9i
amVjdEZvcktleTpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uTWVzc2FnZU5hbWVLZXldOwor
ICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm8gPSBbZGF0YURpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5
OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25Vc2VySW5mb0tleV07CisgICAgaWYgKG1fY2xp
ZW50KQorICAgICAgICBtX2NsaWVudC0+eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZSh0aGlz
LCBtZXNzYWdlLCB1c2VySW5mbyk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UoTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVz
ZXJJbmZvKQoreworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25hcnkg
ZGljdGlvbmFyeVdpdGhPYmplY3Q6bWVzc2FnZU5hbWUgZm9yS2V5OlJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb25NZXNzYWdlTmFtZUtleV07CisgICAgaWYgKHVzZXJJbmZvKQorICAgICAgICBb
ZGljdGlvbmFyeSBzZXRPYmplY3Q6dXNlckluZm8gZm9yS2V5OlJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb25Vc2VySW5mb0tleV07CisKKyAgICB4cGNfb2JqZWN0X3QgeHBjRGljdGlvbmFyeSA9
IF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VXaXRoQ0ZPYmplY3QoKENGRGljdGlvbmFyeVJlZilkaWN0
aW9uYXJ5KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHhwY0RpY3Rpb25hcnkgJiYgeHBjX2dl
dF90eXBlKHhwY0RpY3Rpb25hcnkpID09IFhQQ19UWVBFX0RJQ1RJT05BUlksICJVbmFibGUgdG8g
c2VyaWFsaXplIHhwYyBtZXNzYWdlIik7CisgICAgaWYgKCF4cGNEaWN0aW9uYXJ5KQorICAgICAg
ICByZXR1cm47CisKKyAgICB4cGNfb2JqZWN0X3QgbXNnID0geHBjX2RpY3Rpb25hcnlfY3JlYXRl
KE5VTEwsIE5VTEwsIDApOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtc2csIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25TZXJpYWxpemVkTWVzc2FnZUtleSwgeHBjRGljdGlvbmFy
eSk7CisgICAgeHBjX3JlbGVhc2UoeHBjRGljdGlvbmFyeSk7CisKKyAgICB4cGNfY29ubmVjdGlv
bl9zZW5kX21lc3NhZ2UobV9jb25uZWN0aW9uLCBtc2cpOworCisgICAgeHBjX3JlbGVhc2UobXNn
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCBiYTNkNDIyLi5iMzM3YTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMjUsNiArMTI1LDEx
IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCIKICNlbmRpZiAvLyBF
TkFCTEUoUFJPTUlTRVMpCiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3Iu
aCIKKyNlbmRpZgorCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QubHV0LmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtMTg3LDYgKzE5MiwxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KEpT
T2JqZWN0KiB0aGlzVmFsdWUpCiAKICAgICBtX2RlYnVnZ2VyID0gMDsKIAorI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQorICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JE
ZWJ1Z2dhYmxlLT5pbml0KCk7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5zZXRSZW1vdGVE
ZWJ1Z2dpbmdBbGxvd2VkKHRydWUpOworI2VuZGlmCisKICAgICByZXNldChwcm90b3R5cGUoKSk7
CiB9CiAKQEAgLTc2MCw0ICs3NzEsMzEgQEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2Jh
bE9iamVjdDo6Y3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqIGNhbGxGcmFtZSwKICAgICBy
ZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7CiB9CiAKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldFJl
bW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+c2V0UmVtb3RlRGVidWdnaW5n
QWxsb3dlZChlbmFibGVkKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOworI2Vu
ZGlmCit9CisKK2Jvb2wgSlNHbG9iYWxPYmplY3Q6OnJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoKSBj
b25zdAoreworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHJldHVybiBtX2luc3Bl
Y3RvckRlYnVnZ2FibGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKTsKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldE5hbWUoY29u
c3QgU3RyaW5nJiBuYW1lKQoreworICAgIG1fbmFtZSA9IG5hbWU7CisKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnVwZGF0ZSgpOworI2Vu
ZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggNGJkNzQ0Ni4uNjMxZmJiMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01OCw2ICs1
OCw3IEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBl
OwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgR2xvYmFsQ29kZUJsb2NrOworY2xhc3MgSlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlOwogY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOwogY2xhc3Mg
SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU7CiBjbGFzcyBKU1N0YWNrOwpAQCAtMjI5LDggKzIz
MCwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIAogICAgIHZvaWQqIG1fc3BlY2lhbFBvaW50ZXJz
W1NwZWNpYWw6OlRhYmxlU2l6ZV07IC8vIFNwZWNpYWwgcG9pbnRlcnMgdXNlZCBieSB0aGUgTExJ
bnQgYW5kIEpJVC4KIAorICAgIFN0cmluZyBtX25hbWU7CisKICAgICBEZWJ1Z2dlciogbV9kZWJ1
Z2dlcjsKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+IG1faW5zcGVjdG9yRGVidWdnYWJsZTsKKyNlbmRp
ZgorCiAgICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdh
dGNocG9pbnQ7CiAgICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1faGF2aW5nQUJhZFRpbWVXYXRj
aHBvaW50OwogICAgIFJlZlB0cjxXYXRjaHBvaW50U2V0PiBtX3ZhckluamVjdGlvbldhdGNocG9p
bnQ7CkBAIC00MjAsNiArNDI3LDEyIEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIHByb21pc2VX
cmFwcGVyQ2FsbGJhY2tTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VXcmFwcGVy
Q2FsbGJhY2tTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNlbmRpZiAvLyBFTkFCTEUoUFJPTUlTRVMpCiAK
KyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9v
bCBlbmFibGVkKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHJlbW90ZURlYnVnZ2luZ0Vu
YWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOwor
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCiAgICAg
SlNBcnJheUJ1ZmZlclByb3RvdHlwZSogYXJyYXlCdWZmZXJQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2FycmF5QnVmZmVyUHJvdG90eXBlLmdldCgpOyB9CiAKICNkZWZpbmUgREVGSU5FX0FD
Q0VTU09SU19GT1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFt
ZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcApzaW1pbGFy
aXR5IGluZGV4IDUzJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
cmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcAppbmRleCAzZjk0NGVj
Li5iMjhmMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVt
b3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzMiArMjMsNDkgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0jaW1wb3J0
IDx4cGMveHBjLmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmgiCiAKLUBjbGFzcyBXZWJJbnNwZWN0b3JYUENXcmFwcGVyOworI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi1AcHJvdG9jb2wgV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ckRlbGVnYXRlIDxOU09iamVjdD4KLS0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVjdG9y
WFBDV3JhcHBlciAqKWNvbm5lY3Rpb24gcmVjZWl2ZWRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3Nh
Z2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKLS0gKHZvaWQpeHBjQ29u
bmVjdGlvbkZhaWxlZDooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb247Ci1Ab3B0
aW9uYWwKLS0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNv
bm5lY3Rpb24gdW5oYW5kbGVkTWVzc2FnZTooeHBjX29iamVjdF90KW1lc3NhZ2U7Ci1AZW5kCisj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3IuaCIKIAotQGludGVyZmFjZSBXZWJJ
bnNwZWN0b3JYUENXcmFwcGVyIDogTlNPYmplY3QKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CisKK25hbWVzcGFjZSBKU0MgeworCitKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OkpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZShKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorICAgIDogbV9n
bG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogewotICAgIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFw
cGVyRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKLSAgICB4cGNfY29ubmVjdGlvbl90IF9jb25uZWN0aW9u
OwotICAgIE5TU3RyaW5nICpfdGFnOwogfQogCi0tIChXZWJJbnNwZWN0b3JYUENXcmFwcGVyICop
aW5pdFdpdGhDb25uZWN0aW9uOih4cGNfY29ubmVjdGlvbl90KWNvbm5lY3Rpb247Ci0tICh2b2lk
KWNsb3NlOwotLSAodm9pZClzZW5kTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2Vy
SW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87CitTdHJpbmcgSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlOjpuYW1lKCkgY29uc3QKK3sKKyAgICBTdHJpbmcgbmFtZSA9IG1fZ2xvYmFsT2JqZWN0
Lm5hbWUoKTsKKyAgICByZXR1cm4gbmFtZS5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIkpTQ29u
dGV4dCIpIDogbmFtZTsKK30KKwordm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmNvbm5l
Y3QoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50
LgorICAgIC8vIENyZWF0ZSBhbiBJbnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JGcm9udGVu
ZCwgSW5zcGVjdG9yQmFja2VuZCwgYW5kIEFnZW50cy4KKyAgICAvLyAiSW5zcGVjdG9yQ29udHJv
bGxlcjo6Y29ubmVjdEZyb250ZW5kIi4KK30KKwordm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGU6OmRpc2Nvbm5lY3QoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgLy8gIklu
c3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCIuCit9CisKK3ZvaWQgSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29u
c3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIC8vICJJbnNwZWN0
b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQiCit9CiAKLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCBhc3NpZ24pIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGU+
IGRlbGVnYXRlOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSB4cGNfY29ubmVjdGlv
bl90IGNvbm5lY3Rpb247Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgYXZh
aWxhYmxlOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICp0YWc7Cit9IC8v
IG5hbWVzcGFjZSBKU0MKIAotQGVuZAorI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJ
bnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oCnNpbWlsYXJpdHkg
aW5kZXggNTMlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1v
dGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmgKcmVuYW1l
IHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5oCmluZGV4IGY4YmY1ZTguLjZmMmQ5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25D
b250cm9sbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzLDI2ICsyMywzOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1AY2xh
c3MgV2ViSW5zcGVjdG9yU2VydmVyOwotQGNsYXNzIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uOwotQGNsYXNzIFdlYkluc3BlY3RvclhQQ1dyYXBwZXI7CisjaWZuZGVmIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZV9oCisjZGVmaW5lIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZV9o
CiAKLUBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9s
bGVyIDogTlNPYmplY3QgewotQHByaXZhdGUKLSAgICBXZWJJbnNwZWN0b3JTZXJ2ZXIgKl9zZXJ2
ZXI7IC8vIHdlYWssIHRoZSBzZXJ2ZXIgc2hvdWxkIG5ldmVyIGRlYWxsb2NhdGUuCi0gICAgTlNN
dXRhYmxlRGljdGlvbmFyeSAqX29wZW5Db25uZWN0aW9uczsKLSAgICBCT09MIF9oYXNTY2hlZHVs
ZWRQdXNoOwotfQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi0tIChpZClpbml0V2l0
aFNlcnZlcjooV2ViSW5zcGVjdG9yU2VydmVyICopc2VydmVyOworI2luY2x1ZGUgIlJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAotLSAo
dm9pZCljbG9zZUFsbENvbm5lY3Rpb25zOworbmFtZXNwYWNlIEpTQyB7CiAKLS0gKHZvaWQpcHVz
aExpc3Rpbmc7Ci0tICh2b2lkKXJlY2VpdmVkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFt
ZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87CitjbGFzcyBKU0dsb2JhbE9iamVj
dDsKIAotLSAodm9pZCljb25uZWN0aW9uQ2xvc2luZzooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb24gKiljb25uZWN0aW9uOworY2xhc3MgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
IEZJTkFMIDogcHVibGljIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlKTsKK3B1Ymxp
YzoKKyAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUoSlNHbG9iYWxPYmplY3QmKTsKKyAgICB+
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlKCkgeyB9CiAKLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1
c2VySW5mbzsKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZTo6RGVidWdnYWJsZVR5cGUgdHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6SmF2YVNjcmlwdDsgfQogCi1AZW5kCisgICAg
dmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBo
YXNMb2NhbERlYnVnZ2VyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworICAg
IHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgSlNHbG9iYWxPYmplY3Qm
IG1fZ2xvYmFsT2JqZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2VuZGlmIC8vICFkZWZpbmVkKEpTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCA0ZTQ0NmFlLi5iMTcxMTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBj
b25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvaW9zL1dlYkNvcmVUaHJlYWQu
Y3BwOgorICAgICAgICAqIHd0Zi9pb3MvV2ViQ29yZVRocmVhZC5oOgorICAgICAgICBFeHBvc2Ug
V2ViVGhyZWFkUnVuL1dlYlRocmVhZFJ1blN5bmMgaU9TIG1ldGhvZHMgZGVmaW5lZCBpbiBXZWJD
b3JlIHRocm91Z2gKKyAgICAgICAgV1RGIHNvIHRoYXQgSmF2YVNjcmlwdENvcmUgY2FuIHVzZSBp
dC4gQW5vdGhlciBzdWNoIG1ldGhvZCBhbHJlYWR5IGV4aXN0ZWQuCisKIDIwMTMtMTEtMzAgIHBl
YXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CiAKICAgICAgICAgW1dpbl0gU29t
ZSBKYXZhU2NyaXB0IGRhdGUgdGVzdHMgYXJlIGZhaWxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29y
ZVRocmVhZC5jcHAKaW5kZXggNDI3NDQ2Ni4uZjA3ZGMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvaW9zL1dlYkNvcmVUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJD
b3JlVGhyZWFkLmNwcApAQCAtMjgsNCArMjgsNyBAQAogCiAjaWYgVVNFKFdFQl9USFJFQUQpCiBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCAoKldlYkNvcmVXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJs
ZWQpKHZvaWQpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFkSXNF
bmFibGVkKSh2b2lkKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkICgqV2ViQ29yZVdlYlRocmVh
ZFJ1bikodm9pZCAoXmJsb2NrKSgpKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkICgqV2ViQ29y
ZVdlYlRocmVhZFJ1blN5bmMpKHZvaWQgKF5ibG9jaykoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9pb3Mv
V2ViQ29yZVRocmVhZC5oCmluZGV4IDEwZTI2YTcuLjgxOWNlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYvaW9zL1dl
YkNvcmVUaHJlYWQuaApAQCAtMzMsNiArMzMsOSBAQCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiBl
eHRlcm4gYm9vbCAoKldlYkNvcmVXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQpKHZvaWQpOwor
ZXh0ZXJuIGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKSh2b2lkKTsKK2V4dGVybiB2
b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1bikodm9pZCAoXmJsb2NrKSgpKTsKK2V4dGVybiB2b2lk
ICgqV2ViQ29yZVdlYlRocmVhZFJ1blN5bmMpKHZvaWQgKF5ibG9jaykoKSk7CiAKICNpZmRlZiBf
X2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM4YjZiYTIuLmViNGQwNzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2MyBAQAorMjAxMy0xMS0yMiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBtaXNzaW5nIGZvbGRlcnMg
YW5kIGZpbGVzIHRvIFhjb2RlIHByb2plY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNDgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25u
ZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBhIFdlYkNvcmU6OlBhZ2UgYSAiV2Vi
IiBSZW1vdGUgRGVidWdnYWJsZS4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW90ZUlu
c3BlY3Rpb25BbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFJlbW90ZUluc3Bl
Y3Rpb25BbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW90ZUluc3BlY3Rvcklu
Zm9ybWF0aW9uRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBw
YWdlL1BhZ2VEZWJ1Z2dhYmxlLmg6CisgICAgICAgICogcGFnZS9QYWdlRGVidWdnYWJsZS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OlBhZ2VEZWJ1Z2dhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjpuYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVn
Z2FibGU6Omhhc0xvY2FsRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2Fi
bGU6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5l
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZy
b21SZW1vdGVGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6c2V0
SW5kaWNhdGluZyk6CisgICAgICAgIE1ha2UgYSBwYWdlIGEgIldlYiIgZGVidWdnYWJsZS4KKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgTWlzYy4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6aW5kaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpoaWRlSW5kaWNhdGUpOgor
ICAgICAgICBGb3J3YXJkIGluZGljYXRlIG1ldGhvZHMgdG8gV2ViS2l0IGNsaWVudHMuCisKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmRpZENoYW5nZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpk
aXNwYXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICBQdXNoIHVwZGF0ZXMgd2hlbiByZW1vdGUg
ZGVidWdnYWJsZSBpbmZvcm1hdGlvbiBsaWtlIHRoZSBQYWdlJ3MKKyAgICAgICAgVVJMIG9yIHRp
dGxlIGNoYW5nZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaDoKKyAgICAgICAgUmUtZXhwb3J0IEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsIGFzIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbAorICAgICAgICB0byBhdm9p
ZCBuZWVkbGVzc2x5IHVwZGF0aW5nIGNvZGUgYWxsIG92ZXIgdGhlIHBsYWNlLgorCisgICAgICAg
ICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSk6CisgICAgICAgIE1ha2UgdGhlICJJbnNwZWN0
IEVsZW1lbnQiIGNvbnRleHQgbWVudSB3b3JrIGNvcnJlY3RseSB3aGVuIHRoZXJlIGlzIGEKKyAg
ICAgICAgcmVtb3RlIGluc3BlY3RvciBpbnN0ZWFkIG9mIGEgbG9jYWwgaW5zcGVjdG9yLgorCiAy
MDEzLTEyLTAyICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
YSBzZXR0aW5nIHRvIG9wdCBpbnRvIGEgbW9kZSB3aGVyZSB0aGUgYmFja2dyb3VuZCBleHRlbmRz
IGFuZCBmaXhlZCBlbGVtZW50cyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTNhZTI0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3Jl
X0ZXRF9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWxfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbC5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDJiOGE1
NDguLjkxNmUwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yODA2LDYgKzI4MDYsNyBAQCBf
X1pON1dlYkNvcmUzM1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldEV2CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorX19aTjdXZWJDb3JlNFBhZ2UyNnNldFJl
bW90ZUluc3BlY3Rpb25BbGxvd2VkRWIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxl
cjI3ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kRVJLTjNXVEY2U3RyaW5nRQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVycwppbmRleCAyMDBiMWUyLi4zZTcyOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0yNjUs
NiArMjY1LDkgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9IkZvcndhcmRpbmdIZWFkZXJzXGhlYXAi
PgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezgyYmE5YmI0LWVhYTAtNDk3My05YmIzLWEyNzY2
N2ExYzE2N308L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJ
bmNsdWRlPSJGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3IiPgorICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+ezEzMmJhZGUyLTBhYWItNjI3NC0wYWRmZi1hZThhZWQ1YWVkNH08L1VuaXF1ZUlkZW50
aWZpZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJoaXN0b3J5Ij4KICAg
ICAgIDxVbmlxdWVJZGVudGlmaWVyPns2ZjM5ZGVkZi0yZDNhLTQxNGUtODNmZS03YmY2NGY5MTFj
ZmJ9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTIyMjIsNiArMTIyMjUs
OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaGVhcFxT
dHJvbmcuaCI+CiAgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGhlYXA8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdI
ZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCI+CisgICAgICA8Rmls
dGVyPkZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRl
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGlzdG9yeVxCYWNrRm9yd2FyZENsaWVudC5o
Ij4KICAgICAgIDxGaWx0ZXI+aGlzdG9yeTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGM1ZjQwOTUuLjBlNzk4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1MjMsNiArMzUyMyw4IEBACiAJCUE1NTZDMjg5MTgz
MjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU2QzI4NzE4MzIwNkE4MDA4Q0I3MjAg
LyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE1NzMyQjBBMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29t
cG9uZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTczMkIwODEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovOyB9Owog
CQlBNTczMkIwQjEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzMyQjA5MTM2QTE2MUQwMDVD
OEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oICovOyB9OworCQlBNUEyQUYwQjE4Mjk3MzQzMDBERTE3
MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxl
LmNwcCAqLzsgfTsKKwkJQTVBMkFGMEMxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUEyQUYw
QTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCAqLzsgfTsKIAkJQTVBQkI3ODcx
M0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQkI3ODYxM0I5MDRCQzAwRjE5
N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovOyB9OwogCQlBNUFDNEFFRjE4MzM2
OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQzRBRUQxODMzNjk3NTAwNzEx
NEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJQTVBQzRBRjAx
ODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFDNEFFRTE4MzM2OTc1MDA3
MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAzMjQsNiArMTAzMjYsMTIgQEAKIAkJ
QTU1NkMyODcxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTczMkIwODEzNkExNjFEMDA1QzhEN0MgLyog
RGF0ZUNvbXBvbmVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGF0ZUNvbXBvbmVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTczMkIw
OTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTU5M0NGNzIxODQwMkNFOTAwQkZDRTI3IC8qIHByb3RvY29sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gcHJvdG9j
b2w7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjczMTg0MDJENEIwMEJGQ0Uy
NyAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gQ29kZUdl
bmVyYXRvckluc3BlY3Rvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NG
NzQxODQwMkQ0QjAwQkZDRTI3IC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0gQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHk7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjc1MTg0MDJENEIwMEJGQ0UyNyAvKiBjb21i
aW5lLWphdmFzY3JpcHQtcmVzb3VyY2VzLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9ICJjb21iaW5lLWph
dmFzY3JpcHQtcmVzb3VyY2VzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVB
MkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dh
YmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAv
KiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUM0
QUVFMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0MTgsNyArMTQ0MjYsMTEgQEAKIAkJ
MUM4MUI5NEQwRTk3MzJEOTAwMjY2RTA3IC8qIGluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTU5M0NGNzIxODQwMkNFOTAwQkZDRTI3IC8q
IHByb3RvY29sICovLAogCQkJCUE1MTgyMjUzMTdFMjhDRjEwMEE5QkExRCAvKiBTY3JpcHRzICov
LAorCQkJCUE1OTNDRjczMTg0MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9y
LnB5ICovLAorCQkJCUE1OTNDRjc0MTg0MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2VuZXJhdG9ySW5z
cGVjdG9yU3RyaW5ncy5weSAqLywKKwkJCQlBNTkzQ0Y3NTE4NDAyRDRCMDBCRkNFMjcgLyogY29t
YmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCAqLywKIAkJCQlGMzVBRTVBQjE0OTI1RjVCMDA0
RDU3NzYgLyogQmluZGluZ1Zpc2l0b3JzLmggKi8sCiAJCQkJMkRGMkU5RDQxNjZFMzk3NDAwMzVC
RUYyIC8qIENvbnNvbGVBUElUeXBlcy5oICovLAogCQkJCTQxRjA2MThEMEY1RjA2OTgwMEEwN0VB
QyAvKiBDb25zb2xlTWVzc2FnZS5jcHAgKi8sCkBAIC0xNTY5MCw2ICsxNTcwMiw4IEBACiAJCQkJ
Q0QwODI4NUIxNzU3MjUwODAwRUM1RkI3IC8qIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgg
Ki8sCiAJCQkJREFBQ0IzRDkxNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25zb2xlLmNwcCAqLywK
IAkJCQlEQUFDQjNEQTE2RjI0MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNvbGUuaCAqLywKKwkJCQlB
NUEyQUYwOTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwICovLAorCQkJCUE1
QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICovLAogCQkJCTkzMDJC
MEJDMEQ3OUY4MjkwMEM3RUU4MyAvKiBQYWdlR3JvdXAuY3BwICovLAogCQkJCTkzMDJCMEJFMEQ3
OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCAqLywKIAkJCQk3QTY3NEJEOTBGOUVCRjRFMDA2
Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCAqLywKQEAgLTIzMDQyLDYgKzIzMDU2
LDcgQEAKIAkJCQlEMDAwRUJBMzExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1h
Y2hpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDU4RUJCMTdCOEYxMjgwMENCRENBOCAvKiBF
bGVtZW50VHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0I3N0EzODBBREQ3OTI1MDBF
QTRCODEgLyogRnJhbWVMb2FkZXJUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVBMkFGMEMx
ODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NTg0MzY4NjBBRTAxQjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjI4RDIxNEUxMjEzMUVGNDAwNTVEQ0ZDIC8qIEZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzJBRjcwMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlw
dG9LZXlVc2FnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzc3NSw2ICsyNzc5MCw3IEBACiAJCQkJ
QjJBRkZDN0YwRDAwQTVDMTAwMzAwNzREIC8qIFNpbXBsZUZvbnREYXRhTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzVBMUVBN0MxNTJCQ0YwNDAwNEQwMEI2IC8qIFNpbXBsaWZ5TWFya3VwQ29t
bWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDAwRDdBNDE0QTNGNjE5MDA3MzQwMTEgLyog
U2luY1Jlc2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUEyQUYwQjE4Mjk3MzQzMDBE
RTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzMjdENjEx
MUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
OUU5MTFDQzBFRjg2RDQ3MDA5RDBDQUYgLyogU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0MTUwRjlGMjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDJjYzk1YjEuLjI3YmQ3ODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTU2
LDEyICs1NiwyMCBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHNldFJlbW90
ZURlYnVnZ2luZ0VuYWJsZWQoZmFsc2UpOworI2VuZGlmCiB9CiAKIHZvaWQgSlNET01HbG9iYWxP
YmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNWYWx1ZSkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgdGhpc1ZhbHVlKTsKICAgICBBU1NFUlQoaW5oZXJp
dHMoaW5mbygpKSk7CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBzZXRSZW1v
dGVEZWJ1Z2dpbmdFbmFibGVkKGZhbHNlKTsKKyNlbmRpZgogfQogCiBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBKU0RPTUdsb2JhbE9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNzBhMTlj
OS4uNDRlN2VhMTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVu
dC5oCkBAIC01Miw2ICs1Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgPSAwOwogCisgICAgdmly
dHVhbCB2b2lkIGluZGljYXRlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGhpZGVJbmRpY2F0aW9u
KCkgeyB9CisKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2xlYXJCcm93c2VyQ2FjaGUoKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhckJyb3dzZXJDYWNoZSgpIHsgfQogICAg
IHZpcnR1YWwgYm9vbCBjYW5DbGVhckJyb3dzZXJDb29raWVzKCkgeyByZXR1cm4gZmFsc2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCBkNzUxNmE1Li5lOTU4OTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC04NCw2ICs4NCw5IEBAIEluc3BlY3RvckNvbnRy
b2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBp
bnNwZWN0b3JDCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAsIG1faW5zcGVjdG9yQ2xpZW50KGlu
c3BlY3RvckNsaWVudCkKICAgICAsIG1faXNVbmRlclRlc3QoZmFsc2UpCisjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCisgICAgLCBtX2hhc1JlbW90ZUZyb250ZW5kKGZhbHNlKQorI2VuZGlm
CiB7CiAgICAgT3duUHRyPEluc3BlY3RvckFnZW50PiBpbnNwZWN0b3JBZ2VudFB0cihJbnNwZWN0
b3JBZ2VudDo6Y3JlYXRlKHBhZ2UsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKTsKICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5zcGVj
dG9yQWdlbnRQdHIuZ2V0KCk7CkBAIC0xNDgsNyArMTUxLDYgQEAgSW5zcGVjdG9yQ29udHJvbGxl
cjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3Bl
Y3RvckMKICAgICBtX2FnZW50cy5hcHBlbmQocHJvZmlsZXJBZ2VudFB0ci5yZWxlYXNlKCkpOwog
CiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpjcmVhdGUo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQo
KSkpOwotCiAjZW5kaWYKIAogICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JXb3JrZXJBZ2Vu
dDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpOwpAQCAtMjAzLDYgKzIwNSwy
NCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50
KFBhc3NPd25QdHI8SW5zcGVjdG9yRnJvbnRlbgogICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQgPSBpbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIH0KIAorYm9vbCBJbnNwZWN0b3JDb250cm9s
bGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKyAgICByZXR1cm4gaGFzRnJvbnRlbmQoKSAmJiAhbV9oYXNSZW1vdGVGcm9udGVuZDsK
KyNlbHNlCisgICAgcmV0dXJuIGhhc0Zyb250ZW5kKCk7CisjZW5kaWYKK30KKworYm9vbCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0Cit7CisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisgICAgcmV0dXJuIG1faGFzUmVtb3RlRnJvbnRlbmQ7CisjZWxz
ZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBib29sIEluc3BlY3RvckNvbnRyb2xs
ZXI6Omhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9p
bnNwZWN0b3JGcm9udGVuZENsaWVudDsKQEAgLTIzMyw2ICsyNTMsMTEgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW4KIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVnaXN0ZXJJbnN0
cnVtZW50aW5nQWdlbnRzKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSk7CiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKTsKKworI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQorICAgIGlmICghbV9oYXNSZW1vdGVGcm9udGVuZCkKKyAgICAgICAgbV9w
YWdlLT5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOworI2VuZGlmCiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKCkKQEAgLTI1MCwx
MCArMjc1LDE3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5k
KCkKICAgICBtX292ZXJsYXktPmZyZWVQYWdlKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpmcm9udGVuZERlbGV0ZWQoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVu
cmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSk7
CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBpZiAoIW1faGFzUmVtb3RlRnJv
bnRlbmQpCisgICAgICAgIG1fcGFnZS0+cmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFu
Z2UoKTsKKyNlbmRpZgogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3coKQogewor
ICAgIEFTU0VSVCghaGFzUmVtb3RlRnJvbnRlbmQoKSk7CisKICAgICBpZiAoIWVuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0zMTUsNyArMzQ3LDggQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjppbnNwZWN0KE5vZGUqIG5vZGUpCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHNob3coKTsKKyAgICBpZiAoIWhhc1JlbW90ZUZyb250ZW5kKCkpCisg
ICAgICAgIHNob3coKTsKIAogICAgIG1fZG9tQWdlbnQtPmluc3BlY3Qobm9kZSk7CiB9CkBAIC0z
NTIsNiArMzg1LDE1IEBAIE5vZGUqIEluc3BlY3RvckNvbnRyb2xsZXI6OmhpZ2hsaWdodGVkTm9k
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fb3ZlcmxheS0+aGlnaGxpZ2h0ZWROb2RlKCk7CiB9CiAK
K3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcp
Cit7CisgICAgLy8gRklYTUU6IEZvciBub24taU9TIGNsaWVudHMsIHdlIHNob3VsZCBoYXZlIElu
c3BlY3Rvck92ZXJsYXkgZG8gc29tZXRoaW5nIGhlcmUuCisgICAgaWYgKGluZGljYXRpbmcpCisg
ICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5pbmRpY2F0ZSgpOworICAgIGVsc2UKKyAgICAgICAg
bV9pbnNwZWN0b3JDbGllbnQtPmhpZGVJbmRpY2F0aW9uKCk7Cit9CisKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6cHJvZmlsZXJFbmFi
bGVkKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCmluZGV4IDk1ZWM3ZTMuLjgzOWY5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtOTIsMTcgKzkyLDI2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwogCiAgICAgYm9vbCBoYXNGcm9udGVuZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWw7IH0KKyAgICBib29sIGhhc0xvY2FsRnJvbnRlbmQoKSBjb25z
dDsKKyAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3Q7CisKICAgICB2b2lkIGNvbm5l
Y3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKICAgICB2b2lkIGRpc2Nvbm5l
Y3RGcm9udGVuZCgpOwogICAgIHZvaWQgc2V0UHJvY2Vzc0lkKGxvbmcpOwogICAgIHZvaWQgd2Vi
Vmlld1Jlc2l6ZWQoY29uc3QgSW50U2l6ZSYpOwogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCisgICAgdm9pZCBzZXRIYXNSZW1vdGVGcm9udGVuZChib29sIGhhc1JlbW90ZSkgeyBtX2hh
c1JlbW90ZUZyb250ZW5kID0gaGFzUmVtb3RlOyB9CisjZW5kaWYKKwogICAgIHZvaWQgaW5zcGVj
dChOb2RlKik7CiAgICAgdm9pZCBkcmF3SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
OwogICAgIHZvaWQgZ2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCopIGNvbnN0OwogICAgIHZvaWQgaGlk
ZUhpZ2hsaWdodCgpOwogICAgIE5vZGUqIGhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OwogCisgICAg
dm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZyk7CisKICAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIAog
ICAgIGJvb2wgaXNVbmRlclRlc3QoKTsKQEAgLTE1Myw2ICsxNjIsMTAgQEAgcHJpdmF0ZToKICAg
ICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwogICAgIEluc3BlY3RvckFnZW50
UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAgYm9vbCBtX2lzVW5kZXJUZXN0OworCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisgICAgYm9vbCBtX2hhc1JlbW90ZUZyb250ZW5kOworI2VuZGlm
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmgKaW5kZXggYjMyMTRlZi4uZWQ2NGExZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaApAQCAtMSw0ICsx
LDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjAsMjIgKzIxLDE2IEBACiAgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsX2gKLSNkZWZpbmUg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsX2gKKyNpZm5kZWYgV0VCQ09SRV9JbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWxfaAorI2RlZmluZSBXRUJDT1JFX0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9o
CiAKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsIHsgfTsKK30KIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoKSB7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAw
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsX2gpCisjZW5kaWYgLy8gIWRlZmluZWQoV0VCQ09SRV9JbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWxfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CmluZGV4IGYzNDc0YzMuLmI4ZjdmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcApAQCAtMzMxOSw2ICszMzE5LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZVRp
dGxlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgIG1fY2xpZW50LnNldE1haW5GcmFt
ZURvY3VtZW50UmVhZHkodHJ1ZSk7IC8vIHVwZGF0ZSBvYnNlcnZlcnMgd2l0aCBuZXcgRE9NRG9j
dW1lbnQKICAgICAgICAgbV9jbGllbnQuZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUobG9hZGVyLT50
aXRsZSgpKTsKICAgICB9CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBpZiAo
bV9mcmFtZS5pc01haW5GcmFtZSgpKQorICAgICAgICBtX2ZyYW1lLnBhZ2UoKS0+cmVtb3RlSW5z
cGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsKKyNlbmRpZgogfQogCiB2b2lkIEZyYW1lTG9h
ZGVyOjpkaWRDaGFuZ2VJY29ucyhJY29uVHlwZSB0eXBlKQpAQCAtMzM0MCw5ICszMzQ1LDEyIEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiAKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWQoJm1fZnJhbWUsIG1fZG9jdW1lbnRMb2Fk
ZXIuZ2V0KCkpOwogCi0gICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKKyAgICBpZiAobV9m
cmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5mZWF0dXJlT2Jz
ZXJ2ZXIoKS0+ZGlkQ29tbWl0TG9hZCgpOwotCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CisgICAgICAgIG1fZnJhbWUucGFnZSgpLT5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENo
YW5nZSgpOworI2VuZGlmCisgICAgfQogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjp0ZWxsQ2xpZW50
QWJvdXRQYXN0TWVtb3J5Q2FjaGVMb2FkcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggYzdhM2NkMi4uYTVlYTE4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtODkyLDcgKzg5Miw3
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAjZW5kaWYgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiAoZnJhbWUtPnBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5oYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIHx8IGZyYW1lLT5w
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aGFzUmVtb3RlRnJvbnRlbmQoKSkpKSB7CiAj
ZW5kaWYKIAogICAgICAgICAgICAgICAgIC8vIEluIEdUSysgdW5hdmFpbGFibGUgaXRlbXMgYXJl
IG5vdCBoaWRkZW4gYnV0IGluc2Vuc2l0aXZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOGQ5Mjk5
Ny4uYWU3MjAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVk
ZSAiUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIK
ICNpbmNsdWRlICJQYWdlQ29uc29sZS5oIgorI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dhYmxlLmgiCiAj
aW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgogI2luY2x1
ZGUgIlBsdWdJbkNsaWVudC5oIgpAQCAtMTg2LDYgKzE4Nyw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNs
aWVudHMmIHBhZ2VDbGllbnRzKQogICAgICwgbV9zY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQo
ZmFsc2UpCiAgICAgLCBtX3BhZ2VUaHJvdHRsZXIoc3RkOjptYWtlX3VuaXF1ZTxQYWdlVGhyb3R0
bGVyPigqdGhpcykpCiAgICAgLCBtX2NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29s
ZT4oKnRoaXMpKQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgICwgbV9pbnNwZWN0
b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKKyNl
bmRpZgogICAgICwgbV9sYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVzQ291bnQoMCkgLy8g
Tk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMgZm9yIFNwYXRpYWwgTmF2aWdhdGlvbiB0
ZXN0aW5nLgogICAgICwgbV9mcmFtZXNIYW5kbGluZ0JlZm9yZVVubG9hZEV2ZW50KDApCiB7CkBA
IC0yMDMsNiArMjA3LDEwIEBAIFBhZ2U6OlBhZ2UoUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQog
I2lmbmRlZiBOREVCVUcKICAgICBwYWdlQ291bnRlci5pbmNyZW1lbnQoKTsKICNlbmRpZgorCisj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5p
bml0KCk7CisjZW5kaWYKIH0KIAogUGFnZTo6flBhZ2UoKQpAQCAtMTI5MSw2ICsxMjk5LDIzIEBA
IHZvaWQgUGFnZTo6YWRkRm9vdGVyV2l0aEhlaWdodChpbnQgZm9vdGVySGVpZ2h0KQogfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKK2Jvb2wgUGFnZTo6cmVtb3RlSW5z
cGVjdGlvbkFsbG93ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2luc3BlY3RvckRlYnVnZ2Fi
bGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKTsKK30KKwordm9pZCBQYWdlOjpzZXRSZW1vdGVJ
bnNwZWN0aW9uQWxsb3dlZChib29sIGFsbG93ZWQpCit7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dh
YmxlLT5zZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKGFsbG93ZWQpOworfQorCit2b2lkIFBhZ2U6
OnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCkgY29uc3QKK3sKKyAgICBtX2lu
c3BlY3RvckRlYnVnZ2FibGUtPnVwZGF0ZSgpOworfQorI2VuZGlmCisKIHZvaWQgUGFnZTo6YWRk
TGF5b3V0TWlsZXN0b25lcyhMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCiB7CiAgICAgLy8g
SW4gdGhlIGZ1dHVyZSwgd2UgbWF5IHdhbnQgYSBmdW5jdGlvbiB0aGF0IHJlcGxhY2VzIG1fbGF5
b3V0TWlsZXN0b25lcyBpbnN0ZWFkIG9mIGp1c3QgYWRkaW5nIHRvIGl0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApp
bmRleCBiNjc4Mzg4Li40NWNkNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtODAsNiArODAsNyBAQCBj
bGFzcyBNZWRpYUNhblN0YXJ0TGlzdGVuZXI7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZUFjdGl2
aXR5QXNzZXJ0aW9uVG9rZW47CiBjbGFzcyBQYWdlQ29uc29sZTsKK2NsYXNzIFBhZ2VEZWJ1Z2dh
YmxlOwogY2xhc3MgUGFnZUdyb3VwOwogY2xhc3MgUGFnZVRocm90dGxlcjsKIGNsYXNzIFBsdWdJ
bkNsaWVudDsKQEAgLTE3OCw2ICsxNzksMTIgQEAgcHVibGljOgogICAgIHZvaWQgZGVjcmVtZW50
U3ViZnJhbWVDb3VudCgpIHsgQVNTRVJUKG1fc3ViZnJhbWVDb3VudCk7IC0tbV9zdWJmcmFtZUNv
dW50OyB9CiAgICAgaW50IHN1YmZyYW1lQ291bnQoKSBjb25zdCB7IGNoZWNrU3ViZnJhbWVDb3Vu
dENvbnNpc3RlbmN5KCk7IHJldHVybiBtX3N1YmZyYW1lQ291bnQ7IH0KIAorI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQorICAgIGJvb2wgcmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQoKSBjb25z
dDsKKyAgICB2b2lkIHNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKGJvb2wgYWxsb3dlZCk7Cisg
ICAgdm9pZCByZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpIGNvbnN0OworI2Vu
ZGlmCisKICAgICBDaHJvbWUmIGNocm9tZSgpIGNvbnN0IHsgcmV0dXJuICptX2Nocm9tZTsgfQog
ICAgIERyYWdDYXJldENvbnRyb2xsZXImIGRyYWdDYXJldENvbnRyb2xsZXIoKSBjb25zdCB7IHJl
dHVybiAqbV9kcmFnQ2FyZXRDb250cm9sbGVyOyB9CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
QEAgLTUzMiw2ICs1MzksMTAgQEAgcHJpdmF0ZToKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8
UGFnZVRocm90dGxlcj4gbV9wYWdlVGhyb3R0bGVyOwogICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxQYWdlQ29uc29sZT4gbV9jb25zb2xlOwogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CisgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFBhZ2VEZWJ1Z2dhYmxlPiBtX2luc3BlY3RvckRl
YnVnZ2FibGU7CisjZW5kaWYKKwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NlZW5QbHVnaW5zOwog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NlZW5NZWRpYUVuZ2luZXM7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlRGVidWdnYWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
Y2VhMGFlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVn
Z2FibGUuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFnZURlYnVn
Z2FibGUuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCisjaW5jbHVk
ZSAiUGFnZS5oIgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1BhZ2VEZWJ1Z2dhYmxlOjpQYWdlRGVidWdnYWJsZShQYWdlJiBwYWdlKQorICAg
IDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1N0cmluZyBQYWdlRGVidWdnYWJsZTo6bmFtZSgpIGNv
bnN0Cit7CisgICAgaWYgKCFtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpLT50aXRsZSgpOworfQorCitTdHJpbmcgUGFnZURlYnVnZ2FibGU6OnVybCgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgU3RyaW5nIHVybCA9IG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpLT51cmwoKS5zdHJpbmcoKTsKKyAgICByZXR1cm4gdXJsLmlzRW1wdHkoKSA/IEFTQ0lJTGl0
ZXJhbCgiYWJvdXQ6YmxhbmsiKSA6IHVybDsKK30KKworYm9vbCBQYWdlRGVidWdnYWJsZTo6aGFz
TG9jYWxEZWJ1Z2dlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmhhc0xvY2FsRnJvbnRlbmQoKTsKK30KKwordm9pZCBQYWdlRGVidWdnYWJsZTo6
Y29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCkKK3sK
KyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gbV9wYWdlLmlu
c3BlY3RvckNvbnRyb2xsZXIoKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5zZXRIYXNSZW1v
dGVGcm9udGVuZCh0cnVlKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5jb25uZWN0RnJvbnRl
bmQocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqPihj
aGFubmVsKSk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoKQoreworICAg
IEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBtX3BhZ2UuaW5zcGVj
dG9yQ29udHJvbGxlcigpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmRpc2Nvbm5lY3RGcm9u
dGVuZCgpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPnNldEhhc1JlbW90ZUZyb250ZW5kKGZh
bHNlKTsKK30KKwordm9pZCBQYWdlRGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90
ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3BhZ2UuaW5zcGVjdG9y
Q29udHJvbGxlcigpLT5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7Cit9CisK
K3ZvaWQgUGFnZURlYnVnZ2FibGU6OnNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKQorewor
ICAgIG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldEluZGljYXRpbmcoaW5kaWNhdGlu
Zyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVt
b3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VEZWJ1Z2dhYmxlLmgKc2ltaWxhcml0eSBpbmRleCA1NCUKcmVuYW1lIGZyb20gU291cmNlL1dl
YktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5o
CnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKaW5kZXggZWE1
YjJlMy4uOTI0MjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZURlYnVnZ2FibGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMjkgKzIzLDQxIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaWZuZGVmIFBhZ2VEZWJ1Z2dhYmxlX2gKKyNkZWZp
bmUgUGFnZURlYnVnZ2FibGVfaAogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7CisjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAKLUBwcm90b2NvbCBXZWJJbnNwZWN0b3JDbGllbnRSZWdp
c3RyeURlbGVnYXRlCi0tICh2b2lkKWRpZFJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGll
bnQqKWNsaWVudDsKLS0gKHZvaWQpZGlkVW5yZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xp
ZW50KiljbGllbnQ7Ci1AZW5kCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi1AaW50ZXJm
YWNlIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IDogTlNPYmplY3QgewotQHByaXZhdGUKLSAg
ICB1bnNpZ25lZCBfbmV4dEF2YWlsYWJsZVBhZ2VJZDsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBX
ZWJJbnNwZWN0b3JDbGllbnQqPiBfcGFnZUNsaWVudE1hcDsKLSAgICBpZCA8V2ViSW5zcGVjdG9y
Q2xpZW50UmVnaXN0cnlEZWxlZ2F0ZT4gX2RlbGVnYXRlOwotfQorbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpZCA8V2ViSW5zcGVjdG9yQ2xpZW50
UmVnaXN0cnlEZWxlZ2F0ZT4gZGVsZWdhdGU7CitjbGFzcyBQYWdlOwogCi0rIChXZWJJbnNwZWN0
b3JDbGllbnRSZWdpc3RyeSAqKXNoYXJlZFJlZ2lzdHJ5OworY2xhc3MgUGFnZURlYnVnZ2FibGUg
RklOQUwgOiBwdWJsaWMgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlRGVidWdnYWJsZSk7CitwdWJsaWM6CisgICAgUGFn
ZURlYnVnZ2FibGUoUGFnZSYpOworICAgIH5QYWdlRGVidWdnYWJsZSgpIHsgfQogCi0tICh2b2lk
KXJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudDsKLS0gKHZvaWQpdW5y
ZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQ7Ci0tIChXZWJJbnNwZWN0
b3JDbGllbnQqKWNsaWVudEZvclBhZ2VJZDoodW5zaWduZWQpcGFnZUlkOwotLSAoTlNEaWN0aW9u
YXJ5ICopaW5zcGVjdGFibGVXZWJWaWV3czsKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUgdHlwZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6V2ViOyB9CiAK
LUBlbmQKKyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBTdHJpbmcgdXJsKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGhhc0xv
Y2FsRGVidWdnZXIoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKSBPVkVS
UklERTsKKworcHJpdmF0ZToKKyAgICBQYWdlJiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2VuZGlm
IC8vICFkZWZpbmVkKFBhZ2VEZWJ1Z2dhYmxlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk0OGM1ZjUuLmRhMjUz
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJl
bW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFT
Y3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEzLTEyLTAyICBCZXRo
IERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIG9w
dCBpbnRvIGEgbW9kZSB3aGVyZSB0aGUgYmFja2dyb3VuZCBleHRlbmRzIGFuZCBmaXhlZCBlbGVt
ZW50cyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGNkN2Y1ZjIuLjk0MjVjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzc4LDI0ICszNzgsMTEgQEAKIAkJQTEwQzFEOEQx
ODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZpZXdQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwQzFEODgxODIwMzA1RTAwMzY4ODNB
IC8qIFdlYlBERlZpZXdQbGFjZWhvbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUExMEMxRDhFMTgyMDMwNUUwMDM2ODgzQSAvKiBXZWJQREZW
aWV3UGxhY2Vob2xkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTBDMUQ4OTE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld1BsYWNlaG9sZGVy
Lm1tICovOyB9OwogCQlBMTdBMTFCMTE4MERDODQ4MDBFNTQ5OEMgLyogV2ViUGx1Z2luUGFja2Fn
ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExN0ExMUIwMTgwREM4NDgwMEU1NDk4QyAvKiBXZWJQbHVnaW5QYWNrYWdlUHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1MjE0RkM3
MTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTIxNEZDMTEzQjk3NUM4MDAw
MDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oICovOyB9OwotCQlBNTIxNEZDODEz
Qjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MjE0RkMyMTNCOTc1QzgwMDAw
MTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tICovOyB9OwotCQlBNTIyMDlGODEz
QzUzRTc1MDA0QkE3QjEgLyogV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUyMjA5RjcxM0M1M0U3NTAw
NEJBN0IxIC8qIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNTVFMjBGRjE0RDcyNjRDMDAzMTU0
OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVFMjBGRDE0RDcy
NjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9s
bGVyLmggKi87IH07Ci0JCUE1NUUyMTAwMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JT
ZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVFMjBGRTE0RDcyNjRDMDAzMTU0OUUgLyogV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tICovOyB9OwogCQlB
NTYwOTQ2NjE0RDhBRDI2MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVMYXllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU2MDk0NjQxNEQ4QUQyNjAwNzk5
QThBIC8qIFdlYkluZGljYXRlTGF5ZXIuaCAqLzsgfTsKIAkJQTU2MDk0NjcxNEQ4QUQyNjAwNzk5
QThBIC8qIFdlYkluZGljYXRlTGF5ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTYwOTQ2NTE0RDhBRDI2MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVM
YXllci5tbSAqLzsgfTsKIAkJQTU2ODdCREExMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdo
bGlnaHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTU2ODdCRDgxMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5oICovOyB9Owog
CQlBNTY4N0JEQjEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU2ODdCRDkxMzVCNzkx
QTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5tbSAqLzsgfTsKLQkJQTU3QzI4QTcxM0JB
QTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhBMTEzQkFB
NUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCAqLzsg
fTsKLQkJQTU3QzI4QTgxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTU3QzI4QTIxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uLm1tICovOyB9OwotCQlBNTdDMjhBOTEzQkFBNUFEMDA3MEFDQUIgLyogV2Vi
SW5zcGVjdG9yU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTdDMjhBMzEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLmgg
Ki87IH07Ci0JCUE1N0MyOEFBMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhB
NDEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tICovOyB9OwotCQlBNTdD
MjhBQjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QzI4QTUxM0JBQTVBRDAw
NzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNTdDMjhBQzEzQkFBNUFEMDA3MEFDQUIgLyog
V2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU3QzI4QTYxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQ
Q1dyYXBwZXIubSAqLzsgfTsKIAkJQTU3RTJGMjQxMjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3Rh
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTU3RTJGMjIxMjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3RhTWFuYWdlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1N0VCNzhGMTNCOTdBNEUw
MDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RUI3OEQxM0I5N0E0RTAwOEQ2OTFEIC8q
IFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggKi87IH07Ci0JCUE1N0VCNzkwMTNCOTdBNEUw
MDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0VCNzhFMTNCOTdBNEUwMDhENjkxRCAv
KiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSAqLzsgfTsKIAkJQTU4QTU3OTkxNDNFNzI3
MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNThBNTc5NzE0M0U3MjcwMDAxMjVGNTAg
LyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLzsgfTsKIAkJQTU4QTU3OUExNDNFNzI3
MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4QTU3OTgxNDNFNzI3MDAwMTI1RjUw
IC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tICovOyB9OwogCQlBNURFRkMwQTExRDUz
MzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURFRkMwNzExRDUzMzFDMDA4ODUyNzMgLyogV2Vi
U2VjdXJpdHlPcmlnaW4ubW0gKi87IH07CkBAIC03NzgsMjQgKzc2NSwxMSBAQAogCQlBMTBDMUQ4
OTE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOyBw
YXRoID0gaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CiAJCUExMEMxRDhGMTgyMDMwN0QwMDM2ODgzQSAvKiBXZWJLaXQuaU9T
LmV4cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuZXhwb3J0czsgbmFtZSA9IFdlYktpdC5pT1MuZXhw
OyBwYXRoID0gaW9zL1dlYktpdC5pT1MuZXhwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTdBMTFCMDE4MERDODQ4MDBFNTQ5OEMgLyogV2ViUGx1Z2luUGFja2FnZVByaXZhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGx1Z2luUGFja2FnZVByaXZhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUyMTRGQzExM0I5NzVDODAwMDAxNUVG
IC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oOyBwYXRoID0gcmVtb3RlL1dlYklu
c3BlY3RvclJlbW90ZUNoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUy
MTRGQzIxM0I5NzVDODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JSZW1vdGVD
aGFubmVsLm1tOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MjIwOUY3MTNDNTNFNzUwMDRCQTdCMSAvKiBX
ZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaDsgcGF0aCA9IHJlbW90ZS9XZWJJ
bnNwZWN0b3JSZWxheURlZmluaXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUE1NUUyMEZEMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmg7IHBhdGggPSByZW1v
dGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NUUyMEZFMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJ
bnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbkNvbnRyb2xsZXIubW07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNTYwOTQ2NDE0RDhBRDI2MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVMYXllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbmRpY2F0ZUxheWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1NjA5NDY1MTREOEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRpY2F0
ZUxheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5k
aWNhdGVMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU2ODdCRDgxMzVC
NzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJOb2RlSGlnaGxpZ2h0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU2ODdCRDkxMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk5vZGVIaWdobGln
aHRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTExM0JBQTVBRDAw
NzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uLmg7IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTIxM0JBQTVBRDAwNzBBQ0FC
IC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb24ubW07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0MyOEEzMTNCQUE1QUQwMDcw
QUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV2ViSW5zcGVjdG9yU2VydmVyLmg7IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0MyOEE0MTNCQUE1QUQwMDcw
QUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXIubW07IHBhdGggPSByZW1vdGUvV2ViSW5z
cGVjdG9yU2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdDMjhBNTEz
QkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmg7IHBhdGggPSByZW1v
dGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlBNTdDMjhBNjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IG5hbWUgPSBXZWJJbnNwZWN0b3JYUENXcmFwcGVy
Lm07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTdFMkYyMjEyMDc0OUU2MDAwNDhERjMgLyogV2ViUXVvdGFNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlF1b3RhTWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdFQjc4RDEzQjk3QTRFMDA4RDY5MUQg
LyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaDsgcGF0aCA9IHJlbW90ZS9XZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlB
NTdFQjc4RTEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JDbGll
bnRSZWdpc3RyeS5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4QTU3OTcxNDNFNzI3MDAwMTI1RjUw
IC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1OEE1Nzk4MTQzRTcyNzAwMDEyNUY1MCAvKiBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNURFRkMwNzExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW4ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTZWN1cml0eU9yaWdpbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTIsNyArMTAyNiw2IEBACiAJCTFDNjhG
NjNGMDk1QjVGOUMwMEMyOTg0RSAvKiBXZWJJbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUE1MjE0RkJGMTNCOTc1OTYwMDAwMTVFRiAvKiBy
ZW1vdGUgKi8sCiAJCQkJNUQ3QkY4MTIwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5o
ICovLAogCQkJCTVEN0JGODEzMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0gKi8s
CiAJCQkJQjgwNDE3NkQxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5kLmgg
Ki8sCkBAIC0xNTA5LDI2ICsxNDgyLDYgQEAKIAkJCW5hbWUgPSBpb3M7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OwotCQlBNTIxNEZCRjEzQjk3NTk2MDAwMDE1RUYgLyogcmVtb3Rl
ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlBNTdFQjc4
RDEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCAqLywKLQkJ
CQlBNTdFQjc4RTEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnku
bW0gKi8sCi0JCQkJQTUyMjA5RjcxM0M1M0U3NTAwNEJBN0IxIC8qIFdlYkluc3BlY3RvclJlbGF5
RGVmaW5pdGlvbnMuaCAqLywKLQkJCQlBNTIxNEZDMTEzQjk3NUM4MDAwMDE1RUYgLyogV2ViSW5z
cGVjdG9yUmVtb3RlQ2hhbm5lbC5oICovLAotCQkJCUE1MjE0RkMyMTNCOTc1QzgwMDAwMTVFRiAv
KiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tICovLAotCQkJCUE1N0MyOEEzMTNCQUE1QUQw
MDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCAqLywKLQkJCQlBNTdDMjhBNDEzQkFBNUFE
MDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tICovLAotCQkJCUE1N0MyOEExMTNCQUE1
QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oICovLAot
CQkJCUE1N0MyOEEyMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbi5tbSAqLywKLQkJCQlBNTVFMjBGRDE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggKi8sCi0JCQkJQTU1RTIw
RkUxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
Q29udHJvbGxlci5tbSAqLywKLQkJCQlBNTdDMjhBNTEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5z
cGVjdG9yWFBDV3JhcHBlci5oICovLAotCQkJCUE1N0MyOEE2MTNCQUE1QUQwMDcwQUNBQiAvKiBX
ZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0gKi8sCi0JCQkpOwotCQkJbmFtZSA9IHJlbW90ZTsKLQkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUY1MkNBNkJEMDJERjlEMEYwMTg2MzVD
QSAvKiBIVE1MICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTE4MjUsMTUgKzE3NzgsOCBAQAogCQkJCUExMEMxRDY0MTgyMDMwMEUwMDM2ODgzQSAvKiBXZWJD
aHJvbWVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVEN0JGODE0MEMyQTFEOTAwMDhD
RTA2RCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTA2NjkzRERDMEJGQkE4
NTIwMDIxNjA3MiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1
N0VCNzhGMTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjgwNDE3NkYxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3Rv
ckZyb250ZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QThGRjBEMTEwNzUwMjRBMDBBODBBMDgg
LyogV2ViSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUyMjA5RjgxM0M1
M0U3NTAwNEJBN0IxIC8qIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUE1MjE0RkM3MTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVD
aGFubmVsLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTdDMjhBOTEzQkFBNUFEMDA3MEFDQUIgLyog
V2ViSW5zcGVjdG9yU2VydmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTdDMjhBNzEzQkFBNUFE
MDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAotCQkJCUE1NUUyMEZGMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1N0My
OEFCMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5Mzk4MTA0MjA4MjRCRjAxMDA4REYwMzggLyogV2ViSmF2YVNjcmlwdFRleHRJ
bnB1dFBhbmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0QxRENBODEwNjU5MjhDMDA2OEY3RUYg
LyogV2ViSlNQREZEb2MuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDg1MDgyNEJGMDEwMDhE
RjAzOCAvKiBXZWJLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMjI3NiwxMyArMjIy
Miw3IEBACiAJCQkJNUQ3QkY4MTUwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5tbSBp
biBTb3VyY2VzICovLAogCQkJCTA2NjkzREREMEJGQkE4NTIwMDIxNjA3MiAvKiBXZWJJbnNwZWN0
b3JDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzdCMEM2NjBFQjI0NjREMDBBMjg1MDIg
LyogV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTU3RUI3OTAx
M0I5N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjgwNDE3NzAxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250
ZW5kLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTUyMTRGQzgxM0I5NzVDODAwMDAxNUVGIC8qIFdl
Ykluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNTdDMjhBQTEz
QkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJQTU3QzI4QTgxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTU1RTIxMDAxNEQ3MjY0QzAwMzE1NDlF
IC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbSBpbiBT
b3VyY2VzICovLAotCQkJCUE1N0MyOEFDMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JY
UENXcmFwcGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQlBMTBDMUQxOTE4MjAyRjlDMDAzNjg4M0Eg
LyogV2ViRGVmYXVsdEZvcm1EZWxlZ2F0ZS5tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwRTQw
ODI0QkYwMTAwOERGMDM4IC8qIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTEwQzFEOEIxODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZpZXdJT1MubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKaW5kZXggNTUyZTc2Yi4uNTRhYWNiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jZi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3Rl
IEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlw
dENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAoV2ViSW5z
cGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorCiAyMDEzLTEwLTI1ICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpIGFuZCBlbmFibGUgb24gaU9TIGFuZCBNYWMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0Yu
Y3BwIGIvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRD
Ri5jcHAKaW5kZXggY2EyMmZkZS4uMTIwZTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
Zi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKQEAgLTkxLDEy
ICs5MSwxMCBAQCBzdGF0aWMgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgc2V0dGluZykKICAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoY3JlYXRl
S2V5Rm9yUHJlZmVyZW5jZXMoa2V5KS5nZXQoKSwgc2V0dGluZy5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CiB9CiAKLSNpZiAhRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiBib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICByZXR1cm4gZG9EaXNwYXRj
aE1lc3NhZ2VPbkZyb250ZW5kUGFnZShtX2Zyb250ZW5kUGFnZSwgbWVzc2FnZSk7CiB9Ci0jZW5k
aWYKIAogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckF0dGFjaERpc2FibGVkKCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvaW9zL0NoYW5nZUxvZwppbmRleCBhYjQzNjM1Li5hNjNiZTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0
b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNs
aWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6
aW5zcGVjdG9yRGVzdHJveWVkKToKKwogMjAxMy0xMS0xOCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE1
OTQ1NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudElPUy5tbQppbmRleCA1YWNjMmVlLi5jYTc1ZDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50SU9TLm1tCkBAIC00MiwxMSArNDIsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhy
ZWFkLmg+CiAjaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogCi0jaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIgotI2ltcG9y
dCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJW
aWV3ICp3ZWJWaWV3KQpAQCAtNTQsMjMgKzQ5LDExIEBAIFdlYkluc3BlY3RvckNsaWVudDo6V2Vi
SW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgLCBtX2hpZ2hsaWdodGVyKEFk
b3B0TlMsIFtbV2ViTm9kZUhpZ2hsaWdodGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZp
ZXc6d2ViVmlld10pCiAgICAgLCBtX2Zyb250ZW5kUGFnZSgwKQogICAgICwgbV9mcm9udGVuZENs
aWVudCgwKQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9yZW1vdGVDaGFu
bmVsKDApCi0gICAgLCBtX3BhZ2VJZCgwKQotI2VuZGlmCiB7Ci0jaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3Ry
eV0gcmVnaXN0ZXJDbGllbnQ6dGhpc107Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiB7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gdW5y
ZWdpc3RlckNsaWVudDp0aGlzXTsKLSAgICB0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24odHJ1ZSk7
Ci0jZW5kaWYKLQogICAgIGRlbGV0ZSB0aGlzOwogfQogCkBAIC0xMTYsOTQgKzk5LDYgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVk
KQogICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3Rp
ZmljYXRpb25Pbk1haW5UaHJlYWRXaXRoTmFtZTpXZWJJbnNwZWN0b3JEaWRTdG9wU2VhcmNoaW5n
Rm9yTm9kZSBvYmplY3Q6aW5zcGVjdG9yXTsKIH0KIAotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEg
bWFyayBSZW1vdGUgV2ViIEluc3BlY3RvciBJbXBsZW1lbnRhdGlvbgotCi0jaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBpZiAobV9yZW1vdGVDaGFubmVs
KSB7Ci0gICAgICAgIFttX3JlbW90ZUNoYW5uZWwgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOm1lc3Nh
Z2VdOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBpT1MgZG9lcyBub3Qg
aGF2ZSBhIGxvY2FsIGluc3BlY3Rvci4gVGhlcmUgc2hvdWxkIGJlIG5vIHdheSB0byByZWFjaCB0
aGlzLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0K
LSAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZShtX2Zyb250ZW5kUGFn
ZSwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRv
QmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgQVNTRVJUKG1fcmVtb3RlQ2hh
bm5lbCk7Ci0KLSAgICBQYWdlKiBwYWdlID0gY29yZShtX3dlYlZpZXcpOwotICAgIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2Up
OwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2V0dXBSZW1vdGVDb25uZWN0aW9uKFdl
Ykluc3BlY3RvclJlbW90ZUNoYW5uZWwgKnJlbW90ZUNoYW5uZWwpCi17Ci0gICAgLy8gVGhlcmUg
aXMgYWxyZWFkeSBhIGxvY2FsIHNlc3Npb24sIGRvIG5vdCBhbGxvdyBhIHJlbW90ZSBzZXNzaW9u
LgotICAgIGlmIChoYXNMb2NhbFNlc3Npb24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIHJlbW90ZSBzZXNzaW9uLCBkbyBub3QgYWxsb3cgYSBu
ZXcgcmVtb3RlIHNlc3Npb24uCi0gICAgaWYgKG1fcmVtb3RlQ2hhbm5lbCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgbV9yZW1vdGVDaGFubmVsID0gcmVtb3RlQ2hhbm5lbDsKLQotICAg
IFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmlldyk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5jb25uZWN0RnJvbnRlbmQodGhpcyk7Ci0KLSAgICAvLyBGb3JjZSBkZXZlbG9wZXIg
ZXh0cmFzIHRvIGJlIGVuYWJsZWQgaW4gV2ViQ29yZSB3aGVuIGEgcmVtb3RlIGNvbm5lY3Rpb24g
c3RhcnRzLgotICAgIGlmIChwYWdlLT5zZXR0aW5ncygpKQotICAgICAgICBwYWdlLT5zZXR0aW5n
cygpLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojp0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24o
Ym9vbCBmcm9tTG9jYWxTaWRlKQotewotICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlz
YWJsZWQoKSk7Ci0gICAgaWYgKCFtX3JlbW90ZUNoYW5uZWwpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChmcm9tTG9jYWxTaWRlKQotICAgICAgICBbbV9yZW1vdGVDaGFubmVsIGNsb3NlRnJv
bUxvY2FsU2lkZV07Ci0KLSAgICBQYWdlKiBwYWdlID0gY29yZShtX3dlYlZpZXcpOwotICAgIGlm
IChwYWdlKSB7Ci0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzY29ubmVj
dEZyb250ZW5kKCk7Ci0KLSAgICAgICAgLy8gUmVzdG9yZSBkZXZlbG9wZXIgZXh0cmFzIHNldHRp
bmcgaW4gV2ViQ29yZS4KLSAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+c2V0dGluZ3MoKSkKLSAg
ICAgICAgICAgIHBhZ2UtPnNldHRpbmdzKCktPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoW1tt
X3dlYlZpZXcgcHJlZmVyZW5jZXNdIGRldmVsb3BlckV4dHJhc0VuYWJsZWRdKTsKLSAgICB9Ci0K
LSAgICBpZiAoZnJvbUxvY2FsU2lkZSkKLSAgICAgICAgW21fcmVtb3RlQ2hhbm5lbCByZWxlYXNl
XTsKLQotICAgIG1fcmVtb3RlQ2hhbm5lbCA9IDA7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xp
ZW50OjpoYXNMb2NhbFNlc3Npb24oKSBjb25zdAotewotICAgIHJldHVybiBtX2Zyb250ZW5kUGFn
ZSAhPSAwOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6Y2FuQmVSZW1vdGVseUluc3Bl
Y3RlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX3dlYlZpZXcgY2FuQmVSZW1vdGVseUluc3Bl
Y3RlZF07Ci19Ci0KLVdlYlZpZXcgKldlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkV2ViVmll
dygpCi17Ci0gICAgcmV0dXJuIG1fd2ViVmlldzsKLX0KLSNlbmRpZgotCiAKICNwcmFnbWEgbWFy
ayAtCiAjcHJhZ21hIG1hcmsgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgSW1wbGVtZW50YXRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCBmYzdkMDZkLi41Y2I4MjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNjQgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0
b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKwor
ICAgICAgICBSZW1vdmUgdGhlIG9sZCBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikgY29ubmVjdGlv
biBtYW5hZ2VtZW50IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYklu
c3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKToKKyAgICAgICAgKiBXZWJJbnNwZWN0
b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lmg6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbGF5RGVm
aW5pdGlvbnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYklu
c3BlY3RvclJlbW90ZUNoYW5uZWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3Iv
cmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW06IFJlbW92ZWQuCisgICAgICAgICog
V2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5tbTogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJ
bnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29u
dHJvbGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ci5tOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdC5leHA6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhG
cmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9lbmFibGVSZW1vdGVJ
bnNwZWN0b3JdKToKKyAgICAgICAgKCtbV2ViVmlldyBfZGlzYWJsZVJlbW90ZUluc3BlY3Rvcl0p
OgorICAgICAgICAoK1tXZWJWaWV3IF9kaXNhYmxlQXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yXSk6
CisgICAgICAgICgrW1dlYlZpZXcgX2lzUmVtb3RlSW5zcGVjdG9yRW5hYmxlZF0pOgorICAgICAg
ICAoK1tXZWJWaWV3IF9oYXNSZW1vdGVJbnNwZWN0b3JTZXNzaW9uXSk6CisgICAgICAgICgtW1dl
YlZpZXcgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbl0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEFs
bG93c1JlbW90ZUluc3BlY3Rpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0SW5kaWNhdGlu
Z0ZvclJlbW90ZUluc3BlY3RvcjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRIb3N0QXBwbGlj
YXRpb25CdW5kbGVJZDpuYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9kaWRDb21taXRMb2Fk
Rm9yRnJhbWU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlld0RhdGEubW06CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGluaXRd
KToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgZGVhbGxvY10pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5o
OgorCisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBj
b25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmluZGljYXRlKToKKyAgICAgICAg
KFdlYkluc3BlY3RvckNsaWVudDo6aGlkZUluZGljYXRlKToKKyAgICAgICAgSG9vayB1cCBXZWJW
aWV3IGluZGljYXRpb24gdGhyb3VnaCB0aGlzIG5ldyBwYXRoLgorCiAyMDEzLTExLTI4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZmVhdHVyZTog
Q1NTIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCAxODc1YWMwLi42ZTc4YTFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQpAQCAtMTM4LDEwICsxMzgsNiBAQAogI2ltcG9ydCAiV2ViSG9zdGVkTmV0
c2NhcGVQbHVnaW5WaWV3LmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCkBAIC02MjEsMTIgKzYx
Nyw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpCiAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+
ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jKQogICAgICAgICAvLyBGSVhNRTogdXNlIGRpcmVj
dGlvbiBvZiB0aXRsZS4KICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0
aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2Vi
VmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUuc3RyaW5n
KCksIG1fd2ViRnJhbWUuZ2V0KCkpOwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0g
ICAgQk9PTCBpc01haW5GcmFtZSA9IFt3ZWJWaWV3IG1haW5GcmFtZV0gPT0gbV93ZWJGcmFtZS5n
ZXQoKTsKLSAgICBpZiAoaXNNYWluRnJhbWUpCi0gICAgICAgIFtbV2ViVmlldyBzaGFyZWRXZWJJ
bnNwZWN0b3JTZXJ2ZXJdIHB1c2hMaXN0aW5nXTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaAppbmRleCA1NTFhZjdmLi4yMmYzYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNzMsNiArNzMs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodCgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZv
aWQgaW5kaWNhdGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZUluZGljYXRpb24o
KSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJv
b2wpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChj
b25zdCBTdHJpbmcmKSBPVkVSUklERTsKQEAgLTg1LDIyICs4OCw2IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcmVsZWFzZUZyb250ZW5kKCk7CiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
LSAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpOwotCi0gICAgYm9v
bCBzZXR1cFJlbW90ZUNvbm5lY3Rpb24oV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqcmVtb3Rl
Q2hhbm5lbCk7Ci0gICAgdm9pZCB0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24oYm9vbCBmcm9tTG9j
YWxTaWRlKTsKLQotICAgIHVuc2lnbmVkIHBhZ2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlk
OyB9Ci0gICAgdm9pZCBzZXRQYWdlSWQodW5zaWduZWQgcGFnZUlkKSB7IG1fcGFnZUlkID0gcGFn
ZUlkOyB9Ci0KLSAgICBib29sIGhhc0xvY2FsU2Vzc2lvbigpIGNvbnN0OwotCi0gICAgYm9vbCBj
YW5CZVJlbW90ZWx5SW5zcGVjdGVkKCkgY29uc3Q7Ci0KLSAgICBXZWJWaWV3ICppbnNwZWN0ZWRX
ZWJWaWV3KCk7Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBjcmVhdGVGcm9udGVuZFNldHRp
bmdzKCk7CiAKQEAgLTEwOCwxMSArOTUsNiBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxXZWJO
b2RlSGlnaGxpZ2h0ZXI+IG1faGlnaGxpZ2h0ZXI7CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9u
dGVuZFBhZ2U7CiAgICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGll
bnQ7Ci0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBXZWJJbnNwZWN0b3JSZW1v
dGVDaGFubmVsICptX3JlbW90ZUNoYW5uZWw7Ci0gICAgdW5zaWduZWQgbV9wYWdlSWQ7Ci0jZW5k
aWYKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IGU0MzhjNmQuLmUyNWViZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
bW0KQEAgLTU1LDExICs1NSw2IEBACiAjaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogI2ltcG9y
dCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSNp
bXBvcnQgIldlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0
b3JSZW1vdGVDaGFubmVsLmgiCi0jZW5kaWYKLQogU09GVF9MSU5LX1NUQUdFRF9GUkFNRVdPUkso
V2ViSW5zcGVjdG9yVUksIFByaXZhdGVGcmFtZXdvcmtzLCBBKQogCiAvLyBUaGUgbWFyZ2luIGZy
b20gdGhlIHRvcCBhbmQgcmlnaHQgb2YgdGhlIGRvY2sgYnV0dG9uIChzYW1lIGFzIHRoZSBmdWxs
IHNjcmVlbiBidXR0b24pLgpAQCAtMTM1LDIzICsxMzAsMTEgQEAgV2ViSW5zcGVjdG9yQ2xpZW50
OjpXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqd2ViVmlldykKICAgICAsIG1faGlnaGxpZ2h0
ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRX
ZWJWaWV3OndlYlZpZXddKSkKICAgICAsIG1fZnJvbnRlbmRQYWdlKDApCiAgICAgLCBtX2Zyb250
ZW5kQ2xpZW50KDApCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX3JlbW90
ZUNoYW5uZWwoMCkKLSAgICAsIG1fcGFnZUlkKDApCi0jZW5kaWYKIHsKLSNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLSAgICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJl
Z2lzdHJ5XSByZWdpc3RlckNsaWVudDp0aGlzXTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKIHsKLSNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKLSAgICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5
XSB1bnJlZ2lzdGVyQ2xpZW50OnRoaXNdOwotICAgIHRlYXJkb3duUmVtb3RlQ29ubmVjdGlvbih0
cnVlKTsKLSNlbmRpZgotCiAgICAgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOwogICAgIGRlbGV0
ZSB0aGlzOwogfQpAQCAtMTk3LDYgKzE4MCwxNiBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6
aGlkZUhpZ2hsaWdodCgpCiAgICAgW21faGlnaGxpZ2h0ZXIuZ2V0KCkgaGlkZUhpZ2hsaWdodF07
CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbmRpY2F0ZSgpCit7CisgICAgW21fd2Vi
VmlldyBzZXRJbmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOllFU107Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpoaWRlSW5kaWNhdGlvbigpCit7CisgICAgW21fd2ViVmlldyBzZXRJ
bmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOk5PXTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQogewogICAgIFdlYklu
c3BlY3RvciAqaW5zcGVjdG9yID0gW21fd2ViVmlldyBpbnNwZWN0b3JdOwpAQCAtMjE1LDc4ICsy
MDgsNiBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKCkKICAgICBt
X2Zyb250ZW5kUGFnZSA9IDA7CiB9CiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLWJv
b2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQotewotICAgIGlmIChtX3JlbW90ZUNoYW5uZWwpIHsKLSAgICAgICAgW21fcmVt
b3RlQ2hhbm5lbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6bWVzc2FnZV07Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQ
YWdlKG1fZnJvbnRlbmRQYWdlLCBtZXNzYWdlKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBB
U1NFUlQobV9yZW1vdGVDaGFubmVsKTsKLQotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmll
dyk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRjaE1lc3NhZ2VGcm9t
RnJvbnRlbmQobWVzc2FnZSk7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXR1cFJl
bW90ZUNvbm5lY3Rpb24oV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqcmVtb3RlQ2hhbm5lbCkK
LXsKLSAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgbG9jYWwgc2Vzc2lvbiwgZG8gbm90IGFsbG93
IGEgcmVtb3RlIHNlc3Npb24uCi0gICAgaWYgKGhhc0xvY2FsU2Vzc2lvbigpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgcmVtb3RlIHNlc3Npb24s
IGRvIG5vdCBhbGxvdyBhIG5ldyByZW1vdGUgc2Vzc2lvbi4KLSAgICBpZiAobV9yZW1vdGVDaGFu
bmVsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBU1NFUlQoW1ttX3dlYlZpZXcgcHJl
ZmVyZW5jZXNdIGRldmVsb3BlckV4dHJhc0VuYWJsZWRdKTsKLQotICAgIG1fcmVtb3RlQ2hhbm5l
bCA9IHJlbW90ZUNoYW5uZWw7Ci0KLSAgICBQYWdlKiBwYWdlID0gY29yZShtX3dlYlZpZXcpOwot
ICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29ubmVjdEZyb250ZW5kKHRoaXMpOwot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojp0ZWFyZG93
blJlbW90ZUNvbm5lY3Rpb24oYm9vbCBmcm9tTG9jYWxTaWRlKQotewotICAgIGlmICghbV9yZW1v
dGVDaGFubmVsKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoZnJvbUxvY2FsU2lkZSkKLSAg
ICAgICAgW21fcmVtb3RlQ2hhbm5lbCBjbG9zZUZyb21Mb2NhbFNpZGVdOwotCi0gICAgaWYgKFBh
Z2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmlldykpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7Ci0KLSAgICBpZiAoZnJvbUxvY2FsU2lkZSkK
LSAgICAgICAgW21fcmVtb3RlQ2hhbm5lbCByZWxlYXNlXTsKLQotICAgIG1fcmVtb3RlQ2hhbm5l
bCA9IDA7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpoYXNMb2NhbFNlc3Npb24oKSBj
b25zdAotewotICAgIHJldHVybiBtX2Zyb250ZW5kUGFnZSAhPSAwOwotfQotCi1ib29sIFdlYklu
c3BlY3RvckNsaWVudDo6Y2FuQmVSZW1vdGVseUluc3BlY3RlZCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFttX3dlYlZpZXcgY2FuQmVSZW1vdGVseUluc3BlY3RlZF07Ci19Ci0KLVdlYlZpZXcgKldl
Ykluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkV2ViVmlldygpCi17Ci0gICAgcmV0dXJuIG1fd2Vi
VmlldzsKLX0KLSNlbmRpZgotCiAKIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0
b3JXaW5kb3dDb250cm9sbGVyKiB3aW5kb3dDb250cm9sbGVyLCBJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyLCBQYWdlKiBmcm9udGVuZFBhZ2UsIFdURjo6UGFzc093blB0
cjxTZXR0aW5ncz4gc2V0dGluZ3MpCiAgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
KGluc3BlY3RvckNvbnRyb2xsZXIsICBmcm9udGVuZFBhZ2UsIHNldHRpbmdzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGll
bnRSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDgwOTQ4ZDUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3Jl
bW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEw
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGll
bnRSZWdpc3RyeS5oIgotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKLSNpbXBvcnQg
IldlYlZpZXdQcml2YXRlLmgiCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0b3JDbGllbnRS
ZWdpc3RyeQotCi1Ac3ludGhlc2l6ZSBkZWxlZ2F0ZSA9IF9kZWxlZ2F0ZTsKLQotKyAoV2ViSW5z
cGVjdG9yQ2xpZW50UmVnaXN0cnkgKilzaGFyZWRSZWdpc3RyeQotewotICAgIHN0YXRpYyBXZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeSAqc2hhcmVkUmVnaXN0cnkgPSBbW1dlYkluc3BlY3RvckNs
aWVudFJlZ2lzdHJ5IGFsbG9jXSBpbml0XTsKLSAgICByZXR1cm4gc2hhcmVkUmVnaXN0cnk7Ci19
Ci0KLS0gKGlkKWluaXQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2Vs
ZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9uZXh0QXZhaWxhYmxlUGFnZUlkID0gMTsK
LQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh1bnNpZ25lZClfZ2V0TmV4dEF2YWlsYWJsZVBh
Z2VJZAotewotICAgIC8vIEJvdW5kYXJ5IHZhbHVlcywgMCBhbmQgVUlOVF9NQVgsIGFyZSBpbnZh
bGlkIEhhc2hNYXAga2V5cy4KLSAgICB1bnNpZ25lZCBuZXh0VmFsaWRQYWdlSWQ7Ci0gICAgZG8g
ewotICAgICAgICBuZXh0VmFsaWRQYWdlSWQgPSBfbmV4dEF2YWlsYWJsZVBhZ2VJZCsrOwotICAg
IH0gd2hpbGUgKCFuZXh0VmFsaWRQYWdlSWQgfHwgbmV4dFZhbGlkUGFnZUlkID09IFVJTlRfTUFY
IHx8IF9wYWdlQ2xpZW50TWFwLmNvbnRhaW5zKG5leHRWYWxpZFBhZ2VJZCkpOwotICAgIHJldHVy
biBuZXh0VmFsaWRQYWdlSWQ7Ci19Ci0KLS0gKHZvaWQpcmVnaXN0ZXJDbGllbnQ6KFdlYkluc3Bl
Y3RvckNsaWVudCopY2xpZW50Ci17Ci0gICAgdW5zaWduZWQgcGFnZUlkID0gW3NlbGYgX2dldE5l
eHRBdmFpbGFibGVQYWdlSWRdOwotICAgIF9wYWdlQ2xpZW50TWFwLnNldChwYWdlSWQsIGNsaWVu
dCk7Ci0gICAgY2xpZW50LT5zZXRQYWdlSWQocGFnZUlkKTsKLSAgICBbX2RlbGVnYXRlIGRpZFJl
Z2lzdGVyQ2xpZW50OmNsaWVudF07Ci19Ci0KLS0gKHZvaWQpdW5yZWdpc3RlckNsaWVudDooV2Vi
SW5zcGVjdG9yQ2xpZW50KiljbGllbnQKLXsKLSAgICB1bnNpZ25lZCBwYWdlSWQgPSBjbGllbnQt
PnBhZ2VJZCgpOwotICAgIF9wYWdlQ2xpZW50TWFwLnJlbW92ZShwYWdlSWQpOwotICAgIFtfZGVs
ZWdhdGUgZGlkVW5yZWdpc3RlckNsaWVudDpjbGllbnRdOwotfQotCi0tIChXZWJJbnNwZWN0b3JD
bGllbnQqKWNsaWVudEZvclBhZ2VJZDoodW5zaWduZWQpcGFnZUlkCi17Ci0gICAgcmV0dXJuIF9w
YWdlQ2xpZW50TWFwLmdldChwYWdlSWQpOwotfQotCi0tIChOU0RpY3Rpb25hcnkgKilpbnNwZWN0
YWJsZVdlYlZpZXdzCi17Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtO
U011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ2FwYWNpdHk6X3BhZ2VDbGllbnRNYXAu
c2l6ZSgpXTsKLQotICAgIEhhc2hNYXA8dW5zaWduZWQsIFdlYkluc3BlY3RvckNsaWVudCo+Ojpp
dGVyYXRvciBlbmQgPSBfcGFnZUNsaWVudE1hcC5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8dW5z
aWduZWQsIFdlYkluc3BlY3RvckNsaWVudCo+OjppdGVyYXRvciBpdCA9IF9wYWdlQ2xpZW50TWFw
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0g
aXQtPnZhbHVlLT5pbnNwZWN0ZWRXZWJWaWV3KCk7Ci0gICAgICAgIGlmICghW3dlYlZpZXcgY2Fu
QmVSZW1vdGVseUluc3BlY3RlZF0pCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBO
U051bWJlciAqcGFnZUlkID0gW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDppdC0+a2V5
XTsKLSAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OndlYlZpZXcgZm9yS2V5OnBhZ2VJZF07
Ci0gICAgfQotCi0gICAgcmV0dXJuIGRpY3Rpb25hcnk7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclJlbW90ZUNoYW5uZWwubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVt
b3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGM4ZmZjZDYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVj
dG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLSNpbXBvcnQgIldlYkluc3BlY3Rv
clJlbW90ZUNoYW5uZWwuaCIKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW1w
b3J0ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9y
U2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCIKLSNpbXBvcnQgIldlYktpdExvZ2dpbmcuaCIKLSNp
bXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotQGludGVyZmFjZSBXZWJJbnNwZWN0b3JSZW1v
dGVDaGFubmVsICgpCi0tIChpZClpbml0V2l0aFJlbW90ZTooV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb24gKilyZW1vdGUgbG9jYWw6KFdlYkluc3BlY3RvckNsaWVudCopbG9jYWw7
Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsCi0KLSsg
KFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKiljcmVhdGVDaGFubmVsRm9yUGFnZUlkOih1bnNp
Z25lZClwYWdlSWQgY29ubmVjdGlvbjooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24gKiljb25uZWN0aW9uCi17Ci0gICAgLy8gR2V0IHRoZSBJbnNwZWN0b3IgY2xpZW50LiBJdHMg
cG9zc2libGUgdGhlIHBhZ2UgY2xvc2VkIGJlZm9yZSB0aGUgcmVtb3RlIGNsaWVudCByZXF1ZXN0
ZWQgaXQuCi0gICAgV2ViSW5zcGVjdG9yQ2xpZW50ICppbnNwZWN0b3JDbGllbnQgPSBbW1dlYklu
c3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XSBjbGllbnRGb3JQYWdlSWQ6cGFn
ZUlkXTsKLSAgICBpZiAoIWluc3BlY3RvckNsaWVudCkgewotICAgICAgICBMT0coUmVtb3RlSW5z
cGVjdG9yLCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbDogUGFnZSByZXF1ZXN0ZWQgbm8gbG9u
Z2VyIGV4aXN0czogKCV1KSIsIHBhZ2VJZCk7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQot
Ci0gICAgLy8gVGhlIFdlYlZpZXcgZG9lcyBub3QgYWxsb3cgcmVtb3RlIGluc3BlY3Rpb24uCi0g
ICAgaWYgKCFpbnNwZWN0b3JDbGllbnQtPmNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQoKSkgewotICAg
ICAgICBMT0coUmVtb3RlSW5zcGVjdG9yLCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbDogV2Vi
VmlldyBmb3IgUGFnZSAoJXUpIGRvZXMgbm90IGFsbG93IHJlbW90ZSBpbnNwZWN0aW9uLiIsIHBh
Z2VJZCk7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgLy8gVGhlIGNoYW5uZWwg
aXMgcmVsZWFzZWQgYnkgd2hpY2hldmVyIHNpZGUgY2xvc2VzIHRoZSBjaGFubmVsLiBUaGUgY2hh
bm5lbCBjb3VsZCBiZSBjbG9zZWQKLSAgICAvLyByZW1vdGVseSBieSB0aGUgc29ja2V0IGNsb3Np
bmcgKHRoZSB1c2VyIG5hdmlnYXRpbmcgYXdheSBmcm9tIHRoZSByZW1vdGUgaW5zcGVjdG9yIHBh
Z2UpLgotICAgIC8vIEl0IGNvdWxkIGJlIGNsb3NlZCBsb2NhbGx5IGJ5IHRoZSBQYWdlIGJlaW5n
IGRlc3Ryb3llZCwgbGlrZSB0aGUgYnJvd3NlciBvciB0YWIgYmVpbmcgY2xvc2VkLgotICAgIC8v
IFNldHRpbmcgdXAgdGhlIGNvbm5lY3Rpb24gY2FuIGZhaWwgaWYgdGhlcmUgaXMgYWxyZWFkeSBh
biBleGlzdGluZyBzZXNzaW9uLgotICAgIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKmNoYW5u
ZWwgPSBbW1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgYWxsb2NdIGluaXRXaXRoUmVtb3RlOmNv
bm5lY3Rpb24gbG9jYWw6aW5zcGVjdG9yQ2xpZW50XTsKLSAgICBpZiAoIWluc3BlY3RvckNsaWVu
dC0+c2V0dXBSZW1vdGVDb25uZWN0aW9uKGNoYW5uZWwpKSB7Ci0gICAgICAgIExPRyhSZW1vdGVJ
bnNwZWN0b3IsICJXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsOiBTZXR0aW5nIHVwIGEgcmVtb3Rl
IHNlc3Npb24gZmFpbGVkLiBQcm9iYWJseSBhbHJlYWR5IGEgbG9jYWwgc2Vzc2lvbi4iKTsKLSAg
ICAgICAgW2NoYW5uZWwgcmVsZWFzZV07Ci0gICAgICAgIGNoYW5uZWwgPSBuaWw7Ci0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNoYW5uZWw7Ci19Ci0KLS0gKGlkKWlu
aXRXaXRoUmVtb3RlOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqKXJlbW90
ZSBsb2NhbDooV2ViSW5zcGVjdG9yQ2xpZW50Kilsb2NhbAotewotICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX3JlbW90
ZSA9IHJlbW90ZTsKLSAgICBfbG9jYWwgPSBsb2NhbDsKLQotICAgIHJldHVybiBzZWxmOwotfQot
Ci0tICh2b2lkKWNsb3NlRnJvbUxvY2FsU2lkZQotewotICAgIC8vIExvY2FsIHNpZGUgd2lsbCBy
ZWxlYXNlLiBNYWtlIHN1cmUgdGhlIHJlbW90ZSBzaWRlIGNsZWFycyBpdHMgcmVmZXJlbmNlIHRv
IHRoZSBjaGFubmVsLgotICAgIFtfcmVtb3RlIGNsZWFyQ2hhbm5lbF07Ci19Ci0KLS0gKHZvaWQp
Y2xvc2VGcm9tUmVtb3RlU2lkZQotewotICAgIC8vIFJlbW90ZSBzaWRlIHdpbGwgcmVsZWFzZS4g
TWFrZSBzdXJlIHRoZSBsb2NhbCBzaWRlIGNsZWFycyBpdHMgcmVmZXJlbmNlIHRvIHRoZSBjaGFu
bmVsLgotICAgIF9sb2NhbC0+dGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKGZhbHNlKTsKLX0KLQot
LSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZQotewotICAg
IFtfcmVtb3RlIHNlbmRNZXNzYWdlVG9Gcm9udGVuZDptZXNzYWdlXTsKLX0KLQotLSAodm9pZClz
ZW5kTWVzc2FnZVRvQmFja2VuZDooTlNTdHJpbmcgKiltZXNzYWdlCi17Ci0gICAgX2xvY2FsLT5z
ZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKTsKLX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
U2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclNlcnZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjY3OTBmLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVj
dG9yU2VydmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xp
ZW50UmVnaXN0cnkuaCIKLQotQGNsYXNzIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uQ29udHJvbGxlcjsKLUBjbGFzcyBXZWJJbnNwZWN0b3JYUENXcmFwcGVyOwotCi1AaW50ZXJm
YWNlIFdlYkluc3BlY3RvclNlcnZlciA6IE5TT2JqZWN0IDxXZWJJbnNwZWN0b3JDbGllbnRSZWdp
c3RyeURlbGVnYXRlPiB7Ci1AcHJpdmF0ZQotICAgIEJPT0wgX2lzRW5hYmxlZDsKLSAgICBCT09M
IF9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247Ci0gICAgaW50IF9ub3RpZnlUb2tlbjsKLSAgICBXZWJJ
bnNwZWN0b3JYUENXcmFwcGVyICpfeHBjQ29ubmVjdGlvbjsKLSAgICBXZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgKl9jb25uZWN0aW9uQ29udHJvbGxlcjsKLX0K
LQotLSAodm9pZClzdGFydDsKLS0gKHZvaWQpc3RvcDsKLS0gKEJPT0wpaXNFbmFibGVkOwotLSAo
dm9pZClwdXNoTGlzdGluZzsKLQotLSAoQk9PTCloYXNBY3RpdmVEZWJ1Z1Nlc3Npb247Ci0tICh2
b2lkKXNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjooQk9PTCloYXNTZXNzaW9uOwotCi0tIChXZWJJ
bnNwZWN0b3JYUENXcmFwcGVyICopeHBjQ29ubmVjdGlvbjsKLQotQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNl
cnZlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM5YTczYS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNl
cnZlci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKLQotI2ltcG9ydCAiV2ViSW5zcGVj
dG9yQ2xpZW50LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmgiCi0j
aW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCIK
LSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCIKLSNpbXBvcnQgIldlYlZpZXdQcml2
YXRlLmgiCi0jaW1wb3J0IDxub3RpZnkuaD4KLSNpbXBvcnQgPHhwYy94cGMuaD4KLQotCi0jcHJh
Z21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIFByaXZhdGUgQ2xhc3MgRGV0YWlscwotCi1AaW50ZXJm
YWNlIFdlYkluc3BlY3RvclNlcnZlciAoKSA8V2ViSW5zcGVjdG9yWFBDV3JhcHBlckRlbGVnYXRl
PgotLSAodm9pZClzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZDsKLS0gKHZvaWQpeHBjQ29ubmVj
dGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb24gcmVjZWl2ZWRNZXNzYWdl
OihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5m
bzsKLS0gKHZvaWQpeHBjQ29ubmVjdGlvbkZhaWxlZDooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAq
KWNvbm5lY3Rpb247Ci1AZW5kCi0KLQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBTZXJ2
ZXIgSW1wbGVtZW50YXRpb24KLQotQGltcGxlbWVudGF0aW9uIFdlYkluc3BlY3RvclNlcnZlcgot
Ci0tIChpZClpbml0Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfY29ubmVjdGlvbkNvbnRyb2xsZXIgPSBbW1dl
Ykluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdp
dGhTZXJ2ZXI6c2VsZl07Ci0KLSAgICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJl
ZFJlZ2lzdHJ5XSBzZXREZWxlZ2F0ZTpzZWxmXTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0t
ICh2b2lkKWRlYWxsb2MKLXsKLSAgICAvLyBTaW5nbGV0b24gaXMgbm90IGV4cGVjdGVkIHRvIGJl
IHJlbGVhc2VkLgotCi0gICAgW3NlbGYgc3RvcF07Ci0KLSAgICBBU1NFUlQoIV94cGNDb25uZWN0
aW9uKTsKLSAgICBbX2Nvbm5lY3Rpb25Db250cm9sbGVyIHJlbGVhc2VdOwotCi0gICAgW1tXZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gc2V0RGVsZWdhdGU6bmlsXTsK
LQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClzdGFydAotewotICAgIGlmIChf
aXNFbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfaXNFbmFibGVkID0gWUVTOwotCi0g
ICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKFdJUlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRp
b24sICZfbm90aWZ5VG9rZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oaW50IHRva2Vu
KSB7Ci0gICAgICAgIFtzZWxmIHNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkXTsKLSAgICB9KTsK
LQotICAgIG5vdGlmeV9wb3N0KFdJUlNlcnZpY2VBdmFpbGFiaWxpdHlDaGVja05vdGlmaWNhdGlv
bik7Ci19Ci0KLS0gKHZvaWQpc3RvcAotewotICAgIGlmICghX2lzRW5hYmxlZCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgX2lzRW5hYmxlZCA9IE5POwotCi0gICAgW19jb25uZWN0aW9uQ29udHJv
bGxlciBjbG9zZUFsbENvbm5lY3Rpb25zXTsKLQotICAgIGlmIChfeHBjQ29ubmVjdGlvbikgewot
ICAgICAgICBbX3hwY0Nvbm5lY3Rpb24gY2xvc2VdOwotICAgICAgICBfeHBjQ29ubmVjdGlvbi5k
ZWxlZ2F0ZSA9IG5pbDsKLSAgICAgICAgW194cGNDb25uZWN0aW9uIHJlbGVhc2VdOwotICAgICAg
ICBfeHBjQ29ubmVjdGlvbiA9IG5pbDsKLSAgICB9Ci0KLSAgICBub3RpZnlfY2FuY2VsKF9ub3Rp
ZnlUb2tlbik7Ci19Ci0KLS0gKEJPT0wpaXNFbmFibGVkCi17Ci0gICAgcmV0dXJuIF9pc0VuYWJs
ZWQ7Ci19Ci0KLS0gKFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKil4cGNDb25uZWN0aW9uCi17Ci0g
ICAgcmV0dXJuIF94cGNDb25uZWN0aW9uOwotfQotCi0tICh2b2lkKXNldHVwWFBDQ29ubmVjdGlv
bklmTmVlZGVkCi17Ci0gICAgaWYgKF94cGNDb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0K
LSAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlvbl9jcmVhdGVf
bWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgMCk7Ci0gICAgaWYgKGNvbm5lY3Rpb24pIHsKLSAgICAgICAgX3hwY0Nvbm5lY3Rpb24gPSBb
W1dlYkluc3BlY3RvclhQQ1dyYXBwZXIgYWxsb2NdIGluaXRXaXRoQ29ubmVjdGlvbjpjb25uZWN0
aW9uXTsKLSAgICAgICAgX3hwY0Nvbm5lY3Rpb24uZGVsZWdhdGUgPSBzZWxmOwotICAgICAgICBb
X3hwY0Nvbm5lY3Rpb24gc2VuZE1lc3NhZ2U6QCJzeW4iIHVzZXJJbmZvOm5pbF07Ci0gICAgICAg
IHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwotICAgIH0KLX0KLQotLSAodm9pZClwdXNoTGlzdGlu
ZwotewotICAgIGlmICghX2lzRW5hYmxlZCB8fCAhX3hwY0Nvbm5lY3Rpb24pCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFtfY29ubmVjdGlvbkNvbnRyb2xsZXIgcHVzaExpc3RpbmddOwotfQotCi0t
IChCT09MKWhhc0FjdGl2ZURlYnVnU2Vzc2lvbgotewotICAgIHJldHVybiBfaGFzQWN0aXZlRGVi
dWdTZXNzaW9uOwotfQotCi0tICh2b2lkKXNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjooQk9PTClo
YXNTZXNzaW9uCi17Ci0gICAgaWYgKF9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24gPT0gaGFzU2Vzc2lv
bikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbiA9IGhhc1Nl
c3Npb247Ci0KLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3RO
b3RpZmljYXRpb25OYW1lOl9XZWJWaWV3UmVtb3RlSW5zcGVjdG9ySGFzU2Vzc2lvbkNoYW5nZWRO
b3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci19Ci0KLQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEg
bWFyayBXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGUgSW1wbGVtZW50YXRpb24KLQotLSAo
dm9pZCl4cGNDb25uZWN0aW9uOihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopeHBjQ29ubmVjdGlv
biByZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGlj
dGlvbmFyeSAqKXVzZXJJbmZvCi17Ci0gICAgQVNTRVJUKHhwY0Nvbm5lY3Rpb24gPT0gX3hwY0Nv
bm5lY3Rpb24pOwotCi0gICAgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSUGVy
bWlzc2lvbkRlbmllZF0pCi0gICAgICAgIFtzZWxmIHN0b3BdOwotICAgIGVsc2UKLSAgICAgICAg
W19jb25uZWN0aW9uQ29udHJvbGxlciByZWNlaXZlZE1lc3NhZ2U6bWVzc2FnZU5hbWUgdXNlcklu
Zm86dXNlckluZm9dOwotfQotCi0tICh2b2lkKXhwY0Nvbm5lY3Rpb25GYWlsZWQ6KFdlYkluc3Bl
Y3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uCi17Ci0gICAgW19jb25uZWN0aW9uQ29udHJvbGxl
ciBjbG9zZUFsbENvbm5lY3Rpb25zXTsKLQotICAgIGlmIChfeHBjQ29ubmVjdGlvbikgewotICAg
ICAgICBfeHBjQ29ubmVjdGlvbi5kZWxlZ2F0ZSA9IG5pbDsKLSAgICAgICAgW194cGNDb25uZWN0
aW9uIHJlbGVhc2VdOwotICAgICAgICBfeHBjQ29ubmVjdGlvbiA9IG5pbDsKLSAgICB9Ci19Ci0K
LQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3Ry
eURlbGVnYXRlIGltcGxlbWVudGF0aW9uCi0KLS0gKHZvaWQpZGlkUmVnaXN0ZXJDbGllbnQ6KFdl
Ykluc3BlY3RvckNsaWVudCopY2xpZW50Ci17Ci0gICAgLy8gV2hlbiBhIFdlYlZpZXcgaXMgcmVn
aXN0ZXJlZCBpdCBoYXMgbm8gY29udGVudC4gQnV0IHNvbWUgV2ViVmlld3MKLSAgICAvLyBuZXZl
ciBsb2FkIGNvbnRlbnQgZnJvbSBhIFVSTCwgc3VjaCBhcyBVSVRleHRGaWVsZHMgb24gaU9TLgot
ICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQotLSAodm9pZClkaWRVbnJlZ2lzdGVyQ2xpZW50
OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudAotewotICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsK
LX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYklu
c3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWFlZDgx
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24ubW0KKysrIC9kZXYvbnVsbApAQCAtMSwx
MzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2Vy
dmVyV2ViVmlld0Nvbm5lY3Rpb24uaCIKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50Lmgi
Ci0jaW1wb3J0ICJXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmgiCi0jaW1wb3J0ICJXZWJJ
bnNwZWN0b3JSZW1vdGVDaGFubmVsLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIK
LSNpbXBvcnQgIldlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5o
IgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIgotI2ltcG9ydCAiV2ViS2l0TG9n
Z2luZy5oIgotI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi1AaW1wbGVtZW50YXRpb24g
V2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24KLQotLSAoaWQpaW5pdFdpdGhDb250
cm9sbGVyOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgKilj
b250cm9sbGVyIGNvbm5lY3Rpb25JZGVudGlmaWVyOihOU1N0cmluZyAqKWNvbm5lY3Rpb25JZGVu
dGlmaWVyIGRlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uIGlkZW50aWZpZXI6KE5T
TnVtYmVyICopaWRlbnRpZmllcgotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYg
KCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX2NvbnRyb2xsZXIgPSBjb250cm9s
bGVyOwotICAgIF9jb25uZWN0aW9uSWRlbnRpZmllciA9IFtjb25uZWN0aW9uSWRlbnRpZmllciBj
b3B5XTsKLSAgICBfZGVzdGluYXRpb24gPSBbZGVzdGluYXRpb24gY29weV07Ci0gICAgX2lkZW50
aWZpZXIgPSBbaWRlbnRpZmllciBjb3B5XTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChC
T09MKXNldHVwQ2hhbm5lbAotewotICAgIEFTU0VSVCghX2NoYW5uZWwpOwotICAgIHVuc2lnbmVk
IHBhZ2VJZCA9IFtfaWRlbnRpZmllciB1bnNpZ25lZEludFZhbHVlXTsKLSAgICBfY2hhbm5lbCA9
IFtXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsIGNyZWF0ZUNoYW5uZWxGb3JQYWdlSWQ6cGFnZUlk
IGNvbm5lY3Rpb246c2VsZl07Ci0gICAgcmV0dXJuIF9jaGFubmVsICE9IG5pbDsKLX0KLQotLSAo
dm9pZClkZWFsbG9jCi17Ci0gICAgQVNTRVJUKCFfY2hhbm5lbCk7Ci0gICAgW19jb25uZWN0aW9u
SWRlbnRpZmllciByZWxlYXNlXTsKLSAgICBbX2Rlc3RpbmF0aW9uIHJlbGVhc2VdOwotICAgIFtf
aWRlbnRpZmllciByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKE5TU3Ry
aW5nICopY29ubmVjdGlvbklkZW50aWZpZXIKLXsKLSAgICByZXR1cm4gW1tfY29ubmVjdGlvbklk
ZW50aWZpZXIgY29weV0gYXV0b3JlbGVhc2VdOwotfQotCi0tIChOU051bWJlciAqKWlkZW50aWZp
ZXIKLXsKLSAgICByZXR1cm4gW1tfaWRlbnRpZmllciBjb3B5XSBhdXRvcmVsZWFzZV07Ci19Ci0K
LQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBJbnRlcmFjdGlvbiB3aXRoIHRoZSBjaGFu
bmVsIHRvIHRoZSBsb2NhbCBpbnNwZWN0b3IgYmFja2VuZAotCi0tICh2b2lkKWNsZWFyQ2hhbm5l
bAotewotICAgIF9jaGFubmVsID0gbmlsOwotICAgIFtfY29udHJvbGxlciBjb25uZWN0aW9uQ2xv
c2luZzpzZWxmXTsKLX0KLQotLSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5n
ICopbWVzc2FnZQotewotICAgIE5TRGF0YSAqZGF0YSA9IFttZXNzYWdlIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBOU0RpY3Rpb25hcnkgKm91dGdvaW5nID0g
W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBkYXRh
LCBXSVJSYXdEYXRhS2V5LAotICAgICAgICBfY29ubmVjdGlvbklkZW50aWZpZXIsIFdJUkNvbm5l
Y3Rpb25JZGVudGlmaWVyS2V5LAotICAgICAgICBfZGVzdGluYXRpb24sIFdJUkRlc3RpbmF0aW9u
S2V5LAotICAgICAgICBuaWxdOwotCi0gICAgW19jb250cm9sbGVyIHNlbmRNZXNzYWdlVG9Gcm9u
dGVuZDpXSVJSYXdEYXRhTWVzc2FnZSB1c2VySW5mbzpvdXRnb2luZ107Ci19Ci0KLS0gKHZvaWQp
c2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZQotewotICAgIEFTU0VSVChf
Y2hhbm5lbCk7Ci0gICAgTE9HKFJlbW90ZUluc3BlY3RvciwgIldlYkluc3BlY3RvclNlcnZlckNv
bm5lY3Rpb246IFJlY2VpdmVkOiB8JXN8IiwgU3RyaW5nKG1lc3NhZ2UpLnV0ZjgoKS5kYXRhKCkp
OwotCi0gICAgW19jaGFubmVsIHNlbmRNZXNzYWdlVG9CYWNrZW5kOm1lc3NhZ2VdOwotfQotCi0K
LSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgSW50ZXJhY3Rpb24gd2l0aCB0aGUgc2VydmVy
IHRvIHRoZSByZW1vdGUgaW5zcGVjdG9yIGZyb250ZW5kCi0KLS0gKHZvaWQpcmVjZWl2ZWREYXRh
OihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNEYXRhICpkYXRhID0gW2RpY3Rp
b25hcnkgb2JqZWN0Rm9yS2V5OldJUlNvY2tldERhdGFLZXldOwotICAgIE5TU3RyaW5nICptZXNz
YWdlID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddOwotICAgIFtzZWxmIHNlbmRNZXNzYWdlVG9CYWNrZW5kOm1lc3NhZ2Vd
OwotICAgIFttZXNzYWdlIHJlbGVhc2VdOwotfQotCi0tICh2b2lkKXJlY2VpdmVkRGlkQ2xvc2U6
KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAgICBpZiAoX2NoYW5uZWwpIHsKLSAgICAg
ICAgW19jaGFubmVsIGNsb3NlRnJvbVJlbW90ZVNpZGVdOwotICAgICAgICBbX2NoYW5uZWwgcmVs
ZWFzZV07Ci0gICAgICAgIF9jaGFubmVsID0gbmlsOwotICAgIH0KLX0KLQotQGVuZAotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbkNvbnRyb2xsZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlYzIx
MzYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9X
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0KKysrIC9kZXYv
bnVsbApAQCAtMSwzODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmgiCi0KLSNpbXBvcnQg
IldlYkluc3BlY3RvckNsaWVudC5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0
cnkuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCIKLSNpbXBvcnQg
IldlYkluc3BlY3RvclNlcnZlci5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb24uaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCIKLSNpbXBv
cnQgIldlYlZpZXcuaCIKLSNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCi0KLSNpZiBQTEFURk9S
TShJT1MpCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWQuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZVRocmVhZFJ1bi5oPgotI2VuZGlmCi0KLQotQGltcGxlbWVudGF0aW9uIFdlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlcgotCi0tIChpZClpbml0V2l0
aFNlcnZlcjooV2ViSW5zcGVjdG9yU2VydmVyICopc2VydmVyCi17Ci0gICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfc2Vy
dmVyID0gc2VydmVyOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwot
ewotICAgIEFTU0VSVCghW19vcGVuQ29ubmVjdGlvbnMgY291bnRdKTsKLSAgICBbX29wZW5Db25u
ZWN0aW9ucyByZWxlYXNlXTsKLQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClj
bG9zZUFsbENvbm5lY3Rpb25zCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFdlYlRocmVhZFJ1
biheewotI2VuZGlmCi0KLSAgICBmb3IgKE5TTnVtYmVyICprZXkgaW4gX29wZW5Db25uZWN0aW9u
cykgewotICAgICAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqY29ubmVj
dGlvbiA9IFtfb3BlbkNvbm5lY3Rpb25zIG9iamVjdEZvcktleTprZXldOwotICAgICAgICBbY29u
bmVjdGlvbiByZWNlaXZlZERpZENsb3NlOm5pbF07Ci0gICAgfQotICAgIFtfb3BlbkNvbm5lY3Rp
b25zIHJlbW92ZUFsbE9iamVjdHNdOwotCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNz
aW9uOk5PXTsKLSAgICB9KTsKLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICB9KTsKLSNlbmRpZgot
fQotCi0tIChOU0RpY3Rpb25hcnkgKilfbGlzdGluZ0ZvcldlYlZpZXc6KFdlYlZpZXcgKil3ZWJW
aWV3IHBhZ2VJZDooTlNOdW1iZXIgKilwYWdlSWQgcmVnaXN0cnk6KFdlYkluc3BlY3RvckNsaWVu
dFJlZ2lzdHJ5ICopcmVnaXN0cnkKLXsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICp3ZWJWaWV3
RGV0YWlscyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwotCi0gICAgLy8gUGFn
ZSBJRC4KLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnBhZ2VJZCBmb3JLZXk6V0lSUGFn
ZUlkZW50aWZpZXJLZXldOwotCi0gICAgLy8gVVJMLgotICAgIE5TU3RyaW5nICp1cmwgPSBbd2Vi
VmlldyBtYWluRnJhbWVVUkxdOwotICAgIGlmICghdXJsKQotICAgICAgICB1cmwgPSBAImFib3V0
OmJsYW5rIjsKLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnVybCBmb3JLZXk6V0lSVVJM
S2V5XTsKLQotICAgIC8vIFRpdGxlLgotICAgIE5TU3RyaW5nICp0aXRsZSA9IFt3ZWJWaWV3IG1h
aW5GcmFtZVRpdGxlXTsKLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnRpdGxlIGZvcktl
eTpXSVJUaXRsZUtleV07Ci0KLSAgICAvLyBbT3B0aW9uYWxdIENvbm5lY3Rpb24gSWRlbnRpZmll
ciAoUmVtb3RlIERlYnVnZ2VyIFVVSUQpLgotICAgIC8vIFtPcHRpb25hbF0gSGFzIExvY2FsIERl
YnVnZ2VyIFNlc3Npb24uCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24g
KmNvbm5lY3Rpb24gPSBbX29wZW5Db25uZWN0aW9ucyBvYmplY3RGb3JLZXk6cGFnZUlkXTsKLSAg
ICBpZiAoY29ubmVjdGlvbikKLSAgICAgICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDpjb25u
ZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlmaWVyIGZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmll
cktleV07Ci0gICAgZWxzZSB7Ci0gICAgICAgIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjdG9y
Q2xpZW50ID0gW3JlZ2lzdHJ5IGNsaWVudEZvclBhZ2VJZDpbcGFnZUlkIHVuc2lnbmVkSW50VmFs
dWVdXTsKLSAgICAgICAgaWYgKGluc3BlY3RvckNsaWVudC0+aGFzTG9jYWxTZXNzaW9uKCkpCi0g
ICAgICAgICAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpZRVNdIGZvcktleTpXSVJIYXNMb2NhbERlYnVnZ2VyS2V5XTsKLSAgICB9Ci0KLSNpZiBQ
TEFURk9STShJT1MpCi0gICAgLy8gW09wdGlvbmFsXSBIb3N0IEFwcGxpY2F0aW9uIElELgotICAg
IE5TU3RyaW5nICpob3N0QXBwbGljYXRpb25JZCA9IFt3ZWJWaWV3IGhvc3RBcHBsaWNhdGlvbkJ1
bmRsZUlkXTsKLSAgICBpZiAoaG9zdEFwcGxpY2F0aW9uSWQpCi0gICAgICAgIFt3ZWJWaWV3RGV0
YWlscyBzZXRPYmplY3Q6aG9zdEFwcGxpY2F0aW9uSWQgZm9yS2V5OldJUkhvc3RBcHBsaWNhdGlv
bklkZW50aWZpZXJLZXldOwotCi0gICAgLy8gW09wdGlvbmFsXSBIb3N0IEFwcGxpY2F0aW9uIE5h
bWUuCi0gICAgTlNTdHJpbmcgKmhvc3RBcHBsaWNhdGlvbk5hbWUgPSBbd2ViVmlldyBob3N0QXBw
bGljYXRpb25OYW1lXTsKLSAgICBpZiAoaG9zdEFwcGxpY2F0aW9uTmFtZSkKLSAgICAgICAgW3dl
YlZpZXdEZXRhaWxzIHNldE9iamVjdDpob3N0QXBwbGljYXRpb25OYW1lIGZvcktleTpXSVJIb3N0
QXBwbGljYXRpb25OYW1lS2V5XTsKLSNlbmRpZgotCi0gICAgLy8gW09wdGlvbmFsXSBSZW1vdGUg
SW5zcGVjdG9yIFdlYlZpZXcgVXNlciBJbmZvIERpY3Rpb25hcnkuCi0gICAgTlNEaWN0aW9uYXJ5
ICpyZW1vdGVJbnNwZWN0b3JVc2VySW5mbyA9IFt3ZWJWaWV3IHJlbW90ZUluc3BlY3RvclVzZXJJ
bmZvXTsKLSAgICBpZiAocmVtb3RlSW5zcGVjdG9yVXNlckluZm8pCi0gICAgICAgIFt3ZWJWaWV3
RGV0YWlscyBzZXRPYmplY3Q6cmVtb3RlSW5zcGVjdG9yVXNlckluZm8gZm9yS2V5OldJUlVzZXJJ
bmZvS2V5XTsKLQotICAgIHJldHVybiB3ZWJWaWV3RGV0YWlsczsKLX0KLQotLSAodm9pZClfcHVz
aExpc3Rpbmc6KE5TU3RyaW5nICopb3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcgotewotI2lm
IFBMQVRGT1JNKElPUykKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotI2VuZGlm
Ci0KLSAgICBfaGFzU2NoZWR1bGVkUHVzaCA9IE5POwotCi0gICAgTlNNdXRhYmxlRGljdGlvbmFy
eSAqcmVzcG9uc2UgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgIFdl
Ykluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ICp3ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSA9IFtX
ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV07Ci0gICAgTlNEaWN0aW9u
YXJ5ICpyZWdpc3RlcmVkVmlld3MgPSBbd2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgaW5zcGVj
dGFibGVXZWJWaWV3c107Ci0gICAgZm9yIChOU051bWJlciAqcGFnZUlkIGluIHJlZ2lzdGVyZWRW
aWV3cykgewotICAgICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3JlZ2lzdGVyZWRWaWV3cyBvYmpl
Y3RGb3JLZXk6cGFnZUlkXTsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICp3ZWJWaWV3RGV0YWlscyA9
IFtzZWxmIF9saXN0aW5nRm9yV2ViVmlldzp3ZWJWaWV3IHBhZ2VJZDpwYWdlSWQgcmVnaXN0cnk6
d2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnldOwotICAgICAgICBbcmVzcG9uc2Ugc2V0T2JqZWN0
OndlYlZpZXdEZXRhaWxzIGZvcktleTpbcGFnZUlkIHN0cmluZ1ZhbHVlXV07Ci0gICAgfQotCi0g
ICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqb3V0Z29pbmcgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdOwotICAgIFtvdXRnb2luZyBzZXRPYmplY3Q6cmVzcG9uc2UgZm9yS2V5OldJ
Ukxpc3RpbmdLZXldOwotICAgIGlmIChvcHRpb25hbENvbm5lY3Rpb25JZGVudGlmaWVyKQotICAg
ICAgICBbb3V0Z29pbmcgc2V0T2JqZWN0Om9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXIgZm9y
S2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKLQotICAgIFtzZWxmIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZDpXSVJMaXN0aW5nTWVzc2FnZSB1c2VySW5mbzpvdXRnb2luZ107Ci0KLSAgICBb
b3V0Z29pbmcgcmVsZWFzZV07Ci0gICAgW3Jlc3BvbnNlIHJlbGVhc2VdOwotfQotCi0tICh2b2lk
KXB1c2hMaXN0aW5nOihOU1N0cmluZyAqKW9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXIKLXsK
LSNpZiBQTEFURk9STShJT1MpCi0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSNl
bmRpZgotCi0gICAgaWYgKF9oYXNTY2hlZHVsZWRQdXNoKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAob3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcikgewotICAgICAgICBbc2VsZiBfcHVz
aExpc3Rpbmc6b3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcl07Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hf
dGltZShESVNQQVRDSF9USU1FX05PVywgMC4yICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0
X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKLSAg
ICAgICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgICAgICBbc2VsZiBfcHVzaExpc3Rpbmc6bmls
XTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0jZWxzZQotICAgIFtzZWxmIHBlcmZvcm1TZWxlY3Rv
cjpAc2VsZWN0b3IoX3B1c2hMaXN0aW5nOikgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTowLjJd
OwotI2VuZGlmCi0KLSAgICBfaGFzU2NoZWR1bGVkUHVzaCA9IFlFUzsKLX0KLQotLSAodm9pZClw
dXNoTGlzdGluZwotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBXZWJUaHJlYWRSdW4oXnsKLSNl
bmRpZgotCi0gICAgW3NlbGYgcHVzaExpc3Rpbmc6bmlsXTsKLQotI2lmIFBMQVRGT1JNKElPUykK
LSAgICB9KTsKLSNlbmRpZgotfQotCi0tICh2b2lkKV9yZWNlaXZlZFNldHVwOihOU0RpY3Rpb25h
cnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0aW9uYXJ5IG9i
amVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFwYWdlSWQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFtkaWN0
aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07Ci0gICAgaWYg
KCFjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNTdHJpbmcg
KnNlbmRlciA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJTZW5kZXJLZXldOwotICAgIGlm
ICghc2VuZGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIV9vcGVuQ29ubmVjdGlvbnMp
Ci0gICAgICAgIF9vcGVuQ29ubmVjdGlvbnMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdOwotCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKmNvbm5l
Y3Rpb24gPSBbW1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGFsbG9jXSBpbml0
V2l0aENvbnRyb2xsZXI6c2VsZiBjb25uZWN0aW9uSWRlbnRpZmllcjpjb25uZWN0aW9uSWRlbnRp
ZmllciBkZXN0aW5hdGlvbjpzZW5kZXIgaWRlbnRpZmllcjpwYWdlSWRdOwotICAgIGlmIChbY29u
bmVjdGlvbiBzZXR1cENoYW5uZWxdKQotICAgICAgICBbX29wZW5Db25uZWN0aW9ucyBzZXRPYmpl
Y3Q6Y29ubmVjdGlvbiBmb3JLZXk6cGFnZUlkXTsKLSAgICBbY29ubmVjdGlvbiByZWxlYXNlXTsK
LQotICAgIGlmIChbX29wZW5Db25uZWN0aW9ucyBjb3VudF0gPT0gMSkgewotICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgW19z
ZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOllFU107Ci0gICAgICAgIH0pOwotICAgIH0K
LQotICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQotLSAodm9pZClfcmVjZWl2ZWREYXRhOihO
U0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0
aW9uYXJ5IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFwYWdl
SWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25u
ZWN0aW9uICpjb25uZWN0aW9uID0gW19vcGVuQ29ubmVjdGlvbnMgb2JqZWN0Rm9yS2V5OnBhZ2VJ
ZF07Ci0gICAgQVNTRVJUKCFjb25uZWN0aW9uIHx8IFtjb25uZWN0aW9uIGlzS2luZE9mQ2xhc3M6
W1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGNsYXNzXV0pOwotICAgIGlmICgh
Y29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW2Nvbm5lY3Rpb24gcmVjZWl2ZWRE
YXRhOmRpY3Rpb25hcnldOwotfQotCi0tICh2b2lkKV9yZWNlaXZlZERpZENsb3NlOihOU0RpY3Rp
b25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0aW9uYXJ5
IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFwYWdlSWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFtk
aWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07Ci0gICAg
aWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24gPSBbX29wZW5Db25uZWN0
aW9ucyBvYmplY3RGb3JLZXk6cGFnZUlkXTsKLSAgICBBU1NFUlQoIWNvbm5lY3Rpb24gfHwgW2Nv
bm5lY3Rpb24gaXNLaW5kT2ZDbGFzczpbV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24gY2xhc3NdXSk7Ci0gICAgaWYgKCFjb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoIVtjb25uZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6Y29ubmVjdGlvbi5j
b25uZWN0aW9uSWRlbnRpZmllcl0pCi0gICAgICAgIHJldHVybjsKLQotICAgIFtjb25uZWN0aW9u
IHJlY2VpdmVkRGlkQ2xvc2U6ZGljdGlvbmFyeV07Ci0gICAgW19vcGVuQ29ubmVjdGlvbnMgcmVt
b3ZlT2JqZWN0Rm9yS2V5OnBhZ2VJZF07Ci0KLSAgICBpZiAoIVtfb3BlbkNvbm5lY3Rpb25zIGNv
dW50XSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeewotICAgICAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOk5PXTsK
LSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgW3NlbGYgcHVzaExpc3RpbmddOwotfQotCi0tICh2
b2lkKV9yZWNlaXZlZEdldExpc3Rpbmc6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAg
ICBbc2VsZiBwdXNoTGlzdGluZzpbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSQ29ubmVjdGlv
bklkZW50aWZpZXJLZXldXTsKLX0KLQotLSAodm9pZClfcmVjZWl2ZWRJbmRpY2F0ZTooTlNEaWN0
aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbZGljdGlvbmFy
eSBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOwotICAgIGlmICghcGFnZUlkKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tbV2ViSW5zcGVjdG9y
Q2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIGluc3BlY3RhYmxlV2ViVmlld3NdIG9iamVj
dEZvcktleTpwYWdlSWRdOwotICAgIGlmICghd2ViVmlldykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgQk9PTCBpbmRpY2F0ZUVuYWJsZWQgPSBbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldJUklu
ZGljYXRlRW5hYmxlZEtleV0gYm9vbFZhbHVlXTsKLSAgICBbd2ViVmlldyBzZXRJbmRpY2F0aW5n
Rm9yUmVtb3RlSW5zcGVjdG9yOmluZGljYXRlRW5hYmxlZF07Ci19Ci0KLS0gKHZvaWQpX3JlY2Vp
dmVkQ29ubmVjdGlvbkRpZWQ6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAgICBOU1N0
cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lS
Q29ubmVjdGlvbklkZW50aWZpZXJLZXldOwotICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIE5TRGljdGlvbmFyeSAqY29ubmVjdGlvbnNDb3B5ID0g
W1tfb3BlbkNvbm5lY3Rpb25zIGNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICBmb3IgKE5TTnVtYmVy
ICprZXkgaW4gY29ubmVjdGlvbnNDb3B5KSB7Ci0gICAgICAgIFdlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uICpjb25uZWN0aW9uID0gW2Nvbm5lY3Rpb25zQ29weSBvYmplY3RGb3JL
ZXk6a2V5XTsKLSAgICAgICAgaWYgKFtjb25uZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlmaWVyIGlz
RXF1YWxUb1N0cmluZzpjb25uZWN0aW9uSWRlbnRpZmllcl0pIHsKLSAgICAgICAgICAgIFtjb25u
ZWN0aW9uIHJlY2VpdmVkRGlkQ2xvc2U6bmlsXTsKLSAgICAgICAgICAgIFtfb3BlbkNvbm5lY3Rp
b25zIHJlbW92ZU9iamVjdEZvcktleTprZXldOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYg
KCFbX29wZW5Db25uZWN0aW9ucyBjb3VudF0pIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgIFtfc2VydmVyIHNldEhhc0Fj
dGl2ZURlYnVnU2Vzc2lvbjpOT107Ci0gICAgICAgIH0pOwotICAgIH0KLX0KLQotLSAodm9pZCly
ZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGljdGlv
bmFyeSAqKXVzZXJJbmZvCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFdlYlRocmVhZFJ1bihe
ewotI2VuZGlmCi0KLSAgICBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJTb2Nr
ZXRTZXR1cE1lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWRTZXR1cDp1c2VySW5mb107
Ci0gICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJTb2NrZXREYXRh
TWVzc2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZERhdGE6dXNlckluZm9dOwotICAgIGVs
c2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSV2ViUGFnZUNsb3NlTWVzc2Fn
ZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZERpZENsb3NlOnVzZXJJbmZvXTsKLSAgICBlbHNl
IGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkFwcGxpY2F0aW9uR2V0TGlzdGlu
Z01lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWRHZXRMaXN0aW5nOnVzZXJJbmZvXTsK
LSAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkluZGljYXRlTWVz
c2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZEluZGljYXRlOnVzZXJJbmZvXTsKLSAgICBl
bHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkNvbm5lY3Rpb25EaWVkTWVz
c2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZENvbm5lY3Rpb25EaWVkOnVzZXJJbmZvXTsK
LSAgICBlbHNlCi0gICAgICAgIE5TTG9nKEAiVW5yZWNvZ25pemVkIE1lc3NhZ2U6ICVAIiwgbWVz
c2FnZU5hbWUpOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIH0pOwotI2VuZGlmCi19Ci0KLQot
I3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbiBpbnRlcmZhY2UKLQotLSAodm9pZCljb25uZWN0aW9uQ2xvc2luZzooV2ViSW5zcGVj
dG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKiljb25uZWN0aW9uCi17Ci0jaWYgUExBVEZPUk0o
SU9TKQotICAgIFdlYlRocmVhZFJ1biheewotI2VuZGlmCi0KLSAgICBbX29wZW5Db25uZWN0aW9u
cyByZW1vdmVPYmplY3RGb3JLZXk6W2Nvbm5lY3Rpb24gaWRlbnRpZmllcl1dOwotCi0gICAgaWYg
KCFbX29wZW5Db25uZWN0aW9ucyBjb3VudF0pIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgIFtfc2VydmVyIHNldEhhc0Fj
dGl2ZURlYnVnU2Vzc2lvbjpOT107Ci0gICAgICAgIH0pOwotICAgIH0KLQotI2lmIFBMQVRGT1JN
KElPUykKLSAgICB9KTsKLSNlbmRpZgotfQotCi0KLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1h
cmsgVGhyZWFkIFNhZmUgc2VuZCBtZXNzYWdlIHRvIGZyb250ZW5kCi0KLS0gKHZvaWQpc2VuZE1l
c3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rp
b25hcnkgKil1c2VySW5mbwotewotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBmcm9tIGVpdGhl
ciB0aGUgV2ViVGhyZWFkIG9yIHRoZSBNYWluVGhyZWFkLiBUaGlzCi0gICAgLy8gcmVxdWlyZXMg
YWNjZXNzIHRvIHRoZSBXZWJJbnNwZWN0b3JTZXJ2ZXIncyBYUEMgQ29ubmVjdGlvbiwgd2hpY2gK
LSAgICAvLyBpcyBtYW5hZ2VkIG9uIHRoZSBtYWluIHRocmVhZC4gU28sIGRpc3BhdGNoIHRvIHRo
ZSBtYWluIHRocmVhZCB0bwotICAgIC8vIHNhZmVseSB1c2UgdGhlIHhwYyBjb25uZWN0aW9uLgot
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAg
IFtbX3NlcnZlciB4cGNDb25uZWN0aW9uXSBzZW5kTWVzc2FnZTptZXNzYWdlTmFtZSB1c2VySW5m
bzp1c2VySW5mb107Ci0gICAgfSk7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBw
ZXIubSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
WFBDV3JhcHBlci5tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmIxZTAyLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVj
dG9yWFBDV3JhcHBlci5tCisrKyAvZGV2L251bGwKQEAgLTEsMTYyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCIKLQotI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KLQotI2lmIF9faGFzX2luY2x1ZGUoPENvcmVGb3VuZGF0aW9u
L0NGWFBDQnJpZGdlLmg+KQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGWFBDQnJpZGdlLmg+
Ci0jZWxzZQotZXh0ZXJuIHhwY19vYmplY3RfdCBfQ0ZYUENDcmVhdGVYUENNZXNzYWdlV2l0aENG
T2JqZWN0KENGVHlwZVJlZik7Ci1leHRlcm4gQ0ZUeXBlUmVmIF9DRlhQQ0NyZWF0ZUNGT2JqZWN0
RnJvbVhQQ01lc3NhZ2UoeHBjX29iamVjdF90KTsKLSNlbmRpZgotCi0vLyBDb25zdGFudHMgcHJp
dmF0ZSB0byB0aGlzIGZpbGUgZm9yIG1lc3NhZ2Ugc2VyaWFsaXphdGlvbiBvbiBib3RoIGVuZHMu
Ci0jZGVmaW5lIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJNZXNzYWdlTmFtZUtleSBAIm1lc3NhZ2VO
YW1lIgotI2RlZmluZSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyVXNlckluZm9LZXkgQCJ1c2VySW5m
byIKLSNkZWZpbmUgV2ViSW5zcGVjdG9yWFBDV3JhcHBlclNlcmlhbGl6ZWRNZXNzYWdlS2V5ICJt
c2dEYXRhIgotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKCkKLS0gKHZvaWQp
X2hhbmRsZUV2ZW50Oih4cGNfb2JqZWN0X3Qpb2JqZWN0OwotQGVuZAotCi0KLUBpbXBsZW1lbnRh
dGlvbiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyCi0KLUBkeW5hbWljIGF2YWlsYWJsZTsKLQotQHN5
bnRoZXNpemUgZGVsZWdhdGUgPSBfZGVsZWdhdGU7Ci1Ac3ludGhlc2l6ZSBjb25uZWN0aW9uID0g
X2Nvbm5lY3Rpb247Ci1Ac3ludGhlc2l6ZSB0YWcgPSBfdGFnOwotCi0tIChXZWJJbnNwZWN0b3JY
UENXcmFwcGVyICopaW5pdFdpdGhDb25uZWN0aW9uOih4cGNfY29ubmVjdGlvbl90KWNvbm5lY3Rp
b24KLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAg
cmV0dXJuIG5pbDsKLQotICAgIF9jb25uZWN0aW9uID0geHBjX3JldGFpbihjb25uZWN0aW9uKTsK
LSAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKF9jb25uZWN0aW9uLCBkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxl
cihfY29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3Qgb2JqZWN0KSB7IFtzZWxmIF9oYW5kbGVFdmVu
dDpvYmplY3RdOyB9KTsKLSAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUoX2Nvbm5lY3Rpb24pOwot
Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpY2xvc2UKLXsKLSAgICBpZiAoX2Nvbm5l
Y3Rpb24pIHsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fY2FuY2VsKF9jb25uZWN0aW9uKTsKLSAg
ICAgICAgeHBjX3JlbGVhc2UoX2Nvbm5lY3Rpb24pOwotICAgICAgICBfY29ubmVjdGlvbiA9IE5V
TEw7Ci0gICAgfQotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc2VsZiBjbG9zZV07Ci0g
ICAgW190YWcgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tIChOU0RpY3Rp
b25hcnkgKilfZGVzZXJpYWxpemVNZXNzYWdlOih4cGNfb2JqZWN0X3Qpb2JqZWN0Ci17Ci0gICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNfZ2V0X3R5cGUob2JqZWN0KSA9PSBYUENfVFlQRV9ESUNU
SU9OQVJZLCAiR290IHVuZXhwZWN0ZWQgb2JqZWN0IGZyb20gYW4geHBjIGNvbm5lY3Rpb24iKTsK
LSAgICBpZiAoeHBjX2dldF90eXBlKG9iamVjdCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHhwY19vYmplY3RfdCB4cGNEaWN0aW9uYXJ5ID0geHBj
X2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG9iamVjdCwgV2ViSW5zcGVjdG9yWFBDV3JhcHBlclNlcmlh
bGl6ZWRNZXNzYWdlS2V5KTsKLSAgICBpZiAoIXhwY0RpY3Rpb25hcnkgfHwgeHBjX2dldF90eXBl
KHhwY0RpY3Rpb25hcnkpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpIHsKLSAgICAgICAgLy8gVGhp
cyBpc24ndCBhIG1lc3NhZ2UgdHlwZSB0aGF0IHdlIGtub3cgaG93IHRvIGRlc2VyaWFsaXplLCBz
byB3ZSBsZXQgb3VyIGRlbGVnYXRlIHdvcnJ5IGFib3V0IGl0LgotICAgICAgICBpZiAoW19kZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHhwY0Nvbm5lY3Rpb246dW5oYW5kbGVk
TWVzc2FnZTopXSkKLSAgICAgICAgICAgIFtfZGVsZWdhdGUgeHBjQ29ubmVjdGlvbjpzZWxmIHVu
aGFuZGxlZE1lc3NhZ2U6b2JqZWN0XTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAg
ICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBfQ0ZYUENDcmVhdGVDRk9iamVjdEZyb21YUENN
ZXNzYWdlKHhwY0RpY3Rpb25hcnkpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGljdGlvbmFy
eSwgIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIpOwotICAgIGlmICghZGljdGlv
bmFyeSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbZGljdGlvbmFyeSBhdXRv
cmVsZWFzZV07Ci19Ci0KLS0gKHZvaWQpX2hhbmRsZUV2ZW50Oih4cGNfb2JqZWN0X3Qpb2JqZWN0
Ci17Ci0gICAgaWYgKCFfY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHhw
Y19nZXRfdHlwZShvYmplY3QpID09IFhQQ19UWVBFX0VSUk9SKSB7Ci0gICAgICAgIFtfZGVsZWdh
dGUgeHBjQ29ubmVjdGlvbkZhaWxlZDpzZWxmXTsKLSAgICAgICAgW3NlbGYgY2xvc2VdOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFfZGVsZWdhdGUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIE5TRGljdGlvbmFyeSAqZGF0YURpY3Rpb25hcnkgPSBbc2VsZiBfZGVzZXJpYWxp
emVNZXNzYWdlOm9iamVjdF07Ci0gICAgaWYgKCFkYXRhRGljdGlvbmFyeSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBbZGF0YURpY3Rpb25hcnkgb2JqZWN0Rm9y
S2V5OldlYkluc3BlY3RvclhQQ1dyYXBwZXJNZXNzYWdlTmFtZUtleV07Ci0gICAgTlNEaWN0aW9u
YXJ5ICp1c2VySW5mbyA9IFtkYXRhRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V2ViSW5zcGVjdG9y
WFBDV3JhcHBlclVzZXJJbmZvS2V5XTsKLSAgICBbX2RlbGVnYXRlIHhwY0Nvbm5lY3Rpb246c2Vs
ZiByZWNlaXZlZE1lc3NhZ2U6bWVzc2FnZSB1c2VySW5mbzp1c2VySW5mb107Ci19Ci0KLS0gKHZv
aWQpc2VuZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGljdGlv
bmFyeSAqKXVzZXJJbmZvCi17Ci0gICAgaWYgKCFfY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om1lc3NhZ2VOYW1lIGZvcktleTpXZWJJbnNwZWN0
b3JYUENXcmFwcGVyTWVzc2FnZU5hbWVLZXldOwotICAgIGlmICh1c2VySW5mbykKLSAgICAgICAg
W2RpY3Rpb25hcnkgc2V0T2JqZWN0OnVzZXJJbmZvIGZvcktleTpXZWJJbnNwZWN0b3JYUENXcmFw
cGVyVXNlckluZm9LZXldOwotCi0gICAgeHBjX29iamVjdF90IHhwY0RpY3Rpb25hcnkgPSBfQ0ZY
UENDcmVhdGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KChDRkRpY3Rpb25hcnlSZWYpZGljdGlvbmFy
eSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9uYXJ5ICYmIHhwY19nZXRfdHlw
ZSh4cGNEaWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSB4cGMgbWVzc2FnZSIpOwotICAgIGlmICgheHBjRGljdGlvbmFyeSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgeHBjX29iamVjdF90IG1zZyA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShOVUxM
LCBOVUxMLCAwKTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobXNnLCBXZWJJbnNwZWN0
b3JYUENXcmFwcGVyU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0RpY3Rpb25hcnkpOwotICAgIHhw
Y19yZWxlYXNlKHhwY0RpY3Rpb25hcnkpOwotCi0gICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNz
YWdlKF9jb25uZWN0aW9uLCBtc2cpOwotCi0gICAgeHBjX3JlbGVhc2UobXNnKTsKLX0KLQotLSAo
Qk9PTClhdmFpbGFibGUKLXsKLSAgICByZXR1cm4gX2Nvbm5lY3Rpb24gIT0gTlVMTDsKLX0KLQot
QGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5leHAg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQuZXhwCmluZGV4IGYzZmQyZjQuLjU2ZjgxNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5leHAKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViS2l0LmV4cApAQCAtMjIsNyArMjIsNiBAQAogLm9iamNfY2xhc3NfbmFtZV9XZWJI
aXN0b3J5SXRlbQogLm9iamNfY2xhc3NfbmFtZV9XZWJJY29uRGF0YWJhc2UKIC5vYmpjX2NsYXNz
X25hbWVfV2ViSW5zcGVjdG9yCi0ub2JqY19jbGFzc19uYW1lX1dlYkluc3BlY3RvclhQQ1dyYXBw
ZXIKIC5vYmpjX2NsYXNzX25hbWVfV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsCiAub2JqY19j
bGFzc19uYW1lX1dlYktleUdlbmVyYXRvcgogLm9iamNfY2xhc3NfbmFtZV9XZWJLaXRTdGF0aXN0
aWNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZjVkMzgzNS4uMTg1YWRl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjEyLDcgKzIxMiw2IEBA
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotI2ltcG9ydCAiV2ViSW5z
cGVjdG9yU2VydmVyLmgiCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV2ViSW5kaWNhdGVM
YXllci5oIgogI2VuZGlmCkBAIC0zOTEsMTAgKzM5MCw2IEBAIHN0YXRpYyBXZWJDYWNoZU1vZGVs
IHNfY2FjaGVNb2RlbCA9IFdlYkNhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKIHN0YXRpYyBjb25z
dCBjaGFyIHdlYlZpZXdJc09wZW5bXSA9ICJBdCBsZWFzdCBvbmUgV2ViVmlldyBpcyBzdGlsbCBv
cGVuLiI7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotc3RhdGljIEJP
T0wgYXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yID0gWUVTOwotI2VuZGlmCi0KIEBpbnRlcmZhY2Ug
TlNPYmplY3QgKFdlYlZhbGlkYXRlV2l0aG91dERlbGVnYXRlKQogLSAoQk9PTCl2YWxpZGF0ZVVz
ZXJJbnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOihpZCA8TlNWYWxpZGF0ZWRVc2VySW50ZXJm
YWNlSXRlbT4paXRlbTsKIEBlbmQKQEAgLTUyNSw2ICs1MjAsNyBAQCBOU1N0cmluZyAqX1dlYlZp
ZXdEaWRTdGFydEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdOb3RpZmljYXRpb24gPSBAIl9XZWJWaWV3
RGlkU3RhcgogTlNTdHJpbmcgKiBjb25zdCBXZWJWaWV3V2lsbENsb3NlTm90aWZpY2F0aW9uID0g
QCJXZWJWaWV3V2lsbENsb3NlTm90aWZpY2F0aW9uIjsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQorLy8gRklYTUU6IExlZ2FjeSwgcmVtb3ZlIHRoaXMsIHN3aXRjaCB0byBzb21ldGhp
bmcgZnJvbSBKYXZhU2NyaXB0Q29yZSBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlci4K
IE5TU3RyaW5nICpfV2ViVmlld1JlbW90ZUluc3BlY3Rvckhhc1Nlc3Npb25DaGFuZ2VkTm90aWZp
Y2F0aW9uID0gQCJfV2ViVmlld1JlbW90ZUluc3BlY3Rvckhhc1Nlc3Npb25DaGFuZ2VkTm90aWZp
Y2F0aW9uIjsKICNlbmRpZgogCkBAIC03NjYsMTEgKzc2Miw2IEBAIHN0YXRpYyBib29sIHNob3Vs
ZFVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IoKQogICAgICAgICAKICAg
ICAgICAgU2V0dGluZ3M6OnNldFNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0
dGVycyhzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKSk7CiAKLSNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAgICAgaWYgKGF1dG9TdGFydFJlbW90ZUlu
c3BlY3RvcikKLSAgICAgICAgICAgIFtXZWJWaWV3IF9lbmFibGVSZW1vdGVJbnNwZWN0b3JdOwot
I2VuZGlmCi0KICAgICAgICAgZGlkT25lVGltZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICB9
CiAKQEAgLTc5OCw2ICs3ODksMTAgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlTGVnYWN5QmFja2dy
b3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpCiAgICAgV2ViQ29yZTo6cHJvdmlkZVVzZXJNZWRp
YVRvKF9wcml2YXRlLT5wYWdlLCBuZXcgV2ViVXNlck1lZGlhQ2xpZW50KHNlbGYpKTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKHRydWUpOworI2VuZGlmCisKICAgICBfcHJpdmF0ZS0+
cGFnZS0+c2V0Q2FuU3RhcnRNZWRpYShbc2VsZiB3aW5kb3ddKTsKICAgICBfcHJpdmF0ZS0+cGFn
ZS0+c2V0dGluZ3MoKS5zZXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoW1tzZWxmIHByZWZlcmVu
Y2VzXSBfbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoXSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dHRpbmdzKCkuc2V0VXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcihzaG91
bGRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKCkpOwpAQCAtMTI2Nyw2
MCArMTI2Miw0MiBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRUZWFyZG93bkVuYWJsZWQoKQog
fQogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0rIChXZWJJbnNwZWN0b3JTZXJ2ZXIg
KilzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXIKLXsKLSAgICBzdGF0aWMgV2ViSW5zcGVjdG9yU2Vy
dmVyICpzaGFyZWRTZXJ2ZXIgPSBbW1dlYkluc3BlY3RvclNlcnZlciBhbGxvY10gaW5pdF07Ci0g
ICAgcmV0dXJuIHNoYXJlZFNlcnZlcjsKLX0KLQogKyAodm9pZClfZW5hYmxlUmVtb3RlSW5zcGVj
dG9yCiB7Ci0gICAgW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gc3RhcnRdOwor
ICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JTZXJ2ZXIgaW50ZXJmYWNlIG9yIHJlbW92ZSBpdC4KIH0KIAogKyAodm9pZClfZGlzYWJsZVJl
bW90ZUluc3BlY3RvcgogewotICAgIFtbV2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJd
IHN0b3BdOworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3JTZXJ2ZXIgaW50ZXJmYWNlIG9yIHJlbW92ZSBpdC4KIH0KIAogKyAodm9pZClf
ZGlzYWJsZUF1dG9TdGFydFJlbW90ZUluc3BlY3RvcgogewotICAgIGF1dG9TdGFydFJlbW90ZUlu
c3BlY3RvciA9IE5POworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIgaW50ZXJmYWNlIG9yIHJlbW92ZSBpdC4KIH0KIAogKyAo
Qk9PTClfaXNSZW1vdGVJbnNwZWN0b3JFbmFibGVkCiB7Ci0gICAgcmV0dXJuIFtbV2ViVmlldyBz
aGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIGlzRW5hYmxlZF07CisgICAgLy8gRklYTUU6IE1vdmUg
dGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlciBpbnRlcmZhY2Ug
b3IgcmVtb3ZlIGl0LgorICAgIHJldHVybiBOTzsKIH0KIAogKyAoQk9PTClfaGFzUmVtb3RlSW5z
cGVjdG9yU2Vzc2lvbgogewotICAgIHJldHVybiBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9y
U2VydmVyXSBoYXNBY3RpdmVEZWJ1Z1Nlc3Npb25dOwotfQotCi0tIChCT09MKWNhbkJlUmVtb3Rl
bHlJbnNwZWN0ZWQKLXsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIGlmICghW1tzZWxmIHByZWZl
cmVuY2VzXSBkZXZlbG9wZXJFeHRyYXNFbmFibGVkXSkKLSAgICAgICAgcmV0dXJuIE5POwotI2Vu
ZGlmCi0KLSAgICByZXR1cm4gW3NlbGYgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbl07CisgICAgLy8g
RklYTUU6IE1vdmUgdGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZl
ciBpbnRlcmZhY2Ugb3IgcmVtb3ZlIGl0LgorICAgIHJldHVybiBOTzsKIH0KIAogLSAoQk9PTClh
bGxvd3NSZW1vdGVJbnNwZWN0aW9uCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5hbGxvd3NSZW1v
dGVJbnNwZWN0aW9uOworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgQVBJLgorICAg
IHJldHVybiBOTzsKIH0KIAogLSAodm9pZClzZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uOihCT09M
KWFsbG93CiB7Ci0gICAgaWYgKF9wcml2YXRlLT5hbGxvd3NSZW1vdGVJbnNwZWN0aW9uID09IGFs
bG93KQotICAgICAgICByZXR1cm47Ci0KLSAgICBfcHJpdmF0ZS0+YWxsb3dzUmVtb3RlSW5zcGVj
dGlvbiA9IGFsbG93OwotCi0gICAgW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0g
cHVzaExpc3RpbmddOworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgQVBJLgogfQog
CiAtICh2b2lkKXNldEluZGljYXRpbmdGb3JSZW1vdGVJbnNwZWN0b3I6KEJPT0wpZW5hYmxlZApA
QCAtMTM0MCwyOSArMTMxNywxNSBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRUZWFyZG93bkVu
YWJsZWQoKQogICAgICAgICBfcHJpdmF0ZS0+aW5kaWNhdGVMYXllciA9IG5pbDsKICAgICB9CiAj
ZWxzZQotICAgIC8vIEZJWE1FOiBOZWVkcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAvLyBGSVhNRTog
TmVlZHMgaW1wbGVtZW50YXRpb24gb3IgcHV0IGFuIGltcGxlbWVudGF0aW9uIGluIFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXkuCiAjZW5kaWYKIH0KIAotLSAodm9pZClzZXRSZW1vdGVJbnNwZWN0
b3JVc2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm8KLXsKLSAgICBpZiAoW19wcml2YXRl
LT5yZW1vdGVJbnNwZWN0b3JVc2VySW5mbyBpc0VxdWFsVG9EaWN0aW9uYXJ5OnVzZXJJbmZvXSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgW19wcml2YXRlLT5yZW1vdGVJbnNwZWN0b3JVc2VySW5m
byByZWxlYXNlXTsKLSAgICBfcHJpdmF0ZS0+cmVtb3RlSW5zcGVjdG9yVXNlckluZm8gPSBbdXNl
ckluZm8gY29weV07Ci0KLSAgICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBw
dXNoTGlzdGluZ107Ci19Ci0KLS0gKE5TRGljdGlvbmFyeSAqKXJlbW90ZUluc3BlY3RvclVzZXJJ
bmZvCi17Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5yZW1vdGVJbnNwZWN0b3JVc2VySW5mbzsKLX0K
LQogI2lmIFBMQVRGT1JNKElPUykKIC0gKHZvaWQpc2V0SG9zdEFwcGxpY2F0aW9uQnVuZGxlSWQ6
KE5TU3RyaW5nICopYnVuZGxlSWQgbmFtZTooTlNTdHJpbmcgKiluYW1lCiB7CisgICAgLy8gRklY
TUU6IFRoaXMgaGFzIG5vdCB5ZXQgYmVlbiBwb3J0ZWQgdG8gSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIuCisKICAgICBpZiAoIVtfcHJpdmF0ZS0+aG9zdEFwcGxpY2F0aW9uQnVuZGxl
SWQgaXNFcXVhbFRvU3RyaW5nOmJ1bmRsZUlkXSkgewogICAgICAgICBbX3ByaXZhdGUtPmhvc3RB
cHBsaWNhdGlvbkJ1bmRsZUlkIHJlbGVhc2VdOwogICAgICAgICBfcHJpdmF0ZS0+aG9zdEFwcGxp
Y2F0aW9uQnVuZGxlSWQgPSBbYnVuZGxlSWQgY29weV07CkBAIC0yMTE4LDkgKzIwODEsNiBAQCBz
dGF0aWMgaW5saW5lIElNUCBnZXRNZXRob2QoaWQgbywgU0VMIHMpCiAgICAgaWYgKGZyYW1lID09
IFtzZWxmIG1haW5GcmFtZV0pCiAgICAgICAgIFtzZWxmIF9kaWRDaGFuZ2VWYWx1ZUZvcktleTog
X1dlYk1haW5GcmFtZVVSTEtleV07CiAgICAgW05TQXBwIHNldFdpbmRvd3NOZWVkVXBkYXRlOllF
U107Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgW1tXZWJWaWV3IHNoYXJlZFdl
Ykluc3BlY3RvclNlcnZlcl0gcHVzaExpc3RpbmddOwotI2VuZGlmCiB9CiAKIC0gKHZvaWQpX2Rp
ZEZpbmlzaExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IDI0NTQxNTguLjRjMjY3MmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKQEAgLTIwOCw4ICsyMDgsNiBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBCT09MIGFsbG93c1Jl
bW90ZUluc3BlY3Rpb247Ci0gICAgTlNEaWN0aW9uYXJ5ICpyZW1vdGVJbnNwZWN0b3JVc2VySW5m
bzsKICNpZiBQTEFURk9STShJT1MpCiAgICAgV2ViSW5kaWNhdGVMYXllciAqaW5kaWNhdGVMYXll
cjsKICAgICBOU1N0cmluZyAqaG9zdEFwcGxpY2F0aW9uQnVuZGxlSWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCAwMzQzYTljLi5lYjBiY2JkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KQEAgLTk5LDEwICs5OSw2IEBAIFdl
YlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcihMYXll
ckZsdXNoQ29udHJvbGxlciogZmx1CiAgICAgZGFzaGJvYXJkQmVoYXZpb3JBbGxvd1doZWVsU2Ny
b2xsaW5nID0gWUVTOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAg
ICBhbGxvd3NSZW1vdGVJbnNwZWN0aW9uID0gWUVTOwotI2VuZGlmCi0KICAgICBzaG91bGRDbG9z
ZVdpdGhXaW5kb3cgPSBvYmpjX2NvbGxlY3RpbmdFbmFibGVkKCk7CiAKICAgICBwbHVnaW5EYXRh
YmFzZUNsaWVudENvdW50Kys7CkBAIC0xMzUsNyArMTMxLDYgQEAgV2ViVmlld0xheWVyRmx1c2hT
Y2hlZHVsZXI6OldlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyKExheWVyRmx1c2hDb250cm9sbGVy
KiBmbHUKICAgICBbbWVkaWFTdHlsZSByZWxlYXNlXTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQotICAgIFtyZW1vdGVJbnNwZWN0b3JVc2VySW5mbyByZWxlYXNlXTsKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgW2luZGljYXRlTGF5ZXIgcmVsZWFzZV07CiAgICAgW2hvc3RBcHBsaWNh
dGlvbkJ1bmRsZUlkIHJlbGVhc2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0ludGVybmFsLmgKaW5kZXggMjZjODk4Ni4uY2Q1NGYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC02MSw5ICs2MSw2IEBAIHN0cnVjdCBEaWN0
YXRpb25BbHRlcm5hdGl2ZTsKIEBjbGFzcyBXZWJCYXNlUGx1Z2luUGFja2FnZTsKIEBjbGFzcyBX
ZWJEb3dubG9hZDsKIEBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0OwotI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQotQGNsYXNzIFdlYkluc3BlY3RvclNlcnZlcjsKLSNlbmRpZgogCiAjaWZkZWYg
X19jcGx1c3BsdXMKIApAQCAtMjE3LDEwICsyMTQsNiBAQCBPQkpDX0NMQVNTIE5TVGV4dEFsdGVy
bmF0aXZlczsKIC0gKHZvaWQpX2Z1bGxTY3JlZW5SZW5kZXJlckNoYW5nZWQ6KFdlYkNvcmU6OlJl
bmRlckJveCopcmVuZGVyZXI7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotKyAoV2ViSW5zcGVjdG9yU2VydmVyICopc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyOwotI2Vu
ZGlmCi0KIC8vIENvbnZlcnNpb24gZnVuY3Rpb25zIGJldHdlZW4gV2ViQ29yZSByb290IHZpZXcg
Y29vcmRpbmF0ZXMgYW5kIHdlYiB2aWV3IGNvb3JkaW5hdGVzLgogLSAoTlNQb2ludClfY29udmVy
dFBvaW50RnJvbVJvb3RWaWV3OihOU1BvaW50KXBvaW50OwogLSAoTlNSZWN0KV9jb252ZXJ0UmVj
dEZyb21Sb290VmlldzooTlNSZWN0KXJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdQcml2YXRlLmgKaW5kZXggMmRkZmRlZC4uNTAxZjlhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAtNzcsNiArNzcsNyBAQCBleHRlcm4gTlNT
dHJpbmcgKldlYkVsZW1lbnRJc0luU2Nyb2xsQmFyS2V5OwogZXh0ZXJuIE5TU3RyaW5nICpfV2Vi
Vmlld0RpZFN0YXJ0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ05vdGlmaWNhdGlvbjsKIAogI2lmIEVO
QUJMRV9SRU1PVEVfSU5TUEVDVE9SCisvLyBGSVhNRTogTGVnYWN5LCByZW1vdmUgdGhpcywgc3dp
dGNoIHRvIHNvbWV0aGluZyBmcm9tIEphdmFTY3JpcHRDb3JlIEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yU2VydmVyLgogLy8gTm90aWZpY2F0aW9uIHdoZW4gdGhlIG51bWJlciBvZiBpbnNwZWN0
b3Igc2Vzc2lvbnMgYmVjb21lcyBub24temVybyBvciByZXR1cm5zIHRvIDAuCiAvLyBDaGVjayB0
aGUgY3VycmVudCBzdGF0ZSB2aWEgLVtXZWJWaWV3IF9oYXNSZW1vdGVJbnNwZWN0b3JTZXNzaW9u
XS4KIGV4dGVybiBOU1N0cmluZyAqX1dlYlZpZXdSZW1vdGVJbnNwZWN0b3JIYXNTZXNzaW9uQ2hh
bmdlZE5vdGlmaWNhdGlvbjsKQEAgLTI2MywxNSArMjY0LDYgQEAgdHlwZWRlZiBlbnVtIHsKICsg
KEJPT0wpX2hhc1JlbW90ZUluc3BlY3RvclNlc3Npb247CiAKIC8qIQotICAgIEBtZXRob2QgY2Fu
QmVSZW1vdGVseUluc3BlY3RlZAotICAgIEByZXN1bHQgTG9va3MgYXQgYWxsIHRoZSBmYWN0b3Jz
IG9mIHRoaXMgV2ViVmlldyBhbmQgcmV0dXJucyB3aGV0aGVyIG9yIG5vdAotICAgIHRoaXMgV2Vi
VmlldyBzaG91bGQgYWxsb3cgYSBSZW1vdGUgV2ViIEluc3BlY3RvciB0byBhdHRhY2ggdG8gaXQu
IFRoaXMgdGFrZXMKLSAgICBpbnRvIGFjY291bnQgLWFsbG93c1JlbW90ZUluc3BlY3Rpb24sIFBy
aXZhdGUgQnJvd3NpbmcsIGFuZCBwb3RlbnRpYWxseSBvdGhlcgotICAgIGZhY3RvcnMuCi0qLwot
LSAoQk9PTCljYW5CZVJlbW90ZWx5SW5zcGVjdGVkOwotCi0vKiEKICAgICBAbWV0aG9kIGFsbG93
c1JlbW90ZUluc3BlY3Rpb24KICAgICBAcmVzdWx0IFJldHVybnMgd2hldGhlciBvciBub3QgdGhp
cyBXZWJWaWV3IHdpbGwgYWxsb3cgYSBSZW1vdGUgV2ViIEluc3BlY3RvcgogICAgIHRvIGF0dGFj
aCB0byBpdC4KQEAgLTI5MiwyMSArMjg0LDYgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBAYWJzdHJh
Y3QgaW5kaWNhdGUgdGhpcyBXZWJWaWV3IG9uIHNjcmVlbiBmb3IgYSByZW1vdGUgaW5zcGVjdG9y
LgogKi8KIC0gKHZvaWQpc2V0SW5kaWNhdGluZ0ZvclJlbW90ZUluc3BlY3RvcjooQk9PTCllbmFi
bGVkOwotCi0vKgotICAgIEBtZXRob2Qgc2V0UmVtb3RlSW5zcGVjdG9yVXNlckluZm8KLSAgICBA
cGFyYW0gdGFnIFRoZSBkaWN0aW9uYXJ5IHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgV2ViVmll
dy4KLSAgICBAYWJzdHJhY3QgRGV2ZWxvcGVyIHNwZWNpZmllZCBkaWN0aW9uYXJ5IGZvciB0aGUg
V2ViVmlldyB0aGF0IHdpbGwgYmUKLSAgICBzZW50IHRvIHRoZSBSZW1vdGUgRGVidWdnZXIuIFRo
ZSBkaWN0aW9uYXJ5IG11c3QgY29udGFpbiBwcm9wZXJ0eQotICAgIGxpc3Qgc2VyaWFsaXphYmxl
IHZhbHVlcy4KLSovCi0tICh2b2lkKXNldFJlbW90ZUluc3BlY3RvclVzZXJJbmZvOihOU0RpY3Rp
b25hcnkgKil1c2VySW5mbzsKLQotLyohCi0gICAgQG1ldGhvZCByZW1vdGVJbnNwZWN0b3JVc2Vy
SW5mbwotICAgIEByZXN1bHQgUmV0dXJucyB0aGUgZGljdGlvbmFyeSBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBXZWJWaWV3LgotKi8KLS0gKE5TRGljdGlvbmFyeSAqKXJlbW90ZUluc3BlY3RvclVzZXJJ
bmZvOwogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGNmYTFkMzguLmJjODVjN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3Bl
Y3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYxMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQ
YWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOgor
ICAgICAgICBBbGxvdyB0aGUgV2ViUHJvY2VzcyB0byBhY2Nlc3MgdGhlICJjb20uYXBwbGUud2Vi
aW5zcGVjdG9yIiBuYW1lZAorICAgICAgICBYUEMgc2VydmljZSB0byBleHBvc2UgaXRzIFdlYkNv
cmU6OlBhZ2UncyB0byByZW1vdGUgZGVidWdnZXJzLgorCiAyMDEzLTEyLTAyICBCZXRoIERha2lu
ICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIG9wdCBpbnRv
IGEgbW9kZSB3aGVyZSB0aGUgYmFja2dyb3VuZCBleHRlbmRzIGFuZCBmaXhlZCBlbGVtZW50cyAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBk
Y2VkNWVmLi5kMTFlYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0zNDUsNiArMzQ1LDEwIEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0
X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ICAgIFdlYkNvcmU6OnByb3ZpZGVEZXZpY2VQcm94aW1pdHlUbyhtX3BhZ2UuZ2V0KCksIG5ldyBX
ZWJEZXZpY2VQcm94aW1pdHlDbGllbnQodGhpcykpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKyAgICBtX3BhZ2UtPnNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKHRy
dWUpOworI2VuZGlmCisKICAgICBtX3BhZ2UtPnNldENhblN0YXJ0TWVkaWEoZmFsc2UpOwogICAg
IG1fbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyA9IHBhcmFtZXRlcnMubWF5U3RhcnRNZWRpYVdo
ZW5JbldpbmRvdzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20u
YXBwbGUuV2ViUHJvY2Vzcy5zYi5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29tLmFw
cGxlLldlYlByb2Nlc3Muc2IuaW4KaW5kZXggOTBiYjBlNi4uYzQ3MmMwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCkBA
IC0xMzksNiArMTM5LDEwIEBACiAKICNlbmRpZgogCis7OyBSZW1vdGUgV2ViIEluc3BlY3Rvcgor
KGFsbG93IG1hY2gtbG9va3VwCisgICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUud2ViaW5z
cGVjdG9yIikpCisKIDs7IFZhcmlvdXMgc2VydmljZXMgcmVxdWlyZWQgYnkgQXBwS2l0IGFuZCBv
dGhlciBmcmFtZXdvcmtzCiAoYWxsb3cgbWFjaC1sb29rdXAKICAgICAgICAoZ2xvYmFsLW5hbWUg
ImNvbS5hcHBsZS5EaXNrQXJiaXRyYXRpb24uZGlza2FyYml0cmF0aW9uZCIpCg==
</data>
<flag name="commit-queue"
          id="241602"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218248</attachid>
            <date>2013-12-02 17:54:26 -0800</date>
            <delta_ts>2013-12-03 10:30:40 -0800</delta_ts>
            <desc>[PATCH] Combined For Bots 3</desc>
            <filename>for-bots-3.patch</filename>
            <type>text/plain</type>
            <size>200800</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5oCmluZGV4IDEyNjdiN2EuLmY5ZDdjZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaApAQCAtMTY0LDYgKzE2NCwxMiBA
QCBPQkpDX1ZJU0lCTEUKICovCiBAcHJvcGVydHkocmVhZG9ubHksIHJldGFpbikgSlNWaXJ0dWFs
TWFjaGluZSAqdmlydHVhbE1hY2hpbmU7CiAKKy8qIQorQHByb3BlcnR5CitAZGlzY3Vzc2lvbiBO
YW1lIG9mIHRoZSBKU0NvbnRleHQuIEV4cG9zZWQgd2hlbiByZW1vdGUgZGVidWdnaW5nIHRoZSBj
b250ZXh0LgorKi8KK0Bwcm9wZXJ0eShjb3B5KSBOU1N0cmluZyAqbmFtZTsKKwogQGVuZAogCiAv
KiEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggYmM4ZmMxYS4uNDdk
Y2IwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTE2Niw2ICsx
NjYsMjIgQEAKICAgICByZXR1cm4gbV92aXJ0dWFsTWFjaGluZTsKIH0KIAorLSAoTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTR2xvYmFsQ29udGV4dENvcHlOYW1l
KG1fY29udGV4dCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
cmV0dXJuIFsoTlNTdHJpbmcgKilKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBuYW1lKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZUpTID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZT
dHJpbmcoKENGU3RyaW5nUmVmKVtuYW1lIGNvcHldKTsKKyAgICBKU0dsb2JhbENvbnRleHRTZXRO
YW1lKG1fY29udGV4dCwgbmFtZUpTKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UobmFtZUpTKTsKK30K
KwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gSlNDb250ZXh0KFN1YnNjcmlwdFN1cHBvcnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggZjBhNDM1Yy4u
ODFiNjFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApA
QCAtMjEzLDYgKzIxMywzNyBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFs
Q29udGV4dChKU0NvbnRleHRSZWYgY3R4KQogICAgIHJldHVybiB0b0dsb2JhbFJlZihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSk7CiB9CiAKK0pTU3RyaW5nUmVmIEpT
R2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCit7CisgICAgaWYg
KCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBBUElFbnRy
eVNoaW0gZW50cnlTaGltKGV4ZWMpOworCisgICAgU3RyaW5nIG5hbWUgPSBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCktPm5hbWUoKTsKKyAgICBpZiAobmFtZS5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKS5sZWFr
UmVmKCk7Cit9CisKK3ZvaWQgSlNHbG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRS
ZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7
CisKKyAgICBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnNldE5hbWUobmFtZSA/IG5hbWUt
PnN0cmluZygpIDogU3RyaW5nKCkpOworfQorCisKIGNsYXNzIEJhY2t0cmFjZUZ1bmN0b3Igewog
cHVibGljOgogICAgIEJhY2t0cmFjZUZ1bmN0b3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5z
aWduZWQgcmVtYWluaW5nQ2FwYWNpdHlGb3JGcmFtZUNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuaAppbmRleCA3NzA1OTU1Li5lYWI3YTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgKQEAgLTEzMyw2ICsxMzMsMjQgQEAgSlNf
RVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBj
dHgpIEFWQUlMQUJMRV9JTl9XRUIKICovCiBKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpT
Q29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEw
XzcsIDRfMCk7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyBhIGNvcHkgb2YgdGhl
IG5hbWUgb2YgYSBjb250ZXh0LgorQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHdob3Nl
IG5hbWUgeW91IHdhbnQgdG8gZ2V0LgorQHJlc3VsdCBUaGUgbmFtZSBmb3IgY3R4LgorQGRpc2N1
c3Npb24gQSBKU0dsb2JhbENvbnRleHQncyBuYW1lIGlzIGV4cG9zZWQgZm9yIHJlbW90ZSBkZWJ1
Z2dpbmcgdG8gbWFrZSBpdAorZWFzaWVyIHRvIGlkZW50aWZ5IHRoZSBjb250ZXh0IHlvdSB3b3Vs
ZCBsaWtlIHRvIGF0dGFjaCB0by4KKyovCitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNHbG9iYWxD
b250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCk7CisKKy8qIQorQGZ1bmN0aW9u
CitAYWJzdHJhY3QgU2V0cyB0aGUgcmVtb3RlIGRlYnVnZ2luZyBuYW1lIGZvciBhIGNvbnRleHQu
CitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBuYW1lLgor
QHBhcmFtIG5hbWUgVGhlIHJlbW90ZSBkZWJ1Z2dpbmcgbmFtZSB0byBzZXQgb24gY3R4LgorKi8K
K0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldE5hbWUoSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgbmFtZSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWIyY2RmZS4uNDQ5ZmFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEsNiArMTEsNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vZnRsIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaGVhcCIKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5z
cGVjdG9yIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGlu
dCIKQEAgLTU4Myw2ICs1ODQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFE
RVJTX0RJUkVDVE9SSUVTCiAgICAgY29sbGVjdG9yL2hhbmRsZXMKICAgICBkZWJ1Z2dlcgogICAg
IGhlYXAKKyAgICBpbnNwZWN0b3IKICAgICBpbnRlcnByZXRlcgogICAgIGppdAogICAgIGxsaW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiNDQzYmUyLi41NTY3ZGRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzEgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNo
IFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEph
dmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtlIEpTQ29udGV4dCBAY2xhc3MgYW5kIEphdmFTY3JpcHRDb3JlOjpKU0NvbnRleHRS
ZWYKKyAgICAgICAgIkphdmFTY3JpcHQiIFJlbW90ZSBEZWJ1Z2dhYmxlcy4KKworICAgICAgICAq
IEFQSS9KU0NvbnRleHQuaDoKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAo
LVtKU0NvbnRleHQgbmFtZV0pOgorICAgICAgICAoLVtKU0NvbnRleHQgc2V0TmFtZTpdKToKKyAg
ICAgICAgT2JqQyBBUEkgdG8gZW5hYmxlL2Rpc2FibGUgSlNDb250ZXh0IHJlbW90ZSBpbnNwZWN0
aW9uIGFuZCBnaXZlIGEgbmFtZS4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuaDoKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dEdl
dE5hbWUpOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0U2V0TmFtZSk6CisgICAgICAgIEMgQVBJ
IHRvIGdpdmUgYSBKU0NvbnRleHQgYSBuYW1lLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNldE5hbWUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6Om5hbWUpOgorICAgICAgICBTaGFyZWQgaGFuZGxpbmcgb2YgdGhlIEFQSXMgYWJvdmUuCisK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OkpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6bmFtZSk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzY29ubmVjdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90
ZUZyb250ZW5kKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5o
OiBBZGRlZC4KKyAgICAgICAgU3R1YiBmb3IgdGhlIGFjdHVhbCByZW1vdGUgZGVidWdnaW5nIGlt
cGxlbWVudGF0aW9uLiBXZSB3aWxsIHB1c2gKKyAgICAgICAgZG93biB0aGUgYXBwcm9wcmlhdGUg
V2ViQ29yZS9pbnNwZWN0b3IgcGVpY2VzIHN1aXRhYmxlIGZvciBkZWJ1Z2dpbmcKKyAgICAgICAg
anVzdCBhIEphdmFTY3JpcHQgY29udGV4dC4KKworMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVt
b3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNj
cmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDYxMworCisgICAgICAgIE1vdmUgdGhlIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSByZW1v
dGUgZGVidWdnZXIgY29ubmVjdGlvbiBtYW5hZ2VtZW50CisgICAgICAgIGludG8gSmF2YVNjcmlw
dENvcmUgKG9yaWdpbmFsbHkgZnJvbSBXZWJLaXQvbWFjKS4gSW5jbHVkZSBlbmhhbmNlbWVudHM6
CisKKyAgICAgICAgICAqIGFsbG93IGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgcmVtb3RlIGRlYnVn
Z2FibGUgdGFyZ2V0cywKKyAgICAgICAgICAgIGV2ZW50dWFsbHkgYXQgbGVhc3QgYSBKU0NvbnRl
eHQsIFdlYlZpZXcsIFdLVmlldy4KKyAgICAgICAgICAqIGFsbG93IGRlYnVnZ2FibGVzIHRvIGJl
IHJlZ2lzdGVyZWQgYW5kIGRlYnVnZ2VkIG9uIGFueSB0aHJlYWQuIFVubGlrZQorICAgICAgICAg
ICAgV2ViVmlld3MsIEpTQ29udGV4dHMgbWF5IGJlIHJ1biBlbnRpcmVseSBvZmYgb2YgdGhlIG1h
aW4gdGhyZWFkLgorICAgICAgICAgICogbW92ZSB0aGUgcmVtb3RlIGNvbm5lY3Rpb24gKFhQQyBj
b25uZWN0aW9uKSBpdHNlbGYgb2ZmIG9mIHRoZSBtYWluIHRocmVhZCwKKyAgICAgICAgICAgIGl0
IGRvZXNuJ3QgbmVlZCB0byBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlLmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6flJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlOjppbml0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6dXBkYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluZm8pOgorICAgICAgICBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlIGRlZmluZXMgYSBkZWJ1Z2dhYmxlIHRhcmdldC4gQXMgbG9uZyBhcworICAg
ICAgICBzb21ldGhpbmcgY3JlYXRlcyBhIGRlYnVnZ2FibGUgYW5kIGlzIHNldCB0byBhbGxvdyBy
ZW1vdGUgaW5zcGVjdGlvbgorICAgICAgICBpdCB3aWxsIGJlIGxpc3RlZCBpbiByZW1vdGUgZGVi
dWdnZXJzLiBGb3IgdGhlIGRpZmZlcmVudCB0eXBlcyBvZgorICAgICAgICBkZWJ1Z2dhYmxlcyAo
SmF2YVNjcmlwdCBhbmQgV2ViKSB0aGVyZSBpcyBkaWZmZXJlbnQgYmFzaWMgaW5mb3JtYXRpb24K
KyAgICAgICAgdGhhdCBtYXkgYmUgbGlzdGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsOjp+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKToKKyAgICAgICAg
VGhlIG9ubHkgdGhpbmcgYSBkZWJ1Z2dhYmxlIG5lZWRzIGZvciByZW1vdGUgZGVidWdnaW5nIGlz
IGFuCisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBhIHdheSB0byBzZW5kIG1lc3Nh
Z2VzIHRvIGEgcmVtb3RlIGZyb250ZW5kLgorICAgICAgICBUaGlzIGNsYXNzIHByb3ZpZGVzIHRo
YXQgbWV0aG9kLCBhbmQgaXMgdmVuZGVkIHRvIHRoZQorICAgICAgICBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlIHdoZW4gYSByZW1vdGUgY29ubmVjdGlvbiBpcyBzZXR1cC4KKworICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOiBBZGRlZC4KKyAgICAgICAgU2luZ2xl
dG9uLCBjcmVhdGVkIGF0IGxlYXN0IHdoZW4gdGhlIGZpcnN0IERlYnVnZ2FibGUgaXMgY3JlYXRl
ZC4KKyAgICAgICAgVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBsaXN0IG9mIGRlYnVnZ2FibGVzLCBh
bnkgY29ubmVjdGlvbiB0byBhCisgICAgICAgIHJlbW90ZSBkZWJ1Z2dlciBwcm94eSAoWFBDIHNl
cnZpY2UgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiKS4KKworICAgICAgICAoSW5zcGVjdG9yOjpk
aXNwYXRjaEFzeW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6bmV4dEF2YWlsYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGUpOgorICAgICAgICBEZWJ1
Z2dhYmxlIG1hbmFnZW1lbnQuIFdoZW4gZGVidWdnYWJsZXMgYXJlIGFkZGVkLCByZW1vdmVkLCBv
ciB1cGRhdGVkCisgICAgICAgIHdlIHN0YXNoIGEgY29weSBvZiB0aGUgZGVidWdnYWJsZSBpbmZv
cm1hdGlvbiBhbmQgcHVzaCBhbiB1cGRhdGUgdG8KKyAgICAgICAgZGVidWdnZXJzLiBTdGFzaGlu
ZyBhIGNvcHkgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBSZW1vdGVJbnNwZWN0b3IKKyAgICAg
ICAgaXMgYSB0aHJlYWQgc2FmZSB3YXkgdG8gYXZvaWQgd2Fsa2luZyBvdmVyIGFsbCBkZWJ1Z2dh
YmxlcyB0byBnYXRoZXIKKyAgICAgICAgdGhlIGluZm9ybWF0aW9uIHdoZW4gaXQgaXMgbmVlZGVk
LgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0b3ApOgorICAgICAgICBSdW50aW1lIEFQ
SSB0byBlbmFibGUgLyBkaXNhYmxlIHRoZSBmZWF0dXJlLgorCisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nTm93KToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ1Nvb24pOgorICAgICAgICBQdXNoaW5nIGEg
bGlzdGluZyB0byByZW1vdGUgZGVidWdnZXJzLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVz
c2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlv
bkZhaWxlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVj
dGlvblVuaGFuZGxlZE1lc3NhZ2UpOgorICAgICAgICBYUEMgc2V0dXAsIHNlbmQsIGFuZCByZWNl
aXZlIGhhbmRsaW5nLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBk
YXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKToKKyAgICAgICAgQXBwbGljYXRpb25zIGJlaW5nIGRl
YnVnZ2VkIG1heSB3YW50IHRvIGtub3cgd2hlbiBhIGRlYnVnCisgICAgICAgIHNlc3Npb24gaXMg
YWN0aXZlLiBUaGlzIHByb3ZpZGVzIHRoYXQgbm90aWZpY2F0aW9uLgorCisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldExpc3RpbmdN
ZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZElu
ZGljYXRlTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVj
ZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UpOgorICAgICAgICBEaXNwYXRjaGluZyBpbmNvbWlu
ZyByZW1vdGUgZGVidWdnaW5nIHByb3RvY29sIG1lc3NhZ2VzLgorICAgICAgICBUaGVzZSBhcmUg
d3JhcHBpbmcgYWJvdmUgdGhlIGluc3BlY3RvciBwcm90b2NvbCBtZXNzYWdlcy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg6IEFkZGVkLgor
ICAgICAgICBQcm90b2NvbCBtZXNzYWdlcyBhbmQgZGljdGlvbmFyeSBrZXlzIGluc2lkZSB0aGUg
bWVzc2FnZXMuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm86OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24ubW06IEFkZGVkLgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVuIHRo
ZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGUuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb246OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246On5SZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbik6CisgICAgICAgIEFsbG93IGZvciBkaXNwYXRjaGlu
ZyBtZXNzYWdlcyBvbiBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzIG9uIGEgZGlzcGF0Y2hfcXVldWUK
KyAgICAgICAgaW5zdGVhZCBvZiB0aGUgbWFpbiBxdWV1ZS4KKworICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGVzdGluYXRpb24pOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y29u
bmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBOZWVkZWQgaW4gdGhlIHJlbW90ZSBkZWJ1Z2dp
bmcgcHJvdG9jb2wgdG8gaWRlbnRpZnkgdGhlIHJlbW90ZSBkZWJ1Z2dlci4KKworICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0Y2hT
eW5jT25EZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXApOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
Y2xvc2VGcm9tRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICBUaGUgY29ubmVjdGlvbiBpcyBhIHRoaW4g
Y2hhbm5lbCBiZXR3ZWVuIHRoZSB0d28gc2lkZXMgdGhhdCBjYW4gYmUgY2xvc2VkCisgICAgICAg
IGZyb20gZWl0aGVyIHNpZGUsIHNvIHRoZXJlIGlzIHNvbWUgbG9naWMgYXJvdW5kIG11bHRpLXRo
cmVhZGVkIGFjY2Vzcy4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50Ojp+Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06IEFkZGVkLgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24pOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2Fn
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVu
IHRoZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhbiBYUEMgc2VydmljZQorICAgICAg
ICBuYW1lZCAiY29tLmFwcGxlLndlYmluc3BlY3RvciIuIFRoaXMgaGFuZGxlcyBzZXJpYWxpemF0
aW9uIG9mIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1lc3NhZ2VzIHRvIGFuZCBmcm9tIHRoZSBz
ZXJ2aWNlLiBUaGUgcmVjZWl2aW5nIGlzIGRvbmUgb24gYSBub24tbWFpbiBxdWV1ZS4KKwogMjAx
My0xMi0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3Jl
cyB0byBsb2NhbCBjYXB0dXJlZCB2YXJpYWJsZXMgc2hvdWxkIGJlIGludGVyY2VwdGVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNDJhYTY0My4uNGU3Mzc3NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNTksNiArNTksNyBAQCBqYXZhc2NyaXB0
Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rp
c2Fzc2VtYmxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bCBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAgXAorICAgIC1JJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdCBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50IFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMTFiZDA5NS4u
MTg1MTU3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTYxMCw2ICs2MTAsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdXRmX29sZC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaWN1L3VuaWNvZGUvdXR5cGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5p
Y29kZS91dmVyc2lvbi5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQWJzdHJhY3RQQy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9B
YnN0cmFjdFBDLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRD
YWxsLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggYzM2YTg3
OS4uM2VmNDI4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC05
OTQsNiArOTk0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vha1NldC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0SW5saW5lcy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0Lmgi
IC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxB
YnN0cmFjdFBDLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxD
YWNoZWRDYWxsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxD
YWxsRnJhbWUuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycwppbmRleCA4MDEzMmYyLi5iMzQ3YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0yNSw2ICsyNSw5IEBACiAgICAg
PEZpbHRlciBJbmNsdWRlPSJoZWFwIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntiZDQ5ZTVj
Zi05NWQ2LTQxNTEtYjI4Ni04ODM3Y2NkMzQ3ZmF9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwv
RmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iaW5zcGVjdG9yIj4KKyAgICAgIDxVbmlxdWVJ
ZGVudGlmaWVyPnswOWFlMDlkYS0xMjM5LTAwZWEtOGRmZS05MDg3YWUxMjNiYmV9PC9VbmlxdWVJ
ZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iaW50ZXJwcmV0
ZXIiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezEwZDk3ZWEzLTJhZjktNDg5Yy1hNTRlLWQ2
OWVmMmU0Y2EwYX08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0xNzAwLDYg
KzE3MDMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJT
dXBwb3J0LmgiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5j
bHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFic3RyYWN0UEMu
aCI+CiAgICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY2NTg1NWYuLmU4M2ZmN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODYsNiArODg2LDE4IEBACiAJCUExNzEyQjQx
MTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBL
ZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
MUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0MxNTZFRUQzQjAw
NTY2Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJN
NjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1OTQ1NThGMTgyNDVF
RkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1NThFMTgyNDVFREUwMENDMzg0
MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKKwkJQTU5NDU1OTIxODI0
NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5MDE4MjQ3NDQ3MDBDQzM4
NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKKwkJQTU5NDU1OTMxODI0
NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OTExODI0NzQ0NzAwQ0MzODQz
IC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oICovOyB9OworCQlBNTk0NTU5NTE4MjQ3OUVC
MDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyog
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUlu
c3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1QkExNUU5MTgyMzQwQjMw
MEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5z
cGVjdG9yLm1tICovOyB9OworCQlBNUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5z
cGVjdG9yQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUJBMTVFMzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3Rh
bnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QTVCQTE1RUIxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24uaCAqLzsgfTsKKwkJQTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tICovOyB9OworCQlBNUJBMTVFRDE4MjM0MEI0MDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLzsgfTsKKwkJQTVCQTE1RUUxODIzNDBC
NDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNzE4MjM0MEIzMDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLzsgfTsKKwkJQTVCQTE1RjAx
ODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUVGMTgyMzQ1QUYwMEE4
MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcwMDg3MzkxN0NCRTg1MzAwQzNFNjQzIC8q
IE1hcENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAg
Ki87IH07CiAJCUE3MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3MzgxN0NC
RTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggKi87IH07CiAJCUE3MDA4NzNEMTdDQkU4
RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3Rv
dHlwZS5jcHAgKi87IH07CkBAIC0yMTk2LDYgKzIyMDgsMTggQEAKIAkJQTE3MTJCM0ExMUM3QjIx
MjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlZ0V4cENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUuY3BwOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5NDU1
OTAxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4
NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC5oOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkg
LyogUmVtb3RlSW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJl
bW90ZUluc3BlY3Rvci5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTIxODIzNDBCMzAwQTgyRTY5
IC8qIFJlbW90ZUluc3BlY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFJlbW90ZUluc3BlY3Rvci5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFMzE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oOyBwYXRoID0gaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg7IHBhdGggPSBpbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE1QkExNUU1MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tOyBwYXRo
ID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5
IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oOyBwYXRoID0gaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE1QkExNUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTVCQTE1RUYxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZS5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDA4NzM3MTdDQkU4NTMw
MEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNYXBDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE3MDA4NzM4MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXBDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNzAwODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcFByb3RvdHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjk0LDYgKzI3MTgsNyBAQAogCQkJ
CTA4NjdENjlBRkU4NDAyOEZDMDJBQUMwNyAvKiBGcmFtZXdvcmtzICovLAogCQkJCTBGRUEwOUZD
MTcwNTEzN0YwMEJCNzIyQyAvKiBmdGwgKi8sCiAJCQkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1
IC8qIGhlYXAgKi8sCisJCQkJQTVCQTE1REYxODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAq
LywKIAkJCQkxNDI5RDc3QTBFRDIwRDczMDBCODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8sCiAJCQkJ
MTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLywKIAkJCQkwRjQ2ODA5QzE0QkE3RjRE
MDBCRkUyNzIgLyogbGxpbnQgKi8sCkBAIC0zNDc3LDYgKzM1MDIsOCBAQAogCQkJCTBGMkI2NkM4
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGlu
ZXMuaCAqLywKIAkJCQkxNERFMEQ2ODBEMDI0MzE0MDBBQUNDQTIgLyogSlNHbG9iYWxPYmplY3Qu
Y3BwICovLAogCQkJCUE4RTg5NDMzMENEMDYwM0YwMDM2NzE3OSAvKiBKU0dsb2JhbE9iamVjdC5o
ICovLAorCQkJCUE1OTQ1NTkwMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVn
Z2FibGUuY3BwICovLAorCQkJCUE1OTQ1NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9i
amVjdERlYnVnZ2FibGUuaCAqLywKIAkJCQlCQzc1NkZDNjBFMjAzMUIyMDBERTdEMTIgLyogSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwICovLAogCQkJCUJDNzU2RkM3MEUyMDMxQjIwMERFN0Qx
MiAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oICovLAogCQkJCTBGMkI2NkNBMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0ludDE2QXJyYXkuaCAqLywKQEAgLTQxNDUsNiArNDE3MiwzMSBAQAogCQkJ
cGF0aCA9IGJ5dGVjb2RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTVC
QTE1REYxODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTVCQTE1RTAxODIzNDA5RDAwQTgyRTY5IC8qIHJl
bW90ZSAqLywKKwkJCQlBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmggKi8sCisJCQkpOworCQkJbmFtZSA9IGluc3BlY3RvcjsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUE1QkExNUUwMTgyMzQwOUQwMEE4MkU2OSAvKiByZW1v
dGUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1QkEx
NUUxMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCAqLywKKwkJCQlBNUJBMTVF
MjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tICovLAorCQkJCUE1QkExNUUz
MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCAqLywKKwkJCQlB
NUJBMTVFRjE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oICov
LAorCQkJCUE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlLmNwcCAqLywKKwkJCQlBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCAqLywKKwkJCQlBNUJBMTVFNTE4MjM0MEIzMDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gKi8sCisJCQkJQTVC
QTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAq
LywKKwkJCQlBNUJBMTVFNzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbi5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gcmVtb3RlOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQyMTUsNiArNDI2Nyw3IEBACiAJ
CQkJODY2NzM5RDIxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0ODE2RTFDMTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxOEMzRUMwRTE2RjVDRDAwQjM0NDYwIC8qIEJvb2xlYW5PYmplY3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE1QkExNUVBMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJ
bnNwZWN0b3JDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk3MTVFRDhFNDYw
MEYxNjdCMiAvKiBCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk4MTVFRDhF
NDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIx
QzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC00Mjg1LDYgKzQzMzgsNyBAQAogCQkJCTBGMTYwMTVFMTU2MTk4QzkwMEMyNTg3QyAv
KiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjA1QzNCNDE2ODNDRjkyMDBCQUY0NUIgLyogREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2Mzk0ODUxNUU0ODExQjAwNkE1OTdDIC8qIERGR0FycmF5
TW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RUIxODIzNDBCNDAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0Q5QTI5NTE3QTBCQzc0MDBFRTI2MTggLyogREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY3MTRDQTUxNkVBOTJGMjAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1By
b3BhZ2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIwMTc2MTQzRkNEM0IwMDY4
Qjc3QyAvKiBERkdCYXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLywKQEAgLTQzNjAsNiArNDQxNCw3
IEBACiAJCQkJMEZEOEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVh
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIg
LyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkw
QzdGIC8qIERGR09TUkV4aXRCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUJBMTVFRDE4MjM0
MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGQjkyMUMxNkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlv
bkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBE
RkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMw
MDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAt
NDQxOCw2ICs0NDczLDcgQEAKIAkJCQkwRkVBMEEwODE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJi
cmV2aWF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJD
IC8qIEZUTEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYxNzA4QjAw
NzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBBMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBh
YmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAv
KiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBDMTcwNTEzREIw
MEJCNzIyQyAvKiBGVExDb21waWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ1MTAsNiArNDU2Niw3
IEBACiAJCQkJODZDQ0VGREUwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9y
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERp
c2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5
IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4
MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkIxNEUxRjE4MTI0QUNFMDA5QjZCNEQgLyogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKQEAgLTQ2ODEsNiArNDczOCw3IEBACiAJCQkJMTREMkYzREIxMzlG
NEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJENkYx
MjEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjEx
MjJFMzE1REQ5QUIzMDA3OTBFM0EgLyogTWFya1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTU5NDU1OTUxODI0NzlFQjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYxMkU0Q0QxNTIzODlFQzAwQzgzNkJFIC8qIE1hdGNo
UmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzQzBFMTZGNUNEMDBCMzQ0NjAgLyog
TWF0aE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNBNDBDMjAwRDQyMkYz
IC8qIE1lbW9yeVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLApAQCAtNDg0OSw2ICs0OTA3LDcg
QEAKIAkJCQkxNDJFMzEzQzEzNEZGMEE2MDBBRkFEQjUgLyogV2Vhay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTRFODRGOUYxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTRGNzI1NjYxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5k
bGVPd25lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRFODRGQTIxNEVFMUFDQzAwRDZENUQ0IC8q
IFdlYWtJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEJFN0QzMzE3MTM1Q0Y0MDBEMTgwN0Eg
LyogV2Vha0lubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTQ0Myw2ICs1NTAyLDcgQEAKIAkJ
CQlBN0I0OEY0OTBFRTg5MzZGMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NkRCNjQ2NDBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFs
bG9jYXRvckZpeGVkVk1Qb29sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTZBMUQ1MTUwMDFD
RjQwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1
OTQ1NTkyMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZCMTA1ODUxNjc1NDgwRjAwRjhBQjZFIC8qIEV4aXRLaW5kLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTFDMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0
cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMUUxNzA4QjAwNzAwQkI3MjJD
IC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NjA0
LDYgKzU2NjQsNyBAQAogCQkJCTE0NDY5RERFMTA3RUM3RTcwMDY1MDQ0NiAvKiBMb29rdXAuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCNzIzQjIxMkQ3REE0NjAwM0JE
NUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTk0NTU4
RjE4MjQ1RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkVCM0VDRjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3Jv
QXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMx
NzI5OCAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTczMSw2
ICs1NzkyLDkgQEAKIAkJCQlBN0NBM0FFNTE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEU4NEZBMDE0RUUxQUNDMDBENkQ1RDQgLyog
V2Vha1NldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMg
LyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUJBMTVFOTE4
MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlBN0U1
QUIzQTE3OTlFNEIyMDBEMjgzM0QgLyogWDg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyogWWFycklu
dGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCnNp
bWlsYXJpdHkgaW5kZXggNjklCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3Bl
Y3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oCnJlbmFtZSB0byBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCmluZGV4
IGMzMjBmZGUuLmZhMGE4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3Bl
Y3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIwICsyMywxOSBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7Ci1AY2xh
c3MgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb247CisjaWZuZGVmIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbF9oCisjZGVmaW5lIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oCiAK
LUBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCA6IE5TT2JqZWN0IHsKLUBwcml2
YXRlCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKl9yZW1vdGU7Ci0g
ICAgV2ViSW5zcGVjdG9yQ2xpZW50KiBfbG9jYWw7Ci19CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLSsgKFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKiljcmVhdGVDaGFubmVs
Rm9yUGFnZUlkOih1bnNpZ25lZClwYWdlSWQgY29ubmVjdGlvbjooV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb24gKiljb25uZWN0aW9uOworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
LS0gKHZvaWQpY2xvc2VGcm9tTG9jYWxTaWRlOwotLSAodm9pZCljbG9zZUZyb21SZW1vdGVTaWRl
OwotLSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKLS0g
KHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKK2NsYXNzIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKCkgeyB9CisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKK307CiAKLUBlbmQKK30gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjQzZDQwM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKKworI2lmbmRlZiBSZW1vdGVJbnNwZWN0b3JfaAorI2RlZmluZSBSZW1vdGVJbnNw
ZWN0b3JfaAorCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5o
IgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIgorI2ltcG9ydCA8d3Rm
L0ZvcndhcmQuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KKworT0JKQ19DTEFTUyBOU1N0
cmluZzsKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OworCituYW1lc3BhY2UgSW5zcGVjdG9yIHsK
KworY2xhc3MgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTsKK3N0cnVjdCBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlSW5mbzsKKworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVj
dG9yIEZJTkFMIDogcHVibGljIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OkNsaWVudCB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlbW90ZUluc3BlY3RvciYgc2hhcmVkKCk7CisgICAgZnJp
ZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj47CisKKyAgICB2b2lkIHJl
Z2lzdGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7CisgICAgdm9pZCB1
bnJlZ2lzdGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKik7CisgICAgdm9p
ZCB1cGRhdGVEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqKTsKKyAgICB2b2lk
IHNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZCh1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOworCisgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9l
bmFibGVkOyB9CisgICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKSBjb25zdCB7IHJldHVy
biBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbjsgfQorCisgICAgdm9pZCBzdGFydCgpOworICAgIHZv
aWQgc3RvcCgpOworCitwcml2YXRlOgorICAgIFJlbW90ZUluc3BlY3RvcigpOworCisgICAgdW5z
aWduZWQgbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIoKTsKKworICAgIHZvaWQgc2V0dXBYUENDb25u
ZWN0aW9uSWZOZWVkZWQoKTsKKworICAgIE5TRGljdGlvbmFyeSAqbGlzdGluZ0ZvckRlYnVnZ2Fi
bGUoY29uc3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8mKSBjb25zdDsKKyAgICB2b2lk
IHB1c2hMaXN0aW5nTm93KCk7CisgICAgdm9pZCBwdXNoTGlzdGluZ1Nvb24oKTsKKworICAgIHZv
aWQgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgeHBj
Q29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwg
TlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25Vbmhh
bmRsZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3Qp
IE9WRVJSSURFOworCisgICAgdm9pZCByZWNlaXZlZFNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkg
KnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkRGF0YU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1
c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZERpZENsb3NlTWVzc2FnZShOU0RpY3Rpb25hcnkg
KnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkR2V0TGlzdGluZ01lc3NhZ2UoTlNEaWN0aW9u
YXJ5ICp1c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZEluZGljYXRlTWVzc2FnZShOU0RpY3Rp
b25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdl
KE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworCisgICAgLy8gRGVidWdnYWJsZXMgY2FuIGJlIHJl
Z2lzdGVyZWQgZnJvbSBhbnkgdGhyZWFkIGF0IGFueSB0aW1lLgorICAgIC8vIEFueSBkZWJ1Z2dh
YmxlIGNhbiBzZW5kIG1lc3NhZ2VzIG92ZXIgdGhlIFhQQyBjb25uZWN0aW9uLgorICAgIC8vIFNv
IGxvY2sgYWNjZXNzIHRvIGFsbCBtYXBzIGFuZCBzdGF0ZSBhcyB0aGV5IGNhbiBjaGFuZ2UKKyAg
ICAvLyBmcm9tIGFueSB0aHJlYWQuCisgICAgTXV0ZXggbV9sb2NrOworCisgICAgSGFzaE1hcDx1
bnNpZ25lZCwgc3RkOjpwYWlyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqLCBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlSW5mbz4+IG1fZGVidWdnYWJsZU1hcDsKKyAgICBIYXNoTWFwPHVuc2ln
bmVkLCBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+PiBtX2Nvbm5l
Y3Rpb25NYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24+IG1feHBjQ29ubmVjdGlvbjsKKyAgICB1bnNpZ25lZCBtX25leHRBdmFpbGFibGVJZGVudGlm
aWVyOworICAgIGludCBtX25vdGlmeVRva2VuOworICAgIGJvb2wgbV9lbmFibGVkOworICAgIGJv
b2wgbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247CisgICAgYm9vbCBtX3B1c2hTY2hlZHVsZWQ7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorCisjZW5kaWYgLy8gV2ViSW5zcGVjdG9yU2VydmVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzliNDFkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yLm1tCkBAIC0wLDAgKzEsNDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVJ
bnNwZWN0b3IuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW1wb3J0ICJJ
bml0aWFsaXplVGhyZWFkaW5nLmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMu
aCIKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCIKKyNpbXBvcnQgPG5vdGlm
eS5oPgorI2ltcG9ydCA8eHBjL3hwYy5oPgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL01haW5UaHJlYWQu
aD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZPUk0oSU9TKQor
I2ltcG9ydCA8d3RmL2lvcy9XZWJDb3JlVGhyZWFkLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIElu
c3BlY3RvciB7CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNoQXN5bmNPblF1ZXVlU2FmZUZvckFueURl
YnVnZ2FibGUodm9pZCAoXmJsb2NrKSgpKQoreworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAo
V2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCAmJiBXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKCkp
IHsKKyAgICAgICAgV2ViQ29yZVdlYlRocmVhZFJ1bihibG9jayk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYKKworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIGJsb2NrKTsKK30KKworUmVtb3RlSW5zcGVjdG9yJiBSZW1vdGVJbnNwZWN0b3I6OnNo
YXJlZCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlbW90ZUluc3BlY3Rvcj4gc2hh
cmVkOworCisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOworICAgIGRpc3BhdGNoX29u
Y2UoJm9uY2UsIF57CisgICAgICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgICAg
ICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisgICAgICAgIHNoYXJlZC5nZXQoKS5zdGFy
dCgpOworICAgIH0pOworCisgICAgcmV0dXJuIHNoYXJlZDsKK30KKworUmVtb3RlSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3IoKQorICAgIDogbV9uZXh0QXZhaWxhYmxlSWRlbnRpZmllcigxKQor
ICAgICwgbV9ub3RpZnlUb2tlbigwKQorICAgICwgbV9lbmFibGVkKGZhbHNlKQorICAgICwgbV9o
YXNBY3RpdmVEZWJ1Z1Nlc3Npb24oZmFsc2UpCisgICAgLCBtX3B1c2hTY2hlZHVsZWQoZmFsc2Up
Cit7Cit9CisKK3Vuc2lnbmVkIFJlbW90ZUluc3BlY3Rvcjo6bmV4dEF2YWlsYWJsZUlkZW50aWZp
ZXIoKQoreworICAgIHVuc2lnbmVkIG5leHRWYWxpZElkZW50aWZpZXI7CisgICAgZG8geworICAg
ICAgICBuZXh0VmFsaWRJZGVudGlmaWVyID0gbV9uZXh0QXZhaWxhYmxlSWRlbnRpZmllcisrOwor
ICAgIH0gd2hpbGUgKCFuZXh0VmFsaWRJZGVudGlmaWVyIHx8IG5leHRWYWxpZElkZW50aWZpZXIg
PT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIHx8IG1fZGVidWdnYWJsZU1h
cC5jb250YWlucyhuZXh0VmFsaWRJZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIG5leHRWYWxpZElk
ZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWdpc3RlckRlYnVnZ2FibGUo
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSkKK3sKKyAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9sb2NrKTsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBuZXh0QXZhaWxh
YmxlSWRlbnRpZmllcigpOworICAgIGRlYnVnZ2FibGUtPnNldElkZW50aWZpZXIoaWRlbnRpZmll
cik7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fZGVidWdnYWJsZU1hcC5zZXQoaWRlbnRpZmllciwg
c3RkOjptYWtlX3BhaXIoZGVidWdnYWJsZSwgZGVidWdnYWJsZS0+aW5mbygpKSk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgIGlmIChkZWJ1Z2dh
YmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkpCisgICAgICAgIHB1c2hMaXN0aW5nU29vbigp
OworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlckRlYnVnZ2FibGUoUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBkZWJ1Z2dhYmxlLT5pZGVu
dGlmaWVyKCk7CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBi
b29sIHdhc1JlbW92ZWQgPSBtX2RlYnVnZ2FibGVNYXAucmVtb3ZlKGlkZW50aWZpZXIpOworICAg
IEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7CisKKyAgICBpZiAoUmVmUHRy
PFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gbV9jb25u
ZWN0aW9uTWFwLnRha2UoaWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmNsb3NlRnJv
bURlYnVnZ2FibGUoKTsKKworICAgIGlmIChkZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxv
d2VkKCkpCisgICAgICAgIHB1c2hMaXN0aW5nU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6dXBkYXRlRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dh
YmxlKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgdW5zaWduZWQg
aWRlbnRpZmllciA9IGRlYnVnZ2FibGUtPmlkZW50aWZpZXIoKTsKKyAgICBpZiAoIWlkZW50aWZp
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9kZWJ1Z2dhYmxlTWFw
LnNldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfcGFpcihkZWJ1Z2dhYmxlLCBkZWJ1Z2dhYmxlLT5p
bmZvKCkpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdC5pc05ld0VudHJ5KTsK
KworICAgIGlmIChkZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkpCisgICAgICAg
IHB1c2hMaXN0aW5nU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3Nh
Z2VUb1JlbW90ZUZyb250ZW5kKHVuc2lnbmVkIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmICghbV94
cGNDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8UmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0
KGlkZW50aWZpZXIpOworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IEB7CisgICAgICAgIFdJUlJhd0RhdGFLZXk6IFtz
dGF0aWNfY2FzdDxOU1N0cmluZyAqPihtZXNzYWdlKSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ10sCisgICAgICAgIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5OiBjb25u
ZWN0aW9uLT5jb25uZWN0aW9uSWRlbnRpZmllcigpLAorICAgICAgICBXSVJEZXN0aW5hdGlvbktl
eTogY29ubmVjdGlvbi0+ZGVzdGluYXRpb24oKQorICAgIH07CisKKyAgICBtX3hwY0Nvbm5lY3Rp
b24tPnNlbmRNZXNzYWdlKFdJUlJhd0RhdGFNZXNzYWdlLCB1c2VySW5mbyk7Cit9CisKK3ZvaWQg
UmVtb3RlSW5zcGVjdG9yOjpzdGFydCgpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisKKyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2VuYWJs
ZWQgPSB0cnVlOworCisgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKFdJUlNlcnZpY2VBdmFp
bGFibGVOb3RpZmljYXRpb24sICZtX25vdGlmeVRva2VuLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1
ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeKGludCkgeworICAgICAg
ICBSZW1vdGVJbnNwZWN0b3I6OnNoYXJlZCgpLnNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7
CisgICAgfSk7CisKKyAgICBub3RpZnlfcG9zdChXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hlY2tO
b3RpZmljYXRpb24pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RvcCgpCit7CisgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBpZiAoIW1fZW5hYmxlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9lbmFibGVkID0gZmFsc2U7CisKKyAgICBtX3B1c2hTY2hlZHVs
ZWQgPSBmYWxzZTsKKworICAgIGZvciAoYXV0byBpdCA9IG1fY29ubmVjdGlvbk1hcC5iZWdpbigp
LCBlbmQgPSBtX2Nvbm5lY3Rpb25NYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAg
aXQtPnZhbHVlLT5jbG9zZSgpOworICAgIG1fY29ubmVjdGlvbk1hcC5jbGVhcigpOworCisgICAg
dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAgICBpZiAobV94cGNDb25uZWN0aW9u
KSB7CisgICAgICAgIG1feHBjQ29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICAgICAgbV94cGNDb25u
ZWN0aW9uID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBub3RpZnlfY2FuY2VsKG1fbm90aWZ5VG9r
ZW4pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVk
ZWQoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKG1feHBj
Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgeHBjX2Nvbm5lY3Rpb25fdCBjb25u
ZWN0aW9uID0geHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShXSVJYUENNYWNoUG9y
dE5hbWUsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIDApOworICAgIGlmICghY29ubmVjdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV94cGNDb25uZWN0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uPihjb25uZWN0aW9uLCB0aGlzKTsKKyAg
ICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKEAic3luIiwgbmlsKTsgLy8gU2VuZCBhIHNp
bXBsZSBtZXNzYWdlIHRvIGluaXRpYWxpemUgdGhlIFhQQyBjb25uZWN0aW9uLgorICAgIHhwY19y
ZWxlYXNlKGNvbm5lY3Rpb24pOworCisgICAgcHVzaExpc3RpbmdTb29uKCk7Cit9CisKKyNwcmFn
bWEgbWFyayAtIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OkNsaWVudAorCit2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uKiwgTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVz
ZXJJbmZvKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKFtt
ZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSUGVybWlzc2lvbkRlbmllZF0pIHsKKyAgICAg
ICAgc3RvcCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFttZXNzYWdlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6V0lSU29ja2V0RGF0YU1lc3NhZ2VdKQorICAgICAgICByZWNlaXZl
ZERhdGFNZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOldJUlNvY2tldFNldHVwTWVzc2FnZV0pCisgICAgICAgIHJlY2VpdmVkU2V0dXBN
ZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOldJUldlYlBhZ2VDbG9zZU1lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZERpZENsb3NlTWVz
c2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpXSVJBcHBsaWNhdGlvbkdldExpc3RpbmdNZXNzYWdlXSkKKyAgICAgICAgcmVjZWl2ZWRHZXRM
aXN0aW5nTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1
YWxUb1N0cmluZzpXSVJJbmRpY2F0ZU1lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZEluZGljYXRl
TWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0
cmluZzpXSVJDb25uZWN0aW9uRGllZE1lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZENvbm5lY3Rp
b25EaWVkTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZQorICAgICAgICBOU0xvZyhAIlVucmVj
b2duaXplZCBSZW1vdGVJbnNwZWN0b3IgWFBDIE1lc3NhZ2U6ICVAIiwgbWVzc2FnZU5hbWUpOwor
fQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvbkZhaWxlZChSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uKikKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsK
KworICAgIG1fcHVzaFNjaGVkdWxlZCA9IGZhbHNlOworCisgICAgZm9yIChhdXRvIGl0ID0gbV9j
b25uZWN0aW9uTWFwLmJlZ2luKCksIGVuZCA9IG1fY29ubmVjdGlvbk1hcC5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPmNsb3NlKCk7CisgICAgbV9jb25uZWN0aW9u
TWFwLmNsZWFyKCk7CisKKyAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKKworICAg
IGlmIChtX3hwY0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgbV94cGNDb25uZWN0aW9uLT5jbG9zZSgp
OworICAgICAgICBtX3hwY0Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgIH0KK30KKwordm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3QpCit7CisgICAgLy8gSW50ZW50aW9uYWxs
eSBpZ25vcmVkLgorfQorCisjcHJhZ21hIG1hcmsgLSBMaXN0aW5ncworCitOU0RpY3Rpb25hcnkg
KlJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvckRlYnVnZ2FibGUoY29uc3QgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUluZm8mIGRlYnVnZ2FibGVJbmZvKSBjb25zdAoreworICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKmRlYnVnZ2FibGVEZXRhaWxzID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGlj
dGlvbmFyeV07CisKKyAgICBbZGVidWdnYWJsZURldGFpbHMgc2V0T2JqZWN0OkAoZGVidWdnYWJs
ZUluZm8uaWRlbnRpZmllcikgZm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsKKworICAgIHN3
aXRjaCAoZGVidWdnYWJsZUluZm8udHlwZSkgeworICAgIGNhc2UgUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6SmF2YVNjcmlwdDogeworICAgICAgICBOU1N0cmluZyAqbmFtZSA9IGRlYnVnZ2Fi
bGVJbmZvLm5hbWU7CisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6bmFtZSBm
b3JLZXk6V0lSVGl0bGVLZXldOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpXZWI6IHsKKyAgICAgICAgTlNTdHJpbmcgKnVybCA9IGRl
YnVnZ2FibGVJbmZvLnVybDsKKyAgICAgICAgTlNTdHJpbmcgKnRpdGxlID0gZGVidWdnYWJsZUlu
Zm8ubmFtZTsKKyAgICAgICAgW2RlYnVnZ2FibGVEZXRhaWxzIHNldE9iamVjdDp1cmwgZm9yS2V5
OldJUlVSTEtleV07CisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6dGl0bGUg
Zm9yS2V5OldJUlRpdGxlS2V5XTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBpZiAoUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25u
ZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChkZWJ1Z2dhYmxlSW5mby5pZGVudGlmaWVyKSkK
KyAgICAgICAgW2RlYnVnZ2FibGVEZXRhaWxzIHNldE9iamVjdDpjb25uZWN0aW9uLT5jb25uZWN0
aW9uSWRlbnRpZmllcigpIGZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07CisKKyAg
ICBpZiAoZGVidWdnYWJsZUluZm8uaGFzTG9jYWxEZWJ1Z2dlcikKKyAgICAgICAgW2RlYnVnZ2Fi
bGVEZXRhaWxzIHNldE9iamVjdDpAWUVTIGZvcktleTpXSVJIYXNMb2NhbERlYnVnZ2VyS2V5XTsK
KworICAgIHJldHVybiBkZWJ1Z2dhYmxlRGV0YWlsczsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnB1c2hMaXN0aW5nTm93KCkKK3sKKyAgICBBU1NFUlQobV94cGNDb25uZWN0aW9uKTsKKyAg
ICBpZiAoIW1feHBjQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wdXNoU2No
ZWR1bGVkID0gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gcmVz
cG9uc2UgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAg
IGZvciAoYXV0byBpdCA9IG1fZGVidWdnYWJsZU1hcC5iZWdpbigpLCBlbmQgPSBtX2RlYnVnZ2Fi
bGVNYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBjb25zdCBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlSW5mbyYgZGVidWdnYWJsZUluZm8gPSBpdC0+dmFsdWUuc2Vjb25kOwor
ICAgICAgICBpZiAoZGVidWdnYWJsZUluZm8ucmVtb3RlRGVidWdnaW5nQWxsb3dlZCkgeworICAg
ICAgICAgICAgTlNEaWN0aW9uYXJ5ICpkZXRhaWxzID0gbGlzdGluZ0ZvckRlYnVnZ2FibGUoZGVi
dWdnYWJsZUluZm8pOworICAgICAgICAgICAgW3Jlc3BvbnNlIHNldE9iamVjdDpkZXRhaWxzIGZv
cktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiV1IiwgZGVidWdnYWJsZUluZm8uaWRl
bnRpZmllcl1dOworICAgICAgICB9CisgICAgfQorCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURp
Y3Rpb25hcnk+IG91dGdvaW5nID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdKTsKKyAgICBbb3V0Z29pbmcgc2V0T2JqZWN0OnJlc3BvbnNlLmdldCgpIGZvcktleTpX
SVJMaXN0aW5nS2V5XTsKKworICAgIG1feHBjQ29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lSTGlz
dGluZ01lc3NhZ2UsIG91dGdvaW5nLmdldCgpKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnB1c2hMaXN0aW5nU29vbigpCit7CisgICAgaWYgKCFtX3hwY0Nvbm5lY3Rpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChtX3B1c2hTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fcHVzaFNjaGVkdWxlZCA9IHRydWU7CisgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hf
dGltZShESVNQQVRDSF9USU1FX05PVywgMC4wMiAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dl
dF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Cisg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBpZiAobV9wdXNoU2No
ZWR1bGVkKQorICAgICAgICAgICAgcHVzaExpc3RpbmdOb3coKTsKKyAgICB9KTsKK30KKworI3By
YWdtYSBtYXJrIC0gQWN0aXZlIERlYnVnZ2VyIFNlc3Npb25zCisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yOjp1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKQoreworICAgIGJvb2wgaGFzQWN0aXZl
RGVidWdnZXJTZXNzaW9uID0gIW1fY29ubmVjdGlvbk1hcC5pc0VtcHR5KCk7CisgICAgaWYgKGhh
c0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbiA9PSBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24gPSBoYXNBY3RpdmVEZWJ1
Z2dlclNlc3Npb247CisKKyAgICAvLyBGSVhNRTogRXhwb3NlIHNvbWUgd2F5IHRvIGFjY2VzcyB0
aGlzIHN0YXRlIGluIGFuIGVtYmVkZGVyLgorICAgIC8vIExlZ2FjeSBpT1MgV2ViS2l0IDEgaGFk
IGEgbm90aWZpY2F0aW9uLiBUaGlzIHdpbGwgbmVlZCB0byBiZSBzbWFydGVyIHdpdGggV2ViS2l0
Mi4KK30KKworI3ByYWdtYSBtYXJrIC0gUmVjZWl2ZWQgWFBDIE1lc3NhZ2VzCisKK3ZvaWQgUmVt
b3RlSW5zcGVjdG9yOjpyZWNlaXZlZFNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZv
KQoreworICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlBh
Z2VJZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIXBhZ2VJZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyID0gW3VzZXJJbmZvIG9iamVjdEZvcktl
eTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07CisgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRp
ZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNTdHJpbmcgKnNlbmRlciA9IFt1c2VySW5m
byBvYmplY3RGb3JLZXk6V0lSU2VuZGVyS2V5XTsKKyAgICBpZiAoIXNlbmRlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IFtwYWdlSWQgdW5zaWduZWRJbnRW
YWx1ZV07CisgICAgaWYgKG1fY29ubmVjdGlvbk1hcC5jb250YWlucyhpZGVudGlmaWVyKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBpdCA9IG1fZGVidWdnYWJsZU1hcC5maW5kKGlkZW50
aWZpZXIpOworICAgIGlmIChpdCA9PSBtX2RlYnVnZ2FibGVNYXAuZW5kKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEF0dGVtcHQgdG8gY3JlYXRlIGEgY29ubmVjdGlvbi4gVGhpcyBtYXkg
ZmFpbCBpZiB0aGUgcGFnZSBhbHJlYWR5IGhhcyBhbiBpbnNwZWN0b3Igb3IgaWYgaXQgZGlzYWxs
b3dzIGluc3BlY3Rpb24uCisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJs
ZSA9IGl0LT52YWx1ZS5maXJzdDsKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyBk
ZWJ1Z2dhYmxlSW5mbyA9IGl0LT52YWx1ZS5zZWNvbmQ7CisgICAgUmVmUHRyPFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gYWRvcHRSZWYobmV3IFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKGRlYnVnZ2FibGUsIGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzZW5kZXIsIGRlYnVnZ2FibGVJbmZvLnR5cGUpKTsKKyAgICBpZiAoIWNvbm5lY3Rp
b24tPnNldHVwKCkpIHsKKyAgICAgICAgY29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1fY29ubmVjdGlvbk1hcC5zZXQoaWRlbnRpZmllciwgY29ubmVj
dGlvbi5yZWxlYXNlKCkpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisK
KyAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2Vp
dmVkRGF0YU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBOU051bWJlciAq
cGFnZUlkID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Cisg
ICAgaWYgKCFwYWdlSWQpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHBhZ2VJZGVu
dGlmaWVyID0gW3BhZ2VJZCB1bnNpZ25lZEludFZhbHVlXTsKKyAgICBSZWZQdHI8UmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAu
Z2V0KHBhZ2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIE5TRGF0YSAqZGF0YSA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSU29ja2V0
RGF0YUtleV07CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtZXNzYWdlID0gYWRvcHROUyhbW05T
U3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ10pOworICAgIGNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UuZ2V0
KCkpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2Uo
TlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBOU051bWJlciAqcGFnZUlkID0gW3VzZXJJ
bmZvIG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07CisgICAgaWYgKCFwYWdlSWQp
CisgICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9
IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOworICAg
IGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2ln
bmVkIGlkZW50aWZpZXIgPSBbcGFnZUlkIHVuc2lnbmVkSW50VmFsdWVdOworICAgIFJlZlB0cjxS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG1fY29ubmVj
dGlvbk1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIVtjb25uZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbklkZW50aWZpZXIoKV0pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGNvbm5lY3Rpb24tPmNsb3NlKCk7CisgICAgbV9jb25uZWN0aW9uTWFwLnJlbW92ZShpZGVu
dGlmaWVyKTsKKworICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOworCisgICAgcHVz
aExpc3RpbmdTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldExp
c3RpbmdNZXNzYWdlKE5TRGljdGlvbmFyeSAqKQoreworICAgIHB1c2hMaXN0aW5nTm93KCk7Cit9
CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEluZGljYXRlTWVzc2FnZShOU0RpY3Rp
b25hcnkgKnVzZXJJbmZvKQoreworICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbdXNlckluZm8gb2Jq
ZWN0Rm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIXBhZ2VJZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IFtwYWdlSWQgdW5zaWduZWRJ
bnRWYWx1ZV07CisgICAgQk9PTCBpbmRpY2F0ZUVuYWJsZWQgPSBbW3VzZXJJbmZvIG9iamVjdEZv
cktleTpXSVJJbmRpY2F0ZUVuYWJsZWRLZXldIGJvb2xWYWx1ZV07CisKKyAgICBkaXNwYXRjaEFz
eW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKF57CisgICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX2xvY2spOworCisgICAgICAgIGF1dG8gaXQgPSBtX2RlYnVnZ2FibGVNYXAuZmluZChp
ZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGl0ID09IG1fZGVidWdnYWJsZU1hcC5lbmQoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBk
ZWJ1Z2dhYmxlID0gaXQtPnZhbHVlLmZpcnN0OworICAgICAgICBkZWJ1Z2dhYmxlLT5zZXRJbmRp
Y2F0aW5nKGluZGljYXRlRW5hYmxlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpyZWNlaXZlZENvbm5lY3Rpb25EaWVkTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZv
KQoreworICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFt1c2VySW5mbyBvYmpl
Y3RGb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOworICAgIGlmICghY29ubmVjdGlv
bklkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaXQgPSBtX2Nvbm5lY3Rp
b25NYXAuYmVnaW4oKTsKKyAgICBhdXRvIGVuZCA9IG1fY29ubmVjdGlvbk1hcC5lbmQoKTsKKyAg
ICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmIChbY29ubmVjdGlvbklkZW50
aWZpZXIgaXNFcXVhbFRvU3RyaW5nOml0LT52YWx1ZS0+Y29ubmVjdGlvbklkZW50aWZpZXIoKV0p
CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoaXQgPT0gZW5kKQorICAgICAg
ICByZXR1cm47CisKKyAgICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b24+IGNvbm5lY3Rpb24gPSBpdC0+dmFsdWU7CisgICAgY29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAg
ICBtX2Nvbm5lY3Rpb25NYXAucmVtb3ZlKGl0KTsKKworICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVn
U2Vzc2lvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
SW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMu
aApzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJ
bnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaApyZW5hbWUgdG8g
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29u
c3RhbnRzLmgKaW5kZXggMWYzYmMzMi4uMjZhMWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yQ29uc3RhbnRzLmgKQEAgLTIzLDE2ICsyMywxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnNfaAotI2RlZmluZSBXZWJJbnNw
ZWN0b3JSZWxheURlZmluaXRpb25zX2gKKyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRz
X2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzX2gKIAogLy8gV0lSQ29uc3RhbnRz
IGFyZSAiV2ViIEluc3BlY3RvciBSZWxheSIgY29uc3RhbnRzIHNoYXJlZCBiZXR3ZWVuCi0vLyB0
aGUgV2ViSW5zcGVjdG9yIGZyYW1ld29yayBvbiB0aGUgZGVidWdnZXIgc2lkZSwgd2ViaW5zcGVj
dG9yZCwKLS8vIGFuZCBXZWJLaXQgb24gdGhlIGRlYnVnZ2FibGUgYXBwbGljYXRpb24gc2lkZS4K
Ky8vIHRoZSBXZWJJbnNwZWN0b3IgZnJhbWV3b3JrIG9uIHRoZSBPUyBYIHNpZGUsIHdlYmluc3Bl
Y3RvcmQsIGFuZAorLy8gaU9TIFdlYktpdCBvbiB0aGUgZGV2aWNlIHNpZGUuCiAKICNkZWZpbmUg
V0lSU2ltdWxhdG9yVENQUG9ydE51bWJlciAgICAgICAgICAgICAgIDI3NzUzCiAjZGVmaW5lIFdJ
UlhQQ01hY2hQb3J0TmFtZSAgICAgICAgICAgICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3Bl
Y3RvciIKLSNkZWZpbmUgV0lSWFBDRGVidWdnZXJTZXJ2aWNlTmFtZSAgICAgICAgICAgICAgICJj
b20uYXBwbGUud2ViaW5zcGVjdG9yLmRlYnVnZ2VyIgogI2RlZmluZSBXSVJTZXJ2aWNlQXZhaWxh
YmxlTm90aWZpY2F0aW9uICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3JkLmF2YWlsYWJs
ZSIKICNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9uICJjb20u
YXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFiaWxpdHlfY2hlY2siCiAjZGVmaW5lIFdJUlNlcnZp
Y2VFbmFibGVkTm90aWZpY2F0aW9uICAgICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQu
ZW5hYmxlZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1v
dGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwCnNp
bWlsYXJpdHkgaW5kZXggNTElCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3Bl
Y3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaApyZW5hbWUg
dG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZS5jcHAKaW5kZXggYzdhNWJjYy4uZmRmMWQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzMyArMjMsNTkgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotQGNsYXNzIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWw7Ci1AY2xhc3MgV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyOworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCIKIAotQGludGVyZmFj
ZSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiA6IE5TT2JqZWN0IHsKLUBwcml2
YXRlCi0gICAgV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqX2NoYW5uZWw7CisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiAKLSAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVj
dGlvbkNvbnRyb2xsZXIgKl9jb250cm9sbGVyOyAvLyB3ZWFrLCB0aGUgY29udHJvbGxlciBvd25z
IHVzLgotICAgIE5TU3RyaW5nICpfY29ubmVjdGlvbklkZW50aWZpZXI7Ci0gICAgTlNTdHJpbmcg
Kl9kZXN0aW5hdGlvbjsKLSAgICBOU051bWJlciAqX2lkZW50aWZpZXI7CisjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9yLmgiCisK
K25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCkKKyAgICA6IG1faWRlbnRpZmllcigwKQorICAgICwgbV9h
bGxvd2VkKGZhbHNlKQoreworfQorCitSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjp+UmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZSgpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS51
bnJlZ2lzdGVyRGVidWdnYWJsZSh0aGlzKTsKIH0KIAotLSAoaWQpaW5pdFdpdGhDb250cm9sbGVy
OihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgKiljb250cm9s
bGVyIGNvbm5lY3Rpb25JZGVudGlmaWVyOihOU1N0cmluZyAqKWNvbm5lY3Rpb25JZGVudGlmaWVy
IGRlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uIGlkZW50aWZpZXI6KE5TTnVtYmVy
ICopaWRlbnRpZmllcjsKLS0gKEJPT0wpc2V0dXBDaGFubmVsOwotLSAoTlNTdHJpbmcgKiljb25u
ZWN0aW9uSWRlbnRpZmllcjsKLS0gKE5TTnVtYmVyICopaWRlbnRpZmllcjsKK3ZvaWQgUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZTo6aW5pdCgpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFy
ZWQoKS5yZWdpc3RlckRlYnVnZ2FibGUodGhpcyk7Cit9CiAKLS8vIE1lc3NhZ2VzIGZyb20gdGhl
IEluc3BlY3RvclNlcnZlci4KLS0gKHZvaWQpcmVjZWl2ZWREYXRhOihOU0RpY3Rpb25hcnkgKilk
aWN0aW9uYXJ5OwotLSAodm9pZClyZWNlaXZlZERpZENsb3NlOihOU0RpY3Rpb25hcnkgKilkaWN0
aW9uYXJ5Owordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjp1cGRhdGUoKQoreworICAg
IFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkudXBkYXRlRGVidWdnYWJsZSh0aGlzKTsKK30KIAot
Ly8gTWVzc2FnZXMgZnJvbSB0aGUgQ2hhbm5lbC4KLS0gKHZvaWQpY2xlYXJDaGFubmVsOwotLSAo
dm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKK3ZvaWQgUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChib29sIGFs
bG93ZWQpCit7CisgICAgaWYgKG1fYWxsb3dlZCA9PSBhbGxvd2VkKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2FsbG93ZWQgPSBhbGxvd2VkOworCisgICAgdXBkYXRlKCk7Cit9CisKK1JlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluZm8o
KSBjb25zdAoreworICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIGluZm87CisgICAg
aW5mby5pZGVudGlmaWVyID0gaWRlbnRpZmllcigpOworICAgIGluZm8udHlwZSA9IHR5cGUoKTsK
KyAgICBpbmZvLm5hbWUgPSBuYW1lKCk7CisgICAgaW5mby51cmwgPSB1cmwoKTsKKyAgICBpbmZv
Lmhhc0xvY2FsRGVidWdnZXIgPSBoYXNMb2NhbERlYnVnZ2VyKCk7CisgICAgaW5mby5yZW1vdGVE
ZWJ1Z2dpbmdBbGxvd2VkID0gcmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpOworICAgIHJldHVybiBp
bmZvOworfQogCi0vLyBNZXNzYWdlcyB0byB0aGUgQ2hhbm5lbC4KLS0gKHZvaWQpc2VuZE1lc3Nh
Z2VUb0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKK30gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgogCi1AZW5kCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOTAyNzRhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaApAQCAtMCwwICsxLDkxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQorCisjaWZuZGVmIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVf
aAorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlX2gKKworI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsOworc3RydWN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZv
OworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlIHsK
K3B1YmxpYzoKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCk7CisgICAgdmlydHVhbCB+
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSgpOworCisgICAgdm9pZCBpbml0KCk7CisgICAgdm9p
ZCB1cGRhdGUoKTsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KKyAgICB2b2lkIHNldElkZW50aWZpZXIodW5zaWduZWQgaWRlbnRpZmll
cikgeyBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CisKKyAgICBib29sIHJlbW90ZURlYnVn
Z2luZ0FsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWQ7IH0KKyAgICB2b2lkIHNldFJl
bW90ZURlYnVnZ2luZ0FsbG93ZWQoYm9vbCk7CisKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlSW5mbyBpbmZvKCkgY29uc3Q7CisKKyAgICBlbnVtIERlYnVnZ2FibGVUeXBlIHsgSmF2YVNj
cmlwdCwgV2ViIH07CisgICAgdmlydHVhbCBEZWJ1Z2dhYmxlVHlwZSB0eXBlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAv
LyBKYXZhU2NyaXB0IGFuZCBXZWIKKyAgICB2aXJ0dWFsIFN0cmluZyB1cmwoKSBjb25zdCB7IHJl
dHVybiBTdHJpbmcoKTsgfSAvLyBXZWIKKyAgICB2aXJ0dWFsIGJvb2wgaGFzTG9jYWxEZWJ1Z2dl
cigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wp
IHsgfSAvLyBEZWZhdWx0IGlzIHRvIGRvIG5vdGhpbmcuCisKK3ByaXZhdGU6CisgICAgdW5zaWdu
ZWQgbV9pZGVudGlmaWVyOworICAgIGJvb2wgbV9hbGxvd2VkOworfTsKKworc3RydWN0IFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIHsKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
SW5mbygpCisgICAgICAgIDogaWRlbnRpZmllcigwKQorICAgICAgICAsIHR5cGUoUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZTo6SmF2YVNjcmlwdCkKKyAgICAgICAgLCBoYXNMb2NhbERlYnVnZ2Vy
KGZhbHNlKQorICAgICAgICAsIHJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoZmFsc2UpCisgICAgewor
ICAgIH0KKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXI7CisgICAgUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6RGVidWdnYWJsZVR5cGUgdHlwZTsKKyAgICBTdHJpbmcgbmFtZTsKKyAgICBTdHJp
bmcgdXJsOworICAgIGJvb2wgaGFzTG9jYWxEZWJ1Z2dlcjsKKyAgICBib29sIHJlbW90ZURlYnVn
Z2luZ0FsbG93ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8v
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVfaAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjRkODgyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDgwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQorCisjaWZuZGVmIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uX2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb25faAorCisj
aW1wb3J0ICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbXBvcnQgIlJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUuaCIKKyNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CisjaW1wb3J0IDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworT0JKQ19DTEFTUyBOU1N0cmluZzsKKworbmFt
ZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uIEZJTkFMIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uPiwgcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7
CitwdWJsaWM6CisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZSosIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciwgTlNT
dHJpbmcgKmRlc3RpbmF0aW9uLCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpEZWJ1Z2dhYmxl
VHlwZSk7CisgICAgdmlydHVhbCB+UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24o
KTsKKworICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbigpIGNvbnN0OworICAgIE5TU3RyaW5nICpj
b25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0OworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIGJvb2wgc2V0dXAoKTsKKworICAg
IHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIGNsb3NlRnJvbURlYnVnZ2FibGUoKTsKKworICAgIHZv
aWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoTlNTdHJpbmcgKik7CisgICAgdmlydHVhbCBib29sIHNl
bmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKworcHJpdmF0ZToK
KyAgICB2b2lkIGRpc3BhdGNoU3luY09uRGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpOworICAg
IHZvaWQgZGlzcGF0Y2hBc3luY09uRGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpOworCisgICAg
Ly8gVGhpcyBjb25uZWN0aW9uIGZyb20gdGhlIFJlbW90ZUluc3BlY3RvciBzaW5nbGV0b24gdG8g
dGhlIERlYnVnZ2FibGUKKyAgICAvLyBjYW4gYmUgdXNlZCBvbiBtdWx0aXBsZSB0aHJlYWRzLiBT
byBhbnkgYWNjZXNzIHRvIHRoZSBkZWJ1Z2dhYmxlCisgICAgLy8gaXRzZWxmIG11c3QgdGFrZSB0
aGlzIGxvY2sgdG8gZW5zdXJlIG1fZGVidWdnYWJsZSBpcyB2YWxpZC4KKyAgICBNdXRleCBtX2Rl
YnVnZ2FibGVMb2NrOworCisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogbV9kZWJ1Z2dh
YmxlOworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9xdWV1ZUZvckRlYnVnZ2FibGU7CisgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIFJldGFpblB0cjxO
U1N0cmluZz4gbV9kZXN0aW5hdGlvbjsKKyAgICB1bnNpZ25lZCBtX2lkZW50aWZpZXI7CisgICAg
Ym9vbCBtX2Nvbm5lY3RlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5k
aWYgLy8gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb25faAorCisjZW5kaWYgLy8g
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjVmZmZlYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbQpAQCAt
MCwwICsxLDE2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUNvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW1wb3J0
ICJSZW1vdGVJbnNwZWN0b3IuaCIKKworI2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgPHd0Zi9p
b3MvV2ViQ29yZVRocmVhZC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6UmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb24oUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSwgTlNT
dHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyLCBOU1N0cmluZyAqZGVzdGluYXRpb24sIFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGU6OkRlYnVnZ2FibGVUeXBlIHR5cGUpCisgICAgOiBtX2RlYnVn
Z2FibGUoZGVidWdnYWJsZSkKKyAgICAsIG1fcXVldWVGb3JEZWJ1Z2dhYmxlKE5VTEwpCisgICAg
LCBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyKGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICwgbV9k
ZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKKyAgICAsIG1faWRlbnRpZmllcihkZWJ1Z2dhYmxlLT5p
ZGVudGlmaWVyKCkpCisgICAgLCBtX2Nvbm5lY3RlZChmYWxzZSkKK3sKKyAgICAvLyBXZWIgZGVi
dWdnYWJsZXMgbXVzdCBiZSBhY2Nlc3NlZCBvbiB0aGUgbWFpbiBxdWV1ZSAob3IgdGhlIFdlYlRo
cmVhZCBvbiBpT1MpLiBTaWduYWwgdGhhdCB3aXRoIGEgTlVMTCBtX3F1ZXVlRm9yRGVidWdnYWJs
ZS4KKyAgICAvLyBIb3dldmVyLCBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzIGNhbiBiZSBhY2Nlc3Nl
ZCBmcm9tIGFueSB0aHJlYWQvcXVldWUsIHNvIHdlIGNyZWF0ZSBhIHF1ZXVlIGZvciBlYWNoIEph
dmFTY3JpcHQgZGVidWdnYWJsZS4KKyAgICBpZiAodHlwZSA9PSBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlOjpKYXZhU2NyaXB0KQorICAgICAgICBtX3F1ZXVlRm9yRGVidWdnYWJsZSA9IGRpc3Bh
dGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlLnJlbW90ZS1pbnNwZWN0
b3IteHBjLWNvbm5lY3Rpb24iLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworfQorCitSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVD
b25uZWN0aW9uKCkKK3sKKyAgICBpZiAobV9xdWV1ZUZvckRlYnVnZ2FibGUpIHsKKyAgICAgICAg
ZGlzcGF0Y2hfcmVsZWFzZShtX3F1ZXVlRm9yRGVidWdnYWJsZSk7CisgICAgICAgIG1fcXVldWVG
b3JEZWJ1Z2dhYmxlID0gTlVMTDsKKyAgICB9Cit9CisKK05TU3RyaW5nICpSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGVzdGluYXRpb24oKSBjb25zdAoreworICAgIHJldHVy
biBbW21fZGVzdGluYXRpb24gY29weV0gYXV0b3JlbGVhc2VdOworfQorCitOU1N0cmluZyAqUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gW1ttX2Nvbm5lY3Rpb25JZGVudGlmaWVyIGNvcHldIGF1dG9y
ZWxlYXNlXTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hTeW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSkKK3sKKyAgICBpZiAobV9x
dWV1ZUZvckRlYnVnZ2FibGUpCisgICAgICAgIGRpc3BhdGNoX3N5bmMobV9xdWV1ZUZvckRlYnVn
Z2FibGUsIGJsb2NrKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgZWxzZSBpZiAoV2ViQ29yZVdl
YlRocmVhZElzRW5hYmxlZCAmJiBXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKCkpCisgICAgICAg
IFdlYkNvcmVXZWJUaHJlYWRSdW5TeW5jKGJsb2NrKTsKKyNlbmRpZgorICAgIGVsc2UKKyAgICAg
ICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9jayk7Cit9CisK
K3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNP
bkRlYnVnZ2FibGUodm9pZCAoXmJsb2NrKSgpKQoreworICAgIGlmIChtX3F1ZXVlRm9yRGVidWdn
YWJsZSkKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9xdWV1ZUZvckRlYnVnZ2FibGUsIGJsb2Nr
KTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgZWxzZSBpZiAoV2ViQ29yZVdlYlRocmVhZElzRW5h
YmxlZCAmJiBXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKCkpCisgICAgICAgIFdlYkNvcmVXZWJU
aHJlYWRSdW4oYmxvY2spOworI2VuZGlmCisgICAgZWxzZQorICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9jayk7Cit9CisKK2Jvb2wgUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNldHVwKCkKK3sKKyAgICBNdXRleExvY2tlciBs
b2NrZXIobV9kZWJ1Z2dhYmxlTG9jayk7CisKKyAgICBpZiAoIW1fZGVidWdnYWJsZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgZGlzcGF0Y2hTeW5jT25EZWJ1Z2dhYmxlKF57CisgICAg
ICAgIGlmICghbV9kZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fZGVidWdnYWJsZS0+aGFzTG9jYWxEZWJ1Z2dl
cigpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fZGVidWdnYWJsZS0+Y29ubmVj
dCh0aGlzKTsKKyAgICAgICAgbV9jb25uZWN0ZWQgPSB0cnVlOworICAgIH0pOworCisgICAgcmV0
dXJuIG1fY29ubmVjdGVkOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uOjpjbG9zZUZyb21EZWJ1Z2dhYmxlKCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9kZWJ1Z2dhYmxlTG9jayk7CisKKyAgICBtX2RlYnVnZ2FibGUgPSBudWxscHRyOworfQorCit2
b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZSgpCit7CisgICAg
cmVmKCk7CisgICAgZGlzcGF0Y2hBc3luY09uRGVidWdnYWJsZSheeworICAgICAgICB7CisgICAg
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9kZWJ1Z2dhYmxlTG9jayk7CisKKyAgICAgICAg
ICAgIGlmIChtX2RlYnVnZ2FibGUpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9jb25uZWN0ZWQp
CisgICAgICAgICAgICAgICAgICAgIG1fZGVidWdnYWJsZS0+ZGlzY29ubmVjdCgpOworCisgICAg
ICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBkZXJlZigpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvQmFja2VuZChOU1N0cmluZyAqbWVz
c2FnZSkKK3sKKyAgICByZWYoKTsKKyAgICBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKF57Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2FibGVMb2Nr
KTsKKworICAgICAgICAgICAgaWYgKG1fZGVidWdnYWJsZSkKKyAgICAgICAgICAgICAgICBtX2Rl
YnVnZ2FibGUtPmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChtZXNzYWdlKTsKKyAg
ICAgICAgfQorICAgICAgICBkZXJlZigpOworICAgIH0pOworfQorCitib29sIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQoreworICAgIFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkuc2VuZE1lc3Nh
Z2VUb1JlbW90ZUZyb250ZW5kKGlkZW50aWZpZXIoKSwgbWVzc2FnZSk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3Bl
Y3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oCnNpbWls
YXJpdHkgaW5kZXggNTAlCmNvcHkgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
cmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaApjb3B5IHRvIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaAppbmRl
eCAzZjk0NGVjLi4wYmYzNmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNw
ZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDMy
ICsyMyw0OSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2lmbmRlZiBSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uX2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbl9oCisKKyNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CisjaW1wb3J0IDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbXBvcnQgPHhwYy94cGMuaD4KIAotQGNsYXNzIFdlYkluc3BlY3Rv
clhQQ1dyYXBwZXI7Ci0KLUBwcm90b2NvbCBXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGUg
PE5TT2JqZWN0PgotLSAodm9pZCl4cGNDb25uZWN0aW9uOihXZWJJbnNwZWN0b3JYUENXcmFwcGVy
ICopY29ubmVjdGlvbiByZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNl
ckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOwotLSAodm9pZCl4cGNDb25uZWN0aW9uRmFp
bGVkOihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopY29ubmVjdGlvbjsKLUBvcHRpb25hbAotLSAo
dm9pZCl4cGNDb25uZWN0aW9uOihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopY29ubmVjdGlvbiB1
bmhhbmRsZWRNZXNzYWdlOih4cGNfb2JqZWN0X3QpbWVzc2FnZTsKLUBlbmQKLQotQGludGVyZmFj
ZSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyIDogTlNPYmplY3QKLXsKLSAgICBpZCA8V2ViSW5zcGVj
dG9yWFBDV3JhcHBlckRlbGVnYXRlPiBfZGVsZWdhdGU7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fdCBf
Y29ubmVjdGlvbjsKLSAgICBOU1N0cmluZyAqX3RhZzsKLX0KLQotLSAoV2ViSW5zcGVjdG9yWFBD
V3JhcHBlciAqKWluaXRXaXRoQ29ubmVjdGlvbjooeHBjX2Nvbm5lY3Rpb25fdCljb25uZWN0aW9u
OwotLSAodm9pZCljbG9zZTsKLS0gKHZvaWQpc2VuZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2Fn
ZU5hbWUgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOwotCi1AcHJvcGVydHkgKG5v
bmF0b21pYywgYXNzaWduKSBpZCA8V2ViSW5zcGVjdG9yWFBDV3JhcHBlckRlbGVnYXRlPiBkZWxl
Z2F0ZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgeHBjX2Nvbm5lY3Rpb25fdCBj
b25uZWN0aW9uOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGF2YWlsYWJs
ZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqdGFnOwotCi1AZW5kCitP
QkpDX0NMQVNTIE5TU3RyaW5nOworT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CisKK25hbWVzcGFj
ZSBJbnNwZWN0b3IgeworCitjbGFzcyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKTsKKwor
cHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFs
IH5DbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25SZWNlaXZl
ZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICptZXNzYWdl
TmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
eHBjQ29ubmVjdGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKikgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UoUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIHhwY19vYmplY3RfdCkgPSAwOworICAgIH07CisKKyAg
ICBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QsIENsaWVudCop
OworICAgIHZpcnR1YWwgflJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oKTsKKworICAgIHZv
aWQgY2xvc2UoKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKE5TU3RyaW5nICptZXNzYWdlTmFtZSwg
TlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisKK3ByaXZhdGU6CisgICAgTlNEaWN0aW9uYXJ5ICpk
ZXNlcmlhbGl6ZU1lc3NhZ2UoeHBjX29iamVjdF90KTsKKyAgICB2b2lkIGhhbmRsZUV2ZW50KHhw
Y19vYmplY3RfdCk7CisKKyAgICB4cGNfY29ubmVjdGlvbl90IG1fY29ubmVjdGlvbjsKKyAgICBk
aXNwYXRjaF9xdWV1ZV90IG1fcXVldWU7CisgICAgQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbl9oCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmFkMTY5OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCkBA
IC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2ltcG9ydCA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorCisjaWYg
X19oYXNfaW5jbHVkZSg8Q29yZUZvdW5kYXRpb24vQ0ZYUENCcmlkZ2UuaD4pCisjaW1wb3J0IDxD
b3JlRm91bmRhdGlvbi9DRlhQQ0JyaWRnZS5oPgorI2Vsc2UKK2V4dGVybiAiQyIgeHBjX29iamVj
dF90IF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VXaXRoQ0ZPYmplY3QoQ0ZUeXBlUmVmKTsKK2V4dGVy
biAiQyIgQ0ZUeXBlUmVmIF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjX29i
amVjdF90KTsKKyNlbmRpZgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworLy8gQ29uc3RhbnRz
IHByaXZhdGUgdG8gdGhpcyBmaWxlIGZvciBtZXNzYWdlIHNlcmlhbGl6YXRpb24gb24gYm90aCBl
bmRzLgorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uTWVzc2FnZU5hbWVLZXkg
QCJtZXNzYWdlTmFtZSIKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJ
bmZvS2V5IEAidXNlckluZm8iCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25T
ZXJpYWxpemVkTWVzc2FnZUtleSAibXNnRGF0YSIKKworUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90IGNvbm5l
Y3Rpb24sIENsaWVudCogY2xpZW50KQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisg
ICAgLCBtX3F1ZXVlKGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLkphdmFTY3JpcHRD
b3JlLnJlbW90ZS1pbnNwZWN0b3IteHBjLWNvbm5lY3Rpb24iLCBESVNQQVRDSF9RVUVVRV9TRVJJ
QUwpKQorICAgICwgbV9jbGllbnQoY2xpZW50KQoreworICAgIHhwY19yZXRhaW4obV9jb25uZWN0
aW9uKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKG1fY29ubmVjdGlvbiwg
bV9xdWV1ZSk7CisgICAgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiogd2Vha1RoaXMgPSB0
aGlzOworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvbiwg
Xih4cGNfb2JqZWN0X3Qgb2JqZWN0KSB7CisgICAgICAgIHdlYWtUaGlzLT5oYW5kbGVFdmVudChv
YmplY3QpOworICAgIH0pOworICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShtX2Nvbm5lY3Rpb24p
OworfQorCitSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjp+UmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbigpCit7CisgICAgQVNTRVJUKCFtX2NsaWVudCk7CisgICAgQVNTRVJUKCFtX2Nv
bm5lY3Rpb24pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmNsb3Nl
KCkKK3sKKyAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgeHBj
X2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29ubmVjdGlvbik7CisgICAgeHBjX3JlbGVhc2UobV9jb25u
ZWN0aW9uKTsKKyAgICBtX2Nvbm5lY3Rpb24gPSBOVUxMOworCisgICAgZGlzcGF0Y2hfcmVsZWFz
ZShtX3F1ZXVlKTsKKyAgICBtX3F1ZXVlID0gTlVMTDsKKworICAgIG1fY2xpZW50ID0gbnVsbHB0
cjsKK30KKworTlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNl
cmlhbGl6ZU1lc3NhZ2UoeHBjX29iamVjdF90IG9iamVjdCkKK3sKKyAgICBpZiAoeHBjX2dldF90
eXBlKG9iamVjdCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIHhwY19vYmplY3RfdCB4cGNEaWN0aW9uYXJ5ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3Zh
bHVlKG9iamVjdCwgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdl
S2V5KTsKKyAgICBpZiAoIXhwY0RpY3Rpb25hcnkgfHwgeHBjX2dldF90eXBlKHhwY0RpY3Rpb25h
cnkpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpIHsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAg
ICAgICAgICAgbV9jbGllbnQtPnhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKHRoaXMsIG9i
amVjdCk7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgTlNEaWN0aW9uYXJ5ICpk
aWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8TlNEaWN0aW9uYXJ5ICo+KF9DRlhQQ0NyZWF0ZUNGT2Jq
ZWN0RnJvbVhQQ01lc3NhZ2UoeHBjRGljdGlvbmFyeSkpOworICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoZGljdGlvbmFyeSwgIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIpOworICAg
IHJldHVybiBbZGljdGlvbmFyeSBhdXRvcmVsZWFzZV07Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG9iamVjdCkKK3sKKyAg
ICBpZiAoIW1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHhwY19nZXRf
dHlwZShvYmplY3QpID09IFhQQ19UWVBFX0VSUk9SKSB7CisgICAgICAgIGlmIChtX2NsaWVudCkK
KyAgICAgICAgICAgIG1fY2xpZW50LT54cGNDb25uZWN0aW9uRmFpbGVkKHRoaXMpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGljdGlvbmFyeSA9IGRl
c2VyaWFsaXplTWVzc2FnZShvYmplY3QpOworICAgIGlmICghZGF0YURpY3Rpb25hcnkpCisgICAg
ICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nICptZXNzYWdlID0gW2RhdGFEaWN0aW9uYXJ5IG9i
amVjdEZvcktleTpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uTWVzc2FnZU5hbWVLZXldOwor
ICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm8gPSBbZGF0YURpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5
OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25Vc2VySW5mb0tleV07CisgICAgaWYgKG1fY2xp
ZW50KQorICAgICAgICBtX2NsaWVudC0+eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZSh0aGlz
LCBtZXNzYWdlLCB1c2VySW5mbyk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UoTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVz
ZXJJbmZvKQoreworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25hcnkg
ZGljdGlvbmFyeVdpdGhPYmplY3Q6bWVzc2FnZU5hbWUgZm9yS2V5OlJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb25NZXNzYWdlTmFtZUtleV07CisgICAgaWYgKHVzZXJJbmZvKQorICAgICAgICBb
ZGljdGlvbmFyeSBzZXRPYmplY3Q6dXNlckluZm8gZm9yS2V5OlJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb25Vc2VySW5mb0tleV07CisKKyAgICB4cGNfb2JqZWN0X3QgeHBjRGljdGlvbmFyeSA9
IF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VXaXRoQ0ZPYmplY3QoKENGRGljdGlvbmFyeVJlZilkaWN0
aW9uYXJ5KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHhwY0RpY3Rpb25hcnkgJiYgeHBjX2dl
dF90eXBlKHhwY0RpY3Rpb25hcnkpID09IFhQQ19UWVBFX0RJQ1RJT05BUlksICJVbmFibGUgdG8g
c2VyaWFsaXplIHhwYyBtZXNzYWdlIik7CisgICAgaWYgKCF4cGNEaWN0aW9uYXJ5KQorICAgICAg
ICByZXR1cm47CisKKyAgICB4cGNfb2JqZWN0X3QgbXNnID0geHBjX2RpY3Rpb25hcnlfY3JlYXRl
KE5VTEwsIE5VTEwsIDApOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtc2csIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25TZXJpYWxpemVkTWVzc2FnZUtleSwgeHBjRGljdGlvbmFy
eSk7CisgICAgeHBjX3JlbGVhc2UoeHBjRGljdGlvbmFyeSk7CisKKyAgICB4cGNfY29ubmVjdGlv
bl9zZW5kX21lc3NhZ2UobV9jb25uZWN0aW9uLCBtc2cpOworCisgICAgeHBjX3JlbGVhc2UobXNn
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCBiYTNkNDIyLi5iMzM3YTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMjUsNiArMTI1LDEx
IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCIKICNlbmRpZiAvLyBF
TkFCTEUoUFJPTUlTRVMpCiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3Iu
aCIKKyNlbmRpZgorCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QubHV0LmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtMTg3LDYgKzE5MiwxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KEpT
T2JqZWN0KiB0aGlzVmFsdWUpCiAKICAgICBtX2RlYnVnZ2VyID0gMDsKIAorI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQorICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JE
ZWJ1Z2dhYmxlLT5pbml0KCk7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5zZXRSZW1vdGVE
ZWJ1Z2dpbmdBbGxvd2VkKHRydWUpOworI2VuZGlmCisKICAgICByZXNldChwcm90b3R5cGUoKSk7
CiB9CiAKQEAgLTc2MCw0ICs3NzEsMzEgQEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2Jh
bE9iamVjdDo6Y3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqIGNhbGxGcmFtZSwKICAgICBy
ZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7CiB9CiAKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldFJl
bW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+c2V0UmVtb3RlRGVidWdnaW5n
QWxsb3dlZChlbmFibGVkKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOworI2Vu
ZGlmCit9CisKK2Jvb2wgSlNHbG9iYWxPYmplY3Q6OnJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoKSBj
b25zdAoreworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHJldHVybiBtX2luc3Bl
Y3RvckRlYnVnZ2FibGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKTsKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldE5hbWUoY29u
c3QgU3RyaW5nJiBuYW1lKQoreworICAgIG1fbmFtZSA9IG5hbWU7CisKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnVwZGF0ZSgpOworI2Vu
ZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggNGJkNzQ0Ni4uNjMxZmJiMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01OCw2ICs1
OCw3IEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBl
OwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgR2xvYmFsQ29kZUJsb2NrOworY2xhc3MgSlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlOwogY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOwogY2xhc3Mg
SlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU7CiBjbGFzcyBKU1N0YWNrOwpAQCAtMjI5LDggKzIz
MCwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIAogICAgIHZvaWQqIG1fc3BlY2lhbFBvaW50ZXJz
W1NwZWNpYWw6OlRhYmxlU2l6ZV07IC8vIFNwZWNpYWwgcG9pbnRlcnMgdXNlZCBieSB0aGUgTExJ
bnQgYW5kIEpJVC4KIAorICAgIFN0cmluZyBtX25hbWU7CisKICAgICBEZWJ1Z2dlciogbV9kZWJ1
Z2dlcjsKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+IG1faW5zcGVjdG9yRGVidWdnYWJsZTsKKyNlbmRp
ZgorCiAgICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdh
dGNocG9pbnQ7CiAgICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1faGF2aW5nQUJhZFRpbWVXYXRj
aHBvaW50OwogICAgIFJlZlB0cjxXYXRjaHBvaW50U2V0PiBtX3ZhckluamVjdGlvbldhdGNocG9p
bnQ7CkBAIC00MjAsNiArNDI3LDEyIEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIHByb21pc2VX
cmFwcGVyQ2FsbGJhY2tTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VXcmFwcGVy
Q2FsbGJhY2tTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNlbmRpZiAvLyBFTkFCTEUoUFJPTUlTRVMpCiAK
KyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9v
bCBlbmFibGVkKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHJlbW90ZURlYnVnZ2luZ0Vu
YWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOwor
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCiAgICAg
SlNBcnJheUJ1ZmZlclByb3RvdHlwZSogYXJyYXlCdWZmZXJQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2FycmF5QnVmZmVyUHJvdG90eXBlLmdldCgpOyB9CiAKICNkZWZpbmUgREVGSU5FX0FD
Q0VTU09SU19GT1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFt
ZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcApzaW1pbGFy
aXR5IGluZGV4IDUzJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
cmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcAppbmRleCAzZjk0NGVj
Li5iMjhmMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVt
b3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzMiArMjMsNDkgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0jaW1wb3J0
IDx4cGMveHBjLmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmgiCiAKLUBjbGFzcyBXZWJJbnNwZWN0b3JYUENXcmFwcGVyOworI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi1AcHJvdG9jb2wgV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ckRlbGVnYXRlIDxOU09iamVjdD4KLS0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVjdG9y
WFBDV3JhcHBlciAqKWNvbm5lY3Rpb24gcmVjZWl2ZWRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3Nh
Z2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKLS0gKHZvaWQpeHBjQ29u
bmVjdGlvbkZhaWxlZDooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb247Ci1Ab3B0
aW9uYWwKLS0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNv
bm5lY3Rpb24gdW5oYW5kbGVkTWVzc2FnZTooeHBjX29iamVjdF90KW1lc3NhZ2U7Ci1AZW5kCisj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3IuaCIKIAotQGludGVyZmFjZSBXZWJJ
bnNwZWN0b3JYUENXcmFwcGVyIDogTlNPYmplY3QKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CisKK25hbWVzcGFjZSBKU0MgeworCitKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OkpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZShKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorICAgIDogbV9n
bG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogewotICAgIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFw
cGVyRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKLSAgICB4cGNfY29ubmVjdGlvbl90IF9jb25uZWN0aW9u
OwotICAgIE5TU3RyaW5nICpfdGFnOwogfQogCi0tIChXZWJJbnNwZWN0b3JYUENXcmFwcGVyICop
aW5pdFdpdGhDb25uZWN0aW9uOih4cGNfY29ubmVjdGlvbl90KWNvbm5lY3Rpb247Ci0tICh2b2lk
KWNsb3NlOwotLSAodm9pZClzZW5kTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2Vy
SW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87CitTdHJpbmcgSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlOjpuYW1lKCkgY29uc3QKK3sKKyAgICBTdHJpbmcgbmFtZSA9IG1fZ2xvYmFsT2JqZWN0
Lm5hbWUoKTsKKyAgICByZXR1cm4gbmFtZS5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIkpTQ29u
dGV4dCIpIDogbmFtZTsKK30KKwordm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmNvbm5l
Y3QoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50
LgorICAgIC8vIENyZWF0ZSBhbiBJbnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JGcm9udGVu
ZCwgSW5zcGVjdG9yQmFja2VuZCwgYW5kIEFnZW50cy4KKyAgICAvLyAiSW5zcGVjdG9yQ29udHJv
bGxlcjo6Y29ubmVjdEZyb250ZW5kIi4KK30KKwordm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGU6OmRpc2Nvbm5lY3QoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgLy8gIklu
c3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCIuCit9CisKK3ZvaWQgSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29u
c3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIC8vICJJbnNwZWN0
b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQiCit9CiAKLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCBhc3NpZ24pIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGU+
IGRlbGVnYXRlOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSB4cGNfY29ubmVjdGlv
bl90IGNvbm5lY3Rpb247Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgYXZh
aWxhYmxlOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICp0YWc7Cit9IC8v
IG5hbWVzcGFjZSBKU0MKIAotQGVuZAorI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJ
bnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oCnNpbWlsYXJpdHkg
aW5kZXggNTMlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1v
dGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmgKcmVuYW1l
IHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5oCmluZGV4IGY4YmY1ZTguLjZmMmQ5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25D
b250cm9sbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzLDI2ICsyMywzOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1AY2xh
c3MgV2ViSW5zcGVjdG9yU2VydmVyOwotQGNsYXNzIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uOwotQGNsYXNzIFdlYkluc3BlY3RvclhQQ1dyYXBwZXI7CisjaWZuZGVmIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZV9oCisjZGVmaW5lIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZV9o
CiAKLUBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9s
bGVyIDogTlNPYmplY3QgewotQHByaXZhdGUKLSAgICBXZWJJbnNwZWN0b3JTZXJ2ZXIgKl9zZXJ2
ZXI7IC8vIHdlYWssIHRoZSBzZXJ2ZXIgc2hvdWxkIG5ldmVyIGRlYWxsb2NhdGUuCi0gICAgTlNN
dXRhYmxlRGljdGlvbmFyeSAqX29wZW5Db25uZWN0aW9uczsKLSAgICBCT09MIF9oYXNTY2hlZHVs
ZWRQdXNoOwotfQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi0tIChpZClpbml0V2l0
aFNlcnZlcjooV2ViSW5zcGVjdG9yU2VydmVyICopc2VydmVyOworI2luY2x1ZGUgIlJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAotLSAo
dm9pZCljbG9zZUFsbENvbm5lY3Rpb25zOworbmFtZXNwYWNlIEpTQyB7CiAKLS0gKHZvaWQpcHVz
aExpc3Rpbmc7Ci0tICh2b2lkKXJlY2VpdmVkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFt
ZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87CitjbGFzcyBKU0dsb2JhbE9iamVj
dDsKIAotLSAodm9pZCljb25uZWN0aW9uQ2xvc2luZzooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb24gKiljb25uZWN0aW9uOworY2xhc3MgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
IEZJTkFMIDogcHVibGljIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlKTsKK3B1Ymxp
YzoKKyAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUoSlNHbG9iYWxPYmplY3QmKTsKKyAgICB+
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlKCkgeyB9CiAKLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1
c2VySW5mbzsKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZTo6RGVidWdnYWJsZVR5cGUgdHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6SmF2YVNjcmlwdDsgfQogCi1AZW5kCisgICAg
dmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBo
YXNMb2NhbERlYnVnZ2VyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworICAg
IHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgSlNHbG9iYWxPYmplY3Qm
IG1fZ2xvYmFsT2JqZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2VuZGlmIC8vICFkZWZpbmVkKEpTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCA0ZTQ0NmFlLi5iMTcxMTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBj
b25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvaW9zL1dlYkNvcmVUaHJlYWQu
Y3BwOgorICAgICAgICAqIHd0Zi9pb3MvV2ViQ29yZVRocmVhZC5oOgorICAgICAgICBFeHBvc2Ug
V2ViVGhyZWFkUnVuL1dlYlRocmVhZFJ1blN5bmMgaU9TIG1ldGhvZHMgZGVmaW5lZCBpbiBXZWJD
b3JlIHRocm91Z2gKKyAgICAgICAgV1RGIHNvIHRoYXQgSmF2YVNjcmlwdENvcmUgY2FuIHVzZSBp
dC4gQW5vdGhlciBzdWNoIG1ldGhvZCBhbHJlYWR5IGV4aXN0ZWQuCisKIDIwMTMtMTEtMzAgIHBl
YXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CiAKICAgICAgICAgW1dpbl0gU29t
ZSBKYXZhU2NyaXB0IGRhdGUgdGVzdHMgYXJlIGZhaWxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29y
ZVRocmVhZC5jcHAKaW5kZXggNDI3NDQ2Ni4uZjA3ZGMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvaW9zL1dlYkNvcmVUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJD
b3JlVGhyZWFkLmNwcApAQCAtMjgsNCArMjgsNyBAQAogCiAjaWYgVVNFKFdFQl9USFJFQUQpCiBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCAoKldlYkNvcmVXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJs
ZWQpKHZvaWQpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFkSXNF
bmFibGVkKSh2b2lkKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkICgqV2ViQ29yZVdlYlRocmVh
ZFJ1bikodm9pZCAoXmJsb2NrKSgpKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkICgqV2ViQ29y
ZVdlYlRocmVhZFJ1blN5bmMpKHZvaWQgKF5ibG9jaykoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9pb3Mv
V2ViQ29yZVRocmVhZC5oCmluZGV4IDEwZTI2YTcuLjgxOWNlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYvaW9zL1dl
YkNvcmVUaHJlYWQuaApAQCAtMzMsNiArMzMsOSBAQCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiBl
eHRlcm4gYm9vbCAoKldlYkNvcmVXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQpKHZvaWQpOwor
ZXh0ZXJuIGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKSh2b2lkKTsKK2V4dGVybiB2
b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1bikodm9pZCAoXmJsb2NrKSgpKTsKK2V4dGVybiB2b2lk
ICgqV2ViQ29yZVdlYlRocmVhZFJ1blN5bmMpKHZvaWQgKF5ibG9jaykoKSk7CiAKICNpZmRlZiBf
X2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM4YjZiYTIuLmViNGQwNzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2MyBAQAorMjAxMy0xMS0yMiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBtaXNzaW5nIGZvbGRlcnMg
YW5kIGZpbGVzIHRvIFhjb2RlIHByb2plY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNDgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25u
ZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBhIFdlYkNvcmU6OlBhZ2UgYSAiV2Vi
IiBSZW1vdGUgRGVidWdnYWJsZS4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW90ZUlu
c3BlY3Rpb25BbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFJlbW90ZUluc3Bl
Y3Rpb25BbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW90ZUluc3BlY3Rvcklu
Zm9ybWF0aW9uRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBw
YWdlL1BhZ2VEZWJ1Z2dhYmxlLmg6CisgICAgICAgICogcGFnZS9QYWdlRGVidWdnYWJsZS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OlBhZ2VEZWJ1Z2dhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjpuYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVn
Z2FibGU6Omhhc0xvY2FsRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2Fi
bGU6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5l
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZy
b21SZW1vdGVGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6c2V0
SW5kaWNhdGluZyk6CisgICAgICAgIE1ha2UgYSBwYWdlIGEgIldlYiIgZGVidWdnYWJsZS4KKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgTWlzYy4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6aW5kaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpoaWRlSW5kaWNhdGUpOgor
ICAgICAgICBGb3J3YXJkIGluZGljYXRlIG1ldGhvZHMgdG8gV2ViS2l0IGNsaWVudHMuCisKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmRpZENoYW5nZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpk
aXNwYXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICBQdXNoIHVwZGF0ZXMgd2hlbiByZW1vdGUg
ZGVidWdnYWJsZSBpbmZvcm1hdGlvbiBsaWtlIHRoZSBQYWdlJ3MKKyAgICAgICAgVVJMIG9yIHRp
dGxlIGNoYW5nZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaDoKKyAgICAgICAgUmUtZXhwb3J0IEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsIGFzIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbAorICAgICAgICB0byBhdm9p
ZCBuZWVkbGVzc2x5IHVwZGF0aW5nIGNvZGUgYWxsIG92ZXIgdGhlIHBsYWNlLgorCisgICAgICAg
ICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSk6CisgICAgICAgIE1ha2UgdGhlICJJbnNwZWN0
IEVsZW1lbnQiIGNvbnRleHQgbWVudSB3b3JrIGNvcnJlY3RseSB3aGVuIHRoZXJlIGlzIGEKKyAg
ICAgICAgcmVtb3RlIGluc3BlY3RvciBpbnN0ZWFkIG9mIGEgbG9jYWwgaW5zcGVjdG9yLgorCiAy
MDEzLTEyLTAyICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
YSBzZXR0aW5nIHRvIG9wdCBpbnRvIGEgbW9kZSB3aGVyZSB0aGUgYmFja2dyb3VuZCBleHRlbmRz
IGFuZCBmaXhlZCBlbGVtZW50cyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTNhZTI0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3Jl
X0ZXRF9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWxfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbC5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDJiOGE1
NDguLjkxNmUwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yODA2LDYgKzI4MDYsNyBAQCBf
X1pON1dlYkNvcmUzM1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldEV2CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorX19aTjdXZWJDb3JlNFBhZ2UyNnNldFJl
bW90ZUluc3BlY3Rpb25BbGxvd2VkRWIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxl
cjI3ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kRVJLTjNXVEY2U3RyaW5nRQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVycwppbmRleCAyMDBiMWUyLi4zZTcyOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0yNjUs
NiArMjY1LDkgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9IkZvcndhcmRpbmdIZWFkZXJzXGhlYXAi
PgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezgyYmE5YmI0LWVhYTAtNDk3My05YmIzLWEyNzY2
N2ExYzE2N308L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJ
bmNsdWRlPSJGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3IiPgorICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+ezEzMmJhZGUyLTBhYWItNjI3NC0wYWRmZi1hZThhZWQ1YWVkNH08L1VuaXF1ZUlkZW50
aWZpZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJoaXN0b3J5Ij4KICAg
ICAgIDxVbmlxdWVJZGVudGlmaWVyPns2ZjM5ZGVkZi0yZDNhLTQxNGUtODNmZS03YmY2NGY5MTFj
ZmJ9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTIyMjIsNiArMTIyMjUs
OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaGVhcFxT
dHJvbmcuaCI+CiAgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGhlYXA8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdI
ZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCI+CisgICAgICA8Rmls
dGVyPkZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRl
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGlzdG9yeVxCYWNrRm9yd2FyZENsaWVudC5o
Ij4KICAgICAgIDxGaWx0ZXI+aGlzdG9yeTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGM1ZjQwOTUuLjBlNzk4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1MjMsNiArMzUyMyw4IEBACiAJCUE1NTZDMjg5MTgz
MjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU2QzI4NzE4MzIwNkE4MDA4Q0I3MjAg
LyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE1NzMyQjBBMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29t
cG9uZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTczMkIwODEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovOyB9Owog
CQlBNTczMkIwQjEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzMyQjA5MTM2QTE2MUQwMDVD
OEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oICovOyB9OworCQlBNUEyQUYwQjE4Mjk3MzQzMDBERTE3
MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxl
LmNwcCAqLzsgfTsKKwkJQTVBMkFGMEMxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUEyQUYw
QTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCAqLzsgfTsKIAkJQTVBQkI3ODcx
M0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQkI3ODYxM0I5MDRCQzAwRjE5
N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovOyB9OwogCQlBNUFDNEFFRjE4MzM2
OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQzRBRUQxODMzNjk3NTAwNzEx
NEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJQTVBQzRBRjAx
ODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFDNEFFRTE4MzM2OTc1MDA3
MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAzMjQsNiArMTAzMjYsMTIgQEAKIAkJ
QTU1NkMyODcxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTczMkIwODEzNkExNjFEMDA1QzhEN0MgLyog
RGF0ZUNvbXBvbmVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGF0ZUNvbXBvbmVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTczMkIw
OTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTU5M0NGNzIxODQwMkNFOTAwQkZDRTI3IC8qIHByb3RvY29sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gcHJvdG9j
b2w7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjczMTg0MDJENEIwMEJGQ0Uy
NyAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gQ29kZUdl
bmVyYXRvckluc3BlY3Rvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NG
NzQxODQwMkQ0QjAwQkZDRTI3IC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0gQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHk7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjc1MTg0MDJENEIwMEJGQ0UyNyAvKiBjb21i
aW5lLWphdmFzY3JpcHQtcmVzb3VyY2VzLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9ICJjb21iaW5lLWph
dmFzY3JpcHQtcmVzb3VyY2VzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVB
MkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dh
YmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAv
KiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUM0
QUVFMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0MTgsNyArMTQ0MjYsMTEgQEAKIAkJ
MUM4MUI5NEQwRTk3MzJEOTAwMjY2RTA3IC8qIGluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTU5M0NGNzIxODQwMkNFOTAwQkZDRTI3IC8q
IHByb3RvY29sICovLAogCQkJCUE1MTgyMjUzMTdFMjhDRjEwMEE5QkExRCAvKiBTY3JpcHRzICov
LAorCQkJCUE1OTNDRjczMTg0MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9y
LnB5ICovLAorCQkJCUE1OTNDRjc0MTg0MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2VuZXJhdG9ySW5z
cGVjdG9yU3RyaW5ncy5weSAqLywKKwkJCQlBNTkzQ0Y3NTE4NDAyRDRCMDBCRkNFMjcgLyogY29t
YmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCAqLywKIAkJCQlGMzVBRTVBQjE0OTI1RjVCMDA0
RDU3NzYgLyogQmluZGluZ1Zpc2l0b3JzLmggKi8sCiAJCQkJMkRGMkU5RDQxNjZFMzk3NDAwMzVC
RUYyIC8qIENvbnNvbGVBUElUeXBlcy5oICovLAogCQkJCTQxRjA2MThEMEY1RjA2OTgwMEEwN0VB
QyAvKiBDb25zb2xlTWVzc2FnZS5jcHAgKi8sCkBAIC0xNTY5MCw2ICsxNTcwMiw4IEBACiAJCQkJ
Q0QwODI4NUIxNzU3MjUwODAwRUM1RkI3IC8qIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgg
Ki8sCiAJCQkJREFBQ0IzRDkxNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25zb2xlLmNwcCAqLywK
IAkJCQlEQUFDQjNEQTE2RjI0MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNvbGUuaCAqLywKKwkJCQlB
NUEyQUYwOTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwICovLAorCQkJCUE1
QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICovLAogCQkJCTkzMDJC
MEJDMEQ3OUY4MjkwMEM3RUU4MyAvKiBQYWdlR3JvdXAuY3BwICovLAogCQkJCTkzMDJCMEJFMEQ3
OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCAqLywKIAkJCQk3QTY3NEJEOTBGOUVCRjRFMDA2
Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCAqLywKQEAgLTIzMDQyLDYgKzIzMDU2
LDcgQEAKIAkJCQlEMDAwRUJBMzExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1h
Y2hpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDU4RUJCMTdCOEYxMjgwMENCRENBOCAvKiBF
bGVtZW50VHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0I3N0EzODBBREQ3OTI1MDBF
QTRCODEgLyogRnJhbWVMb2FkZXJUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVBMkFGMEMx
ODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NTg0MzY4NjBBRTAxQjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjI4RDIxNEUxMjEzMUVGNDAwNTVEQ0ZDIC8qIEZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzJBRjcwMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlw
dG9LZXlVc2FnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzc3NSw2ICsyNzc5MCw3IEBACiAJCQkJ
QjJBRkZDN0YwRDAwQTVDMTAwMzAwNzREIC8qIFNpbXBsZUZvbnREYXRhTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzVBMUVBN0MxNTJCQ0YwNDAwNEQwMEI2IC8qIFNpbXBsaWZ5TWFya3VwQ29t
bWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDAwRDdBNDE0QTNGNjE5MDA3MzQwMTEgLyog
U2luY1Jlc2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUEyQUYwQjE4Mjk3MzQzMDBE
RTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzMjdENjEx
MUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
OUU5MTFDQzBFRjg2RDQ3MDA5RDBDQUYgLyogU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0MTUwRjlGMjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDJjYzk1YjEuLjI3YmQ3ODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTU2
LDEyICs1NiwyMCBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHNldFJlbW90
ZURlYnVnZ2luZ0VuYWJsZWQoZmFsc2UpOworI2VuZGlmCiB9CiAKIHZvaWQgSlNET01HbG9iYWxP
YmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNWYWx1ZSkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgdGhpc1ZhbHVlKTsKICAgICBBU1NFUlQoaW5oZXJp
dHMoaW5mbygpKSk7CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBzZXRSZW1v
dGVEZWJ1Z2dpbmdFbmFibGVkKGZhbHNlKTsKKyNlbmRpZgogfQogCiBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBKU0RPTUdsb2JhbE9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNzBhMTlj
OS4uNDRlN2VhMTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVu
dC5oCkBAIC01Miw2ICs1Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgPSAwOwogCisgICAgdmly
dHVhbCB2b2lkIGluZGljYXRlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGhpZGVJbmRpY2F0aW9u
KCkgeyB9CisKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2xlYXJCcm93c2VyQ2FjaGUoKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhckJyb3dzZXJDYWNoZSgpIHsgfQogICAg
IHZpcnR1YWwgYm9vbCBjYW5DbGVhckJyb3dzZXJDb29raWVzKCkgeyByZXR1cm4gZmFsc2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCBkNzUxNmE1Li5lOTU4OTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC04NCw2ICs4NCw5IEBAIEluc3BlY3RvckNvbnRy
b2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBp
bnNwZWN0b3JDCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAsIG1faW5zcGVjdG9yQ2xpZW50KGlu
c3BlY3RvckNsaWVudCkKICAgICAsIG1faXNVbmRlclRlc3QoZmFsc2UpCisjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCisgICAgLCBtX2hhc1JlbW90ZUZyb250ZW5kKGZhbHNlKQorI2VuZGlm
CiB7CiAgICAgT3duUHRyPEluc3BlY3RvckFnZW50PiBpbnNwZWN0b3JBZ2VudFB0cihJbnNwZWN0
b3JBZ2VudDo6Y3JlYXRlKHBhZ2UsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKTsKICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5zcGVj
dG9yQWdlbnRQdHIuZ2V0KCk7CkBAIC0xNDgsNyArMTUxLDYgQEAgSW5zcGVjdG9yQ29udHJvbGxl
cjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3Bl
Y3RvckMKICAgICBtX2FnZW50cy5hcHBlbmQocHJvZmlsZXJBZ2VudFB0ci5yZWxlYXNlKCkpOwog
CiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpjcmVhdGUo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQo
KSkpOwotCiAjZW5kaWYKIAogICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JXb3JrZXJBZ2Vu
dDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpOwpAQCAtMjAzLDYgKzIwNSwy
NCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50
KFBhc3NPd25QdHI8SW5zcGVjdG9yRnJvbnRlbgogICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQgPSBpbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIH0KIAorYm9vbCBJbnNwZWN0b3JDb250cm9s
bGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKyAgICByZXR1cm4gaGFzRnJvbnRlbmQoKSAmJiAhbV9oYXNSZW1vdGVGcm9udGVuZDsK
KyNlbHNlCisgICAgcmV0dXJuIGhhc0Zyb250ZW5kKCk7CisjZW5kaWYKK30KKworYm9vbCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0Cit7CisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisgICAgcmV0dXJuIG1faGFzUmVtb3RlRnJvbnRlbmQ7CisjZWxz
ZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBib29sIEluc3BlY3RvckNvbnRyb2xs
ZXI6Omhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9p
bnNwZWN0b3JGcm9udGVuZENsaWVudDsKQEAgLTIzMyw2ICsyNTMsMTEgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW4KIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVnaXN0ZXJJbnN0
cnVtZW50aW5nQWdlbnRzKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSk7CiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKTsKKworI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQorICAgIGlmICghbV9oYXNSZW1vdGVGcm9udGVuZCkKKyAgICAgICAgbV9w
YWdlLT5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOworI2VuZGlmCiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKCkKQEAgLTI1MCwx
MCArMjc1LDE3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5k
KCkKICAgICBtX292ZXJsYXktPmZyZWVQYWdlKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpmcm9udGVuZERlbGV0ZWQoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVu
cmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSk7
CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBpZiAoIW1faGFzUmVtb3RlRnJv
bnRlbmQpCisgICAgICAgIG1fcGFnZS0+cmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFu
Z2UoKTsKKyNlbmRpZgogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3coKQogewor
ICAgIEFTU0VSVCghaGFzUmVtb3RlRnJvbnRlbmQoKSk7CisKICAgICBpZiAoIWVuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0zMTUsNyArMzQ3LDggQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjppbnNwZWN0KE5vZGUqIG5vZGUpCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHNob3coKTsKKyAgICBpZiAoIWhhc1JlbW90ZUZyb250ZW5kKCkpCisg
ICAgICAgIHNob3coKTsKIAogICAgIG1fZG9tQWdlbnQtPmluc3BlY3Qobm9kZSk7CiB9CkBAIC0z
NTIsNiArMzg1LDE1IEBAIE5vZGUqIEluc3BlY3RvckNvbnRyb2xsZXI6OmhpZ2hsaWdodGVkTm9k
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fb3ZlcmxheS0+aGlnaGxpZ2h0ZWROb2RlKCk7CiB9CiAK
K3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcp
Cit7CisgICAgLy8gRklYTUU6IEZvciBub24taU9TIGNsaWVudHMsIHdlIHNob3VsZCBoYXZlIElu
c3BlY3Rvck92ZXJsYXkgZG8gc29tZXRoaW5nIGhlcmUuCisgICAgaWYgKGluZGljYXRpbmcpCisg
ICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5pbmRpY2F0ZSgpOworICAgIGVsc2UKKyAgICAgICAg
bV9pbnNwZWN0b3JDbGllbnQtPmhpZGVJbmRpY2F0aW9uKCk7Cit9CisKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6cHJvZmlsZXJFbmFi
bGVkKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCmluZGV4IDk1ZWM3ZTMuLjgzOWY5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtOTIsMTcgKzkyLDI2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwogCiAgICAgYm9vbCBoYXNGcm9udGVuZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWw7IH0KKyAgICBib29sIGhhc0xvY2FsRnJvbnRlbmQoKSBjb25z
dDsKKyAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3Q7CisKICAgICB2b2lkIGNvbm5l
Y3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKICAgICB2b2lkIGRpc2Nvbm5l
Y3RGcm9udGVuZCgpOwogICAgIHZvaWQgc2V0UHJvY2Vzc0lkKGxvbmcpOwogICAgIHZvaWQgd2Vi
Vmlld1Jlc2l6ZWQoY29uc3QgSW50U2l6ZSYpOwogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCisgICAgdm9pZCBzZXRIYXNSZW1vdGVGcm9udGVuZChib29sIGhhc1JlbW90ZSkgeyBtX2hh
c1JlbW90ZUZyb250ZW5kID0gaGFzUmVtb3RlOyB9CisjZW5kaWYKKwogICAgIHZvaWQgaW5zcGVj
dChOb2RlKik7CiAgICAgdm9pZCBkcmF3SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
OwogICAgIHZvaWQgZ2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCopIGNvbnN0OwogICAgIHZvaWQgaGlk
ZUhpZ2hsaWdodCgpOwogICAgIE5vZGUqIGhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OwogCisgICAg
dm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZyk7CisKICAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIAog
ICAgIGJvb2wgaXNVbmRlclRlc3QoKTsKQEAgLTE1Myw2ICsxNjIsMTAgQEAgcHJpdmF0ZToKICAg
ICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwogICAgIEluc3BlY3RvckFnZW50
UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAgYm9vbCBtX2lzVW5kZXJUZXN0OworCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisgICAgYm9vbCBtX2hhc1JlbW90ZUZyb250ZW5kOworI2VuZGlm
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmgKaW5kZXggYjMyMTRlZi4uZWQ2NGExZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaApAQCAtMSw0ICsx
LDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjAsMjIgKzIxLDE2IEBACiAgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsX2gKLSNkZWZpbmUg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsX2gKKyNpZm5kZWYgV0VCQ09SRV9JbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWxfaAorI2RlZmluZSBXRUJDT1JFX0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9o
CiAKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsIHsgfTsKK30KIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoKSB7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAw
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsX2gpCisjZW5kaWYgLy8gIWRlZmluZWQoV0VCQ09SRV9JbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWxfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CmluZGV4IGYzNDc0YzMuLmI4ZjdmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcApAQCAtMzMxOSw2ICszMzE5LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZVRp
dGxlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgIG1fY2xpZW50LnNldE1haW5GcmFt
ZURvY3VtZW50UmVhZHkodHJ1ZSk7IC8vIHVwZGF0ZSBvYnNlcnZlcnMgd2l0aCBuZXcgRE9NRG9j
dW1lbnQKICAgICAgICAgbV9jbGllbnQuZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUobG9hZGVyLT50
aXRsZSgpKTsKICAgICB9CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBpZiAo
bV9mcmFtZS5pc01haW5GcmFtZSgpKQorICAgICAgICBtX2ZyYW1lLnBhZ2UoKS0+cmVtb3RlSW5z
cGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsKKyNlbmRpZgogfQogCiB2b2lkIEZyYW1lTG9h
ZGVyOjpkaWRDaGFuZ2VJY29ucyhJY29uVHlwZSB0eXBlKQpAQCAtMzM0MCw5ICszMzQ1LDEyIEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiAKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWQoJm1fZnJhbWUsIG1fZG9jdW1lbnRMb2Fk
ZXIuZ2V0KCkpOwogCi0gICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKKyAgICBpZiAobV9m
cmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5mZWF0dXJlT2Jz
ZXJ2ZXIoKS0+ZGlkQ29tbWl0TG9hZCgpOwotCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CisgICAgICAgIG1fZnJhbWUucGFnZSgpLT5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENo
YW5nZSgpOworI2VuZGlmCisgICAgfQogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjp0ZWxsQ2xpZW50
QWJvdXRQYXN0TWVtb3J5Q2FjaGVMb2FkcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggYzdhM2NkMi4uYTVlYTE4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtODkyLDcgKzg5Miw3
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAjZW5kaWYgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiAoZnJhbWUtPnBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5oYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIHx8IGZyYW1lLT5w
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aGFzUmVtb3RlRnJvbnRlbmQoKSkpKSB7CiAj
ZW5kaWYKIAogICAgICAgICAgICAgICAgIC8vIEluIEdUSysgdW5hdmFpbGFibGUgaXRlbXMgYXJl
IG5vdCBoaWRkZW4gYnV0IGluc2Vuc2l0aXZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOGQ5Mjk5
Ny4uYWU3MjAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVk
ZSAiUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIK
ICNpbmNsdWRlICJQYWdlQ29uc29sZS5oIgorI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dhYmxlLmgiCiAj
aW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgogI2luY2x1
ZGUgIlBsdWdJbkNsaWVudC5oIgpAQCAtMTg2LDYgKzE4Nyw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNs
aWVudHMmIHBhZ2VDbGllbnRzKQogICAgICwgbV9zY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQo
ZmFsc2UpCiAgICAgLCBtX3BhZ2VUaHJvdHRsZXIoc3RkOjptYWtlX3VuaXF1ZTxQYWdlVGhyb3R0
bGVyPigqdGhpcykpCiAgICAgLCBtX2NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29s
ZT4oKnRoaXMpKQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgICwgbV9pbnNwZWN0
b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKKyNl
bmRpZgogICAgICwgbV9sYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVzQ291bnQoMCkgLy8g
Tk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMgZm9yIFNwYXRpYWwgTmF2aWdhdGlvbiB0
ZXN0aW5nLgogICAgICwgbV9mcmFtZXNIYW5kbGluZ0JlZm9yZVVubG9hZEV2ZW50KDApCiB7CkBA
IC0yMDMsNiArMjA3LDEwIEBAIFBhZ2U6OlBhZ2UoUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQog
I2lmbmRlZiBOREVCVUcKICAgICBwYWdlQ291bnRlci5pbmNyZW1lbnQoKTsKICNlbmRpZgorCisj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5p
bml0KCk7CisjZW5kaWYKIH0KIAogUGFnZTo6flBhZ2UoKQpAQCAtMTI5MSw2ICsxMjk5LDIzIEBA
IHZvaWQgUGFnZTo6YWRkRm9vdGVyV2l0aEhlaWdodChpbnQgZm9vdGVySGVpZ2h0KQogfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKK2Jvb2wgUGFnZTo6cmVtb3RlSW5z
cGVjdGlvbkFsbG93ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2luc3BlY3RvckRlYnVnZ2Fi
bGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKTsKK30KKwordm9pZCBQYWdlOjpzZXRSZW1vdGVJ
bnNwZWN0aW9uQWxsb3dlZChib29sIGFsbG93ZWQpCit7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dh
YmxlLT5zZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKGFsbG93ZWQpOworfQorCit2b2lkIFBhZ2U6
OnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCkgY29uc3QKK3sKKyAgICBtX2lu
c3BlY3RvckRlYnVnZ2FibGUtPnVwZGF0ZSgpOworfQorI2VuZGlmCisKIHZvaWQgUGFnZTo6YWRk
TGF5b3V0TWlsZXN0b25lcyhMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCiB7CiAgICAgLy8g
SW4gdGhlIGZ1dHVyZSwgd2UgbWF5IHdhbnQgYSBmdW5jdGlvbiB0aGF0IHJlcGxhY2VzIG1fbGF5
b3V0TWlsZXN0b25lcyBpbnN0ZWFkIG9mIGp1c3QgYWRkaW5nIHRvIGl0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApp
bmRleCBiNjc4Mzg4Li40NWNkNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtODAsNiArODAsNyBAQCBj
bGFzcyBNZWRpYUNhblN0YXJ0TGlzdGVuZXI7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZUFjdGl2
aXR5QXNzZXJ0aW9uVG9rZW47CiBjbGFzcyBQYWdlQ29uc29sZTsKK2NsYXNzIFBhZ2VEZWJ1Z2dh
YmxlOwogY2xhc3MgUGFnZUdyb3VwOwogY2xhc3MgUGFnZVRocm90dGxlcjsKIGNsYXNzIFBsdWdJ
bkNsaWVudDsKQEAgLTE3OCw2ICsxNzksMTIgQEAgcHVibGljOgogICAgIHZvaWQgZGVjcmVtZW50
U3ViZnJhbWVDb3VudCgpIHsgQVNTRVJUKG1fc3ViZnJhbWVDb3VudCk7IC0tbV9zdWJmcmFtZUNv
dW50OyB9CiAgICAgaW50IHN1YmZyYW1lQ291bnQoKSBjb25zdCB7IGNoZWNrU3ViZnJhbWVDb3Vu
dENvbnNpc3RlbmN5KCk7IHJldHVybiBtX3N1YmZyYW1lQ291bnQ7IH0KIAorI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQorICAgIGJvb2wgcmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQoKSBjb25z
dDsKKyAgICB2b2lkIHNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKGJvb2wgYWxsb3dlZCk7Cisg
ICAgdm9pZCByZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpIGNvbnN0OworI2Vu
ZGlmCisKICAgICBDaHJvbWUmIGNocm9tZSgpIGNvbnN0IHsgcmV0dXJuICptX2Nocm9tZTsgfQog
ICAgIERyYWdDYXJldENvbnRyb2xsZXImIGRyYWdDYXJldENvbnRyb2xsZXIoKSBjb25zdCB7IHJl
dHVybiAqbV9kcmFnQ2FyZXRDb250cm9sbGVyOyB9CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
QEAgLTUzMiw2ICs1MzksMTAgQEAgcHJpdmF0ZToKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8
UGFnZVRocm90dGxlcj4gbV9wYWdlVGhyb3R0bGVyOwogICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxQYWdlQ29uc29sZT4gbV9jb25zb2xlOwogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CisgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFBhZ2VEZWJ1Z2dhYmxlPiBtX2luc3BlY3RvckRl
YnVnZ2FibGU7CisjZW5kaWYKKwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NlZW5QbHVnaW5zOwog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NlZW5NZWRpYUVuZ2luZXM7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlRGVidWdnYWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
Y2VhMGFlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVn
Z2FibGUuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFnZURlYnVn
Z2FibGUuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCisjaW5jbHVk
ZSAiUGFnZS5oIgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1BhZ2VEZWJ1Z2dhYmxlOjpQYWdlRGVidWdnYWJsZShQYWdlJiBwYWdlKQorICAg
IDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1N0cmluZyBQYWdlRGVidWdnYWJsZTo6bmFtZSgpIGNv
bnN0Cit7CisgICAgaWYgKCFtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpLT50aXRsZSgpOworfQorCitTdHJpbmcgUGFnZURlYnVnZ2FibGU6OnVybCgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgU3RyaW5nIHVybCA9IG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpLT51cmwoKS5zdHJpbmcoKTsKKyAgICByZXR1cm4gdXJsLmlzRW1wdHkoKSA/IEFTQ0lJTGl0
ZXJhbCgiYWJvdXQ6YmxhbmsiKSA6IHVybDsKK30KKworYm9vbCBQYWdlRGVidWdnYWJsZTo6aGFz
TG9jYWxEZWJ1Z2dlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmhhc0xvY2FsRnJvbnRlbmQoKTsKK30KKwordm9pZCBQYWdlRGVidWdnYWJsZTo6
Y29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCkKK3sK
KyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gbV9wYWdlLmlu
c3BlY3RvckNvbnRyb2xsZXIoKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5zZXRIYXNSZW1v
dGVGcm9udGVuZCh0cnVlKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5jb25uZWN0RnJvbnRl
bmQocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqPihj
aGFubmVsKSk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoKQoreworICAg
IEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBtX3BhZ2UuaW5zcGVj
dG9yQ29udHJvbGxlcigpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmRpc2Nvbm5lY3RGcm9u
dGVuZCgpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPnNldEhhc1JlbW90ZUZyb250ZW5kKGZh
bHNlKTsKK30KKwordm9pZCBQYWdlRGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90
ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3BhZ2UuaW5zcGVjdG9y
Q29udHJvbGxlcigpLT5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7Cit9CisK
K3ZvaWQgUGFnZURlYnVnZ2FibGU6OnNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKQorewor
ICAgIG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldEluZGljYXRpbmcoaW5kaWNhdGlu
Zyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVt
b3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VEZWJ1Z2dhYmxlLmgKc2ltaWxhcml0eSBpbmRleCA1NCUKcmVuYW1lIGZyb20gU291cmNlL1dl
YktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5o
CnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKaW5kZXggZWE1
YjJlMy4uOTI0MjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZURlYnVnZ2FibGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMjkgKzIzLDQxIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaWZuZGVmIFBhZ2VEZWJ1Z2dhYmxlX2gKKyNkZWZp
bmUgUGFnZURlYnVnZ2FibGVfaAogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7CisjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAKLUBwcm90b2NvbCBXZWJJbnNwZWN0b3JDbGllbnRSZWdp
c3RyeURlbGVnYXRlCi0tICh2b2lkKWRpZFJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGll
bnQqKWNsaWVudDsKLS0gKHZvaWQpZGlkVW5yZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xp
ZW50KiljbGllbnQ7Ci1AZW5kCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi1AaW50ZXJm
YWNlIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IDogTlNPYmplY3QgewotQHByaXZhdGUKLSAg
ICB1bnNpZ25lZCBfbmV4dEF2YWlsYWJsZVBhZ2VJZDsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBX
ZWJJbnNwZWN0b3JDbGllbnQqPiBfcGFnZUNsaWVudE1hcDsKLSAgICBpZCA8V2ViSW5zcGVjdG9y
Q2xpZW50UmVnaXN0cnlEZWxlZ2F0ZT4gX2RlbGVnYXRlOwotfQorbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpZCA8V2ViSW5zcGVjdG9yQ2xpZW50
UmVnaXN0cnlEZWxlZ2F0ZT4gZGVsZWdhdGU7CitjbGFzcyBQYWdlOwogCi0rIChXZWJJbnNwZWN0
b3JDbGllbnRSZWdpc3RyeSAqKXNoYXJlZFJlZ2lzdHJ5OworY2xhc3MgUGFnZURlYnVnZ2FibGUg
RklOQUwgOiBwdWJsaWMgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlRGVidWdnYWJsZSk7CitwdWJsaWM6CisgICAgUGFn
ZURlYnVnZ2FibGUoUGFnZSYpOworICAgIH5QYWdlRGVidWdnYWJsZSgpIHsgfQogCi0tICh2b2lk
KXJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudDsKLS0gKHZvaWQpdW5y
ZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQ7Ci0tIChXZWJJbnNwZWN0
b3JDbGllbnQqKWNsaWVudEZvclBhZ2VJZDoodW5zaWduZWQpcGFnZUlkOwotLSAoTlNEaWN0aW9u
YXJ5ICopaW5zcGVjdGFibGVXZWJWaWV3czsKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUgdHlwZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6V2ViOyB9CiAK
LUBlbmQKKyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBTdHJpbmcgdXJsKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGhhc0xv
Y2FsRGVidWdnZXIoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKSBPVkVS
UklERTsKKworcHJpdmF0ZToKKyAgICBQYWdlJiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2VuZGlm
IC8vICFkZWZpbmVkKFBhZ2VEZWJ1Z2dhYmxlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk0OGM1ZjUuLmRhMjUz
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJl
bW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFT
Y3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEzLTEyLTAyICBCZXRo
IERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIG9w
dCBpbnRvIGEgbW9kZSB3aGVyZSB0aGUgYmFja2dyb3VuZCBleHRlbmRzIGFuZCBmaXhlZCBlbGVt
ZW50cyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGNkN2Y1ZjIuLjk0MjVjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzc4LDI0ICszNzgsMTEgQEAKIAkJQTEwQzFEOEQx
ODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZpZXdQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwQzFEODgxODIwMzA1RTAwMzY4ODNB
IC8qIFdlYlBERlZpZXdQbGFjZWhvbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUExMEMxRDhFMTgyMDMwNUUwMDM2ODgzQSAvKiBXZWJQREZW
aWV3UGxhY2Vob2xkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTBDMUQ4OTE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld1BsYWNlaG9sZGVy
Lm1tICovOyB9OwogCQlBMTdBMTFCMTE4MERDODQ4MDBFNTQ5OEMgLyogV2ViUGx1Z2luUGFja2Fn
ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExN0ExMUIwMTgwREM4NDgwMEU1NDk4QyAvKiBXZWJQbHVnaW5QYWNrYWdlUHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1MjE0RkM3
MTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTIxNEZDMTEzQjk3NUM4MDAw
MDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oICovOyB9OwotCQlBNTIxNEZDODEz
Qjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MjE0RkMyMTNCOTc1QzgwMDAw
MTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tICovOyB9OwotCQlBNTIyMDlGODEz
QzUzRTc1MDA0QkE3QjEgLyogV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUyMjA5RjcxM0M1M0U3NTAw
NEJBN0IxIC8qIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNTVFMjBGRjE0RDcyNjRDMDAzMTU0
OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVFMjBGRDE0RDcy
NjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9s
bGVyLmggKi87IH07Ci0JCUE1NUUyMTAwMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JT
ZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVFMjBGRTE0RDcyNjRDMDAzMTU0OUUgLyogV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tICovOyB9OwogCQlB
NTYwOTQ2NjE0RDhBRDI2MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVMYXllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU2MDk0NjQxNEQ4QUQyNjAwNzk5
QThBIC8qIFdlYkluZGljYXRlTGF5ZXIuaCAqLzsgfTsKIAkJQTU2MDk0NjcxNEQ4QUQyNjAwNzk5
QThBIC8qIFdlYkluZGljYXRlTGF5ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTYwOTQ2NTE0RDhBRDI2MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVM
YXllci5tbSAqLzsgfTsKIAkJQTU2ODdCREExMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdo
bGlnaHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTU2ODdCRDgxMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5oICovOyB9Owog
CQlBNTY4N0JEQjEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU2ODdCRDkxMzVCNzkx
QTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5tbSAqLzsgfTsKLQkJQTU3QzI4QTcxM0JB
QTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhBMTEzQkFB
NUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCAqLzsg
fTsKLQkJQTU3QzI4QTgxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTU3QzI4QTIxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uLm1tICovOyB9OwotCQlBNTdDMjhBOTEzQkFBNUFEMDA3MEFDQUIgLyogV2Vi
SW5zcGVjdG9yU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTdDMjhBMzEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLmgg
Ki87IH07Ci0JCUE1N0MyOEFBMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhB
NDEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tICovOyB9OwotCQlBNTdD
MjhBQjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QzI4QTUxM0JBQTVBRDAw
NzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNTdDMjhBQzEzQkFBNUFEMDA3MEFDQUIgLyog
V2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU3QzI4QTYxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQ
Q1dyYXBwZXIubSAqLzsgfTsKIAkJQTU3RTJGMjQxMjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3Rh
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTU3RTJGMjIxMjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3RhTWFuYWdlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1N0VCNzhGMTNCOTdBNEUw
MDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RUI3OEQxM0I5N0E0RTAwOEQ2OTFEIC8q
IFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggKi87IH07Ci0JCUE1N0VCNzkwMTNCOTdBNEUw
MDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0VCNzhFMTNCOTdBNEUwMDhENjkxRCAv
KiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSAqLzsgfTsKIAkJQTU4QTU3OTkxNDNFNzI3
MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNThBNTc5NzE0M0U3MjcwMDAxMjVGNTAg
LyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLzsgfTsKIAkJQTU4QTU3OUExNDNFNzI3
MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4QTU3OTgxNDNFNzI3MDAwMTI1RjUw
IC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tICovOyB9OwogCQlBNURFRkMwQTExRDUz
MzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURFRkMwNzExRDUzMzFDMDA4ODUyNzMgLyogV2Vi
U2VjdXJpdHlPcmlnaW4ubW0gKi87IH07CkBAIC03NzgsMjQgKzc2NSwxMSBAQAogCQlBMTBDMUQ4
OTE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOyBw
YXRoID0gaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CiAJCUExMEMxRDhGMTgyMDMwN0QwMDM2ODgzQSAvKiBXZWJLaXQuaU9T
LmV4cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuZXhwb3J0czsgbmFtZSA9IFdlYktpdC5pT1MuZXhw
OyBwYXRoID0gaW9zL1dlYktpdC5pT1MuZXhwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTdBMTFCMDE4MERDODQ4MDBFNTQ5OEMgLyogV2ViUGx1Z2luUGFja2FnZVByaXZhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGx1Z2luUGFja2FnZVByaXZhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUyMTRGQzExM0I5NzVDODAwMDAxNUVG
IC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oOyBwYXRoID0gcmVtb3RlL1dlYklu
c3BlY3RvclJlbW90ZUNoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUy
MTRGQzIxM0I5NzVDODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JSZW1vdGVD
aGFubmVsLm1tOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MjIwOUY3MTNDNTNFNzUwMDRCQTdCMSAvKiBX
ZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaDsgcGF0aCA9IHJlbW90ZS9XZWJJ
bnNwZWN0b3JSZWxheURlZmluaXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUE1NUUyMEZEMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmg7IHBhdGggPSByZW1v
dGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NUUyMEZFMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJ
bnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbkNvbnRyb2xsZXIubW07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNTYwOTQ2NDE0RDhBRDI2MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVMYXllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbmRpY2F0ZUxheWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1NjA5NDY1MTREOEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRpY2F0
ZUxheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5k
aWNhdGVMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU2ODdCRDgxMzVC
NzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJOb2RlSGlnaGxpZ2h0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU2ODdCRDkxMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk5vZGVIaWdobGln
aHRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTExM0JBQTVBRDAw
NzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uLmg7IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTIxM0JBQTVBRDAwNzBBQ0FC
IC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb24ubW07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0MyOEEzMTNCQUE1QUQwMDcw
QUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV2ViSW5zcGVjdG9yU2VydmVyLmg7IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0MyOEE0MTNCQUE1QUQwMDcw
QUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXIubW07IHBhdGggPSByZW1vdGUvV2ViSW5z
cGVjdG9yU2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdDMjhBNTEz
QkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmg7IHBhdGggPSByZW1v
dGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlBNTdDMjhBNjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IG5hbWUgPSBXZWJJbnNwZWN0b3JYUENXcmFwcGVy
Lm07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTdFMkYyMjEyMDc0OUU2MDAwNDhERjMgLyogV2ViUXVvdGFNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlF1b3RhTWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdFQjc4RDEzQjk3QTRFMDA4RDY5MUQg
LyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaDsgcGF0aCA9IHJlbW90ZS9XZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlB
NTdFQjc4RTEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JDbGll
bnRSZWdpc3RyeS5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4QTU3OTcxNDNFNzI3MDAwMTI1RjUw
IC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1OEE1Nzk4MTQzRTcyNzAwMDEyNUY1MCAvKiBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNURFRkMwNzExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW4ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTZWN1cml0eU9yaWdpbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTIsNyArMTAyNiw2IEBACiAJCTFDNjhG
NjNGMDk1QjVGOUMwMEMyOTg0RSAvKiBXZWJJbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUE1MjE0RkJGMTNCOTc1OTYwMDAwMTVFRiAvKiBy
ZW1vdGUgKi8sCiAJCQkJNUQ3QkY4MTIwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5o
ICovLAogCQkJCTVEN0JGODEzMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0gKi8s
CiAJCQkJQjgwNDE3NkQxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5kLmgg
Ki8sCkBAIC0xNTA5LDI2ICsxNDgyLDYgQEAKIAkJCW5hbWUgPSBpb3M7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OwotCQlBNTIxNEZCRjEzQjk3NTk2MDAwMDE1RUYgLyogcmVtb3Rl
ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlBNTdFQjc4
RDEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCAqLywKLQkJ
CQlBNTdFQjc4RTEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnku
bW0gKi8sCi0JCQkJQTUyMjA5RjcxM0M1M0U3NTAwNEJBN0IxIC8qIFdlYkluc3BlY3RvclJlbGF5
RGVmaW5pdGlvbnMuaCAqLywKLQkJCQlBNTIxNEZDMTEzQjk3NUM4MDAwMDE1RUYgLyogV2ViSW5z
cGVjdG9yUmVtb3RlQ2hhbm5lbC5oICovLAotCQkJCUE1MjE0RkMyMTNCOTc1QzgwMDAwMTVFRiAv
KiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tICovLAotCQkJCUE1N0MyOEEzMTNCQUE1QUQw
MDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCAqLywKLQkJCQlBNTdDMjhBNDEzQkFBNUFE
MDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tICovLAotCQkJCUE1N0MyOEExMTNCQUE1
QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oICovLAot
CQkJCUE1N0MyOEEyMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbi5tbSAqLywKLQkJCQlBNTVFMjBGRDE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggKi8sCi0JCQkJQTU1RTIw
RkUxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
Q29udHJvbGxlci5tbSAqLywKLQkJCQlBNTdDMjhBNTEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5z
cGVjdG9yWFBDV3JhcHBlci5oICovLAotCQkJCUE1N0MyOEE2MTNCQUE1QUQwMDcwQUNBQiAvKiBX
ZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0gKi8sCi0JCQkpOwotCQkJbmFtZSA9IHJlbW90ZTsKLQkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUY1MkNBNkJEMDJERjlEMEYwMTg2MzVD
QSAvKiBIVE1MICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTE4MjUsMTUgKzE3NzgsOCBAQAogCQkJCUExMEMxRDY0MTgyMDMwMEUwMDM2ODgzQSAvKiBXZWJD
aHJvbWVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVEN0JGODE0MEMyQTFEOTAwMDhD
RTA2RCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTA2NjkzRERDMEJGQkE4
NTIwMDIxNjA3MiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1
N0VCNzhGMTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjgwNDE3NkYxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3Rv
ckZyb250ZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QThGRjBEMTEwNzUwMjRBMDBBODBBMDgg
LyogV2ViSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUyMjA5RjgxM0M1
M0U3NTAwNEJBN0IxIC8qIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUE1MjE0RkM3MTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVD
aGFubmVsLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTdDMjhBOTEzQkFBNUFEMDA3MEFDQUIgLyog
V2ViSW5zcGVjdG9yU2VydmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTdDMjhBNzEzQkFBNUFE
MDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAotCQkJCUE1NUUyMEZGMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1N0My
OEFCMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5Mzk4MTA0MjA4MjRCRjAxMDA4REYwMzggLyogV2ViSmF2YVNjcmlwdFRleHRJ
bnB1dFBhbmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0QxRENBODEwNjU5MjhDMDA2OEY3RUYg
LyogV2ViSlNQREZEb2MuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDg1MDgyNEJGMDEwMDhE
RjAzOCAvKiBXZWJLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMjI3NiwxMyArMjIy
Miw3IEBACiAJCQkJNUQ3QkY4MTUwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5tbSBp
biBTb3VyY2VzICovLAogCQkJCTA2NjkzREREMEJGQkE4NTIwMDIxNjA3MiAvKiBXZWJJbnNwZWN0
b3JDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzdCMEM2NjBFQjI0NjREMDBBMjg1MDIg
LyogV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTU3RUI3OTAx
M0I5N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjgwNDE3NzAxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250
ZW5kLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTUyMTRGQzgxM0I5NzVDODAwMDAxNUVGIC8qIFdl
Ykluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNTdDMjhBQTEz
QkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJQTU3QzI4QTgxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTU1RTIxMDAxNEQ3MjY0QzAwMzE1NDlF
IC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbSBpbiBT
b3VyY2VzICovLAotCQkJCUE1N0MyOEFDMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JY
UENXcmFwcGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQlBMTBDMUQxOTE4MjAyRjlDMDAzNjg4M0Eg
LyogV2ViRGVmYXVsdEZvcm1EZWxlZ2F0ZS5tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwRTQw
ODI0QkYwMTAwOERGMDM4IC8qIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTEwQzFEOEIxODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZpZXdJT1MubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKaW5kZXggNTUyZTc2Yi4uNTRhYWNiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jZi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3Rl
IEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlw
dENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAoV2ViSW5z
cGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorCiAyMDEzLTEwLTI1ICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpIGFuZCBlbmFibGUgb24gaU9TIGFuZCBNYWMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0Yu
Y3BwIGIvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRD
Ri5jcHAKaW5kZXggY2EyMmZkZS4uMTIwZTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
Zi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKQEAgLTkxLDEy
ICs5MSwxMCBAQCBzdGF0aWMgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgc2V0dGluZykKICAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoY3JlYXRl
S2V5Rm9yUHJlZmVyZW5jZXMoa2V5KS5nZXQoKSwgc2V0dGluZy5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CiB9CiAKLSNpZiAhRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiBib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICByZXR1cm4gZG9EaXNwYXRj
aE1lc3NhZ2VPbkZyb250ZW5kUGFnZShtX2Zyb250ZW5kUGFnZSwgbWVzc2FnZSk7CiB9Ci0jZW5k
aWYKIAogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckF0dGFjaERpc2FibGVkKCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvaW9zL0NoYW5nZUxvZwppbmRleCBhYjQzNjM1Li5hNjNiZTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0
b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNs
aWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6
aW5zcGVjdG9yRGVzdHJveWVkKToKKwogMjAxMy0xMS0xOCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE1
OTQ1NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudElPUy5tbQppbmRleCA1YWNjMmVlLi5jYTc1ZDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50SU9TLm1tCkBAIC00MiwxMSArNDIsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhy
ZWFkLmg+CiAjaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogCi0jaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIgotI2ltcG9y
dCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJW
aWV3ICp3ZWJWaWV3KQpAQCAtNTQsMjMgKzQ5LDExIEBAIFdlYkluc3BlY3RvckNsaWVudDo6V2Vi
SW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgLCBtX2hpZ2hsaWdodGVyKEFk
b3B0TlMsIFtbV2ViTm9kZUhpZ2hsaWdodGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZp
ZXc6d2ViVmlld10pCiAgICAgLCBtX2Zyb250ZW5kUGFnZSgwKQogICAgICwgbV9mcm9udGVuZENs
aWVudCgwKQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9yZW1vdGVDaGFu
bmVsKDApCi0gICAgLCBtX3BhZ2VJZCgwKQotI2VuZGlmCiB7Ci0jaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3Ry
eV0gcmVnaXN0ZXJDbGllbnQ6dGhpc107Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiB7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gdW5y
ZWdpc3RlckNsaWVudDp0aGlzXTsKLSAgICB0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24odHJ1ZSk7
Ci0jZW5kaWYKLQogICAgIGRlbGV0ZSB0aGlzOwogfQogCkBAIC0xMTYsOTQgKzk5LDYgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVk
KQogICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3Rp
ZmljYXRpb25Pbk1haW5UaHJlYWRXaXRoTmFtZTpXZWJJbnNwZWN0b3JEaWRTdG9wU2VhcmNoaW5n
Rm9yTm9kZSBvYmplY3Q6aW5zcGVjdG9yXTsKIH0KIAotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEg
bWFyayBSZW1vdGUgV2ViIEluc3BlY3RvciBJbXBsZW1lbnRhdGlvbgotCi0jaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBpZiAobV9yZW1vdGVDaGFubmVs
KSB7Ci0gICAgICAgIFttX3JlbW90ZUNoYW5uZWwgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOm1lc3Nh
Z2VdOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBpT1MgZG9lcyBub3Qg
aGF2ZSBhIGxvY2FsIGluc3BlY3Rvci4gVGhlcmUgc2hvdWxkIGJlIG5vIHdheSB0byByZWFjaCB0
aGlzLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0K
LSAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZShtX2Zyb250ZW5kUGFn
ZSwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRv
QmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgQVNTRVJUKG1fcmVtb3RlQ2hh
bm5lbCk7Ci0KLSAgICBQYWdlKiBwYWdlID0gY29yZShtX3dlYlZpZXcpOwotICAgIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2Up
OwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2V0dXBSZW1vdGVDb25uZWN0aW9uKFdl
Ykluc3BlY3RvclJlbW90ZUNoYW5uZWwgKnJlbW90ZUNoYW5uZWwpCi17Ci0gICAgLy8gVGhlcmUg
aXMgYWxyZWFkeSBhIGxvY2FsIHNlc3Npb24sIGRvIG5vdCBhbGxvdyBhIHJlbW90ZSBzZXNzaW9u
LgotICAgIGlmIChoYXNMb2NhbFNlc3Npb24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIHJlbW90ZSBzZXNzaW9uLCBkbyBub3QgYWxsb3cgYSBu
ZXcgcmVtb3RlIHNlc3Npb24uCi0gICAgaWYgKG1fcmVtb3RlQ2hhbm5lbCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgbV9yZW1vdGVDaGFubmVsID0gcmVtb3RlQ2hhbm5lbDsKLQotICAg
IFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmlldyk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5jb25uZWN0RnJvbnRlbmQodGhpcyk7Ci0KLSAgICAvLyBGb3JjZSBkZXZlbG9wZXIg
ZXh0cmFzIHRvIGJlIGVuYWJsZWQgaW4gV2ViQ29yZSB3aGVuIGEgcmVtb3RlIGNvbm5lY3Rpb24g
c3RhcnRzLgotICAgIGlmIChwYWdlLT5zZXR0aW5ncygpKQotICAgICAgICBwYWdlLT5zZXR0aW5n
cygpLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojp0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24o
Ym9vbCBmcm9tTG9jYWxTaWRlKQotewotICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlz
YWJsZWQoKSk7Ci0gICAgaWYgKCFtX3JlbW90ZUNoYW5uZWwpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChmcm9tTG9jYWxTaWRlKQotICAgICAgICBbbV9yZW1vdGVDaGFubmVsIGNsb3NlRnJv
bUxvY2FsU2lkZV07Ci0KLSAgICBQYWdlKiBwYWdlID0gY29yZShtX3dlYlZpZXcpOwotICAgIGlm
IChwYWdlKSB7Ci0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzY29ubmVj
dEZyb250ZW5kKCk7Ci0KLSAgICAgICAgLy8gUmVzdG9yZSBkZXZlbG9wZXIgZXh0cmFzIHNldHRp
bmcgaW4gV2ViQ29yZS4KLSAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+c2V0dGluZ3MoKSkKLSAg
ICAgICAgICAgIHBhZ2UtPnNldHRpbmdzKCktPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoW1tt
X3dlYlZpZXcgcHJlZmVyZW5jZXNdIGRldmVsb3BlckV4dHJhc0VuYWJsZWRdKTsKLSAgICB9Ci0K
LSAgICBpZiAoZnJvbUxvY2FsU2lkZSkKLSAgICAgICAgW21fcmVtb3RlQ2hhbm5lbCByZWxlYXNl
XTsKLQotICAgIG1fcmVtb3RlQ2hhbm5lbCA9IDA7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xp
ZW50OjpoYXNMb2NhbFNlc3Npb24oKSBjb25zdAotewotICAgIHJldHVybiBtX2Zyb250ZW5kUGFn
ZSAhPSAwOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6Y2FuQmVSZW1vdGVseUluc3Bl
Y3RlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX3dlYlZpZXcgY2FuQmVSZW1vdGVseUluc3Bl
Y3RlZF07Ci19Ci0KLVdlYlZpZXcgKldlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkV2ViVmll
dygpCi17Ci0gICAgcmV0dXJuIG1fd2ViVmlldzsKLX0KLSNlbmRpZgotCiAKICNwcmFnbWEgbWFy
ayAtCiAjcHJhZ21hIG1hcmsgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgSW1wbGVtZW50YXRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCBmYzdkMDZkLi41Y2I4MjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNjQgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0
b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKwor
ICAgICAgICBSZW1vdmUgdGhlIG9sZCBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikgY29ubmVjdGlv
biBtYW5hZ2VtZW50IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYklu
c3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKToKKyAgICAgICAgKiBXZWJJbnNwZWN0
b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lmg6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbGF5RGVm
aW5pdGlvbnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYklu
c3BlY3RvclJlbW90ZUNoYW5uZWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3Iv
cmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW06IFJlbW92ZWQuCisgICAgICAgICog
V2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5tbTogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJ
bnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29u
dHJvbGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ci5tOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdC5leHA6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhG
cmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9lbmFibGVSZW1vdGVJ
bnNwZWN0b3JdKToKKyAgICAgICAgKCtbV2ViVmlldyBfZGlzYWJsZVJlbW90ZUluc3BlY3Rvcl0p
OgorICAgICAgICAoK1tXZWJWaWV3IF9kaXNhYmxlQXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yXSk6
CisgICAgICAgICgrW1dlYlZpZXcgX2lzUmVtb3RlSW5zcGVjdG9yRW5hYmxlZF0pOgorICAgICAg
ICAoK1tXZWJWaWV3IF9oYXNSZW1vdGVJbnNwZWN0b3JTZXNzaW9uXSk6CisgICAgICAgICgtW1dl
YlZpZXcgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbl0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEFs
bG93c1JlbW90ZUluc3BlY3Rpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0SW5kaWNhdGlu
Z0ZvclJlbW90ZUluc3BlY3RvcjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRIb3N0QXBwbGlj
YXRpb25CdW5kbGVJZDpuYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9kaWRDb21taXRMb2Fk
Rm9yRnJhbWU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlld0RhdGEubW06CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGluaXRd
KToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgZGVhbGxvY10pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5o
OgorCisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBj
b25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmluZGljYXRlKToKKyAgICAgICAg
KFdlYkluc3BlY3RvckNsaWVudDo6aGlkZUluZGljYXRlKToKKyAgICAgICAgSG9vayB1cCBXZWJW
aWV3IGluZGljYXRpb24gdGhyb3VnaCB0aGlzIG5ldyBwYXRoLgorCiAyMDEzLTExLTI4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZmVhdHVyZTog
Q1NTIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCAxODc1YWMwLi42ZTc4YTFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQpAQCAtMTM4LDEwICsxMzgsNiBAQAogI2ltcG9ydCAiV2ViSG9zdGVkTmV0
c2NhcGVQbHVnaW5WaWV3LmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCkBAIC02MjEsMTIgKzYx
Nyw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpCiAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+
ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jKQogICAgICAgICAvLyBGSVhNRTogdXNlIGRpcmVj
dGlvbiBvZiB0aXRsZS4KICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0
aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2Vi
VmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUuc3RyaW5n
KCksIG1fd2ViRnJhbWUuZ2V0KCkpOwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0g
ICAgQk9PTCBpc01haW5GcmFtZSA9IFt3ZWJWaWV3IG1haW5GcmFtZV0gPT0gbV93ZWJGcmFtZS5n
ZXQoKTsKLSAgICBpZiAoaXNNYWluRnJhbWUpCi0gICAgICAgIFtbV2ViVmlldyBzaGFyZWRXZWJJ
bnNwZWN0b3JTZXJ2ZXJdIHB1c2hMaXN0aW5nXTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaAppbmRleCA1NTFhZjdmLi4yMmYzYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNzMsNiArNzMs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodCgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZv
aWQgaW5kaWNhdGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZUluZGljYXRpb24o
KSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJv
b2wpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChj
b25zdCBTdHJpbmcmKSBPVkVSUklERTsKQEAgLTg1LDIyICs4OCw2IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcmVsZWFzZUZyb250ZW5kKCk7CiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
LSAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpOwotCi0gICAgYm9v
bCBzZXR1cFJlbW90ZUNvbm5lY3Rpb24oV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqcmVtb3Rl
Q2hhbm5lbCk7Ci0gICAgdm9pZCB0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24oYm9vbCBmcm9tTG9j
YWxTaWRlKTsKLQotICAgIHVuc2lnbmVkIHBhZ2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlk
OyB9Ci0gICAgdm9pZCBzZXRQYWdlSWQodW5zaWduZWQgcGFnZUlkKSB7IG1fcGFnZUlkID0gcGFn
ZUlkOyB9Ci0KLSAgICBib29sIGhhc0xvY2FsU2Vzc2lvbigpIGNvbnN0OwotCi0gICAgYm9vbCBj
YW5CZVJlbW90ZWx5SW5zcGVjdGVkKCkgY29uc3Q7Ci0KLSAgICBXZWJWaWV3ICppbnNwZWN0ZWRX
ZWJWaWV3KCk7Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBjcmVhdGVGcm9udGVuZFNldHRp
bmdzKCk7CiAKQEAgLTEwOCwxMSArOTUsNiBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxXZWJO
b2RlSGlnaGxpZ2h0ZXI+IG1faGlnaGxpZ2h0ZXI7CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9u
dGVuZFBhZ2U7CiAgICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGll
bnQ7Ci0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBXZWJJbnNwZWN0b3JSZW1v
dGVDaGFubmVsICptX3JlbW90ZUNoYW5uZWw7Ci0gICAgdW5zaWduZWQgbV9wYWdlSWQ7Ci0jZW5k
aWYKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IGU0MzhjNmQuLmUyNWViZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
bW0KQEAgLTU1LDExICs1NSw2IEBACiAjaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogI2ltcG9y
dCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSNp
bXBvcnQgIldlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0
b3JSZW1vdGVDaGFubmVsLmgiCi0jZW5kaWYKLQogU09GVF9MSU5LX1NUQUdFRF9GUkFNRVdPUkso
V2ViSW5zcGVjdG9yVUksIFByaXZhdGVGcmFtZXdvcmtzLCBBKQogCiAvLyBUaGUgbWFyZ2luIGZy
b20gdGhlIHRvcCBhbmQgcmlnaHQgb2YgdGhlIGRvY2sgYnV0dG9uIChzYW1lIGFzIHRoZSBmdWxs
IHNjcmVlbiBidXR0b24pLgpAQCAtMTM1LDIzICsxMzAsMTEgQEAgV2ViSW5zcGVjdG9yQ2xpZW50
OjpXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqd2ViVmlldykKICAgICAsIG1faGlnaGxpZ2h0
ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRX
ZWJWaWV3OndlYlZpZXddKSkKICAgICAsIG1fZnJvbnRlbmRQYWdlKDApCiAgICAgLCBtX2Zyb250
ZW5kQ2xpZW50KDApCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX3JlbW90
ZUNoYW5uZWwoMCkKLSAgICAsIG1fcGFnZUlkKDApCi0jZW5kaWYKIHsKLSNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLSAgICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJl
Z2lzdHJ5XSByZWdpc3RlckNsaWVudDp0aGlzXTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKIHsKLSNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKLSAgICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5
XSB1bnJlZ2lzdGVyQ2xpZW50OnRoaXNdOwotICAgIHRlYXJkb3duUmVtb3RlQ29ubmVjdGlvbih0
cnVlKTsKLSNlbmRpZgotCiAgICAgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOwogICAgIGRlbGV0
ZSB0aGlzOwogfQpAQCAtMTk3LDYgKzE4MCwxNiBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6
aGlkZUhpZ2hsaWdodCgpCiAgICAgW21faGlnaGxpZ2h0ZXIuZ2V0KCkgaGlkZUhpZ2hsaWdodF07
CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbmRpY2F0ZSgpCit7CisgICAgW21fd2Vi
VmlldyBzZXRJbmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOllFU107Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpoaWRlSW5kaWNhdGlvbigpCit7CisgICAgW21fd2ViVmlldyBzZXRJ
bmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOk5PXTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQogewogICAgIFdlYklu
c3BlY3RvciAqaW5zcGVjdG9yID0gW21fd2ViVmlldyBpbnNwZWN0b3JdOwpAQCAtMjE1LDc4ICsy
MDgsNiBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKCkKICAgICBt
X2Zyb250ZW5kUGFnZSA9IDA7CiB9CiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLWJv
b2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQotewotICAgIGlmIChtX3JlbW90ZUNoYW5uZWwpIHsKLSAgICAgICAgW21fcmVt
b3RlQ2hhbm5lbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6bWVzc2FnZV07Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQ
YWdlKG1fZnJvbnRlbmRQYWdlLCBtZXNzYWdlKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBB
U1NFUlQobV9yZW1vdGVDaGFubmVsKTsKLQotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmll
dyk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRjaE1lc3NhZ2VGcm9t
RnJvbnRlbmQobWVzc2FnZSk7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXR1cFJl
bW90ZUNvbm5lY3Rpb24oV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqcmVtb3RlQ2hhbm5lbCkK
LXsKLSAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgbG9jYWwgc2Vzc2lvbiwgZG8gbm90IGFsbG93
IGEgcmVtb3RlIHNlc3Npb24uCi0gICAgaWYgKGhhc0xvY2FsU2Vzc2lvbigpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgcmVtb3RlIHNlc3Npb24s
IGRvIG5vdCBhbGxvdyBhIG5ldyByZW1vdGUgc2Vzc2lvbi4KLSAgICBpZiAobV9yZW1vdGVDaGFu
bmVsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBU1NFUlQoW1ttX3dlYlZpZXcgcHJl
ZmVyZW5jZXNdIGRldmVsb3BlckV4dHJhc0VuYWJsZWRdKTsKLQotICAgIG1fcmVtb3RlQ2hhbm5l
bCA9IHJlbW90ZUNoYW5uZWw7Ci0KLSAgICBQYWdlKiBwYWdlID0gY29yZShtX3dlYlZpZXcpOwot
ICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29ubmVjdEZyb250ZW5kKHRoaXMpOwot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojp0ZWFyZG93
blJlbW90ZUNvbm5lY3Rpb24oYm9vbCBmcm9tTG9jYWxTaWRlKQotewotICAgIGlmICghbV9yZW1v
dGVDaGFubmVsKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoZnJvbUxvY2FsU2lkZSkKLSAg
ICAgICAgW21fcmVtb3RlQ2hhbm5lbCBjbG9zZUZyb21Mb2NhbFNpZGVdOwotCi0gICAgaWYgKFBh
Z2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmlldykpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7Ci0KLSAgICBpZiAoZnJvbUxvY2FsU2lkZSkK
LSAgICAgICAgW21fcmVtb3RlQ2hhbm5lbCByZWxlYXNlXTsKLQotICAgIG1fcmVtb3RlQ2hhbm5l
bCA9IDA7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpoYXNMb2NhbFNlc3Npb24oKSBj
b25zdAotewotICAgIHJldHVybiBtX2Zyb250ZW5kUGFnZSAhPSAwOwotfQotCi1ib29sIFdlYklu
c3BlY3RvckNsaWVudDo6Y2FuQmVSZW1vdGVseUluc3BlY3RlZCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFttX3dlYlZpZXcgY2FuQmVSZW1vdGVseUluc3BlY3RlZF07Ci19Ci0KLVdlYlZpZXcgKldl
Ykluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkV2ViVmlldygpCi17Ci0gICAgcmV0dXJuIG1fd2Vi
VmlldzsKLX0KLSNlbmRpZgotCiAKIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0
b3JXaW5kb3dDb250cm9sbGVyKiB3aW5kb3dDb250cm9sbGVyLCBJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyLCBQYWdlKiBmcm9udGVuZFBhZ2UsIFdURjo6UGFzc093blB0
cjxTZXR0aW5ncz4gc2V0dGluZ3MpCiAgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
KGluc3BlY3RvckNvbnRyb2xsZXIsICBmcm9udGVuZFBhZ2UsIHNldHRpbmdzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGll
bnRSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDgwOTQ4ZDUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3Jl
bW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEw
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGll
bnRSZWdpc3RyeS5oIgotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKLSNpbXBvcnQg
IldlYlZpZXdQcml2YXRlLmgiCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0b3JDbGllbnRS
ZWdpc3RyeQotCi1Ac3ludGhlc2l6ZSBkZWxlZ2F0ZSA9IF9kZWxlZ2F0ZTsKLQotKyAoV2ViSW5z
cGVjdG9yQ2xpZW50UmVnaXN0cnkgKilzaGFyZWRSZWdpc3RyeQotewotICAgIHN0YXRpYyBXZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeSAqc2hhcmVkUmVnaXN0cnkgPSBbW1dlYkluc3BlY3RvckNs
aWVudFJlZ2lzdHJ5IGFsbG9jXSBpbml0XTsKLSAgICByZXR1cm4gc2hhcmVkUmVnaXN0cnk7Ci19
Ci0KLS0gKGlkKWluaXQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2Vs
ZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9uZXh0QXZhaWxhYmxlUGFnZUlkID0gMTsK
LQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh1bnNpZ25lZClfZ2V0TmV4dEF2YWlsYWJsZVBh
Z2VJZAotewotICAgIC8vIEJvdW5kYXJ5IHZhbHVlcywgMCBhbmQgVUlOVF9NQVgsIGFyZSBpbnZh
bGlkIEhhc2hNYXAga2V5cy4KLSAgICB1bnNpZ25lZCBuZXh0VmFsaWRQYWdlSWQ7Ci0gICAgZG8g
ewotICAgICAgICBuZXh0VmFsaWRQYWdlSWQgPSBfbmV4dEF2YWlsYWJsZVBhZ2VJZCsrOwotICAg
IH0gd2hpbGUgKCFuZXh0VmFsaWRQYWdlSWQgfHwgbmV4dFZhbGlkUGFnZUlkID09IFVJTlRfTUFY
IHx8IF9wYWdlQ2xpZW50TWFwLmNvbnRhaW5zKG5leHRWYWxpZFBhZ2VJZCkpOwotICAgIHJldHVy
biBuZXh0VmFsaWRQYWdlSWQ7Ci19Ci0KLS0gKHZvaWQpcmVnaXN0ZXJDbGllbnQ6KFdlYkluc3Bl
Y3RvckNsaWVudCopY2xpZW50Ci17Ci0gICAgdW5zaWduZWQgcGFnZUlkID0gW3NlbGYgX2dldE5l
eHRBdmFpbGFibGVQYWdlSWRdOwotICAgIF9wYWdlQ2xpZW50TWFwLnNldChwYWdlSWQsIGNsaWVu
dCk7Ci0gICAgY2xpZW50LT5zZXRQYWdlSWQocGFnZUlkKTsKLSAgICBbX2RlbGVnYXRlIGRpZFJl
Z2lzdGVyQ2xpZW50OmNsaWVudF07Ci19Ci0KLS0gKHZvaWQpdW5yZWdpc3RlckNsaWVudDooV2Vi
SW5zcGVjdG9yQ2xpZW50KiljbGllbnQKLXsKLSAgICB1bnNpZ25lZCBwYWdlSWQgPSBjbGllbnQt
PnBhZ2VJZCgpOwotICAgIF9wYWdlQ2xpZW50TWFwLnJlbW92ZShwYWdlSWQpOwotICAgIFtfZGVs
ZWdhdGUgZGlkVW5yZWdpc3RlckNsaWVudDpjbGllbnRdOwotfQotCi0tIChXZWJJbnNwZWN0b3JD
bGllbnQqKWNsaWVudEZvclBhZ2VJZDoodW5zaWduZWQpcGFnZUlkCi17Ci0gICAgcmV0dXJuIF9w
YWdlQ2xpZW50TWFwLmdldChwYWdlSWQpOwotfQotCi0tIChOU0RpY3Rpb25hcnkgKilpbnNwZWN0
YWJsZVdlYlZpZXdzCi17Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtO
U011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ2FwYWNpdHk6X3BhZ2VDbGllbnRNYXAu
c2l6ZSgpXTsKLQotICAgIEhhc2hNYXA8dW5zaWduZWQsIFdlYkluc3BlY3RvckNsaWVudCo+Ojpp
dGVyYXRvciBlbmQgPSBfcGFnZUNsaWVudE1hcC5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8dW5z
aWduZWQsIFdlYkluc3BlY3RvckNsaWVudCo+OjppdGVyYXRvciBpdCA9IF9wYWdlQ2xpZW50TWFw
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0g
aXQtPnZhbHVlLT5pbnNwZWN0ZWRXZWJWaWV3KCk7Ci0gICAgICAgIGlmICghW3dlYlZpZXcgY2Fu
QmVSZW1vdGVseUluc3BlY3RlZF0pCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBO
U051bWJlciAqcGFnZUlkID0gW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDppdC0+a2V5
XTsKLSAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OndlYlZpZXcgZm9yS2V5OnBhZ2VJZF07
Ci0gICAgfQotCi0gICAgcmV0dXJuIGRpY3Rpb25hcnk7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclJlbW90ZUNoYW5uZWwubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVt
b3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGM4ZmZjZDYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVj
dG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLSNpbXBvcnQgIldlYkluc3BlY3Rv
clJlbW90ZUNoYW5uZWwuaCIKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW1w
b3J0ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9y
U2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCIKLSNpbXBvcnQgIldlYktpdExvZ2dpbmcuaCIKLSNp
bXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotQGludGVyZmFjZSBXZWJJbnNwZWN0b3JSZW1v
dGVDaGFubmVsICgpCi0tIChpZClpbml0V2l0aFJlbW90ZTooV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb24gKilyZW1vdGUgbG9jYWw6KFdlYkluc3BlY3RvckNsaWVudCopbG9jYWw7
Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsCi0KLSsg
KFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKiljcmVhdGVDaGFubmVsRm9yUGFnZUlkOih1bnNp
Z25lZClwYWdlSWQgY29ubmVjdGlvbjooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24gKiljb25uZWN0aW9uCi17Ci0gICAgLy8gR2V0IHRoZSBJbnNwZWN0b3IgY2xpZW50LiBJdHMg
cG9zc2libGUgdGhlIHBhZ2UgY2xvc2VkIGJlZm9yZSB0aGUgcmVtb3RlIGNsaWVudCByZXF1ZXN0
ZWQgaXQuCi0gICAgV2ViSW5zcGVjdG9yQ2xpZW50ICppbnNwZWN0b3JDbGllbnQgPSBbW1dlYklu
c3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XSBjbGllbnRGb3JQYWdlSWQ6cGFn
ZUlkXTsKLSAgICBpZiAoIWluc3BlY3RvckNsaWVudCkgewotICAgICAgICBMT0coUmVtb3RlSW5z
cGVjdG9yLCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbDogUGFnZSByZXF1ZXN0ZWQgbm8gbG9u
Z2VyIGV4aXN0czogKCV1KSIsIHBhZ2VJZCk7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQot
Ci0gICAgLy8gVGhlIFdlYlZpZXcgZG9lcyBub3QgYWxsb3cgcmVtb3RlIGluc3BlY3Rpb24uCi0g
ICAgaWYgKCFpbnNwZWN0b3JDbGllbnQtPmNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQoKSkgewotICAg
ICAgICBMT0coUmVtb3RlSW5zcGVjdG9yLCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbDogV2Vi
VmlldyBmb3IgUGFnZSAoJXUpIGRvZXMgbm90IGFsbG93IHJlbW90ZSBpbnNwZWN0aW9uLiIsIHBh
Z2VJZCk7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgLy8gVGhlIGNoYW5uZWwg
aXMgcmVsZWFzZWQgYnkgd2hpY2hldmVyIHNpZGUgY2xvc2VzIHRoZSBjaGFubmVsLiBUaGUgY2hh
bm5lbCBjb3VsZCBiZSBjbG9zZWQKLSAgICAvLyByZW1vdGVseSBieSB0aGUgc29ja2V0IGNsb3Np
bmcgKHRoZSB1c2VyIG5hdmlnYXRpbmcgYXdheSBmcm9tIHRoZSByZW1vdGUgaW5zcGVjdG9yIHBh
Z2UpLgotICAgIC8vIEl0IGNvdWxkIGJlIGNsb3NlZCBsb2NhbGx5IGJ5IHRoZSBQYWdlIGJlaW5n
IGRlc3Ryb3llZCwgbGlrZSB0aGUgYnJvd3NlciBvciB0YWIgYmVpbmcgY2xvc2VkLgotICAgIC8v
IFNldHRpbmcgdXAgdGhlIGNvbm5lY3Rpb24gY2FuIGZhaWwgaWYgdGhlcmUgaXMgYWxyZWFkeSBh
biBleGlzdGluZyBzZXNzaW9uLgotICAgIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKmNoYW5u
ZWwgPSBbW1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgYWxsb2NdIGluaXRXaXRoUmVtb3RlOmNv
bm5lY3Rpb24gbG9jYWw6aW5zcGVjdG9yQ2xpZW50XTsKLSAgICBpZiAoIWluc3BlY3RvckNsaWVu
dC0+c2V0dXBSZW1vdGVDb25uZWN0aW9uKGNoYW5uZWwpKSB7Ci0gICAgICAgIExPRyhSZW1vdGVJ
bnNwZWN0b3IsICJXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsOiBTZXR0aW5nIHVwIGEgcmVtb3Rl
IHNlc3Npb24gZmFpbGVkLiBQcm9iYWJseSBhbHJlYWR5IGEgbG9jYWwgc2Vzc2lvbi4iKTsKLSAg
ICAgICAgW2NoYW5uZWwgcmVsZWFzZV07Ci0gICAgICAgIGNoYW5uZWwgPSBuaWw7Ci0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNoYW5uZWw7Ci19Ci0KLS0gKGlkKWlu
aXRXaXRoUmVtb3RlOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqKXJlbW90
ZSBsb2NhbDooV2ViSW5zcGVjdG9yQ2xpZW50Kilsb2NhbAotewotICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX3JlbW90
ZSA9IHJlbW90ZTsKLSAgICBfbG9jYWwgPSBsb2NhbDsKLQotICAgIHJldHVybiBzZWxmOwotfQot
Ci0tICh2b2lkKWNsb3NlRnJvbUxvY2FsU2lkZQotewotICAgIC8vIExvY2FsIHNpZGUgd2lsbCBy
ZWxlYXNlLiBNYWtlIHN1cmUgdGhlIHJlbW90ZSBzaWRlIGNsZWFycyBpdHMgcmVmZXJlbmNlIHRv
IHRoZSBjaGFubmVsLgotICAgIFtfcmVtb3RlIGNsZWFyQ2hhbm5lbF07Ci19Ci0KLS0gKHZvaWQp
Y2xvc2VGcm9tUmVtb3RlU2lkZQotewotICAgIC8vIFJlbW90ZSBzaWRlIHdpbGwgcmVsZWFzZS4g
TWFrZSBzdXJlIHRoZSBsb2NhbCBzaWRlIGNsZWFycyBpdHMgcmVmZXJlbmNlIHRvIHRoZSBjaGFu
bmVsLgotICAgIF9sb2NhbC0+dGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKGZhbHNlKTsKLX0KLQot
LSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZQotewotICAg
IFtfcmVtb3RlIHNlbmRNZXNzYWdlVG9Gcm9udGVuZDptZXNzYWdlXTsKLX0KLQotLSAodm9pZClz
ZW5kTWVzc2FnZVRvQmFja2VuZDooTlNTdHJpbmcgKiltZXNzYWdlCi17Ci0gICAgX2xvY2FsLT5z
ZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKTsKLX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
U2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclNlcnZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjY3OTBmLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVj
dG9yU2VydmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xp
ZW50UmVnaXN0cnkuaCIKLQotQGNsYXNzIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uQ29udHJvbGxlcjsKLUBjbGFzcyBXZWJJbnNwZWN0b3JYUENXcmFwcGVyOwotCi1AaW50ZXJm
YWNlIFdlYkluc3BlY3RvclNlcnZlciA6IE5TT2JqZWN0IDxXZWJJbnNwZWN0b3JDbGllbnRSZWdp
c3RyeURlbGVnYXRlPiB7Ci1AcHJpdmF0ZQotICAgIEJPT0wgX2lzRW5hYmxlZDsKLSAgICBCT09M
IF9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247Ci0gICAgaW50IF9ub3RpZnlUb2tlbjsKLSAgICBXZWJJ
bnNwZWN0b3JYUENXcmFwcGVyICpfeHBjQ29ubmVjdGlvbjsKLSAgICBXZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgKl9jb25uZWN0aW9uQ29udHJvbGxlcjsKLX0K
LQotLSAodm9pZClzdGFydDsKLS0gKHZvaWQpc3RvcDsKLS0gKEJPT0wpaXNFbmFibGVkOwotLSAo
dm9pZClwdXNoTGlzdGluZzsKLQotLSAoQk9PTCloYXNBY3RpdmVEZWJ1Z1Nlc3Npb247Ci0tICh2
b2lkKXNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjooQk9PTCloYXNTZXNzaW9uOwotCi0tIChXZWJJ
bnNwZWN0b3JYUENXcmFwcGVyICopeHBjQ29ubmVjdGlvbjsKLQotQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNl
cnZlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM5YTczYS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNl
cnZlci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKLQotI2ltcG9ydCAiV2ViSW5zcGVj
dG9yQ2xpZW50LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmgiCi0j
aW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCIK
LSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCIKLSNpbXBvcnQgIldlYlZpZXdQcml2
YXRlLmgiCi0jaW1wb3J0IDxub3RpZnkuaD4KLSNpbXBvcnQgPHhwYy94cGMuaD4KLQotCi0jcHJh
Z21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIFByaXZhdGUgQ2xhc3MgRGV0YWlscwotCi1AaW50ZXJm
YWNlIFdlYkluc3BlY3RvclNlcnZlciAoKSA8V2ViSW5zcGVjdG9yWFBDV3JhcHBlckRlbGVnYXRl
PgotLSAodm9pZClzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZDsKLS0gKHZvaWQpeHBjQ29ubmVj
dGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb24gcmVjZWl2ZWRNZXNzYWdl
OihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5m
bzsKLS0gKHZvaWQpeHBjQ29ubmVjdGlvbkZhaWxlZDooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAq
KWNvbm5lY3Rpb247Ci1AZW5kCi0KLQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBTZXJ2
ZXIgSW1wbGVtZW50YXRpb24KLQotQGltcGxlbWVudGF0aW9uIFdlYkluc3BlY3RvclNlcnZlcgot
Ci0tIChpZClpbml0Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfY29ubmVjdGlvbkNvbnRyb2xsZXIgPSBbW1dl
Ykluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdp
dGhTZXJ2ZXI6c2VsZl07Ci0KLSAgICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJl
ZFJlZ2lzdHJ5XSBzZXREZWxlZ2F0ZTpzZWxmXTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0t
ICh2b2lkKWRlYWxsb2MKLXsKLSAgICAvLyBTaW5nbGV0b24gaXMgbm90IGV4cGVjdGVkIHRvIGJl
IHJlbGVhc2VkLgotCi0gICAgW3NlbGYgc3RvcF07Ci0KLSAgICBBU1NFUlQoIV94cGNDb25uZWN0
aW9uKTsKLSAgICBbX2Nvbm5lY3Rpb25Db250cm9sbGVyIHJlbGVhc2VdOwotCi0gICAgW1tXZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gc2V0RGVsZWdhdGU6bmlsXTsK
LQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClzdGFydAotewotICAgIGlmIChf
aXNFbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfaXNFbmFibGVkID0gWUVTOwotCi0g
ICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKFdJUlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRp
b24sICZfbm90aWZ5VG9rZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oaW50IHRva2Vu
KSB7Ci0gICAgICAgIFtzZWxmIHNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkXTsKLSAgICB9KTsK
LQotICAgIG5vdGlmeV9wb3N0KFdJUlNlcnZpY2VBdmFpbGFiaWxpdHlDaGVja05vdGlmaWNhdGlv
bik7Ci19Ci0KLS0gKHZvaWQpc3RvcAotewotICAgIGlmICghX2lzRW5hYmxlZCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgX2lzRW5hYmxlZCA9IE5POwotCi0gICAgW19jb25uZWN0aW9uQ29udHJv
bGxlciBjbG9zZUFsbENvbm5lY3Rpb25zXTsKLQotICAgIGlmIChfeHBjQ29ubmVjdGlvbikgewot
ICAgICAgICBbX3hwY0Nvbm5lY3Rpb24gY2xvc2VdOwotICAgICAgICBfeHBjQ29ubmVjdGlvbi5k
ZWxlZ2F0ZSA9IG5pbDsKLSAgICAgICAgW194cGNDb25uZWN0aW9uIHJlbGVhc2VdOwotICAgICAg
ICBfeHBjQ29ubmVjdGlvbiA9IG5pbDsKLSAgICB9Ci0KLSAgICBub3RpZnlfY2FuY2VsKF9ub3Rp
ZnlUb2tlbik7Ci19Ci0KLS0gKEJPT0wpaXNFbmFibGVkCi17Ci0gICAgcmV0dXJuIF9pc0VuYWJs
ZWQ7Ci19Ci0KLS0gKFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKil4cGNDb25uZWN0aW9uCi17Ci0g
ICAgcmV0dXJuIF94cGNDb25uZWN0aW9uOwotfQotCi0tICh2b2lkKXNldHVwWFBDQ29ubmVjdGlv
bklmTmVlZGVkCi17Ci0gICAgaWYgKF94cGNDb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0K
LSAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlvbl9jcmVhdGVf
bWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgMCk7Ci0gICAgaWYgKGNvbm5lY3Rpb24pIHsKLSAgICAgICAgX3hwY0Nvbm5lY3Rpb24gPSBb
W1dlYkluc3BlY3RvclhQQ1dyYXBwZXIgYWxsb2NdIGluaXRXaXRoQ29ubmVjdGlvbjpjb25uZWN0
aW9uXTsKLSAgICAgICAgX3hwY0Nvbm5lY3Rpb24uZGVsZWdhdGUgPSBzZWxmOwotICAgICAgICBb
X3hwY0Nvbm5lY3Rpb24gc2VuZE1lc3NhZ2U6QCJzeW4iIHVzZXJJbmZvOm5pbF07Ci0gICAgICAg
IHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwotICAgIH0KLX0KLQotLSAodm9pZClwdXNoTGlzdGlu
ZwotewotICAgIGlmICghX2lzRW5hYmxlZCB8fCAhX3hwY0Nvbm5lY3Rpb24pCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFtfY29ubmVjdGlvbkNvbnRyb2xsZXIgcHVzaExpc3RpbmddOwotfQotCi0t
IChCT09MKWhhc0FjdGl2ZURlYnVnU2Vzc2lvbgotewotICAgIHJldHVybiBfaGFzQWN0aXZlRGVi
dWdTZXNzaW9uOwotfQotCi0tICh2b2lkKXNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjooQk9PTClo
YXNTZXNzaW9uCi17Ci0gICAgaWYgKF9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24gPT0gaGFzU2Vzc2lv
bikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbiA9IGhhc1Nl
c3Npb247Ci0KLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3RO
b3RpZmljYXRpb25OYW1lOl9XZWJWaWV3UmVtb3RlSW5zcGVjdG9ySGFzU2Vzc2lvbkNoYW5nZWRO
b3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci19Ci0KLQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEg
bWFyayBXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGUgSW1wbGVtZW50YXRpb24KLQotLSAo
dm9pZCl4cGNDb25uZWN0aW9uOihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopeHBjQ29ubmVjdGlv
biByZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGlj
dGlvbmFyeSAqKXVzZXJJbmZvCi17Ci0gICAgQVNTRVJUKHhwY0Nvbm5lY3Rpb24gPT0gX3hwY0Nv
bm5lY3Rpb24pOwotCi0gICAgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSUGVy
bWlzc2lvbkRlbmllZF0pCi0gICAgICAgIFtzZWxmIHN0b3BdOwotICAgIGVsc2UKLSAgICAgICAg
W19jb25uZWN0aW9uQ29udHJvbGxlciByZWNlaXZlZE1lc3NhZ2U6bWVzc2FnZU5hbWUgdXNlcklu
Zm86dXNlckluZm9dOwotfQotCi0tICh2b2lkKXhwY0Nvbm5lY3Rpb25GYWlsZWQ6KFdlYkluc3Bl
Y3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uCi17Ci0gICAgW19jb25uZWN0aW9uQ29udHJvbGxl
ciBjbG9zZUFsbENvbm5lY3Rpb25zXTsKLQotICAgIGlmIChfeHBjQ29ubmVjdGlvbikgewotICAg
ICAgICBfeHBjQ29ubmVjdGlvbi5kZWxlZ2F0ZSA9IG5pbDsKLSAgICAgICAgW194cGNDb25uZWN0
aW9uIHJlbGVhc2VdOwotICAgICAgICBfeHBjQ29ubmVjdGlvbiA9IG5pbDsKLSAgICB9Ci19Ci0K
LQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3Ry
eURlbGVnYXRlIGltcGxlbWVudGF0aW9uCi0KLS0gKHZvaWQpZGlkUmVnaXN0ZXJDbGllbnQ6KFdl
Ykluc3BlY3RvckNsaWVudCopY2xpZW50Ci17Ci0gICAgLy8gV2hlbiBhIFdlYlZpZXcgaXMgcmVn
aXN0ZXJlZCBpdCBoYXMgbm8gY29udGVudC4gQnV0IHNvbWUgV2ViVmlld3MKLSAgICAvLyBuZXZl
ciBsb2FkIGNvbnRlbnQgZnJvbSBhIFVSTCwgc3VjaCBhcyBVSVRleHRGaWVsZHMgb24gaU9TLgot
ICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQotLSAodm9pZClkaWRVbnJlZ2lzdGVyQ2xpZW50
OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudAotewotICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsK
LX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYklu
c3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWFlZDgx
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24ubW0KKysrIC9kZXYvbnVsbApAQCAtMSwx
MzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2Vy
dmVyV2ViVmlld0Nvbm5lY3Rpb24uaCIKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50Lmgi
Ci0jaW1wb3J0ICJXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmgiCi0jaW1wb3J0ICJXZWJJ
bnNwZWN0b3JSZW1vdGVDaGFubmVsLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIK
LSNpbXBvcnQgIldlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5o
IgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIgotI2ltcG9ydCAiV2ViS2l0TG9n
Z2luZy5oIgotI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi1AaW1wbGVtZW50YXRpb24g
V2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24KLQotLSAoaWQpaW5pdFdpdGhDb250
cm9sbGVyOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgKilj
b250cm9sbGVyIGNvbm5lY3Rpb25JZGVudGlmaWVyOihOU1N0cmluZyAqKWNvbm5lY3Rpb25JZGVu
dGlmaWVyIGRlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uIGlkZW50aWZpZXI6KE5T
TnVtYmVyICopaWRlbnRpZmllcgotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYg
KCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX2NvbnRyb2xsZXIgPSBjb250cm9s
bGVyOwotICAgIF9jb25uZWN0aW9uSWRlbnRpZmllciA9IFtjb25uZWN0aW9uSWRlbnRpZmllciBj
b3B5XTsKLSAgICBfZGVzdGluYXRpb24gPSBbZGVzdGluYXRpb24gY29weV07Ci0gICAgX2lkZW50
aWZpZXIgPSBbaWRlbnRpZmllciBjb3B5XTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChC
T09MKXNldHVwQ2hhbm5lbAotewotICAgIEFTU0VSVCghX2NoYW5uZWwpOwotICAgIHVuc2lnbmVk
IHBhZ2VJZCA9IFtfaWRlbnRpZmllciB1bnNpZ25lZEludFZhbHVlXTsKLSAgICBfY2hhbm5lbCA9
IFtXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsIGNyZWF0ZUNoYW5uZWxGb3JQYWdlSWQ6cGFnZUlk
IGNvbm5lY3Rpb246c2VsZl07Ci0gICAgcmV0dXJuIF9jaGFubmVsICE9IG5pbDsKLX0KLQotLSAo
dm9pZClkZWFsbG9jCi17Ci0gICAgQVNTRVJUKCFfY2hhbm5lbCk7Ci0gICAgW19jb25uZWN0aW9u
SWRlbnRpZmllciByZWxlYXNlXTsKLSAgICBbX2Rlc3RpbmF0aW9uIHJlbGVhc2VdOwotICAgIFtf
aWRlbnRpZmllciByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKE5TU3Ry
aW5nICopY29ubmVjdGlvbklkZW50aWZpZXIKLXsKLSAgICByZXR1cm4gW1tfY29ubmVjdGlvbklk
ZW50aWZpZXIgY29weV0gYXV0b3JlbGVhc2VdOwotfQotCi0tIChOU051bWJlciAqKWlkZW50aWZp
ZXIKLXsKLSAgICByZXR1cm4gW1tfaWRlbnRpZmllciBjb3B5XSBhdXRvcmVsZWFzZV07Ci19Ci0K
LQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBJbnRlcmFjdGlvbiB3aXRoIHRoZSBjaGFu
bmVsIHRvIHRoZSBsb2NhbCBpbnNwZWN0b3IgYmFja2VuZAotCi0tICh2b2lkKWNsZWFyQ2hhbm5l
bAotewotICAgIF9jaGFubmVsID0gbmlsOwotICAgIFtfY29udHJvbGxlciBjb25uZWN0aW9uQ2xv
c2luZzpzZWxmXTsKLX0KLQotLSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5n
ICopbWVzc2FnZQotewotICAgIE5TRGF0YSAqZGF0YSA9IFttZXNzYWdlIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBOU0RpY3Rpb25hcnkgKm91dGdvaW5nID0g
W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBkYXRh
LCBXSVJSYXdEYXRhS2V5LAotICAgICAgICBfY29ubmVjdGlvbklkZW50aWZpZXIsIFdJUkNvbm5l
Y3Rpb25JZGVudGlmaWVyS2V5LAotICAgICAgICBfZGVzdGluYXRpb24sIFdJUkRlc3RpbmF0aW9u
S2V5LAotICAgICAgICBuaWxdOwotCi0gICAgW19jb250cm9sbGVyIHNlbmRNZXNzYWdlVG9Gcm9u
dGVuZDpXSVJSYXdEYXRhTWVzc2FnZSB1c2VySW5mbzpvdXRnb2luZ107Ci19Ci0KLS0gKHZvaWQp
c2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZQotewotICAgIEFTU0VSVChf
Y2hhbm5lbCk7Ci0gICAgTE9HKFJlbW90ZUluc3BlY3RvciwgIldlYkluc3BlY3RvclNlcnZlckNv
bm5lY3Rpb246IFJlY2VpdmVkOiB8JXN8IiwgU3RyaW5nKG1lc3NhZ2UpLnV0ZjgoKS5kYXRhKCkp
OwotCi0gICAgW19jaGFubmVsIHNlbmRNZXNzYWdlVG9CYWNrZW5kOm1lc3NhZ2VdOwotfQotCi0K
LSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgSW50ZXJhY3Rpb24gd2l0aCB0aGUgc2VydmVy
IHRvIHRoZSByZW1vdGUgaW5zcGVjdG9yIGZyb250ZW5kCi0KLS0gKHZvaWQpcmVjZWl2ZWREYXRh
OihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNEYXRhICpkYXRhID0gW2RpY3Rp
b25hcnkgb2JqZWN0Rm9yS2V5OldJUlNvY2tldERhdGFLZXldOwotICAgIE5TU3RyaW5nICptZXNz
YWdlID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddOwotICAgIFtzZWxmIHNlbmRNZXNzYWdlVG9CYWNrZW5kOm1lc3NhZ2Vd
OwotICAgIFttZXNzYWdlIHJlbGVhc2VdOwotfQotCi0tICh2b2lkKXJlY2VpdmVkRGlkQ2xvc2U6
KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAgICBpZiAoX2NoYW5uZWwpIHsKLSAgICAg
ICAgW19jaGFubmVsIGNsb3NlRnJvbVJlbW90ZVNpZGVdOwotICAgICAgICBbX2NoYW5uZWwgcmVs
ZWFzZV07Ci0gICAgICAgIF9jaGFubmVsID0gbmlsOwotICAgIH0KLX0KLQotQGVuZAotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbkNvbnRyb2xsZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlYzIx
MzYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9X
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0KKysrIC9kZXYv
bnVsbApAQCAtMSwzODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmgiCi0KLSNpbXBvcnQg
IldlYkluc3BlY3RvckNsaWVudC5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0
cnkuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCIKLSNpbXBvcnQg
IldlYkluc3BlY3RvclNlcnZlci5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb24uaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCIKLSNpbXBv
cnQgIldlYlZpZXcuaCIKLSNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCi0KLSNpZiBQTEFURk9S
TShJT1MpCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWQuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZVRocmVhZFJ1bi5oPgotI2VuZGlmCi0KLQotQGltcGxlbWVudGF0aW9uIFdlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlcgotCi0tIChpZClpbml0V2l0
aFNlcnZlcjooV2ViSW5zcGVjdG9yU2VydmVyICopc2VydmVyCi17Ci0gICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfc2Vy
dmVyID0gc2VydmVyOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwot
ewotICAgIEFTU0VSVCghW19vcGVuQ29ubmVjdGlvbnMgY291bnRdKTsKLSAgICBbX29wZW5Db25u
ZWN0aW9ucyByZWxlYXNlXTsKLQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClj
bG9zZUFsbENvbm5lY3Rpb25zCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFdlYlRocmVhZFJ1
biheewotI2VuZGlmCi0KLSAgICBmb3IgKE5TTnVtYmVyICprZXkgaW4gX29wZW5Db25uZWN0aW9u
cykgewotICAgICAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqY29ubmVj
dGlvbiA9IFtfb3BlbkNvbm5lY3Rpb25zIG9iamVjdEZvcktleTprZXldOwotICAgICAgICBbY29u
bmVjdGlvbiByZWNlaXZlZERpZENsb3NlOm5pbF07Ci0gICAgfQotICAgIFtfb3BlbkNvbm5lY3Rp
b25zIHJlbW92ZUFsbE9iamVjdHNdOwotCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNz
aW9uOk5PXTsKLSAgICB9KTsKLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICB9KTsKLSNlbmRpZgot
fQotCi0tIChOU0RpY3Rpb25hcnkgKilfbGlzdGluZ0ZvcldlYlZpZXc6KFdlYlZpZXcgKil3ZWJW
aWV3IHBhZ2VJZDooTlNOdW1iZXIgKilwYWdlSWQgcmVnaXN0cnk6KFdlYkluc3BlY3RvckNsaWVu
dFJlZ2lzdHJ5ICopcmVnaXN0cnkKLXsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICp3ZWJWaWV3
RGV0YWlscyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwotCi0gICAgLy8gUGFn
ZSBJRC4KLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnBhZ2VJZCBmb3JLZXk6V0lSUGFn
ZUlkZW50aWZpZXJLZXldOwotCi0gICAgLy8gVVJMLgotICAgIE5TU3RyaW5nICp1cmwgPSBbd2Vi
VmlldyBtYWluRnJhbWVVUkxdOwotICAgIGlmICghdXJsKQotICAgICAgICB1cmwgPSBAImFib3V0
OmJsYW5rIjsKLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnVybCBmb3JLZXk6V0lSVVJM
S2V5XTsKLQotICAgIC8vIFRpdGxlLgotICAgIE5TU3RyaW5nICp0aXRsZSA9IFt3ZWJWaWV3IG1h
aW5GcmFtZVRpdGxlXTsKLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnRpdGxlIGZvcktl
eTpXSVJUaXRsZUtleV07Ci0KLSAgICAvLyBbT3B0aW9uYWxdIENvbm5lY3Rpb24gSWRlbnRpZmll
ciAoUmVtb3RlIERlYnVnZ2VyIFVVSUQpLgotICAgIC8vIFtPcHRpb25hbF0gSGFzIExvY2FsIERl
YnVnZ2VyIFNlc3Npb24uCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24g
KmNvbm5lY3Rpb24gPSBbX29wZW5Db25uZWN0aW9ucyBvYmplY3RGb3JLZXk6cGFnZUlkXTsKLSAg
ICBpZiAoY29ubmVjdGlvbikKLSAgICAgICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDpjb25u
ZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlmaWVyIGZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmll
cktleV07Ci0gICAgZWxzZSB7Ci0gICAgICAgIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjdG9y
Q2xpZW50ID0gW3JlZ2lzdHJ5IGNsaWVudEZvclBhZ2VJZDpbcGFnZUlkIHVuc2lnbmVkSW50VmFs
dWVdXTsKLSAgICAgICAgaWYgKGluc3BlY3RvckNsaWVudC0+aGFzTG9jYWxTZXNzaW9uKCkpCi0g
ICAgICAgICAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpZRVNdIGZvcktleTpXSVJIYXNMb2NhbERlYnVnZ2VyS2V5XTsKLSAgICB9Ci0KLSNpZiBQ
TEFURk9STShJT1MpCi0gICAgLy8gW09wdGlvbmFsXSBIb3N0IEFwcGxpY2F0aW9uIElELgotICAg
IE5TU3RyaW5nICpob3N0QXBwbGljYXRpb25JZCA9IFt3ZWJWaWV3IGhvc3RBcHBsaWNhdGlvbkJ1
bmRsZUlkXTsKLSAgICBpZiAoaG9zdEFwcGxpY2F0aW9uSWQpCi0gICAgICAgIFt3ZWJWaWV3RGV0
YWlscyBzZXRPYmplY3Q6aG9zdEFwcGxpY2F0aW9uSWQgZm9yS2V5OldJUkhvc3RBcHBsaWNhdGlv
bklkZW50aWZpZXJLZXldOwotCi0gICAgLy8gW09wdGlvbmFsXSBIb3N0IEFwcGxpY2F0aW9uIE5h
bWUuCi0gICAgTlNTdHJpbmcgKmhvc3RBcHBsaWNhdGlvbk5hbWUgPSBbd2ViVmlldyBob3N0QXBw
bGljYXRpb25OYW1lXTsKLSAgICBpZiAoaG9zdEFwcGxpY2F0aW9uTmFtZSkKLSAgICAgICAgW3dl
YlZpZXdEZXRhaWxzIHNldE9iamVjdDpob3N0QXBwbGljYXRpb25OYW1lIGZvcktleTpXSVJIb3N0
QXBwbGljYXRpb25OYW1lS2V5XTsKLSNlbmRpZgotCi0gICAgLy8gW09wdGlvbmFsXSBSZW1vdGUg
SW5zcGVjdG9yIFdlYlZpZXcgVXNlciBJbmZvIERpY3Rpb25hcnkuCi0gICAgTlNEaWN0aW9uYXJ5
ICpyZW1vdGVJbnNwZWN0b3JVc2VySW5mbyA9IFt3ZWJWaWV3IHJlbW90ZUluc3BlY3RvclVzZXJJ
bmZvXTsKLSAgICBpZiAocmVtb3RlSW5zcGVjdG9yVXNlckluZm8pCi0gICAgICAgIFt3ZWJWaWV3
RGV0YWlscyBzZXRPYmplY3Q6cmVtb3RlSW5zcGVjdG9yVXNlckluZm8gZm9yS2V5OldJUlVzZXJJ
bmZvS2V5XTsKLQotICAgIHJldHVybiB3ZWJWaWV3RGV0YWlsczsKLX0KLQotLSAodm9pZClfcHVz
aExpc3Rpbmc6KE5TU3RyaW5nICopb3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcgotewotI2lm
IFBMQVRGT1JNKElPUykKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotI2VuZGlm
Ci0KLSAgICBfaGFzU2NoZWR1bGVkUHVzaCA9IE5POwotCi0gICAgTlNNdXRhYmxlRGljdGlvbmFy
eSAqcmVzcG9uc2UgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgIFdl
Ykluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ICp3ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSA9IFtX
ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV07Ci0gICAgTlNEaWN0aW9u
YXJ5ICpyZWdpc3RlcmVkVmlld3MgPSBbd2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgaW5zcGVj
dGFibGVXZWJWaWV3c107Ci0gICAgZm9yIChOU051bWJlciAqcGFnZUlkIGluIHJlZ2lzdGVyZWRW
aWV3cykgewotICAgICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3JlZ2lzdGVyZWRWaWV3cyBvYmpl
Y3RGb3JLZXk6cGFnZUlkXTsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICp3ZWJWaWV3RGV0YWlscyA9
IFtzZWxmIF9saXN0aW5nRm9yV2ViVmlldzp3ZWJWaWV3IHBhZ2VJZDpwYWdlSWQgcmVnaXN0cnk6
d2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnldOwotICAgICAgICBbcmVzcG9uc2Ugc2V0T2JqZWN0
OndlYlZpZXdEZXRhaWxzIGZvcktleTpbcGFnZUlkIHN0cmluZ1ZhbHVlXV07Ci0gICAgfQotCi0g
ICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqb3V0Z29pbmcgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdOwotICAgIFtvdXRnb2luZyBzZXRPYmplY3Q6cmVzcG9uc2UgZm9yS2V5OldJ
Ukxpc3RpbmdLZXldOwotICAgIGlmIChvcHRpb25hbENvbm5lY3Rpb25JZGVudGlmaWVyKQotICAg
ICAgICBbb3V0Z29pbmcgc2V0T2JqZWN0Om9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXIgZm9y
S2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKLQotICAgIFtzZWxmIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZDpXSVJMaXN0aW5nTWVzc2FnZSB1c2VySW5mbzpvdXRnb2luZ107Ci0KLSAgICBb
b3V0Z29pbmcgcmVsZWFzZV07Ci0gICAgW3Jlc3BvbnNlIHJlbGVhc2VdOwotfQotCi0tICh2b2lk
KXB1c2hMaXN0aW5nOihOU1N0cmluZyAqKW9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXIKLXsK
LSNpZiBQTEFURk9STShJT1MpCi0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSNl
bmRpZgotCi0gICAgaWYgKF9oYXNTY2hlZHVsZWRQdXNoKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAob3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcikgewotICAgICAgICBbc2VsZiBfcHVz
aExpc3Rpbmc6b3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcl07Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hf
dGltZShESVNQQVRDSF9USU1FX05PVywgMC4yICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0
X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKLSAg
ICAgICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgICAgICBbc2VsZiBfcHVzaExpc3Rpbmc6bmls
XTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0jZWxzZQotICAgIFtzZWxmIHBlcmZvcm1TZWxlY3Rv
cjpAc2VsZWN0b3IoX3B1c2hMaXN0aW5nOikgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTowLjJd
OwotI2VuZGlmCi0KLSAgICBfaGFzU2NoZWR1bGVkUHVzaCA9IFlFUzsKLX0KLQotLSAodm9pZClw
dXNoTGlzdGluZwotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBXZWJUaHJlYWRSdW4oXnsKLSNl
bmRpZgotCi0gICAgW3NlbGYgcHVzaExpc3Rpbmc6bmlsXTsKLQotI2lmIFBMQVRGT1JNKElPUykK
LSAgICB9KTsKLSNlbmRpZgotfQotCi0tICh2b2lkKV9yZWNlaXZlZFNldHVwOihOU0RpY3Rpb25h
cnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0aW9uYXJ5IG9i
amVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFwYWdlSWQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFtkaWN0
aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07Ci0gICAgaWYg
KCFjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNTdHJpbmcg
KnNlbmRlciA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJTZW5kZXJLZXldOwotICAgIGlm
ICghc2VuZGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIV9vcGVuQ29ubmVjdGlvbnMp
Ci0gICAgICAgIF9vcGVuQ29ubmVjdGlvbnMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdOwotCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKmNvbm5l
Y3Rpb24gPSBbW1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGFsbG9jXSBpbml0
V2l0aENvbnRyb2xsZXI6c2VsZiBjb25uZWN0aW9uSWRlbnRpZmllcjpjb25uZWN0aW9uSWRlbnRp
ZmllciBkZXN0aW5hdGlvbjpzZW5kZXIgaWRlbnRpZmllcjpwYWdlSWRdOwotICAgIGlmIChbY29u
bmVjdGlvbiBzZXR1cENoYW5uZWxdKQotICAgICAgICBbX29wZW5Db25uZWN0aW9ucyBzZXRPYmpl
Y3Q6Y29ubmVjdGlvbiBmb3JLZXk6cGFnZUlkXTsKLSAgICBbY29ubmVjdGlvbiByZWxlYXNlXTsK
LQotICAgIGlmIChbX29wZW5Db25uZWN0aW9ucyBjb3VudF0gPT0gMSkgewotICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgW19z
ZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOllFU107Ci0gICAgICAgIH0pOwotICAgIH0K
LQotICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQotLSAodm9pZClfcmVjZWl2ZWREYXRhOihO
U0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0
aW9uYXJ5IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFwYWdl
SWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25u
ZWN0aW9uICpjb25uZWN0aW9uID0gW19vcGVuQ29ubmVjdGlvbnMgb2JqZWN0Rm9yS2V5OnBhZ2VJ
ZF07Ci0gICAgQVNTRVJUKCFjb25uZWN0aW9uIHx8IFtjb25uZWN0aW9uIGlzS2luZE9mQ2xhc3M6
W1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGNsYXNzXV0pOwotICAgIGlmICgh
Y29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW2Nvbm5lY3Rpb24gcmVjZWl2ZWRE
YXRhOmRpY3Rpb25hcnldOwotfQotCi0tICh2b2lkKV9yZWNlaXZlZERpZENsb3NlOihOU0RpY3Rp
b25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0aW9uYXJ5
IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFwYWdlSWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFtk
aWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07Ci0gICAg
aWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24gPSBbX29wZW5Db25uZWN0
aW9ucyBvYmplY3RGb3JLZXk6cGFnZUlkXTsKLSAgICBBU1NFUlQoIWNvbm5lY3Rpb24gfHwgW2Nv
bm5lY3Rpb24gaXNLaW5kT2ZDbGFzczpbV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24gY2xhc3NdXSk7Ci0gICAgaWYgKCFjb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoIVtjb25uZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6Y29ubmVjdGlvbi5j
b25uZWN0aW9uSWRlbnRpZmllcl0pCi0gICAgICAgIHJldHVybjsKLQotICAgIFtjb25uZWN0aW9u
IHJlY2VpdmVkRGlkQ2xvc2U6ZGljdGlvbmFyeV07Ci0gICAgW19vcGVuQ29ubmVjdGlvbnMgcmVt
b3ZlT2JqZWN0Rm9yS2V5OnBhZ2VJZF07Ci0KLSAgICBpZiAoIVtfb3BlbkNvbm5lY3Rpb25zIGNv
dW50XSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeewotICAgICAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOk5PXTsK
LSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgW3NlbGYgcHVzaExpc3RpbmddOwotfQotCi0tICh2
b2lkKV9yZWNlaXZlZEdldExpc3Rpbmc6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAg
ICBbc2VsZiBwdXNoTGlzdGluZzpbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSQ29ubmVjdGlv
bklkZW50aWZpZXJLZXldXTsKLX0KLQotLSAodm9pZClfcmVjZWl2ZWRJbmRpY2F0ZTooTlNEaWN0
aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbZGljdGlvbmFy
eSBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOwotICAgIGlmICghcGFnZUlkKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tbV2ViSW5zcGVjdG9y
Q2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIGluc3BlY3RhYmxlV2ViVmlld3NdIG9iamVj
dEZvcktleTpwYWdlSWRdOwotICAgIGlmICghd2ViVmlldykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgQk9PTCBpbmRpY2F0ZUVuYWJsZWQgPSBbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldJUklu
ZGljYXRlRW5hYmxlZEtleV0gYm9vbFZhbHVlXTsKLSAgICBbd2ViVmlldyBzZXRJbmRpY2F0aW5n
Rm9yUmVtb3RlSW5zcGVjdG9yOmluZGljYXRlRW5hYmxlZF07Ci19Ci0KLS0gKHZvaWQpX3JlY2Vp
dmVkQ29ubmVjdGlvbkRpZWQ6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAgICBOU1N0
cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lS
Q29ubmVjdGlvbklkZW50aWZpZXJLZXldOwotICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIE5TRGljdGlvbmFyeSAqY29ubmVjdGlvbnNDb3B5ID0g
W1tfb3BlbkNvbm5lY3Rpb25zIGNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICBmb3IgKE5TTnVtYmVy
ICprZXkgaW4gY29ubmVjdGlvbnNDb3B5KSB7Ci0gICAgICAgIFdlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uICpjb25uZWN0aW9uID0gW2Nvbm5lY3Rpb25zQ29weSBvYmplY3RGb3JL
ZXk6a2V5XTsKLSAgICAgICAgaWYgKFtjb25uZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlmaWVyIGlz
RXF1YWxUb1N0cmluZzpjb25uZWN0aW9uSWRlbnRpZmllcl0pIHsKLSAgICAgICAgICAgIFtjb25u
ZWN0aW9uIHJlY2VpdmVkRGlkQ2xvc2U6bmlsXTsKLSAgICAgICAgICAgIFtfb3BlbkNvbm5lY3Rp
b25zIHJlbW92ZU9iamVjdEZvcktleTprZXldOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYg
KCFbX29wZW5Db25uZWN0aW9ucyBjb3VudF0pIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgIFtfc2VydmVyIHNldEhhc0Fj
dGl2ZURlYnVnU2Vzc2lvbjpOT107Ci0gICAgICAgIH0pOwotICAgIH0KLX0KLQotLSAodm9pZCly
ZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGljdGlv
bmFyeSAqKXVzZXJJbmZvCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFdlYlRocmVhZFJ1bihe
ewotI2VuZGlmCi0KLSAgICBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJTb2Nr
ZXRTZXR1cE1lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWRTZXR1cDp1c2VySW5mb107
Ci0gICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJTb2NrZXREYXRh
TWVzc2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZERhdGE6dXNlckluZm9dOwotICAgIGVs
c2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSV2ViUGFnZUNsb3NlTWVzc2Fn
ZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZERpZENsb3NlOnVzZXJJbmZvXTsKLSAgICBlbHNl
IGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkFwcGxpY2F0aW9uR2V0TGlzdGlu
Z01lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWRHZXRMaXN0aW5nOnVzZXJJbmZvXTsK
LSAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkluZGljYXRlTWVz
c2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZEluZGljYXRlOnVzZXJJbmZvXTsKLSAgICBl
bHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkNvbm5lY3Rpb25EaWVkTWVz
c2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZENvbm5lY3Rpb25EaWVkOnVzZXJJbmZvXTsK
LSAgICBlbHNlCi0gICAgICAgIE5TTG9nKEAiVW5yZWNvZ25pemVkIE1lc3NhZ2U6ICVAIiwgbWVz
c2FnZU5hbWUpOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIH0pOwotI2VuZGlmCi19Ci0KLQot
I3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbiBpbnRlcmZhY2UKLQotLSAodm9pZCljb25uZWN0aW9uQ2xvc2luZzooV2ViSW5zcGVj
dG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKiljb25uZWN0aW9uCi17Ci0jaWYgUExBVEZPUk0o
SU9TKQotICAgIFdlYlRocmVhZFJ1biheewotI2VuZGlmCi0KLSAgICBbX29wZW5Db25uZWN0aW9u
cyByZW1vdmVPYmplY3RGb3JLZXk6W2Nvbm5lY3Rpb24gaWRlbnRpZmllcl1dOwotCi0gICAgaWYg
KCFbX29wZW5Db25uZWN0aW9ucyBjb3VudF0pIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgIFtfc2VydmVyIHNldEhhc0Fj
dGl2ZURlYnVnU2Vzc2lvbjpOT107Ci0gICAgICAgIH0pOwotICAgIH0KLQotI2lmIFBMQVRGT1JN
KElPUykKLSAgICB9KTsKLSNlbmRpZgotfQotCi0KLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1h
cmsgVGhyZWFkIFNhZmUgc2VuZCBtZXNzYWdlIHRvIGZyb250ZW5kCi0KLS0gKHZvaWQpc2VuZE1l
c3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rp
b25hcnkgKil1c2VySW5mbwotewotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBmcm9tIGVpdGhl
ciB0aGUgV2ViVGhyZWFkIG9yIHRoZSBNYWluVGhyZWFkLiBUaGlzCi0gICAgLy8gcmVxdWlyZXMg
YWNjZXNzIHRvIHRoZSBXZWJJbnNwZWN0b3JTZXJ2ZXIncyBYUEMgQ29ubmVjdGlvbiwgd2hpY2gK
LSAgICAvLyBpcyBtYW5hZ2VkIG9uIHRoZSBtYWluIHRocmVhZC4gU28sIGRpc3BhdGNoIHRvIHRo
ZSBtYWluIHRocmVhZCB0bwotICAgIC8vIHNhZmVseSB1c2UgdGhlIHhwYyBjb25uZWN0aW9uLgot
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAg
IFtbX3NlcnZlciB4cGNDb25uZWN0aW9uXSBzZW5kTWVzc2FnZTptZXNzYWdlTmFtZSB1c2VySW5m
bzp1c2VySW5mb107Ci0gICAgfSk7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBw
ZXIubSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
WFBDV3JhcHBlci5tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmIxZTAyLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVj
dG9yWFBDV3JhcHBlci5tCisrKyAvZGV2L251bGwKQEAgLTEsMTYyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCIKLQotI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KLQotI2lmIF9faGFzX2luY2x1ZGUoPENvcmVGb3VuZGF0aW9u
L0NGWFBDQnJpZGdlLmg+KQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGWFBDQnJpZGdlLmg+
Ci0jZWxzZQotZXh0ZXJuIHhwY19vYmplY3RfdCBfQ0ZYUENDcmVhdGVYUENNZXNzYWdlV2l0aENG
T2JqZWN0KENGVHlwZVJlZik7Ci1leHRlcm4gQ0ZUeXBlUmVmIF9DRlhQQ0NyZWF0ZUNGT2JqZWN0
RnJvbVhQQ01lc3NhZ2UoeHBjX29iamVjdF90KTsKLSNlbmRpZgotCi0vLyBDb25zdGFudHMgcHJp
dmF0ZSB0byB0aGlzIGZpbGUgZm9yIG1lc3NhZ2Ugc2VyaWFsaXphdGlvbiBvbiBib3RoIGVuZHMu
Ci0jZGVmaW5lIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJNZXNzYWdlTmFtZUtleSBAIm1lc3NhZ2VO
YW1lIgotI2RlZmluZSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyVXNlckluZm9LZXkgQCJ1c2VySW5m
byIKLSNkZWZpbmUgV2ViSW5zcGVjdG9yWFBDV3JhcHBlclNlcmlhbGl6ZWRNZXNzYWdlS2V5ICJt
c2dEYXRhIgotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKCkKLS0gKHZvaWQp
X2hhbmRsZUV2ZW50Oih4cGNfb2JqZWN0X3Qpb2JqZWN0OwotQGVuZAotCi0KLUBpbXBsZW1lbnRh
dGlvbiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyCi0KLUBkeW5hbWljIGF2YWlsYWJsZTsKLQotQHN5
bnRoZXNpemUgZGVsZWdhdGUgPSBfZGVsZWdhdGU7Ci1Ac3ludGhlc2l6ZSBjb25uZWN0aW9uID0g
X2Nvbm5lY3Rpb247Ci1Ac3ludGhlc2l6ZSB0YWcgPSBfdGFnOwotCi0tIChXZWJJbnNwZWN0b3JY
UENXcmFwcGVyICopaW5pdFdpdGhDb25uZWN0aW9uOih4cGNfY29ubmVjdGlvbl90KWNvbm5lY3Rp
b24KLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAg
cmV0dXJuIG5pbDsKLQotICAgIF9jb25uZWN0aW9uID0geHBjX3JldGFpbihjb25uZWN0aW9uKTsK
LSAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKF9jb25uZWN0aW9uLCBkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxl
cihfY29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3Qgb2JqZWN0KSB7IFtzZWxmIF9oYW5kbGVFdmVu
dDpvYmplY3RdOyB9KTsKLSAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUoX2Nvbm5lY3Rpb24pOwot
Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpY2xvc2UKLXsKLSAgICBpZiAoX2Nvbm5l
Y3Rpb24pIHsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fY2FuY2VsKF9jb25uZWN0aW9uKTsKLSAg
ICAgICAgeHBjX3JlbGVhc2UoX2Nvbm5lY3Rpb24pOwotICAgICAgICBfY29ubmVjdGlvbiA9IE5V
TEw7Ci0gICAgfQotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc2VsZiBjbG9zZV07Ci0g
ICAgW190YWcgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tIChOU0RpY3Rp
b25hcnkgKilfZGVzZXJpYWxpemVNZXNzYWdlOih4cGNfb2JqZWN0X3Qpb2JqZWN0Ci17Ci0gICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNfZ2V0X3R5cGUob2JqZWN0KSA9PSBYUENfVFlQRV9ESUNU
SU9OQVJZLCAiR290IHVuZXhwZWN0ZWQgb2JqZWN0IGZyb20gYW4geHBjIGNvbm5lY3Rpb24iKTsK
LSAgICBpZiAoeHBjX2dldF90eXBlKG9iamVjdCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHhwY19vYmplY3RfdCB4cGNEaWN0aW9uYXJ5ID0geHBj
X2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG9iamVjdCwgV2ViSW5zcGVjdG9yWFBDV3JhcHBlclNlcmlh
bGl6ZWRNZXNzYWdlS2V5KTsKLSAgICBpZiAoIXhwY0RpY3Rpb25hcnkgfHwgeHBjX2dldF90eXBl
KHhwY0RpY3Rpb25hcnkpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpIHsKLSAgICAgICAgLy8gVGhp
cyBpc24ndCBhIG1lc3NhZ2UgdHlwZSB0aGF0IHdlIGtub3cgaG93IHRvIGRlc2VyaWFsaXplLCBz
byB3ZSBsZXQgb3VyIGRlbGVnYXRlIHdvcnJ5IGFib3V0IGl0LgotICAgICAgICBpZiAoW19kZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHhwY0Nvbm5lY3Rpb246dW5oYW5kbGVk
TWVzc2FnZTopXSkKLSAgICAgICAgICAgIFtfZGVsZWdhdGUgeHBjQ29ubmVjdGlvbjpzZWxmIHVu
aGFuZGxlZE1lc3NhZ2U6b2JqZWN0XTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAg
ICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBfQ0ZYUENDcmVhdGVDRk9iamVjdEZyb21YUENN
ZXNzYWdlKHhwY0RpY3Rpb25hcnkpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGljdGlvbmFy
eSwgIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIpOwotICAgIGlmICghZGljdGlv
bmFyeSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbZGljdGlvbmFyeSBhdXRv
cmVsZWFzZV07Ci19Ci0KLS0gKHZvaWQpX2hhbmRsZUV2ZW50Oih4cGNfb2JqZWN0X3Qpb2JqZWN0
Ci17Ci0gICAgaWYgKCFfY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHhw
Y19nZXRfdHlwZShvYmplY3QpID09IFhQQ19UWVBFX0VSUk9SKSB7Ci0gICAgICAgIFtfZGVsZWdh
dGUgeHBjQ29ubmVjdGlvbkZhaWxlZDpzZWxmXTsKLSAgICAgICAgW3NlbGYgY2xvc2VdOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFfZGVsZWdhdGUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIE5TRGljdGlvbmFyeSAqZGF0YURpY3Rpb25hcnkgPSBbc2VsZiBfZGVzZXJpYWxp
emVNZXNzYWdlOm9iamVjdF07Ci0gICAgaWYgKCFkYXRhRGljdGlvbmFyeSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBbZGF0YURpY3Rpb25hcnkgb2JqZWN0Rm9y
S2V5OldlYkluc3BlY3RvclhQQ1dyYXBwZXJNZXNzYWdlTmFtZUtleV07Ci0gICAgTlNEaWN0aW9u
YXJ5ICp1c2VySW5mbyA9IFtkYXRhRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V2ViSW5zcGVjdG9y
WFBDV3JhcHBlclVzZXJJbmZvS2V5XTsKLSAgICBbX2RlbGVnYXRlIHhwY0Nvbm5lY3Rpb246c2Vs
ZiByZWNlaXZlZE1lc3NhZ2U6bWVzc2FnZSB1c2VySW5mbzp1c2VySW5mb107Ci19Ci0KLS0gKHZv
aWQpc2VuZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGljdGlv
bmFyeSAqKXVzZXJJbmZvCi17Ci0gICAgaWYgKCFfY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om1lc3NhZ2VOYW1lIGZvcktleTpXZWJJbnNwZWN0
b3JYUENXcmFwcGVyTWVzc2FnZU5hbWVLZXldOwotICAgIGlmICh1c2VySW5mbykKLSAgICAgICAg
W2RpY3Rpb25hcnkgc2V0T2JqZWN0OnVzZXJJbmZvIGZvcktleTpXZWJJbnNwZWN0b3JYUENXcmFw
cGVyVXNlckluZm9LZXldOwotCi0gICAgeHBjX29iamVjdF90IHhwY0RpY3Rpb25hcnkgPSBfQ0ZY
UENDcmVhdGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KChDRkRpY3Rpb25hcnlSZWYpZGljdGlvbmFy
eSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9uYXJ5ICYmIHhwY19nZXRfdHlw
ZSh4cGNEaWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSB4cGMgbWVzc2FnZSIpOwotICAgIGlmICgheHBjRGljdGlvbmFyeSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgeHBjX29iamVjdF90IG1zZyA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShOVUxM
LCBOVUxMLCAwKTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobXNnLCBXZWJJbnNwZWN0
b3JYUENXcmFwcGVyU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0RpY3Rpb25hcnkpOwotICAgIHhw
Y19yZWxlYXNlKHhwY0RpY3Rpb25hcnkpOwotCi0gICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNz
YWdlKF9jb25uZWN0aW9uLCBtc2cpOwotCi0gICAgeHBjX3JlbGVhc2UobXNnKTsKLX0KLQotLSAo
Qk9PTClhdmFpbGFibGUKLXsKLSAgICByZXR1cm4gX2Nvbm5lY3Rpb24gIT0gTlVMTDsKLX0KLQot
QGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5leHAg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQuZXhwCmluZGV4IGYzZmQyZjQuLjU2ZjgxNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5leHAKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViS2l0LmV4cApAQCAtMjIsNyArMjIsNiBAQAogLm9iamNfY2xhc3NfbmFtZV9XZWJI
aXN0b3J5SXRlbQogLm9iamNfY2xhc3NfbmFtZV9XZWJJY29uRGF0YWJhc2UKIC5vYmpjX2NsYXNz
X25hbWVfV2ViSW5zcGVjdG9yCi0ub2JqY19jbGFzc19uYW1lX1dlYkluc3BlY3RvclhQQ1dyYXBw
ZXIKIC5vYmpjX2NsYXNzX25hbWVfV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsCiAub2JqY19j
bGFzc19uYW1lX1dlYktleUdlbmVyYXRvcgogLm9iamNfY2xhc3NfbmFtZV9XZWJLaXRTdGF0aXN0
aWNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZjVkMzgzNS4uMTg1YWRl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjEyLDcgKzIxMiw2IEBA
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotI2ltcG9ydCAiV2ViSW5z
cGVjdG9yU2VydmVyLmgiCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV2ViSW5kaWNhdGVM
YXllci5oIgogI2VuZGlmCkBAIC0zOTEsMTAgKzM5MCw2IEBAIHN0YXRpYyBXZWJDYWNoZU1vZGVs
IHNfY2FjaGVNb2RlbCA9IFdlYkNhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKIHN0YXRpYyBjb25z
dCBjaGFyIHdlYlZpZXdJc09wZW5bXSA9ICJBdCBsZWFzdCBvbmUgV2ViVmlldyBpcyBzdGlsbCBv
cGVuLiI7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotc3RhdGljIEJP
T0wgYXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yID0gWUVTOwotI2VuZGlmCi0KIEBpbnRlcmZhY2Ug
TlNPYmplY3QgKFdlYlZhbGlkYXRlV2l0aG91dERlbGVnYXRlKQogLSAoQk9PTCl2YWxpZGF0ZVVz
ZXJJbnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOihpZCA8TlNWYWxpZGF0ZWRVc2VySW50ZXJm
YWNlSXRlbT4paXRlbTsKIEBlbmQKQEAgLTUyNSw2ICs1MjAsNyBAQCBOU1N0cmluZyAqX1dlYlZp
ZXdEaWRTdGFydEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdOb3RpZmljYXRpb24gPSBAIl9XZWJWaWV3
RGlkU3RhcgogTlNTdHJpbmcgKiBjb25zdCBXZWJWaWV3V2lsbENsb3NlTm90aWZpY2F0aW9uID0g
QCJXZWJWaWV3V2lsbENsb3NlTm90aWZpY2F0aW9uIjsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQorLy8gRklYTUU6IExlZ2FjeSwgcmVtb3ZlIHRoaXMsIHN3aXRjaCB0byBzb21ldGhp
bmcgZnJvbSBKYXZhU2NyaXB0Q29yZSBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlci4K
IE5TU3RyaW5nICpfV2ViVmlld1JlbW90ZUluc3BlY3Rvckhhc1Nlc3Npb25DaGFuZ2VkTm90aWZp
Y2F0aW9uID0gQCJfV2ViVmlld1JlbW90ZUluc3BlY3Rvckhhc1Nlc3Npb25DaGFuZ2VkTm90aWZp
Y2F0aW9uIjsKICNlbmRpZgogCkBAIC03NjYsMTEgKzc2Miw2IEBAIHN0YXRpYyBib29sIHNob3Vs
ZFVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IoKQogICAgICAgICAKICAg
ICAgICAgU2V0dGluZ3M6OnNldFNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0
dGVycyhzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKSk7CiAKLSNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAgICAgaWYgKGF1dG9TdGFydFJlbW90ZUlu
c3BlY3RvcikKLSAgICAgICAgICAgIFtXZWJWaWV3IF9lbmFibGVSZW1vdGVJbnNwZWN0b3JdOwot
I2VuZGlmCi0KICAgICAgICAgZGlkT25lVGltZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICB9
CiAKQEAgLTc5OCw2ICs3ODksMTAgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlTGVnYWN5QmFja2dy
b3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpCiAgICAgV2ViQ29yZTo6cHJvdmlkZVVzZXJNZWRp
YVRvKF9wcml2YXRlLT5wYWdlLCBuZXcgV2ViVXNlck1lZGlhQ2xpZW50KHNlbGYpKTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKHRydWUpOworI2VuZGlmCisKICAgICBfcHJpdmF0ZS0+
cGFnZS0+c2V0Q2FuU3RhcnRNZWRpYShbc2VsZiB3aW5kb3ddKTsKICAgICBfcHJpdmF0ZS0+cGFn
ZS0+c2V0dGluZ3MoKS5zZXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoW1tzZWxmIHByZWZlcmVu
Y2VzXSBfbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoXSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dHRpbmdzKCkuc2V0VXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcihzaG91
bGRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKCkpOwpAQCAtMTI2Nyw2
MCArMTI2Miw0MiBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRUZWFyZG93bkVuYWJsZWQoKQog
fQogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0rIChXZWJJbnNwZWN0b3JTZXJ2ZXIg
KilzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXIKLXsKLSAgICBzdGF0aWMgV2ViSW5zcGVjdG9yU2Vy
dmVyICpzaGFyZWRTZXJ2ZXIgPSBbW1dlYkluc3BlY3RvclNlcnZlciBhbGxvY10gaW5pdF07Ci0g
ICAgcmV0dXJuIHNoYXJlZFNlcnZlcjsKLX0KLQogKyAodm9pZClfZW5hYmxlUmVtb3RlSW5zcGVj
dG9yCiB7Ci0gICAgW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gc3RhcnRdOwor
ICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JTZXJ2ZXIgaW50ZXJmYWNlIG9yIHJlbW92ZSBpdC4KIH0KIAogKyAodm9pZClfZGlzYWJsZVJl
bW90ZUluc3BlY3RvcgogewotICAgIFtbV2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJd
IHN0b3BdOworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3JTZXJ2ZXIgaW50ZXJmYWNlIG9yIHJlbW92ZSBpdC4KIH0KIAogKyAodm9pZClf
ZGlzYWJsZUF1dG9TdGFydFJlbW90ZUluc3BlY3RvcgogewotICAgIGF1dG9TdGFydFJlbW90ZUlu
c3BlY3RvciA9IE5POworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIgaW50ZXJmYWNlIG9yIHJlbW92ZSBpdC4KIH0KIAogKyAo
Qk9PTClfaXNSZW1vdGVJbnNwZWN0b3JFbmFibGVkCiB7Ci0gICAgcmV0dXJuIFtbV2ViVmlldyBz
aGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIGlzRW5hYmxlZF07CisgICAgLy8gRklYTUU6IE1vdmUg
dGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlciBpbnRlcmZhY2Ug
b3IgcmVtb3ZlIGl0LgorICAgIHJldHVybiBOTzsKIH0KIAogKyAoQk9PTClfaGFzUmVtb3RlSW5z
cGVjdG9yU2Vzc2lvbgogewotICAgIHJldHVybiBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9y
U2VydmVyXSBoYXNBY3RpdmVEZWJ1Z1Nlc3Npb25dOwotfQotCi0tIChCT09MKWNhbkJlUmVtb3Rl
bHlJbnNwZWN0ZWQKLXsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIGlmICghW1tzZWxmIHByZWZl
cmVuY2VzXSBkZXZlbG9wZXJFeHRyYXNFbmFibGVkXSkKLSAgICAgICAgcmV0dXJuIE5POwotI2Vu
ZGlmCi0KLSAgICByZXR1cm4gW3NlbGYgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbl07CisgICAgLy8g
RklYTUU6IE1vdmUgdGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZl
ciBpbnRlcmZhY2Ugb3IgcmVtb3ZlIGl0LgorICAgIHJldHVybiBOTzsKIH0KIAogLSAoQk9PTClh
bGxvd3NSZW1vdGVJbnNwZWN0aW9uCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5hbGxvd3NSZW1v
dGVJbnNwZWN0aW9uOworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgQVBJLgorICAg
IHJldHVybiBOTzsKIH0KIAogLSAodm9pZClzZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uOihCT09M
KWFsbG93CiB7Ci0gICAgaWYgKF9wcml2YXRlLT5hbGxvd3NSZW1vdGVJbnNwZWN0aW9uID09IGFs
bG93KQotICAgICAgICByZXR1cm47Ci0KLSAgICBfcHJpdmF0ZS0+YWxsb3dzUmVtb3RlSW5zcGVj
dGlvbiA9IGFsbG93OwotCi0gICAgW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0g
cHVzaExpc3RpbmddOworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgQVBJLgogfQog
CiAtICh2b2lkKXNldEluZGljYXRpbmdGb3JSZW1vdGVJbnNwZWN0b3I6KEJPT0wpZW5hYmxlZApA
QCAtMTM0MCwyOSArMTMxNywxNSBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRUZWFyZG93bkVu
YWJsZWQoKQogICAgICAgICBfcHJpdmF0ZS0+aW5kaWNhdGVMYXllciA9IG5pbDsKICAgICB9CiAj
ZWxzZQotICAgIC8vIEZJWE1FOiBOZWVkcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAvLyBGSVhNRTog
TmVlZHMgaW1wbGVtZW50YXRpb24gb3IgcHV0IGFuIGltcGxlbWVudGF0aW9uIGluIFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXkuCiAjZW5kaWYKIH0KIAotLSAodm9pZClzZXRSZW1vdGVJbnNwZWN0
b3JVc2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm8KLXsKLSAgICBpZiAoW19wcml2YXRl
LT5yZW1vdGVJbnNwZWN0b3JVc2VySW5mbyBpc0VxdWFsVG9EaWN0aW9uYXJ5OnVzZXJJbmZvXSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgW19wcml2YXRlLT5yZW1vdGVJbnNwZWN0b3JVc2VySW5m
byByZWxlYXNlXTsKLSAgICBfcHJpdmF0ZS0+cmVtb3RlSW5zcGVjdG9yVXNlckluZm8gPSBbdXNl
ckluZm8gY29weV07Ci0KLSAgICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBw
dXNoTGlzdGluZ107Ci19Ci0KLS0gKE5TRGljdGlvbmFyeSAqKXJlbW90ZUluc3BlY3RvclVzZXJJ
bmZvCi17Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5yZW1vdGVJbnNwZWN0b3JVc2VySW5mbzsKLX0K
LQogI2lmIFBMQVRGT1JNKElPUykKIC0gKHZvaWQpc2V0SG9zdEFwcGxpY2F0aW9uQnVuZGxlSWQ6
KE5TU3RyaW5nICopYnVuZGxlSWQgbmFtZTooTlNTdHJpbmcgKiluYW1lCiB7CisgICAgLy8gRklY
TUU6IFRoaXMgaGFzIG5vdCB5ZXQgYmVlbiBwb3J0ZWQgdG8gSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIuCisKICAgICBpZiAoIVtfcHJpdmF0ZS0+aG9zdEFwcGxpY2F0aW9uQnVuZGxl
SWQgaXNFcXVhbFRvU3RyaW5nOmJ1bmRsZUlkXSkgewogICAgICAgICBbX3ByaXZhdGUtPmhvc3RB
cHBsaWNhdGlvbkJ1bmRsZUlkIHJlbGVhc2VdOwogICAgICAgICBfcHJpdmF0ZS0+aG9zdEFwcGxp
Y2F0aW9uQnVuZGxlSWQgPSBbYnVuZGxlSWQgY29weV07CkBAIC0yMTE4LDkgKzIwODEsNiBAQCBz
dGF0aWMgaW5saW5lIElNUCBnZXRNZXRob2QoaWQgbywgU0VMIHMpCiAgICAgaWYgKGZyYW1lID09
IFtzZWxmIG1haW5GcmFtZV0pCiAgICAgICAgIFtzZWxmIF9kaWRDaGFuZ2VWYWx1ZUZvcktleTog
X1dlYk1haW5GcmFtZVVSTEtleV07CiAgICAgW05TQXBwIHNldFdpbmRvd3NOZWVkVXBkYXRlOllF
U107Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgW1tXZWJWaWV3IHNoYXJlZFdl
Ykluc3BlY3RvclNlcnZlcl0gcHVzaExpc3RpbmddOwotI2VuZGlmCiB9CiAKIC0gKHZvaWQpX2Rp
ZEZpbmlzaExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IDI0NTQxNTguLjRjMjY3MmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKQEAgLTIwOCw4ICsyMDgsNiBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBCT09MIGFsbG93c1Jl
bW90ZUluc3BlY3Rpb247Ci0gICAgTlNEaWN0aW9uYXJ5ICpyZW1vdGVJbnNwZWN0b3JVc2VySW5m
bzsKICNpZiBQTEFURk9STShJT1MpCiAgICAgV2ViSW5kaWNhdGVMYXllciAqaW5kaWNhdGVMYXll
cjsKICAgICBOU1N0cmluZyAqaG9zdEFwcGxpY2F0aW9uQnVuZGxlSWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCAwMzQzYTljLi5lYjBiY2JkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KQEAgLTk5LDEwICs5OSw2IEBAIFdl
YlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcihMYXll
ckZsdXNoQ29udHJvbGxlciogZmx1CiAgICAgZGFzaGJvYXJkQmVoYXZpb3JBbGxvd1doZWVsU2Ny
b2xsaW5nID0gWUVTOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAg
ICBhbGxvd3NSZW1vdGVJbnNwZWN0aW9uID0gWUVTOwotI2VuZGlmCi0KICAgICBzaG91bGRDbG9z
ZVdpdGhXaW5kb3cgPSBvYmpjX2NvbGxlY3RpbmdFbmFibGVkKCk7CiAKICAgICBwbHVnaW5EYXRh
YmFzZUNsaWVudENvdW50Kys7CkBAIC0xMzUsNyArMTMxLDYgQEAgV2ViVmlld0xheWVyRmx1c2hT
Y2hlZHVsZXI6OldlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyKExheWVyRmx1c2hDb250cm9sbGVy
KiBmbHUKICAgICBbbWVkaWFTdHlsZSByZWxlYXNlXTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQotICAgIFtyZW1vdGVJbnNwZWN0b3JVc2VySW5mbyByZWxlYXNlXTsKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgW2luZGljYXRlTGF5ZXIgcmVsZWFzZV07CiAgICAgW2hvc3RBcHBsaWNh
dGlvbkJ1bmRsZUlkIHJlbGVhc2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0ludGVybmFsLmgKaW5kZXggMjZjODk4Ni4uY2Q1NGYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC02MSw5ICs2MSw2IEBAIHN0cnVjdCBEaWN0
YXRpb25BbHRlcm5hdGl2ZTsKIEBjbGFzcyBXZWJCYXNlUGx1Z2luUGFja2FnZTsKIEBjbGFzcyBX
ZWJEb3dubG9hZDsKIEBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0OwotI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQotQGNsYXNzIFdlYkluc3BlY3RvclNlcnZlcjsKLSNlbmRpZgogCiAjaWZkZWYg
X19jcGx1c3BsdXMKIApAQCAtMjE3LDEwICsyMTQsNiBAQCBPQkpDX0NMQVNTIE5TVGV4dEFsdGVy
bmF0aXZlczsKIC0gKHZvaWQpX2Z1bGxTY3JlZW5SZW5kZXJlckNoYW5nZWQ6KFdlYkNvcmU6OlJl
bmRlckJveCopcmVuZGVyZXI7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotKyAoV2ViSW5zcGVjdG9yU2VydmVyICopc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyOwotI2Vu
ZGlmCi0KIC8vIENvbnZlcnNpb24gZnVuY3Rpb25zIGJldHdlZW4gV2ViQ29yZSByb290IHZpZXcg
Y29vcmRpbmF0ZXMgYW5kIHdlYiB2aWV3IGNvb3JkaW5hdGVzLgogLSAoTlNQb2ludClfY29udmVy
dFBvaW50RnJvbVJvb3RWaWV3OihOU1BvaW50KXBvaW50OwogLSAoTlNSZWN0KV9jb252ZXJ0UmVj
dEZyb21Sb290VmlldzooTlNSZWN0KXJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdQcml2YXRlLmgKaW5kZXggMmRkZmRlZC4uNTAxZjlhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAtNzcsNiArNzcsNyBAQCBleHRlcm4gTlNT
dHJpbmcgKldlYkVsZW1lbnRJc0luU2Nyb2xsQmFyS2V5OwogZXh0ZXJuIE5TU3RyaW5nICpfV2Vi
Vmlld0RpZFN0YXJ0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ05vdGlmaWNhdGlvbjsKIAogI2lmIEVO
QUJMRV9SRU1PVEVfSU5TUEVDVE9SCisvLyBGSVhNRTogTGVnYWN5LCByZW1vdmUgdGhpcywgc3dp
dGNoIHRvIHNvbWV0aGluZyBmcm9tIEphdmFTY3JpcHRDb3JlIEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yU2VydmVyLgogLy8gTm90aWZpY2F0aW9uIHdoZW4gdGhlIG51bWJlciBvZiBpbnNwZWN0
b3Igc2Vzc2lvbnMgYmVjb21lcyBub24temVybyBvciByZXR1cm5zIHRvIDAuCiAvLyBDaGVjayB0
aGUgY3VycmVudCBzdGF0ZSB2aWEgLVtXZWJWaWV3IF9oYXNSZW1vdGVJbnNwZWN0b3JTZXNzaW9u
XS4KIGV4dGVybiBOU1N0cmluZyAqX1dlYlZpZXdSZW1vdGVJbnNwZWN0b3JIYXNTZXNzaW9uQ2hh
bmdlZE5vdGlmaWNhdGlvbjsKQEAgLTI2MywxNSArMjY0LDYgQEAgdHlwZWRlZiBlbnVtIHsKICsg
KEJPT0wpX2hhc1JlbW90ZUluc3BlY3RvclNlc3Npb247CiAKIC8qIQotICAgIEBtZXRob2QgY2Fu
QmVSZW1vdGVseUluc3BlY3RlZAotICAgIEByZXN1bHQgTG9va3MgYXQgYWxsIHRoZSBmYWN0b3Jz
IG9mIHRoaXMgV2ViVmlldyBhbmQgcmV0dXJucyB3aGV0aGVyIG9yIG5vdAotICAgIHRoaXMgV2Vi
VmlldyBzaG91bGQgYWxsb3cgYSBSZW1vdGUgV2ViIEluc3BlY3RvciB0byBhdHRhY2ggdG8gaXQu
IFRoaXMgdGFrZXMKLSAgICBpbnRvIGFjY291bnQgLWFsbG93c1JlbW90ZUluc3BlY3Rpb24sIFBy
aXZhdGUgQnJvd3NpbmcsIGFuZCBwb3RlbnRpYWxseSBvdGhlcgotICAgIGZhY3RvcnMuCi0qLwot
LSAoQk9PTCljYW5CZVJlbW90ZWx5SW5zcGVjdGVkOwotCi0vKiEKICAgICBAbWV0aG9kIGFsbG93
c1JlbW90ZUluc3BlY3Rpb24KICAgICBAcmVzdWx0IFJldHVybnMgd2hldGhlciBvciBub3QgdGhp
cyBXZWJWaWV3IHdpbGwgYWxsb3cgYSBSZW1vdGUgV2ViIEluc3BlY3RvcgogICAgIHRvIGF0dGFj
aCB0byBpdC4KQEAgLTI5MiwyMSArMjg0LDYgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBAYWJzdHJh
Y3QgaW5kaWNhdGUgdGhpcyBXZWJWaWV3IG9uIHNjcmVlbiBmb3IgYSByZW1vdGUgaW5zcGVjdG9y
LgogKi8KIC0gKHZvaWQpc2V0SW5kaWNhdGluZ0ZvclJlbW90ZUluc3BlY3RvcjooQk9PTCllbmFi
bGVkOwotCi0vKgotICAgIEBtZXRob2Qgc2V0UmVtb3RlSW5zcGVjdG9yVXNlckluZm8KLSAgICBA
cGFyYW0gdGFnIFRoZSBkaWN0aW9uYXJ5IHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgV2ViVmll
dy4KLSAgICBAYWJzdHJhY3QgRGV2ZWxvcGVyIHNwZWNpZmllZCBkaWN0aW9uYXJ5IGZvciB0aGUg
V2ViVmlldyB0aGF0IHdpbGwgYmUKLSAgICBzZW50IHRvIHRoZSBSZW1vdGUgRGVidWdnZXIuIFRo
ZSBkaWN0aW9uYXJ5IG11c3QgY29udGFpbiBwcm9wZXJ0eQotICAgIGxpc3Qgc2VyaWFsaXphYmxl
IHZhbHVlcy4KLSovCi0tICh2b2lkKXNldFJlbW90ZUluc3BlY3RvclVzZXJJbmZvOihOU0RpY3Rp
b25hcnkgKil1c2VySW5mbzsKLQotLyohCi0gICAgQG1ldGhvZCByZW1vdGVJbnNwZWN0b3JVc2Vy
SW5mbwotICAgIEByZXN1bHQgUmV0dXJucyB0aGUgZGljdGlvbmFyeSBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBXZWJWaWV3LgotKi8KLS0gKE5TRGljdGlvbmFyeSAqKXJlbW90ZUluc3BlY3RvclVzZXJJ
bmZvOwogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGNmYTFkMzguLmJjODVjN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3Bl
Y3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYxMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQ
YWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOgor
ICAgICAgICBBbGxvdyB0aGUgV2ViUHJvY2VzcyB0byBhY2Nlc3MgdGhlICJjb20uYXBwbGUud2Vi
aW5zcGVjdG9yIiBuYW1lZAorICAgICAgICBYUEMgc2VydmljZSB0byBleHBvc2UgaXRzIFdlYkNv
cmU6OlBhZ2UncyB0byByZW1vdGUgZGVidWdnZXJzLgorCiAyMDEzLTEyLTAyICBCZXRoIERha2lu
ICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIG9wdCBpbnRv
IGEgbW9kZSB3aGVyZSB0aGUgYmFja2dyb3VuZCBleHRlbmRzIGFuZCBmaXhlZCBlbGVtZW50cyAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBk
Y2VkNWVmLi5kMTFlYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0zNDUsNiArMzQ1LDEwIEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0
X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ICAgIFdlYkNvcmU6OnByb3ZpZGVEZXZpY2VQcm94aW1pdHlUbyhtX3BhZ2UuZ2V0KCksIG5ldyBX
ZWJEZXZpY2VQcm94aW1pdHlDbGllbnQodGhpcykpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKyAgICBtX3BhZ2UtPnNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKHRy
dWUpOworI2VuZGlmCisKICAgICBtX3BhZ2UtPnNldENhblN0YXJ0TWVkaWEoZmFsc2UpOwogICAg
IG1fbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyA9IHBhcmFtZXRlcnMubWF5U3RhcnRNZWRpYVdo
ZW5JbldpbmRvdzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20u
YXBwbGUuV2ViUHJvY2Vzcy5zYi5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29tLmFw
cGxlLldlYlByb2Nlc3Muc2IuaW4KaW5kZXggOTBiYjBlNi4uYzQ3MmMwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCkBA
IC0xMzksNiArMTM5LDEwIEBACiAKICNlbmRpZgogCis7OyBSZW1vdGUgV2ViIEluc3BlY3Rvcgor
KGFsbG93IG1hY2gtbG9va3VwCisgICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUud2ViaW5z
cGVjdG9yIikpCisKIDs7IFZhcmlvdXMgc2VydmljZXMgcmVxdWlyZWQgYnkgQXBwS2l0IGFuZCBv
dGhlciBmcmFtZXdvcmtzCiAoYWxsb3cgbWFjaC1sb29rdXAKICAgICAgICAoZ2xvYmFsLW5hbWUg
ImNvbS5hcHBsZS5EaXNrQXJiaXRyYXRpb24uZGlza2FyYml0cmF0aW9uZCIpCg==
</data>
<flag name="commit-queue"
          id="241611"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218250</attachid>
            <date>2013-12-02 18:05:08 -0800</date>
            <delta_ts>2013-12-03 10:30:40 -0800</delta_ts>
            <desc>[PATCH] Combined For Bots (Test Different File Names)</desc>
            <filename>for-bots-4.patch</filename>
            <type>text/plain</type>
            <size>200572</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5oCmluZGV4IDEyNjdiN2EuLmY5ZDdjZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaApAQCAtMTY0LDYgKzE2NCwxMiBA
QCBPQkpDX1ZJU0lCTEUKICovCiBAcHJvcGVydHkocmVhZG9ubHksIHJldGFpbikgSlNWaXJ0dWFs
TWFjaGluZSAqdmlydHVhbE1hY2hpbmU7CiAKKy8qIQorQHByb3BlcnR5CitAZGlzY3Vzc2lvbiBO
YW1lIG9mIHRoZSBKU0NvbnRleHQuIEV4cG9zZWQgd2hlbiByZW1vdGUgZGVidWdnaW5nIHRoZSBj
b250ZXh0LgorKi8KK0Bwcm9wZXJ0eShjb3B5KSBOU1N0cmluZyAqbmFtZTsKKwogQGVuZAogCiAv
KiEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggYmM4ZmMxYS4uNDdk
Y2IwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTE2Niw2ICsx
NjYsMjIgQEAKICAgICByZXR1cm4gbV92aXJ0dWFsTWFjaGluZTsKIH0KIAorLSAoTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTR2xvYmFsQ29udGV4dENvcHlOYW1l
KG1fY29udGV4dCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
cmV0dXJuIFsoTlNTdHJpbmcgKilKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBuYW1lKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZUpTID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZT
dHJpbmcoKENGU3RyaW5nUmVmKVtuYW1lIGNvcHldKTsKKyAgICBKU0dsb2JhbENvbnRleHRTZXRO
YW1lKG1fY29udGV4dCwgbmFtZUpTKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UobmFtZUpTKTsKK30K
KwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gSlNDb250ZXh0KFN1YnNjcmlwdFN1cHBvcnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggZjBhNDM1Yy4u
ODFiNjFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApA
QCAtMjEzLDYgKzIxMywzNyBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFs
Q29udGV4dChKU0NvbnRleHRSZWYgY3R4KQogICAgIHJldHVybiB0b0dsb2JhbFJlZihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSk7CiB9CiAKK0pTU3RyaW5nUmVmIEpT
R2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCit7CisgICAgaWYg
KCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBBUElFbnRy
eVNoaW0gZW50cnlTaGltKGV4ZWMpOworCisgICAgU3RyaW5nIG5hbWUgPSBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCktPm5hbWUoKTsKKyAgICBpZiAobmFtZS5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKS5sZWFr
UmVmKCk7Cit9CisKK3ZvaWQgSlNHbG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRS
ZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7
CisKKyAgICBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnNldE5hbWUobmFtZSA/IG5hbWUt
PnN0cmluZygpIDogU3RyaW5nKCkpOworfQorCisKIGNsYXNzIEJhY2t0cmFjZUZ1bmN0b3Igewog
cHVibGljOgogICAgIEJhY2t0cmFjZUZ1bmN0b3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5z
aWduZWQgcmVtYWluaW5nQ2FwYWNpdHlGb3JGcmFtZUNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuaAppbmRleCA3NzA1OTU1Li5lYWI3YTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgKQEAgLTEzMyw2ICsxMzMsMjQgQEAgSlNf
RVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBj
dHgpIEFWQUlMQUJMRV9JTl9XRUIKICovCiBKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpT
Q29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEw
XzcsIDRfMCk7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyBhIGNvcHkgb2YgdGhl
IG5hbWUgb2YgYSBjb250ZXh0LgorQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHdob3Nl
IG5hbWUgeW91IHdhbnQgdG8gZ2V0LgorQHJlc3VsdCBUaGUgbmFtZSBmb3IgY3R4LgorQGRpc2N1
c3Npb24gQSBKU0dsb2JhbENvbnRleHQncyBuYW1lIGlzIGV4cG9zZWQgZm9yIHJlbW90ZSBkZWJ1
Z2dpbmcgdG8gbWFrZSBpdAorZWFzaWVyIHRvIGlkZW50aWZ5IHRoZSBjb250ZXh0IHlvdSB3b3Vs
ZCBsaWtlIHRvIGF0dGFjaCB0by4KKyovCitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNHbG9iYWxD
b250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCk7CisKKy8qIQorQGZ1bmN0aW9u
CitAYWJzdHJhY3QgU2V0cyB0aGUgcmVtb3RlIGRlYnVnZ2luZyBuYW1lIGZvciBhIGNvbnRleHQu
CitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBuYW1lLgor
QHBhcmFtIG5hbWUgVGhlIHJlbW90ZSBkZWJ1Z2dpbmcgbmFtZSB0byBzZXQgb24gY3R4LgorKi8K
K0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldE5hbWUoSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgbmFtZSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWIyY2RmZS4uNDQ5ZmFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEsNiArMTEsNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vZnRsIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaGVhcCIKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5z
cGVjdG9yIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGlu
dCIKQEAgLTU4Myw2ICs1ODQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFE
RVJTX0RJUkVDVE9SSUVTCiAgICAgY29sbGVjdG9yL2hhbmRsZXMKICAgICBkZWJ1Z2dlcgogICAg
IGhlYXAKKyAgICBpbnNwZWN0b3IKICAgICBpbnRlcnByZXRlcgogICAgIGppdAogICAgIGxsaW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiNDQzYmUyLi41NTY3ZGRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzEgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNo
IFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEph
dmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtlIEpTQ29udGV4dCBAY2xhc3MgYW5kIEphdmFTY3JpcHRDb3JlOjpKU0NvbnRleHRS
ZWYKKyAgICAgICAgIkphdmFTY3JpcHQiIFJlbW90ZSBEZWJ1Z2dhYmxlcy4KKworICAgICAgICAq
IEFQSS9KU0NvbnRleHQuaDoKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAo
LVtKU0NvbnRleHQgbmFtZV0pOgorICAgICAgICAoLVtKU0NvbnRleHQgc2V0TmFtZTpdKToKKyAg
ICAgICAgT2JqQyBBUEkgdG8gZW5hYmxlL2Rpc2FibGUgSlNDb250ZXh0IHJlbW90ZSBpbnNwZWN0
aW9uIGFuZCBnaXZlIGEgbmFtZS4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuaDoKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dEdl
dE5hbWUpOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0U2V0TmFtZSk6CisgICAgICAgIEMgQVBJ
IHRvIGdpdmUgYSBKU0NvbnRleHQgYSBuYW1lLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNldE5hbWUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6Om5hbWUpOgorICAgICAgICBTaGFyZWQgaGFuZGxpbmcgb2YgdGhlIEFQSXMgYWJvdmUuCisK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OkpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6bmFtZSk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzY29ubmVjdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90
ZUZyb250ZW5kKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5o
OiBBZGRlZC4KKyAgICAgICAgU3R1YiBmb3IgdGhlIGFjdHVhbCByZW1vdGUgZGVidWdnaW5nIGlt
cGxlbWVudGF0aW9uLiBXZSB3aWxsIHB1c2gKKyAgICAgICAgZG93biB0aGUgYXBwcm9wcmlhdGUg
V2ViQ29yZS9pbnNwZWN0b3IgcGVpY2VzIHN1aXRhYmxlIGZvciBkZWJ1Z2dpbmcKKyAgICAgICAg
anVzdCBhIEphdmFTY3JpcHQgY29udGV4dC4KKworMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVt
b3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNj
cmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDYxMworCisgICAgICAgIE1vdmUgdGhlIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSByZW1v
dGUgZGVidWdnZXIgY29ubmVjdGlvbiBtYW5hZ2VtZW50CisgICAgICAgIGludG8gSmF2YVNjcmlw
dENvcmUgKG9yaWdpbmFsbHkgZnJvbSBXZWJLaXQvbWFjKS4gSW5jbHVkZSBlbmhhbmNlbWVudHM6
CisKKyAgICAgICAgICAqIGFsbG93IGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgcmVtb3RlIGRlYnVn
Z2FibGUgdGFyZ2V0cywKKyAgICAgICAgICAgIGV2ZW50dWFsbHkgYXQgbGVhc3QgYSBKU0NvbnRl
eHQsIFdlYlZpZXcsIFdLVmlldy4KKyAgICAgICAgICAqIGFsbG93IGRlYnVnZ2FibGVzIHRvIGJl
IHJlZ2lzdGVyZWQgYW5kIGRlYnVnZ2VkIG9uIGFueSB0aHJlYWQuIFVubGlrZQorICAgICAgICAg
ICAgV2ViVmlld3MsIEpTQ29udGV4dHMgbWF5IGJlIHJ1biBlbnRpcmVseSBvZmYgb2YgdGhlIG1h
aW4gdGhyZWFkLgorICAgICAgICAgICogbW92ZSB0aGUgcmVtb3RlIGNvbm5lY3Rpb24gKFhQQyBj
b25uZWN0aW9uKSBpdHNlbGYgb2ZmIG9mIHRoZSBtYWluIHRocmVhZCwKKyAgICAgICAgICAgIGl0
IGRvZXNuJ3QgbmVlZCB0byBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlLmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6flJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlOjppbml0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6dXBkYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluZm8pOgorICAgICAgICBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlIGRlZmluZXMgYSBkZWJ1Z2dhYmxlIHRhcmdldC4gQXMgbG9uZyBhcworICAg
ICAgICBzb21ldGhpbmcgY3JlYXRlcyBhIGRlYnVnZ2FibGUgYW5kIGlzIHNldCB0byBhbGxvdyBy
ZW1vdGUgaW5zcGVjdGlvbgorICAgICAgICBpdCB3aWxsIGJlIGxpc3RlZCBpbiByZW1vdGUgZGVi
dWdnZXJzLiBGb3IgdGhlIGRpZmZlcmVudCB0eXBlcyBvZgorICAgICAgICBkZWJ1Z2dhYmxlcyAo
SmF2YVNjcmlwdCBhbmQgV2ViKSB0aGVyZSBpcyBkaWZmZXJlbnQgYmFzaWMgaW5mb3JtYXRpb24K
KyAgICAgICAgdGhhdCBtYXkgYmUgbGlzdGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsOjp+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKToKKyAgICAgICAg
VGhlIG9ubHkgdGhpbmcgYSBkZWJ1Z2dhYmxlIG5lZWRzIGZvciByZW1vdGUgZGVidWdnaW5nIGlz
IGFuCisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBhIHdheSB0byBzZW5kIG1lc3Nh
Z2VzIHRvIGEgcmVtb3RlIGZyb250ZW5kLgorICAgICAgICBUaGlzIGNsYXNzIHByb3ZpZGVzIHRo
YXQgbWV0aG9kLCBhbmQgaXMgdmVuZGVkIHRvIHRoZQorICAgICAgICBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlIHdoZW4gYSByZW1vdGUgY29ubmVjdGlvbiBpcyBzZXR1cC4KKworICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOiBBZGRlZC4KKyAgICAgICAgU2luZ2xl
dG9uLCBjcmVhdGVkIGF0IGxlYXN0IHdoZW4gdGhlIGZpcnN0IERlYnVnZ2FibGUgaXMgY3JlYXRl
ZC4KKyAgICAgICAgVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBsaXN0IG9mIGRlYnVnZ2FibGVzLCBh
bnkgY29ubmVjdGlvbiB0byBhCisgICAgICAgIHJlbW90ZSBkZWJ1Z2dlciBwcm94eSAoWFBDIHNl
cnZpY2UgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiKS4KKworICAgICAgICAoSW5zcGVjdG9yOjpk
aXNwYXRjaEFzeW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6bmV4dEF2YWlsYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGUpOgorICAgICAgICBEZWJ1
Z2dhYmxlIG1hbmFnZW1lbnQuIFdoZW4gZGVidWdnYWJsZXMgYXJlIGFkZGVkLCByZW1vdmVkLCBv
ciB1cGRhdGVkCisgICAgICAgIHdlIHN0YXNoIGEgY29weSBvZiB0aGUgZGVidWdnYWJsZSBpbmZv
cm1hdGlvbiBhbmQgcHVzaCBhbiB1cGRhdGUgdG8KKyAgICAgICAgZGVidWdnZXJzLiBTdGFzaGlu
ZyBhIGNvcHkgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBSZW1vdGVJbnNwZWN0b3IKKyAgICAg
ICAgaXMgYSB0aHJlYWQgc2FmZSB3YXkgdG8gYXZvaWQgd2Fsa2luZyBvdmVyIGFsbCBkZWJ1Z2dh
YmxlcyB0byBnYXRoZXIKKyAgICAgICAgdGhlIGluZm9ybWF0aW9uIHdoZW4gaXQgaXMgbmVlZGVk
LgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0b3ApOgorICAgICAgICBSdW50aW1lIEFQ
SSB0byBlbmFibGUgLyBkaXNhYmxlIHRoZSBmZWF0dXJlLgorCisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nTm93KToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ1Nvb24pOgorICAgICAgICBQdXNoaW5nIGEg
bGlzdGluZyB0byByZW1vdGUgZGVidWdnZXJzLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVz
c2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlv
bkZhaWxlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVj
dGlvblVuaGFuZGxlZE1lc3NhZ2UpOgorICAgICAgICBYUEMgc2V0dXAsIHNlbmQsIGFuZCByZWNl
aXZlIGhhbmRsaW5nLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBk
YXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKToKKyAgICAgICAgQXBwbGljYXRpb25zIGJlaW5nIGRl
YnVnZ2VkIG1heSB3YW50IHRvIGtub3cgd2hlbiBhIGRlYnVnCisgICAgICAgIHNlc3Npb24gaXMg
YWN0aXZlLiBUaGlzIHByb3ZpZGVzIHRoYXQgbm90aWZpY2F0aW9uLgorCisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldExpc3RpbmdN
ZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZElu
ZGljYXRlTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVj
ZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UpOgorICAgICAgICBEaXNwYXRjaGluZyBpbmNvbWlu
ZyByZW1vdGUgZGVidWdnaW5nIHByb3RvY29sIG1lc3NhZ2VzLgorICAgICAgICBUaGVzZSBhcmUg
d3JhcHBpbmcgYWJvdmUgdGhlIGluc3BlY3RvciBwcm90b2NvbCBtZXNzYWdlcy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg6IEFkZGVkLgor
ICAgICAgICBQcm90b2NvbCBtZXNzYWdlcyBhbmQgZGljdGlvbmFyeSBrZXlzIGluc2lkZSB0aGUg
bWVzc2FnZXMuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm86OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24ubW06IEFkZGVkLgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVuIHRo
ZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGUuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb246OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246On5SZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbik6CisgICAgICAgIEFsbG93IGZvciBkaXNwYXRjaGlu
ZyBtZXNzYWdlcyBvbiBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzIG9uIGEgZGlzcGF0Y2hfcXVldWUK
KyAgICAgICAgaW5zdGVhZCBvZiB0aGUgbWFpbiBxdWV1ZS4KKworICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGVzdGluYXRpb24pOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y29u
bmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBOZWVkZWQgaW4gdGhlIHJlbW90ZSBkZWJ1Z2dp
bmcgcHJvdG9jb2wgdG8gaWRlbnRpZnkgdGhlIHJlbW90ZSBkZWJ1Z2dlci4KKworICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0Y2hT
eW5jT25EZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXApOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
Y2xvc2VGcm9tRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICBUaGUgY29ubmVjdGlvbiBpcyBhIHRoaW4g
Y2hhbm5lbCBiZXR3ZWVuIHRoZSB0d28gc2lkZXMgdGhhdCBjYW4gYmUgY2xvc2VkCisgICAgICAg
IGZyb20gZWl0aGVyIHNpZGUsIHNvIHRoZXJlIGlzIHNvbWUgbG9naWMgYXJvdW5kIG11bHRpLXRo
cmVhZGVkIGFjY2Vzcy4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50Ojp+Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06IEFkZGVkLgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24pOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2Fn
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVu
IHRoZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhbiBYUEMgc2VydmljZQorICAgICAg
ICBuYW1lZCAiY29tLmFwcGxlLndlYmluc3BlY3RvciIuIFRoaXMgaGFuZGxlcyBzZXJpYWxpemF0
aW9uIG9mIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1lc3NhZ2VzIHRvIGFuZCBmcm9tIHRoZSBz
ZXJ2aWNlLiBUaGUgcmVjZWl2aW5nIGlzIGRvbmUgb24gYSBub24tbWFpbiBxdWV1ZS4KKwogMjAx
My0xMi0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3Jl
cyB0byBsb2NhbCBjYXB0dXJlZCB2YXJpYWJsZXMgc2hvdWxkIGJlIGludGVyY2VwdGVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNDJhYTY0My4uMDg1ZmNhNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNTksNiArNTksNyBAQCBqYXZhc2NyaXB0
Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rp
c2Fzc2VtYmxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bCBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAgXAorCS1JJChzcmNkaXIpL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdCBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50IFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMTFiZDA5NS4uZjQw
NDU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTYx
MCw2ICs2MTAsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaWN1L3VuaWNvZGUvdXRmX29sZC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aWN1L3VuaWNvZGUvdXR5cGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29k
ZS91dmVyc2lvbi5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0Zyb250ZW5k
Q2hhbm5lbC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQ
Qy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggYzM2YTg3OS4uODVmMjk3YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC05OTQsNiArOTk0LDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vha1NldC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0SW5saW5lcy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0LmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcRnJvbnRlbmRDaGFubmVsLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxBYnN0cmFjdFBDLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWNoZWRDYWxsLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWxsRnJhbWUuaCIgLz4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4MDEz
MmYyLi4zNDIzZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzCkBAIC0yNSw2ICsyNSw5IEBACiAgICAgPEZpbHRlciBJbmNsdWRlPSJoZWFw
Ij4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntiZDQ5ZTVjZi05NWQ2LTQxNTEtYjI4Ni04ODM3
Y2NkMzQ3ZmF9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIg
SW5jbHVkZT0iaW5zcGVjdG9yIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswOWFlMDlkYS0x
MjM5LTAwZWEtOGRmZS05MDg3YWUxMjNiYmV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmls
dGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iaW50ZXJwcmV0ZXIiPgogICAgICAgPFVuaXF1ZUlk
ZW50aWZpZXI+ezEwZDk3ZWEzLTJhZjktNDg5Yy1hNTRlLWQ2OWVmMmU0Y2EwYX08L1VuaXF1ZUlk
ZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0xNzAwLDYgKzE3MDMsOSBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0LmgiPgogICAgICAgPEZp
bHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcRnJvbnRlbmRDaGFubmVsLmgiPgorICAgICAgPEZpbHRlcj5pbnNw
ZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGludGVycHJldGVyXEFic3RyYWN0UEMuaCI+CiAgICAgICA8RmlsdGVyPmludGVycHJldGVy
PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDY2NTg1NWYuLjRmMzQ0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04
ODYsNiArODg2LDE4IEBACiAJCUExNzEyQjQxMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjQw
MTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFj
cm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY0MDkyM0MxNTZFRUQzQjAwNTY2Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEw
MDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAv
KiBBUk02NEFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
LmNwcCAqLzsgfTsKKwkJQTU5NDU1OTIxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTk0NTU5MDE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
LmNwcCAqLzsgfTsKKwkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU5NDU1OTExODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5o
ICovOyB9OworCQlBNTk0NTU5NTE4MjQ3OUVCMDBDQzM4NDMgLyogRnJvbnRlbmRDaGFubmVsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5NDE4
MjQ3OUVCMDBDQzM4NDMgLyogRnJvbnRlbmRDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1QkExNUU5
MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yLm1tICovOyB9OworCQlBNUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yQ29uc3RhbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTVCQTE1RUIxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb24uaCAqLzsgfTsKKwkJQTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tICovOyB9OworCQlBNUJBMTVFRDE4
MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTYxODIzNDBCMzAw
QTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLzsgfTsKKwkJQTVCQTE1
RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNzE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLzsgfTsKKwkJ
QTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUVGMTgy
MzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcwMDg3MzkxN0NCRTg1MzAw
QzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1
Y3Rvci5jcHAgKi87IH07CiAJCUE3MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcw
MDg3MzgxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggKi87IH07CiAJCUE3MDA4
NzNEMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8q
IE1hcFByb3RvdHlwZS5jcHAgKi87IH07CkBAIC0yMTk2LDYgKzIyMDgsMTggQEAKIAkJQTE3MTJC
M0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTU5NDU1OTAxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdERl
YnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTk0NTU5MTE4MjQ3
NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogRnJvbnRlbmRD
aGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZyb250ZW5kQ2hhbm5l
bC5oOyBwYXRoID0gaW5zcGVjdG9yL0Zyb250ZW5kQ2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3Rvci5oOyBw
YXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTIxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUluc3Bl
Y3Rvci5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFMzE4MjM0MEIzMDBBODJFNjkgLyogUmVt
b3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JDb25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVC
QTE1RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uLmg7IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE1QkExNUU1MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29u
bmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1
QkExNUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RUYx
ODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oOyBwYXRo
ID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25z
dHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXBDb25z
dHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDA4NzM4MTdDQkU4
NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYXBDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NzAwODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNjk0LDYgKzI3MTgsNyBAQAogCQkJCTA4NjdENjlBRkU4NDAyOEZD
MDJBQUMwNyAvKiBGcmFtZXdvcmtzICovLAogCQkJCTBGRUEwOUZDMTcwNTEzN0YwMEJCNzIyQyAv
KiBmdGwgKi8sCiAJCQkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8qIGhlYXAgKi8sCisJCQkJ
QTVCQTE1REYxODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAqLywKIAkJCQkxNDI5RDc3QTBF
RDIwRDczMDBCODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8sCiAJCQkJMTQyOUQ5MkMwRUQyMkQ3MDAw
Qjg5NjE5IC8qIGppdCAqLywKIAkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQg
Ki8sCkBAIC0zNDc3LDYgKzM1MDIsOCBAQAogCQkJCTBGMkI2NkM4MTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCAqLywKIAkJCQkxNERF
MEQ2ODBEMDI0MzE0MDBBQUNDQTIgLyogSlNHbG9iYWxPYmplY3QuY3BwICovLAogCQkJCUE4RTg5
NDMzMENEMDYwM0YwMDM2NzE3OSAvKiBKU0dsb2JhbE9iamVjdC5oICovLAorCQkJCUE1OTQ1NTkw
MTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwICovLAorCQkJ
CUE1OTQ1NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCAq
LywKIAkJCQlCQzc1NkZDNjBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuY3BwICovLAogCQkJCUJDNzU2RkM3MEUyMDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5oICovLAogCQkJCTBGMkI2NkNBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2
QXJyYXkuaCAqLywKQEAgLTQxNDUsNiArNDE3MiwzMSBAQAogCQkJcGF0aCA9IGJ5dGVjb2RlOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTVCQTE1REYxODIzNDA5MjAwQTgy
RTY5IC8qIGluc3BlY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJQTVCQTE1RTAxODIzNDA5RDAwQTgyRTY5IC8qIHJlbW90ZSAqLywKKwkJCQlBNTk0
NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogRnJvbnRlbmRDaGFubmVsLmggKi8sCisJCQkpOworCQkJ
bmFtZSA9IGluc3BlY3RvcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUE1
QkExNUUwMTgyMzQwOUQwMEE4MkU2OSAvKiByZW1vdGUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1QkExNUUxMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1v
dGVJbnNwZWN0b3IuaCAqLywKKwkJCQlBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3Rl
SW5zcGVjdG9yLm1tICovLAorCQkJCUE1QkExNUUzMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJ
bnNwZWN0b3JDb25zdGFudHMuaCAqLywKKwkJCQlBNUJBMTVFRjE4MjM0NUFGMDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oICovLAorCQkJCUE1OTQ1NThFMTgyNDVFREUwMEND
Mzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLywKKwkJCQlBNUJBMTVFNDE4
MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCAq
LywKKwkJCQlBNUJBMTVFNTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb24ubW0gKi8sCisJCQkJQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLywKKwkJCQlBNUJBMTVFNzE4MjM0MEIzMDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLywKKwkJCSk7CisJCQlu
YW1lID0gcmVtb3RlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQ
QlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KQEAgLTQyMTUsNiArNDI2Nyw3IEBACiAJCQkJODY2NzM5RDIxM0JGREU3MTAwMjNEODdD
IC8qIEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0ODE2RTFDMTU0Q0M1NkMwMEI4
MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRUMwRTE2
RjVDRDAwQjM0NDYwIC8qIEJvb2xlYW5PYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1QkEx
NUVBMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzk3MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjdGMzk4MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHlJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0
ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC00Mjg1LDYgKzQzMzgsNyBAQAog
CQkJCTBGMTYwMTVFMTU2MTk4QzkwMEMyNTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlv
blBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA1QzNCNDE2ODNDRjkyMDBCQUY0NUIgLyog
REZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2Mzk0
ODUxNUU0ODExQjAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTVCQTE1RUIxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5QTI5NTE3QTBCQzc0MDBFRTI2MTggLyog
REZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MTRDQTUxNkVB
OTJGMjAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNjIwMTc2MTQzRkNEM0IwMDY4Qjc3QyAvKiBERkdCYXNpY0Jsb2NrLmggaW4g
SGVhZGVycyAqLywKQEAgLTQzNjAsNiArNDQxNCw3IEBACiAJCQkJMEZEOEEzMjYxN0Q1MUY1NzAw
Q0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQwMkYxMTAw
NTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtNDQxOCw2ICs0NDczLDcgQEAKIAkJCQkwRkVB
MEEwODE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0
MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEw
QTBBMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRUEwQTBDMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxlLmggaW4g
SGVhZGVycyAqLywKQEAgLTQ1MTAsNiArNDU2Niw3IEBACiAJCQkJODZDQ0VGREUwRjQxM0Y4OTAw
RkQ3RjlFIC8qIEpJVENvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDc3NkJGMTRGRjAwMkIw
MDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZB
RjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRF
eGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUxRjE4MTI0QUNFMDA5QjZCNEQg
LyogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Q0M4NUEx
MEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQ2ODEs
NiArNDczOCw3IEBACiAJCQkJMTREMkYzREIxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJENkYxMjEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0
YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjExMjJFMzE1REQ5QUIzMDA3OTBFM0EgLyogTWFy
a1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5NDU1OTUxODI0NzlFQjAwQ0Mz
ODQzIC8qIEZyb250ZW5kQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYxMkU0Q0QxNTIz
ODlFQzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQz
QzBFMTZGNUNEMDBCMzQ0NjAgLyogTWF0aE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTAy
MTNFM0UxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICov
LApAQCAtNDg0OSw2ICs0OTA3LDcgQEAKIAkJCQkxNDJFMzEzQzEzNEZGMEE2MDBBRkFEQjUgLyog
V2Vhay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRFODRGOUYxNEVFMUFDQzAwRDZENUQ0IC8qIFdl
YWtCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8q
IFdlYWtHQ01hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5
IC8qIFJlbW90ZUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRGNzI1NjYxNEVFMjY1
RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVPd25lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRFODRG
QTIxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEJF
N0QzMzE3MTM1Q0Y0MDBEMTgwN0EgLyogV2Vha0lubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
NTQ0Myw2ICs1NTAyLDcgQEAKIAkJCQlBN0I0OEY0OTBFRTg5MzZGMDBEQ0JEQjYgLyogRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkRCNjQ2NDBGOTVDNkZDMDBE
N0Q5MjEgLyogRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGNTZBMUQ1MTUwMDFDRjQwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUE1OTQ1NTkyMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9i
amVjdERlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCMTA1ODUxNjc1NDgwRjAw
RjhBQjZFIC8qIEV4aXRLaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTFDMTcwOEIw
MDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZF
QTBBMUUxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC01NjA0LDYgKzU2NjQsNyBAQAogCQkJCTE0NDY5RERFMTA3RUM3RTcw
MDY1MDQ0NiAvKiBMb29rdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwQ0MxNEJCQjE3
QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTRCNzIzQjIxMkQ3REE0NjAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBNTk0NTU4RjE4MjQ1RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVCM0VDRjE2MjM3RjZDMDBBQjY3
QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZDNTY4RTAxMUEy
MTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcCBpbiBT
b3VyY2VzICovLApAQCAtNTczMSw2ICs1NzkyLDkgQEAKIAkJCQlBN0NBM0FFNTE3REE0MUFFMDA2
NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEU4NEZB
MDE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkM4
MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlBNUJBMTVFOTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJQTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTVCQTE1
RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBN0U1QUIzQTE3OTlFNEIyMDBEMjgzM0QgLyogWDg2RGlzYXNzZW1i
bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0RSAvKiBZ
YXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NDEyREJB
MzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JS
ZW1vdGVDaGFubmVsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0Zyb250ZW5k
Q2hhbm5lbC5oCnNpbWlsYXJpdHkgaW5kZXggNjklCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oCnJlbmFt
ZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0Zyb250ZW5kQ2hhbm5lbC5oCmlu
ZGV4IGMzMjBmZGUuLjg1ZDdmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYklu
c3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvRnJvbnRlbmRDaGFubmVsLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIwICsyMywxOSBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7Ci1AY2xhc3MgV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb247CisjaWZuZGVmIEZyb250ZW5kQ2hhbm5l
bF9oCisjZGVmaW5lIEZyb250ZW5kQ2hhbm5lbF9oCiAKLUBpbnRlcmZhY2UgV2ViSW5zcGVjdG9y
UmVtb3RlQ2hhbm5lbCA6IE5TT2JqZWN0IHsKLUBwcml2YXRlCi0gICAgV2ViSW5zcGVjdG9yU2Vy
dmVyV2ViVmlld0Nvbm5lY3Rpb24gKl9yZW1vdGU7Ci0gICAgV2ViSW5zcGVjdG9yQ2xpZW50KiBf
bG9jYWw7Ci19CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSsgKFdlYkluc3Bl
Y3RvclJlbW90ZUNoYW5uZWwgKiljcmVhdGVDaGFubmVsRm9yUGFnZUlkOih1bnNpZ25lZClwYWdl
SWQgY29ubmVjdGlvbjooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKiljb25u
ZWN0aW9uOworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLS0gKHZvaWQpY2xvc2VGcm9tTG9jYWxT
aWRlOwotLSAodm9pZCljbG9zZUZyb21SZW1vdGVTaWRlOwotLSAodm9pZClzZW5kTWVzc2FnZVRv
RnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tl
bmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKCkgeyB9Cisg
ICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpID0gMDsKK307CiAKLUBlbmQKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYg
Ly8gIWRlZmluZWQoRnJvbnRlbmRDaGFubmVsX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzZDQwM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAt
MCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2lmbmRlZiBSZW1vdGVJbnNwZWN0
b3JfaAorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JfaAorCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbi5oIgorI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoTWFw
Lmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9UaHJlYWRp
bmcuaD4KKworT0JKQ19DTEFTUyBOU1N0cmluZzsKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5Owor
CituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZTsKK3N0cnVjdCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbzsKKworY2xhc3MgSlNfRVhQ
T1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVjdG9yIEZJTkFMIDogcHVibGljIFJlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb246OkNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlbW90ZUluc3Bl
Y3RvciYgc2hhcmVkKCk7CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFJlbW90ZUlu
c3BlY3Rvcj47CisKKyAgICB2b2lkIHJlZ2lzdGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlKik7CisgICAgdm9pZCB1bnJlZ2lzdGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlKik7CisgICAgdm9pZCB1cGRhdGVEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGUqKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZCh1bnNp
Z25lZCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworCisgICAgYm9vbCBlbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CisgICAgYm9vbCBoYXNBY3RpdmVEZWJ1
Z1Nlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbjsgfQorCisg
ICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgc3RvcCgpOworCitwcml2YXRlOgorICAgIFJlbW90
ZUluc3BlY3RvcigpOworCisgICAgdW5zaWduZWQgbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIoKTsK
KworICAgIHZvaWQgc2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQoKTsKKworICAgIE5TRGljdGlv
bmFyeSAqbGlzdGluZ0ZvckRlYnVnZ2FibGUoY29uc3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm8mKSBjb25zdDsKKyAgICB2b2lkIHB1c2hMaXN0aW5nTm93KCk7CisgICAgdm9pZCBwdXNo
TGlzdGluZ1Nvb24oKTsKKworICAgIHZvaWQgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uKiwgTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25h
cnkgKnVzZXJJbmZvKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvbkZh
aWxlZChSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24qLCB4cGNfb2JqZWN0X3QpIE9WRVJSSURFOworCisgICAgdm9pZCByZWNlaXZlZFNl
dHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkRGF0
YU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZERpZENs
b3NlTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkR2V0
TGlzdGluZ01lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZl
ZEluZGljYXRlTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2Vp
dmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworCisgICAg
Ly8gRGVidWdnYWJsZXMgY2FuIGJlIHJlZ2lzdGVyZWQgZnJvbSBhbnkgdGhyZWFkIGF0IGFueSB0
aW1lLgorICAgIC8vIEFueSBkZWJ1Z2dhYmxlIGNhbiBzZW5kIG1lc3NhZ2VzIG92ZXIgdGhlIFhQ
QyBjb25uZWN0aW9uLgorICAgIC8vIFNvIGxvY2sgYWNjZXNzIHRvIGFsbCBtYXBzIGFuZCBzdGF0
ZSBhcyB0aGV5IGNhbiBjaGFuZ2UKKyAgICAvLyBmcm9tIGFueSB0aHJlYWQuCisgICAgTXV0ZXgg
bV9sb2NrOworCisgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjpwYWlyPFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGUqLCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbz4+IG1fZGVidWdnYWJs
ZU1hcDsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25NYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24+IG1feHBjQ29ubmVjdGlvbjsKKyAgICB1bnNpZ25l
ZCBtX25leHRBdmFpbGFibGVJZGVudGlmaWVyOworICAgIGludCBtX25vdGlmeVRva2VuOworICAg
IGJvb2wgbV9lbmFibGVkOworICAgIGJvb2wgbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247CisgICAg
Ym9vbCBtX3B1c2hTY2hlZHVsZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKwor
I2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gV2ViSW5zcGVj
dG9yU2VydmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi44NzliNDFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCkBAIC0wLDAgKzEsNDg4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3IuaCIKKworI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorCisjaW1wb3J0ICJJbml0aWFsaXplVGhyZWFkaW5nLmgiCisjaW1wb3J0ICJS
ZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCIKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUuaCIKKyNpbXBvcnQgPG5vdGlmeS5oPgorI2ltcG9ydCA8eHBjL3hwYy5oPgorI2ltcG9y
dCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgor
I2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCA8d3RmL2lvcy9XZWJDb3JlVGhyZWFkLmg+
CisjZW5kaWYKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNo
QXN5bmNPblF1ZXVlU2FmZUZvckFueURlYnVnZ2FibGUodm9pZCAoXmJsb2NrKSgpKQoreworI2lm
IFBMQVRGT1JNKElPUykKKyAgICBpZiAoV2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCAmJiBXZWJD
b3JlV2ViVGhyZWFkSXNFbmFibGVkKCkpIHsKKyAgICAgICAgV2ViQ29yZVdlYlRocmVhZFJ1bihi
bG9jayk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKK30KKworUmVtb3RlSW5zcGVj
dG9yJiBSZW1vdGVJbnNwZWN0b3I6OnNoYXJlZCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJlbW90ZUluc3BlY3Rvcj4gc2hhcmVkOworCisgICAgc3RhdGljIGRpc3BhdGNoX29uY2Vf
dCBvbmNlOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2UsIF57CisgICAgICAgIEpTQzo6aW5pdGlh
bGl6ZVRocmVhZGluZygpOworICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7Cisg
ICAgICAgIHNoYXJlZC5nZXQoKS5zdGFydCgpOworICAgIH0pOworCisgICAgcmV0dXJuIHNoYXJl
ZDsKK30KKworUmVtb3RlSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3IoKQorICAgIDogbV9uZXh0
QXZhaWxhYmxlSWRlbnRpZmllcigxKQorICAgICwgbV9ub3RpZnlUb2tlbigwKQorICAgICwgbV9l
bmFibGVkKGZhbHNlKQorICAgICwgbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oZmFsc2UpCisgICAg
LCBtX3B1c2hTY2hlZHVsZWQoZmFsc2UpCit7Cit9CisKK3Vuc2lnbmVkIFJlbW90ZUluc3BlY3Rv
cjo6bmV4dEF2YWlsYWJsZUlkZW50aWZpZXIoKQoreworICAgIHVuc2lnbmVkIG5leHRWYWxpZElk
ZW50aWZpZXI7CisgICAgZG8geworICAgICAgICBuZXh0VmFsaWRJZGVudGlmaWVyID0gbV9uZXh0
QXZhaWxhYmxlSWRlbnRpZmllcisrOworICAgIH0gd2hpbGUgKCFuZXh0VmFsaWRJZGVudGlmaWVy
IHx8IG5leHRWYWxpZElkZW50aWZpZXIgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpIHx8IG1fZGVidWdnYWJsZU1hcC5jb250YWlucyhuZXh0VmFsaWRJZGVudGlmaWVyKSk7
CisgICAgcmV0dXJuIG5leHRWYWxpZElkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpyZWdpc3RlckRlYnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdn
YWJsZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIHVuc2lnbmVk
IGlkZW50aWZpZXIgPSBuZXh0QXZhaWxhYmxlSWRlbnRpZmllcigpOworICAgIGRlYnVnZ2FibGUt
PnNldElkZW50aWZpZXIoaWRlbnRpZmllcik7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fZGVidWdn
YWJsZU1hcC5zZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3BhaXIoZGVidWdnYWJsZSwgZGVidWdn
YWJsZS0+aW5mbygpKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKKworICAgIGlmIChkZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkpCisg
ICAgICAgIHB1c2hMaXN0aW5nU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dW5y
ZWdpc3RlckRlYnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSkK
K3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIHVuc2lnbmVkIGlkZW50
aWZpZXIgPSBkZWJ1Z2dhYmxlLT5pZGVudGlmaWVyKCk7CisgICAgaWYgKCFpZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBib29sIHdhc1JlbW92ZWQgPSBtX2RlYnVnZ2FibGVNYXAu
cmVtb3ZlKGlkZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVt
b3ZlZCk7CisKKyAgICBpZiAoUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uPiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLnRha2UoaWRlbnRpZmllcikpCisgICAg
ICAgIGNvbm5lY3Rpb24tPmNsb3NlRnJvbURlYnVnZ2FibGUoKTsKKworICAgIGlmIChkZWJ1Z2dh
YmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkpCisgICAgICAgIHB1c2hMaXN0aW5nU29vbigp
OworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlRGVidWdnYWJsZShSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X2xvY2spOworCisgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IGRlYnVnZ2FibGUtPmlkZW50aWZp
ZXIoKTsKKyAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
cmVzdWx0ID0gbV9kZWJ1Z2dhYmxlTWFwLnNldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfcGFpcihk
ZWJ1Z2dhYmxlLCBkZWJ1Z2dhYmxlLT5pbmZvKCkpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgIXJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgIGlmIChkZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1
Z2dpbmdBbGxvd2VkKCkpCisgICAgICAgIHB1c2hMaXN0aW5nU29vbigpOworfQorCit2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKHVuc2lnbmVkIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKKworICAgIGlmICghbV94cGNDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghY29ubmVjdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IEB7Cisg
ICAgICAgIFdJUlJhd0RhdGFLZXk6IFtzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihtZXNzYWdlKSBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10sCisgICAgICAgIFdJUkNvbm5l
Y3Rpb25JZGVudGlmaWVyS2V5OiBjb25uZWN0aW9uLT5jb25uZWN0aW9uSWRlbnRpZmllcigpLAor
ICAgICAgICBXSVJEZXN0aW5hdGlvbktleTogY29ubmVjdGlvbi0+ZGVzdGluYXRpb24oKQorICAg
IH07CisKKyAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdJUlJhd0RhdGFNZXNzYWdl
LCB1c2VySW5mbyk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdGFydCgpCit7CisgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBpZiAobV9lbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2VuYWJsZWQgPSB0cnVlOworCisgICAgbm90aWZ5X3JlZ2lzdGVy
X2Rpc3BhdGNoKFdJUlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRpb24sICZtX25vdGlmeVRva2Vu
LCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFV
TFQsIDApLCBeKGludCkgeworICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OnNoYXJlZCgpLnNldHVw
WFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7CisgICAgfSk7CisKKyAgICBub3RpZnlfcG9zdChXSVJT
ZXJ2aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24pOworfQorCit2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6c3RvcCgpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAg
ICBpZiAoIW1fZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9lbmFibGVkID0gZmFs
c2U7CisKKyAgICBtX3B1c2hTY2hlZHVsZWQgPSBmYWxzZTsKKworICAgIGZvciAoYXV0byBpdCA9
IG1fY29ubmVjdGlvbk1hcC5iZWdpbigpLCBlbmQgPSBtX2Nvbm5lY3Rpb25NYXAuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT5jbG9zZSgpOworICAgIG1fY29ubmVj
dGlvbk1hcC5jbGVhcigpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisK
KyAgICBpZiAobV94cGNDb25uZWN0aW9uKSB7CisgICAgICAgIG1feHBjQ29ubmVjdGlvbi0+Y2xv
c2UoKTsKKyAgICAgICAgbV94cGNDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBu
b3RpZnlfY2FuY2VsKG1fbm90aWZ5VG9rZW4pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X2xvY2spOworCisgICAgaWYgKG1feHBjQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uID0geHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21h
Y2hfc2VydmljZShXSVJYUENNYWNoUG9ydE5hbWUsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IDApOworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV94cGND
b25uZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
Pihjb25uZWN0aW9uLCB0aGlzKTsKKyAgICBtX3hwY0Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKEAi
c3luIiwgbmlsKTsgLy8gU2VuZCBhIHNpbXBsZSBtZXNzYWdlIHRvIGluaXRpYWxpemUgdGhlIFhQ
QyBjb25uZWN0aW9uLgorICAgIHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOworCisgICAgcHVzaExp
c3RpbmdTb29uKCk7Cit9CisKKyNwcmFnbWEgbWFyayAtIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb246OkNsaWVudAorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2Vp
dmVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgTlNTdHJpbmcgKm1lc3Nh
Z2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2xvY2spOworCisgICAgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSUGVy
bWlzc2lvbkRlbmllZF0pIHsKKyAgICAgICAgc3RvcCgpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSU29ja2V0RGF0YU1l
c3NhZ2VdKQorICAgICAgICByZWNlaXZlZERhdGFNZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNl
IGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlNvY2tldFNldHVwTWVzc2FnZV0p
CisgICAgICAgIHJlY2VpdmVkU2V0dXBNZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlIGlmIChb
bWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUldlYlBhZ2VDbG9zZU1lc3NhZ2VdKQorICAg
ICAgICByZWNlaXZlZERpZENsb3NlTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21l
c3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJBcHBsaWNhdGlvbkdldExpc3RpbmdNZXNzYWdl
XSkKKyAgICAgICAgcmVjZWl2ZWRHZXRMaXN0aW5nTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxz
ZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJJbmRpY2F0ZU1lc3NhZ2VdKQor
ICAgICAgICByZWNlaXZlZEluZGljYXRlTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAo
W21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJDb25uZWN0aW9uRGllZE1lc3NhZ2VdKQor
ICAgICAgICByZWNlaXZlZENvbm5lY3Rpb25EaWVkTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxz
ZQorICAgICAgICBOU0xvZyhAIlVucmVjb2duaXplZCBSZW1vdGVJbnNwZWN0b3IgWFBDIE1lc3Nh
Z2U6ICVAIiwgbWVzc2FnZU5hbWUpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29u
bmVjdGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKikKK3sKKyAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIG1fcHVzaFNjaGVkdWxlZCA9IGZhbHNlOwor
CisgICAgZm9yIChhdXRvIGl0ID0gbV9jb25uZWN0aW9uTWFwLmJlZ2luKCksIGVuZCA9IG1fY29u
bmVjdGlvbk1hcC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPmNs
b3NlKCk7CisgICAgbV9jb25uZWN0aW9uTWFwLmNsZWFyKCk7CisKKyAgICB1cGRhdGVIYXNBY3Rp
dmVEZWJ1Z1Nlc3Npb24oKTsKKworICAgIGlmIChtX3hwY0Nvbm5lY3Rpb24pIHsKKyAgICAgICAg
bV94cGNDb25uZWN0aW9uLT5jbG9zZSgpOworICAgICAgICBtX3hwY0Nvbm5lY3Rpb24gPSBudWxs
cHRyOworICAgIH0KK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25Vbmhh
bmRsZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3Qp
Cit7CisgICAgLy8gSW50ZW50aW9uYWxseSBpZ25vcmVkLgorfQorCisjcHJhZ21hIG1hcmsgLSBM
aXN0aW5ncworCitOU0RpY3Rpb25hcnkgKlJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvckRlYnVn
Z2FibGUoY29uc3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8mIGRlYnVnZ2FibGVJbmZv
KSBjb25zdAoreworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRlYnVnZ2FibGVEZXRhaWxzID0g
W05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07CisKKyAgICBbZGVidWdnYWJsZURldGFp
bHMgc2V0T2JqZWN0OkAoZGVidWdnYWJsZUluZm8uaWRlbnRpZmllcikgZm9yS2V5OldJUlBhZ2VJ
ZGVudGlmaWVyS2V5XTsKKworICAgIHN3aXRjaCAoZGVidWdnYWJsZUluZm8udHlwZSkgeworICAg
IGNhc2UgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6SmF2YVNjcmlwdDogeworICAgICAgICBO
U1N0cmluZyAqbmFtZSA9IGRlYnVnZ2FibGVJbmZvLm5hbWU7CisgICAgICAgIFtkZWJ1Z2dhYmxl
RGV0YWlscyBzZXRPYmplY3Q6bmFtZSBmb3JLZXk6V0lSVGl0bGVLZXldOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpXZWI6IHsKKyAg
ICAgICAgTlNTdHJpbmcgKnVybCA9IGRlYnVnZ2FibGVJbmZvLnVybDsKKyAgICAgICAgTlNTdHJp
bmcgKnRpdGxlID0gZGVidWdnYWJsZUluZm8ubmFtZTsKKyAgICAgICAgW2RlYnVnZ2FibGVEZXRh
aWxzIHNldE9iamVjdDp1cmwgZm9yS2V5OldJUlVSTEtleV07CisgICAgICAgIFtkZWJ1Z2dhYmxl
RGV0YWlscyBzZXRPYmplY3Q6dGl0bGUgZm9yS2V5OldJUlRpdGxlS2V5XTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoUmVmUHRyPFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChkZWJ1
Z2dhYmxlSW5mby5pZGVudGlmaWVyKSkKKyAgICAgICAgW2RlYnVnZ2FibGVEZXRhaWxzIHNldE9i
amVjdDpjb25uZWN0aW9uLT5jb25uZWN0aW9uSWRlbnRpZmllcigpIGZvcktleTpXSVJDb25uZWN0
aW9uSWRlbnRpZmllcktleV07CisKKyAgICBpZiAoZGVidWdnYWJsZUluZm8uaGFzTG9jYWxEZWJ1
Z2dlcikKKyAgICAgICAgW2RlYnVnZ2FibGVEZXRhaWxzIHNldE9iamVjdDpAWUVTIGZvcktleTpX
SVJIYXNMb2NhbERlYnVnZ2VyS2V5XTsKKworICAgIHJldHVybiBkZWJ1Z2dhYmxlRGV0YWlsczsK
K30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nTm93KCkKK3sKKyAgICBBU1NF
UlQobV94cGNDb25uZWN0aW9uKTsKKyAgICBpZiAoIW1feHBjQ29ubmVjdGlvbikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9wdXNoU2NoZWR1bGVkID0gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlRGljdGlvbmFyeT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlv
bmFyeSBhbGxvY10gaW5pdF0pOworICAgIGZvciAoYXV0byBpdCA9IG1fZGVidWdnYWJsZU1hcC5i
ZWdpbigpLCBlbmQgPSBtX2RlYnVnZ2FibGVNYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgICAgICBjb25zdCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyYgZGVidWdnYWJsZUlu
Zm8gPSBpdC0+dmFsdWUuc2Vjb25kOworICAgICAgICBpZiAoZGVidWdnYWJsZUluZm8ucmVtb3Rl
RGVidWdnaW5nQWxsb3dlZCkgeworICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpkZXRhaWxzID0g
bGlzdGluZ0ZvckRlYnVnZ2FibGUoZGVidWdnYWJsZUluZm8pOworICAgICAgICAgICAgW3Jlc3Bv
bnNlIHNldE9iamVjdDpkZXRhaWxzIGZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiV1IiwgZGVidWdnYWJsZUluZm8uaWRlbnRpZmllcl1dOworICAgICAgICB9CisgICAgfQorCisg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG91dGdvaW5nID0gYWRvcHROUyhbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBbb3V0Z29pbmcgc2V0T2JqZWN0
OnJlc3BvbnNlLmdldCgpIGZvcktleTpXSVJMaXN0aW5nS2V5XTsKKworICAgIG1feHBjQ29ubmVj
dGlvbi0+c2VuZE1lc3NhZ2UoV0lSTGlzdGluZ01lc3NhZ2UsIG91dGdvaW5nLmdldCgpKTsKK30K
Kwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nU29vbigpCit7CisgICAgaWYgKCFt
X3hwY0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3B1c2hTY2hlZHVs
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHVzaFNjaGVkdWxlZCA9IHRydWU7CisgICAg
ZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgMC4wMiAqIE5T
RUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJ
T1JJVFlfREVGQVVMVCwgMCksIF57CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2sp
OworICAgICAgICBpZiAobV9wdXNoU2NoZWR1bGVkKQorICAgICAgICAgICAgcHVzaExpc3RpbmdO
b3coKTsKKyAgICB9KTsKK30KKworI3ByYWdtYSBtYXJrIC0gQWN0aXZlIERlYnVnZ2VyIFNlc3Np
b25zCisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24o
KQoreworICAgIGJvb2wgaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uID0gIW1fY29ubmVjdGlvbk1h
cC5pc0VtcHR5KCk7CisgICAgaWYgKGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbiA9PSBtX2hhc0Fj
dGl2ZURlYnVnU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9oYXNBY3RpdmVEZWJ1
Z1Nlc3Npb24gPSBoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb247CisKKyAgICAvLyBGSVhNRTogRXhw
b3NlIHNvbWUgd2F5IHRvIGFjY2VzcyB0aGlzIHN0YXRlIGluIGFuIGVtYmVkZGVyLgorICAgIC8v
IExlZ2FjeSBpT1MgV2ViS2l0IDEgaGFkIGEgbm90aWZpY2F0aW9uLiBUaGlzIHdpbGwgbmVlZCB0
byBiZSBzbWFydGVyIHdpdGggV2ViS2l0Mi4KK30KKworI3ByYWdtYSBtYXJrIC0gUmVjZWl2ZWQg
WFBDIE1lc3NhZ2VzCisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZFNldHVwTWVzc2Fn
ZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbdXNl
ckluZm8gb2JqZWN0Rm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIXBhZ2VJ
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVy
ID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07Cisg
ICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNT
dHJpbmcgKnNlbmRlciA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSU2VuZGVyS2V5XTsKKyAg
ICBpZiAoIXNlbmRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgaWRlbnRpZmll
ciA9IFtwYWdlSWQgdW5zaWduZWRJbnRWYWx1ZV07CisgICAgaWYgKG1fY29ubmVjdGlvbk1hcC5j
b250YWlucyhpZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpdCA9IG1f
ZGVidWdnYWJsZU1hcC5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdCA9PSBtX2RlYnVnZ2Fi
bGVNYXAuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEF0dGVtcHQgdG8gY3JlYXRl
IGEgY29ubmVjdGlvbi4gVGhpcyBtYXkgZmFpbCBpZiB0aGUgcGFnZSBhbHJlYWR5IGhhcyBhbiBp
bnNwZWN0b3Igb3IgaWYgaXQgZGlzYWxsb3dzIGluc3BlY3Rpb24uCisgICAgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSA9IGl0LT52YWx1ZS5maXJzdDsKKyAgICBSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyBkZWJ1Z2dhYmxlSW5mbyA9IGl0LT52YWx1ZS5zZWNvbmQ7
CisgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0
aW9uID0gYWRvcHRSZWYobmV3IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKGRl
YnVnZ2FibGUsIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzZW5kZXIsIGRlYnVnZ2FibGVJbmZvLnR5
cGUpKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24tPnNldHVwKCkpIHsKKyAgICAgICAgY29ubmVjdGlv
bi0+Y2xvc2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29ubmVjdGlvbk1h
cC5zZXQoaWRlbnRpZmllciwgY29ubmVjdGlvbi5yZWxlYXNlKCkpOworCisgICAgdXBkYXRlSGFz
QWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30KKwordm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbykKK3sKKyAgICBOU051bWJlciAqcGFnZUlkID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpX
SVJQYWdlSWRlbnRpZmllcktleV07CisgICAgaWYgKCFwYWdlSWQpCisgICAgICAgIHJldHVybjsK
KworICAgIHVuc2lnbmVkIHBhZ2VJZGVudGlmaWVyID0gW3BhZ2VJZCB1bnNpZ25lZEludFZhbHVl
XTsKKyAgICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5l
Y3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KHBhZ2VJZGVudGlmaWVyKTsKKyAgICBpZiAoIWNv
bm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIE5TRGF0YSAqZGF0YSA9IFt1c2VySW5m
byBvYmplY3RGb3JLZXk6V0lSU29ja2V0RGF0YUtleV07CisgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBtZXNzYWdlID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgIGNvbm5lY3Rpb24tPnNlbmRNZXNz
YWdlVG9CYWNrZW5kKG1lc3NhZ2UuZ2V0KCkpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
cmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBO
U051bWJlciAqcGFnZUlkID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmll
cktleV07CisgICAgaWYgKCFwYWdlSWQpCisgICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5n
ICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSQ29ubmVj
dGlvbklkZW50aWZpZXJLZXldOworICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBbcGFnZUlkIHVuc2lnbmVk
SW50VmFsdWVdOworICAgIFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bj4gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYg
KCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIVtjb25uZWN0aW9uSWRl
bnRpZmllciBpc0VxdWFsVG9TdHJpbmc6Y29ubmVjdGlvbi0+Y29ubmVjdGlvbklkZW50aWZpZXIo
KV0pCisgICAgICAgIHJldHVybjsKKworICAgIGNvbm5lY3Rpb24tPmNsb3NlKCk7CisgICAgbV9j
b25uZWN0aW9uTWFwLnJlbW92ZShpZGVudGlmaWVyKTsKKworICAgIHVwZGF0ZUhhc0FjdGl2ZURl
YnVnU2Vzc2lvbigpOworCisgICAgcHVzaExpc3RpbmdTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjpyZWNlaXZlZEdldExpc3RpbmdNZXNzYWdlKE5TRGljdGlvbmFyeSAqKQorewor
ICAgIHB1c2hMaXN0aW5nTm93KCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZl
ZEluZGljYXRlTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAgIE5TTnVtYmVy
ICpwYWdlSWQgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsK
KyAgICBpZiAoIXBhZ2VJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgaWRlbnRp
ZmllciA9IFtwYWdlSWQgdW5zaWduZWRJbnRWYWx1ZV07CisgICAgQk9PTCBpbmRpY2F0ZUVuYWJs
ZWQgPSBbW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJJbmRpY2F0ZUVuYWJsZWRLZXldIGJvb2xW
YWx1ZV07CisKKyAgICBkaXNwYXRjaEFzeW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKF57
CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgICAgIGF1dG8gaXQg
PSBtX2RlYnVnZ2FibGVNYXAuZmluZChpZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGl0ID09IG1f
ZGVidWdnYWJsZU1hcC5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlID0gaXQtPnZhbHVlLmZpcnN0OworICAg
ICAgICBkZWJ1Z2dhYmxlLT5zZXRJbmRpY2F0aW5nKGluZGljYXRlRW5hYmxlZCk7CisgICAgfSk7
Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZENvbm5lY3Rpb25EaWVkTWVzc2Fn
ZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRl
bnRpZmllciA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJL
ZXldOworICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gaXQgPSBtX2Nvbm5lY3Rpb25NYXAuYmVnaW4oKTsKKyAgICBhdXRvIGVuZCA9IG1f
Y29ubmVjdGlvbk1hcC5lbmQoKTsKKyAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgIGlmIChbY29ubmVjdGlvbklkZW50aWZpZXIgaXNFcXVhbFRvU3RyaW5nOml0LT52YWx1ZS0+
Y29ubmVjdGlvbklkZW50aWZpZXIoKV0pCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBpZiAoaXQgPT0gZW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8UmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBpdC0+dmFsdWU7CisgICAg
Y29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICBtX2Nvbm5lY3Rpb25NYXAucmVtb3ZlKGl0KTsKKwor
ICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBJ
bnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZWxh
eURlZmluaXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaApzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJv
bSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbGF5
RGVmaW5pdGlvbnMuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmgKaW5kZXggMWYzYmMzMi4uMjZhMWY5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNw
ZWN0b3JSZWxheURlZmluaXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmgKQEAgLTIzLDE2ICsyMywxNSBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkluc3BlY3RvclJlbGF5RGVmaW5p
dGlvbnNfaAotI2RlZmluZSBXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zX2gKKyNpZm5kZWYg
UmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzX2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yQ29uc3Rh
bnRzX2gKIAogLy8gV0lSQ29uc3RhbnRzIGFyZSAiV2ViIEluc3BlY3RvciBSZWxheSIgY29uc3Rh
bnRzIHNoYXJlZCBiZXR3ZWVuCi0vLyB0aGUgV2ViSW5zcGVjdG9yIGZyYW1ld29yayBvbiB0aGUg
ZGVidWdnZXIgc2lkZSwgd2ViaW5zcGVjdG9yZCwKLS8vIGFuZCBXZWJLaXQgb24gdGhlIGRlYnVn
Z2FibGUgYXBwbGljYXRpb24gc2lkZS4KKy8vIHRoZSBXZWJJbnNwZWN0b3IgZnJhbWV3b3JrIG9u
IHRoZSBPUyBYIHNpZGUsIHdlYmluc3BlY3RvcmQsIGFuZAorLy8gaU9TIFdlYktpdCBvbiB0aGUg
ZGV2aWNlIHNpZGUuCiAKICNkZWZpbmUgV0lSU2ltdWxhdG9yVENQUG9ydE51bWJlciAgICAgICAg
ICAgICAgIDI3NzUzCiAjZGVmaW5lIFdJUlhQQ01hY2hQb3J0TmFtZSAgICAgICAgICAgICAgICAg
ICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvciIKLSNkZWZpbmUgV0lSWFBDRGVidWdnZXJTZXJ2
aWNlTmFtZSAgICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yLmRlYnVnZ2VyIgog
I2RlZmluZSBXSVJTZXJ2aWNlQXZhaWxhYmxlTm90aWZpY2F0aW9uICAgICAgICAgImNvbS5hcHBs
ZS53ZWJpbnNwZWN0b3JkLmF2YWlsYWJsZSIKICNkZWZpbmUgV0lSU2VydmljZUF2YWlsYWJpbGl0
eUNoZWNrTm90aWZpY2F0aW9uICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5hdmFpbGFiaWxpdHlf
Y2hlY2siCiAjZGVmaW5lIFdJUlNlcnZpY2VFbmFibGVkTm90aWZpY2F0aW9uICAgICAgICAgICAi
Y29tLmFwcGxlLndlYmluc3BlY3RvcmQuZW5hYmxlZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUuY3BwCnNpbWlsYXJpdHkgaW5kZXggNTElCnJlbmFtZSBmcm9tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb24uaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAKaW5kZXggYzdhNWJjYy4uMzc0
NWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9X
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzMyAr
MjMsNTkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotQGNsYXNzIFdlYkluc3BlY3RvclJlbW90
ZUNoYW5uZWw7Ci1AY2xhc3MgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250
cm9sbGVyOworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUuaCIKIAotQGludGVyZmFjZSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVj
dGlvbiA6IE5TT2JqZWN0IHsKLUBwcml2YXRlCi0gICAgV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5l
bCAqX2NoYW5uZWw7CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAKLSAgICBXZWJJbnNw
ZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgKl9jb250cm9sbGVyOyAvLyB3
ZWFrLCB0aGUgY29udHJvbGxlciBvd25zIHVzLgotICAgIE5TU3RyaW5nICpfY29ubmVjdGlvbklk
ZW50aWZpZXI7Ci0gICAgTlNTdHJpbmcgKl9kZXN0aW5hdGlvbjsKLSAgICBOU051bWJlciAqX2lk
ZW50aWZpZXI7CisjaW5jbHVkZSAiRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiUmVtb3Rl
SW5zcGVjdG9yLmgiCisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCkKKyAgICA6IG1faWRlbnRpZmll
cigwKQorICAgICwgbV9hbGxvd2VkKGZhbHNlKQoreworfQorCitSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlOjp+UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSgpCit7CisgICAgUmVtb3RlSW5zcGVj
dG9yOjpzaGFyZWQoKS51bnJlZ2lzdGVyRGVidWdnYWJsZSh0aGlzKTsKIH0KIAotLSAoaWQpaW5p
dFdpdGhDb250cm9sbGVyOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRy
b2xsZXIgKiljb250cm9sbGVyIGNvbm5lY3Rpb25JZGVudGlmaWVyOihOU1N0cmluZyAqKWNvbm5l
Y3Rpb25JZGVudGlmaWVyIGRlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uIGlkZW50
aWZpZXI6KE5TTnVtYmVyICopaWRlbnRpZmllcjsKLS0gKEJPT0wpc2V0dXBDaGFubmVsOwotLSAo
TlNTdHJpbmcgKiljb25uZWN0aW9uSWRlbnRpZmllcjsKLS0gKE5TTnVtYmVyICopaWRlbnRpZmll
cjsKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6aW5pdCgpCit7CisgICAgUmVtb3Rl
SW5zcGVjdG9yOjpzaGFyZWQoKS5yZWdpc3RlckRlYnVnZ2FibGUodGhpcyk7Cit9CiAKLS8vIE1l
c3NhZ2VzIGZyb20gdGhlIEluc3BlY3RvclNlcnZlci4KLS0gKHZvaWQpcmVjZWl2ZWREYXRhOihO
U0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5OwotLSAodm9pZClyZWNlaXZlZERpZENsb3NlOihOU0Rp
Y3Rpb25hcnkgKilkaWN0aW9uYXJ5Owordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjp1
cGRhdGUoKQoreworICAgIFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkudXBkYXRlRGVidWdnYWJs
ZSh0aGlzKTsKK30KIAotLy8gTWVzc2FnZXMgZnJvbSB0aGUgQ2hhbm5lbC4KLS0gKHZvaWQpY2xl
YXJDaGFubmVsOwotLSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVz
c2FnZTsKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6c2V0UmVtb3RlRGVidWdnaW5n
QWxsb3dlZChib29sIGFsbG93ZWQpCit7CisgICAgaWYgKG1fYWxsb3dlZCA9PSBhbGxvd2VkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2FsbG93ZWQgPSBhbGxvd2VkOworCisgICAgdXBkYXRl
KCk7Cit9CisKK1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGU6OmluZm8oKSBjb25zdAoreworICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJ
bmZvIGluZm87CisgICAgaW5mby5pZGVudGlmaWVyID0gaWRlbnRpZmllcigpOworICAgIGluZm8u
dHlwZSA9IHR5cGUoKTsKKyAgICBpbmZvLm5hbWUgPSBuYW1lKCk7CisgICAgaW5mby51cmwgPSB1
cmwoKTsKKyAgICBpbmZvLmhhc0xvY2FsRGVidWdnZXIgPSBoYXNMb2NhbERlYnVnZ2VyKCk7Cisg
ICAgaW5mby5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkID0gcmVtb3RlRGVidWdnaW5nQWxsb3dlZCgp
OworICAgIHJldHVybiBpbmZvOworfQogCi0vLyBNZXNzYWdlcyB0byB0aGUgQ2hhbm5lbC4KLS0g
KHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKK30gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgogCi1AZW5kCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uOTAyNzRhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaApA
QCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaWZuZGVmIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVfaAorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlX2gKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsK
KworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworc3RydWN0IFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVJbmZvOworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCk7
CisgICAgdmlydHVhbCB+UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSgpOworCisgICAgdm9pZCBp
bml0KCk7CisgICAgdm9pZCB1cGRhdGUoKTsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICB2b2lkIHNldElkZW50aWZpZXIodW5z
aWduZWQgaWRlbnRpZmllcikgeyBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CisKKyAgICBi
b29sIHJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWQ7IH0K
KyAgICB2b2lkIHNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoYm9vbCk7CisKKyAgICBSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyBpbmZvKCkgY29uc3Q7CisKKyAgICBlbnVtIERlYnVnZ2Fi
bGVUeXBlIHsgSmF2YVNjcmlwdCwgV2ViIH07CisgICAgdmlydHVhbCBEZWJ1Z2dhYmxlVHlwZSB0
eXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVy
biBTdHJpbmcoKTsgfSAvLyBKYXZhU2NyaXB0IGFuZCBXZWIKKyAgICB2aXJ0dWFsIFN0cmluZyB1
cmwoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBXZWIKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29u
bmVjdCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bmRpY2F0aW5nKGJvb2wpIHsgfSAvLyBEZWZhdWx0IGlzIHRvIGRvIG5vdGhpbmcuCisKK3ByaXZh
dGU6CisgICAgdW5zaWduZWQgbV9pZGVudGlmaWVyOworICAgIGJvb2wgbV9hbGxvd2VkOworfTsK
Kworc3RydWN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIHsKKyAgICBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlSW5mbygpCisgICAgICAgIDogaWRlbnRpZmllcigwKQorICAgICAgICAs
IHR5cGUoUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6SmF2YVNjcmlwdCkKKyAgICAgICAgLCBo
YXNMb2NhbERlYnVnZ2VyKGZhbHNlKQorICAgICAgICAsIHJlbW90ZURlYnVnZ2luZ0FsbG93ZWQo
ZmFsc2UpCisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXI7CisgICAgUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUgdHlwZTsKKyAgICBTdHJpbmcg
bmFtZTsKKyAgICBTdHJpbmcgdXJsOworICAgIGJvb2wgaGFzTG9jYWxEZWJ1Z2dlcjsKKyAgICBi
b29sIHJlbW90ZURlYnVnZ2luZ0FsbG93ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0
b3IKKworI2VuZGlmIC8vIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVfaAorCisjZW5kaWYgLy8g
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jY2RlNjIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaApAQCAtMCww
ICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaWZuZGVmIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uX2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb25faAorCisjaW1wb3J0ICJGcm9udGVuZENoYW5uZWwuaCIKKyNpbXBvcnQgIlJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGUuaCIKKyNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+Cisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CisjaW1w
b3J0IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworT0JKQ19DTEFTUyBOU1N0cmluZzsK
KworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uIEZJTkFMIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiwgcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCB7CitwdWJsaWM6CisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24o
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSosIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmll
ciwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uLCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpEZWJ1
Z2dhYmxlVHlwZSk7CisgICAgdmlydHVhbCB+UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24oKTsKKworICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbigpIGNvbnN0OworICAgIE5TU3Ry
aW5nICpjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0OworICAgIHVuc2lnbmVkIGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIGJvb2wgc2V0dXAoKTsK
KworICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIGNsb3NlRnJvbURlYnVnZ2FibGUoKTsKKwor
ICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoTlNTdHJpbmcgKik7CisgICAgdmlydHVhbCBi
b29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKworcHJp
dmF0ZToKKyAgICB2b2lkIGRpc3BhdGNoU3luY09uRGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkp
OworICAgIHZvaWQgZGlzcGF0Y2hBc3luY09uRGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpOwor
CisgICAgLy8gVGhpcyBjb25uZWN0aW9uIGZyb20gdGhlIFJlbW90ZUluc3BlY3RvciBzaW5nbGV0
b24gdG8gdGhlIERlYnVnZ2FibGUKKyAgICAvLyBjYW4gYmUgdXNlZCBvbiBtdWx0aXBsZSB0aHJl
YWRzLiBTbyBhbnkgYWNjZXNzIHRvIHRoZSBkZWJ1Z2dhYmxlCisgICAgLy8gaXRzZWxmIG11c3Qg
dGFrZSB0aGlzIGxvY2sgdG8gZW5zdXJlIG1fZGVidWdnYWJsZSBpcyB2YWxpZC4KKyAgICBNdXRl
eCBtX2RlYnVnZ2FibGVMb2NrOworCisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogbV9k
ZWJ1Z2dhYmxlOworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9xdWV1ZUZvckRlYnVnZ2FibGU7Cisg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIFJldGFp
blB0cjxOU1N0cmluZz4gbV9kZXN0aW5hdGlvbjsKKyAgICB1bnNpZ25lZCBtX2lkZW50aWZpZXI7
CisgICAgYm9vbCBtX2Nvbm5lY3RlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3Rvcgor
CisjZW5kaWYgLy8gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb25faAorCisjZW5k
aWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjVmZmZlYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5t
bQpAQCAtMCwwICsxLDE2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisj
aW1wb3J0ICJSZW1vdGVJbnNwZWN0b3IuaCIKKworI2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQg
PHd0Zi9pb3MvV2ViQ29yZVRocmVhZC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworCitSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24oUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJs
ZSwgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyLCBOU1N0cmluZyAqZGVzdGluYXRpb24s
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkRlYnVnZ2FibGVUeXBlIHR5cGUpCisgICAgOiBt
X2RlYnVnZ2FibGUoZGVidWdnYWJsZSkKKyAgICAsIG1fcXVldWVGb3JEZWJ1Z2dhYmxlKE5VTEwp
CisgICAgLCBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyKGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAg
ICwgbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKKyAgICAsIG1faWRlbnRpZmllcihkZWJ1Z2dh
YmxlLT5pZGVudGlmaWVyKCkpCisgICAgLCBtX2Nvbm5lY3RlZChmYWxzZSkKK3sKKyAgICAvLyBX
ZWIgZGVidWdnYWJsZXMgbXVzdCBiZSBhY2Nlc3NlZCBvbiB0aGUgbWFpbiBxdWV1ZSAob3IgdGhl
IFdlYlRocmVhZCBvbiBpT1MpLiBTaWduYWwgdGhhdCB3aXRoIGEgTlVMTCBtX3F1ZXVlRm9yRGVi
dWdnYWJsZS4KKyAgICAvLyBIb3dldmVyLCBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzIGNhbiBiZSBh
Y2Nlc3NlZCBmcm9tIGFueSB0aHJlYWQvcXVldWUsIHNvIHdlIGNyZWF0ZSBhIHF1ZXVlIGZvciBl
YWNoIEphdmFTY3JpcHQgZGVidWdnYWJsZS4KKyAgICBpZiAodHlwZSA9PSBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlOjpKYXZhU2NyaXB0KQorICAgICAgICBtX3F1ZXVlRm9yRGVidWdnYWJsZSA9
IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlLnJlbW90ZS1p
bnNwZWN0b3IteHBjLWNvbm5lY3Rpb24iLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworfQorCitS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAobV9xdWV1ZUZvckRlYnVnZ2FibGUpIHsKKyAg
ICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3F1ZXVlRm9yRGVidWdnYWJsZSk7CisgICAgICAgIG1f
cXVldWVGb3JEZWJ1Z2dhYmxlID0gTlVMTDsKKyAgICB9Cit9CisKK05TU3RyaW5nICpSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGVzdGluYXRpb24oKSBjb25zdAoreworICAg
IHJldHVybiBbW21fZGVzdGluYXRpb24gY29weV0gYXV0b3JlbGVhc2VdOworfQorCitOU1N0cmlu
ZyAqUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmNvbm5lY3Rpb25JZGVudGlm
aWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW1ttX2Nvbm5lY3Rpb25JZGVudGlmaWVyIGNvcHld
IGF1dG9yZWxlYXNlXTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbjo6ZGlzcGF0Y2hTeW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSkKK3sKKyAgICBp
ZiAobV9xdWV1ZUZvckRlYnVnZ2FibGUpCisgICAgICAgIGRpc3BhdGNoX3N5bmMobV9xdWV1ZUZv
ckRlYnVnZ2FibGUsIGJsb2NrKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgZWxzZSBpZiAoV2Vi
Q29yZVdlYlRocmVhZElzRW5hYmxlZCAmJiBXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKCkpCisg
ICAgICAgIFdlYkNvcmVXZWJUaHJlYWRSdW5TeW5jKGJsb2NrKTsKKyNlbmRpZgorICAgIGVsc2UK
KyAgICAgICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9jayk7
Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNo
QXN5bmNPbkRlYnVnZ2FibGUodm9pZCAoXmJsb2NrKSgpKQoreworICAgIGlmIChtX3F1ZXVlRm9y
RGVidWdnYWJsZSkKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9xdWV1ZUZvckRlYnVnZ2FibGUs
IGJsb2NrKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgZWxzZSBpZiAoV2ViQ29yZVdlYlRocmVh
ZElzRW5hYmxlZCAmJiBXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKCkpCisgICAgICAgIFdlYkNv
cmVXZWJUaHJlYWRSdW4oYmxvY2spOworI2VuZGlmCisgICAgZWxzZQorICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9jayk7Cit9CisKK2Jvb2wgUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNldHVwKCkKK3sKKyAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9kZWJ1Z2dhYmxlTG9jayk7CisKKyAgICBpZiAoIW1fZGVidWdnYWJsZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZGlzcGF0Y2hTeW5jT25EZWJ1Z2dhYmxlKF57
CisgICAgICAgIGlmICghbV9kZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fZGVidWdnYWJsZS0+aGFzTG9jYWxE
ZWJ1Z2dlcigpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fZGVidWdnYWJsZS0+
Y29ubmVjdCh0aGlzKTsKKyAgICAgICAgbV9jb25uZWN0ZWQgPSB0cnVlOworICAgIH0pOworCisg
ICAgcmV0dXJuIG1fY29ubmVjdGVkOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uOjpjbG9zZUZyb21EZWJ1Z2dhYmxlKCkKK3sKKyAgICBNdXRleExvY2tlciBs
b2NrZXIobV9kZWJ1Z2dhYmxlTG9jayk7CisKKyAgICBtX2RlYnVnZ2FibGUgPSBudWxscHRyOwor
fQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZSgpCit7
CisgICAgcmVmKCk7CisgICAgZGlzcGF0Y2hBc3luY09uRGVidWdnYWJsZSheeworICAgICAgICB7
CisgICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9kZWJ1Z2dhYmxlTG9jayk7CisKKyAg
ICAgICAgICAgIGlmIChtX2RlYnVnZ2FibGUpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9jb25u
ZWN0ZWQpCisgICAgICAgICAgICAgICAgICAgIG1fZGVidWdnYWJsZS0+ZGlzY29ubmVjdCgpOwor
CisgICAgICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBkZXJlZigpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvQmFja2VuZChOU1N0cmlu
ZyAqbWVzc2FnZSkKK3sKKyAgICByZWYoKTsKKyAgICBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxl
KF57CisgICAgICAgIHsKKyAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2Fi
bGVMb2NrKTsKKworICAgICAgICAgICAgaWYgKG1fZGVidWdnYWJsZSkKKyAgICAgICAgICAgICAg
ICBtX2RlYnVnZ2FibGUtPmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChtZXNzYWdl
KTsKKyAgICAgICAgfQorICAgICAgICBkZXJlZigpOworICAgIH0pOworfQorCitib29sIFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkuc2Vu
ZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGlkZW50aWZpZXIoKSwgbWVzc2FnZSk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
Ykluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5o
CnNpbWlsYXJpdHkgaW5kZXggNTAlCmNvcHkgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNw
ZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaApjb3B5IHRvIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24u
aAppbmRleCAzZjk0NGVjLi4wYmYzNmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzLDMyICsyMyw0OSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2lmbmRl
ZiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uX2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbl9oCisKKyNpbXBvcnQgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CisjaW1wb3J0
IDx3dGYvTm9uY29weWFibGUuaD4KICNpbXBvcnQgPHhwYy94cGMuaD4KIAotQGNsYXNzIFdlYklu
c3BlY3RvclhQQ1dyYXBwZXI7Ci0KLUBwcm90b2NvbCBXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVs
ZWdhdGUgPE5TT2JqZWN0PgotLSAodm9pZCl4cGNDb25uZWN0aW9uOihXZWJJbnNwZWN0b3JYUENX
cmFwcGVyICopY29ubmVjdGlvbiByZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5h
bWUgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOwotLSAodm9pZCl4cGNDb25uZWN0
aW9uRmFpbGVkOihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopY29ubmVjdGlvbjsKLUBvcHRpb25h
bAotLSAodm9pZCl4cGNDb25uZWN0aW9uOihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopY29ubmVj
dGlvbiB1bmhhbmRsZWRNZXNzYWdlOih4cGNfb2JqZWN0X3QpbWVzc2FnZTsKLUBlbmQKLQotQGlu
dGVyZmFjZSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyIDogTlNPYmplY3QKLXsKLSAgICBpZCA8V2Vi
SW5zcGVjdG9yWFBDV3JhcHBlckRlbGVnYXRlPiBfZGVsZWdhdGU7Ci0gICAgeHBjX2Nvbm5lY3Rp
b25fdCBfY29ubmVjdGlvbjsKLSAgICBOU1N0cmluZyAqX3RhZzsKLX0KLQotLSAoV2ViSW5zcGVj
dG9yWFBDV3JhcHBlciAqKWluaXRXaXRoQ29ubmVjdGlvbjooeHBjX2Nvbm5lY3Rpb25fdCljb25u
ZWN0aW9uOwotLSAodm9pZCljbG9zZTsKLS0gKHZvaWQpc2VuZE1lc3NhZ2U6KE5TU3RyaW5nICop
bWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOwotCi1AcHJvcGVy
dHkgKG5vbmF0b21pYywgYXNzaWduKSBpZCA8V2ViSW5zcGVjdG9yWFBDV3JhcHBlckRlbGVnYXRl
PiBkZWxlZ2F0ZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgeHBjX2Nvbm5lY3Rp
b25fdCBjb25uZWN0aW9uOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGF2
YWlsYWJsZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqdGFnOwotCi1A
ZW5kCitPQkpDX0NMQVNTIE5TU3RyaW5nOworT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CisKK25h
bWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
KTsKKworcHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2
aXJ0dWFsIH5DbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25S
ZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICpt
ZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgeHBjQ29ubmVjdGlvbkZhaWxlZChSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKikg
PSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvblVuaGFuZGxlZE1lc3NhZ2Uo
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIHhwY19vYmplY3RfdCkgPSAwOworICAgIH07
CisKKyAgICBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QsIENs
aWVudCopOworICAgIHZpcnR1YWwgflJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oKTsKKwor
ICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKE5TU3RyaW5nICptZXNzYWdl
TmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisKK3ByaXZhdGU6CisgICAgTlNEaWN0aW9u
YXJ5ICpkZXNlcmlhbGl6ZU1lc3NhZ2UoeHBjX29iamVjdF90KTsKKyAgICB2b2lkIGhhbmRsZUV2
ZW50KHhwY19vYmplY3RfdCk7CisKKyAgICB4cGNfY29ubmVjdGlvbl90IG1fY29ubmVjdGlvbjsK
KyAgICBkaXNwYXRjaF9xdWV1ZV90IG1fcXVldWU7CisgICAgQ2xpZW50KiBtX2NsaWVudDsKK307
CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbl9oCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmFkMTY5OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
Lm1tCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2ltcG9y
dCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgor
CisjaWYgX19oYXNfaW5jbHVkZSg8Q29yZUZvdW5kYXRpb24vQ0ZYUENCcmlkZ2UuaD4pCisjaW1w
b3J0IDxDb3JlRm91bmRhdGlvbi9DRlhQQ0JyaWRnZS5oPgorI2Vsc2UKK2V4dGVybiAiQyIgeHBj
X29iamVjdF90IF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VXaXRoQ0ZPYmplY3QoQ0ZUeXBlUmVmKTsK
K2V4dGVybiAiQyIgQ0ZUeXBlUmVmIF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2Uo
eHBjX29iamVjdF90KTsKKyNlbmRpZgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworLy8gQ29u
c3RhbnRzIHByaXZhdGUgdG8gdGhpcyBmaWxlIGZvciBtZXNzYWdlIHNlcmlhbGl6YXRpb24gb24g
Ym90aCBlbmRzLgorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uTWVzc2FnZU5h
bWVLZXkgQCJtZXNzYWdlTmFtZSIKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
blVzZXJJbmZvS2V5IEAidXNlckluZm8iCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb25TZXJpYWxpemVkTWVzc2FnZUtleSAibXNnRGF0YSIKKworUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbih4cGNfY29ubmVjdGlvbl90
IGNvbm5lY3Rpb24sIENsaWVudCogY2xpZW50KQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rp
b24pCisgICAgLCBtX3F1ZXVlKGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLkphdmFT
Y3JpcHRDb3JlLnJlbW90ZS1pbnNwZWN0b3IteHBjLWNvbm5lY3Rpb24iLCBESVNQQVRDSF9RVUVV
RV9TRVJJQUwpKQorICAgICwgbV9jbGllbnQoY2xpZW50KQoreworICAgIHhwY19yZXRhaW4obV9j
b25uZWN0aW9uKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKG1fY29ubmVj
dGlvbiwgbV9xdWV1ZSk7CisgICAgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiogd2Vha1Ro
aXMgPSB0aGlzOworICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVj
dGlvbiwgXih4cGNfb2JqZWN0X3Qgb2JqZWN0KSB7CisgICAgICAgIHdlYWtUaGlzLT5oYW5kbGVF
dmVudChvYmplY3QpOworICAgIH0pOworICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShtX2Nvbm5l
Y3Rpb24pOworfQorCitSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjp+UmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbigpCit7CisgICAgQVNTRVJUKCFtX2NsaWVudCk7CisgICAgQVNTRVJU
KCFtX2Nvbm5lY3Rpb24pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246
OmNsb3NlKCkKK3sKKyAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgeHBjX2Nvbm5lY3Rpb25fY2FuY2VsKG1fY29ubmVjdGlvbik7CisgICAgeHBjX3JlbGVhc2Uo
bV9jb25uZWN0aW9uKTsKKyAgICBtX2Nvbm5lY3Rpb24gPSBOVUxMOworCisgICAgZGlzcGF0Y2hf
cmVsZWFzZShtX3F1ZXVlKTsKKyAgICBtX3F1ZXVlID0gTlVMTDsKKworICAgIG1fY2xpZW50ID0g
bnVsbHB0cjsKK30KKworTlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
OjpkZXNlcmlhbGl6ZU1lc3NhZ2UoeHBjX29iamVjdF90IG9iamVjdCkKK3sKKyAgICBpZiAoeHBj
X2dldF90eXBlKG9iamVjdCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIHhwY19vYmplY3RfdCB4cGNEaWN0aW9uYXJ5ID0geHBjX2RpY3Rpb25hcnlf
Z2V0X3ZhbHVlKG9iamVjdCwgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRN
ZXNzYWdlS2V5KTsKKyAgICBpZiAoIXhwY0RpY3Rpb25hcnkgfHwgeHBjX2dldF90eXBlKHhwY0Rp
Y3Rpb25hcnkpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpIHsKKyAgICAgICAgaWYgKG1fY2xpZW50
KQorICAgICAgICAgICAgbV9jbGllbnQtPnhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKHRo
aXMsIG9iamVjdCk7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgTlNEaWN0aW9u
YXJ5ICpkaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8TlNEaWN0aW9uYXJ5ICo+KF9DRlhQQ0NyZWF0
ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjRGljdGlvbmFyeSkpOworICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoZGljdGlvbmFyeSwgIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIp
OworICAgIHJldHVybiBbZGljdGlvbmFyeSBhdXRvcmVsZWFzZV07Cit9CisKK3ZvaWQgUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG9iamVjdCkK
K3sKKyAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHhw
Y19nZXRfdHlwZShvYmplY3QpID09IFhQQ19UWVBFX0VSUk9SKSB7CisgICAgICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgICAgIG1fY2xpZW50LT54cGNDb25uZWN0aW9uRmFpbGVkKHRoaXMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGljdGlvbmFy
eSA9IGRlc2VyaWFsaXplTWVzc2FnZShvYmplY3QpOworICAgIGlmICghZGF0YURpY3Rpb25hcnkp
CisgICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nICptZXNzYWdlID0gW2RhdGFEaWN0aW9u
YXJ5IG9iamVjdEZvcktleTpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uTWVzc2FnZU5hbWVL
ZXldOworICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm8gPSBbZGF0YURpY3Rpb25hcnkgb2JqZWN0
Rm9yS2V5OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25Vc2VySW5mb0tleV07CisgICAgaWYg
KG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2Fn
ZSh0aGlzLCBtZXNzYWdlLCB1c2VySW5mbyk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UoTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25h
cnkgKnVzZXJJbmZvKQoreworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rp
b25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bWVzc2FnZU5hbWUgZm9yS2V5OlJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb25NZXNzYWdlTmFtZUtleV07CisgICAgaWYgKHVzZXJJbmZvKQorICAg
ICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6dXNlckluZm8gZm9yS2V5OlJlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb25Vc2VySW5mb0tleV07CisKKyAgICB4cGNfb2JqZWN0X3QgeHBjRGljdGlv
bmFyeSA9IF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VXaXRoQ0ZPYmplY3QoKENGRGljdGlvbmFyeVJl
ZilkaWN0aW9uYXJ5KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHhwY0RpY3Rpb25hcnkgJiYg
eHBjX2dldF90eXBlKHhwY0RpY3Rpb25hcnkpID09IFhQQ19UWVBFX0RJQ1RJT05BUlksICJVbmFi
bGUgdG8gc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7CisgICAgaWYgKCF4cGNEaWN0aW9uYXJ5KQor
ICAgICAgICByZXR1cm47CisKKyAgICB4cGNfb2JqZWN0X3QgbXNnID0geHBjX2RpY3Rpb25hcnlf
Y3JlYXRlKE5VTEwsIE5VTEwsIDApOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtc2cs
IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25TZXJpYWxpemVkTWVzc2FnZUtleSwgeHBjRGlj
dGlvbmFyeSk7CisgICAgeHBjX3JlbGVhc2UoeHBjRGljdGlvbmFyeSk7CisKKyAgICB4cGNfY29u
bmVjdGlvbl9zZW5kX21lc3NhZ2UobV9jb25uZWN0aW9uLCBtc2cpOworCisgICAgeHBjX3JlbGVh
c2UobXNnKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiYTNkNDIyLi5iMzM3YTdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMjUsNiAr
MTI1LDExIEBACiAjaW5jbHVkZSAiSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuaCIKICNlbmRp
ZiAvLyBFTkFCTEUoUFJPTUlTRVMpCiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNw
ZWN0b3IuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QubHV0LmgiCiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtMTg3LDYgKzE5MiwxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpp
bml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpCiAKICAgICBtX2RlYnVnZ2VyID0gMDsKIAorI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IHN0ZDo6
bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlPigqdGhpcyk7CisgICAgbV9pbnNw
ZWN0b3JEZWJ1Z2dhYmxlLT5pbml0KCk7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5zZXRS
ZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKHRydWUpOworI2VuZGlmCisKICAgICByZXNldChwcm90b3R5
cGUoKSk7CiB9CiAKQEAgLTc2MCw0ICs3NzEsMzEgQEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUqIGNhbGxGcmFtZSwK
ICAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7CiB9CiAKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6
OnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQorICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+c2V0UmVtb3RlRGVi
dWdnaW5nQWxsb3dlZChlbmFibGVkKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQp
OworI2VuZGlmCit9CisKK2Jvb2wgSlNHbG9iYWxPYmplY3Q6OnJlbW90ZURlYnVnZ2luZ0VuYWJs
ZWQoKSBjb25zdAoreworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHJldHVybiBt
X2luc3BlY3RvckRlYnVnZ2FibGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKTsKKyNlbHNlCisg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldE5h
bWUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIG1fbmFtZSA9IG5hbWU7CisKKyNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnVwZGF0ZSgp
OworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggNGJkNzQ0Ni4uNjMxZmJiMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01
OCw2ICs1OCw3IEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0aW9uUHJv
dG90eXBlOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgR2xvYmFsQ29kZUJsb2NrOworY2xh
c3MgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOwogY2xhc3MgSlNQcm9taXNlUHJvdG90eXBlOwog
Y2xhc3MgSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU7CiBjbGFzcyBKU1N0YWNrOwpAQCAtMjI5
LDggKzIzMCwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIAogICAgIHZvaWQqIG1fc3BlY2lhbFBv
aW50ZXJzW1NwZWNpYWw6OlRhYmxlU2l6ZV07IC8vIFNwZWNpYWwgcG9pbnRlcnMgdXNlZCBieSB0
aGUgTExJbnQgYW5kIEpJVC4KIAorICAgIFN0cmluZyBtX25hbWU7CisKICAgICBEZWJ1Z2dlciog
bV9kZWJ1Z2dlcjsKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+IG1faW5zcGVjdG9yRGVidWdnYWJsZTsK
KyNlbmRpZgorCiAgICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fbWFzcXVlcmFkZXNBc1VuZGVm
aW5lZFdhdGNocG9pbnQ7CiAgICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1faGF2aW5nQUJhZFRp
bWVXYXRjaHBvaW50OwogICAgIFJlZlB0cjxXYXRjaHBvaW50U2V0PiBtX3ZhckluamVjdGlvbldh
dGNocG9pbnQ7CkBAIC00MjAsNiArNDI3LDEyIEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIHBy
b21pc2VXcmFwcGVyQ2FsbGJhY2tTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VX
cmFwcGVyQ2FsbGJhY2tTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNlbmRpZiAvLyBFTkFCTEUoUFJPTUlT
RVMpCiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFJlbW90ZURlYnVnZ2luZ0VuYWJs
ZWQoYm9vbCBlbmFibGVkKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHJlbW90ZURlYnVn
Z2luZ0VuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5h
bWUpOworICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQor
CiAgICAgSlNBcnJheUJ1ZmZlclByb3RvdHlwZSogYXJyYXlCdWZmZXJQcm90b3R5cGUoKSBjb25z
dCB7IHJldHVybiBtX2FycmF5QnVmZmVyUHJvdG90eXBlLmdldCgpOyB9CiAKICNkZWZpbmUgREVG
SU5FX0FDQ0VTU09SU19GT1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJv
cGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcApz
aW1pbGFyaXR5IGluZGV4IDUzJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNw
ZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaApyZW5hbWUgdG8gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcAppbmRleCAz
Zjk0NGVjLi40Y2M5MWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0
b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzMiArMjMsNDkgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0j
aW1wb3J0IDx4cGMveHBjLmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlLmgiCiAKLUBjbGFzcyBXZWJJbnNwZWN0b3JYUENXcmFwcGVyOwor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi1AcHJvdG9jb2wgV2ViSW5zcGVjdG9yWFBD
V3JhcHBlckRlbGVnYXRlIDxOU09iamVjdD4KLS0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5z
cGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb24gcmVjZWl2ZWRNZXNzYWdlOihOU1N0cmluZyAq
KW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKLS0gKHZvaWQp
eHBjQ29ubmVjdGlvbkZhaWxlZDooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb247
Ci1Ab3B0aW9uYWwKLS0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ciAqKWNvbm5lY3Rpb24gdW5oYW5kbGVkTWVzc2FnZTooeHBjX29iamVjdF90KW1lc3NhZ2U7Ci1A
ZW5kCisjaW5jbHVkZSAiRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3IuaCIKIAotQGludGVyZmFjZSBXZWJJbnNw
ZWN0b3JYUENXcmFwcGVyIDogTlNPYmplY3QKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisK
K25hbWVzcGFjZSBKU0MgeworCitKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OkpTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZShKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorICAgIDogbV9nbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogewotICAgIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFwcGVy
RGVsZWdhdGU+IF9kZWxlZ2F0ZTsKLSAgICB4cGNfY29ubmVjdGlvbl90IF9jb25uZWN0aW9uOwot
ICAgIE5TU3RyaW5nICpfdGFnOwogfQogCi0tIChXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopaW5p
dFdpdGhDb25uZWN0aW9uOih4cGNfY29ubmVjdGlvbl90KWNvbm5lY3Rpb247Ci0tICh2b2lkKWNs
b3NlOwotLSAodm9pZClzZW5kTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5m
bzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87CitTdHJpbmcgSlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlOjpuYW1lKCkgY29uc3QKK3sKKyAgICBTdHJpbmcgbmFtZSA9IG1fZ2xvYmFsT2JqZWN0Lm5h
bWUoKTsKKyAgICByZXR1cm4gbmFtZS5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIkpTQ29udGV4
dCIpIDogbmFtZTsKK30KKwordm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmNvbm5lY3Qo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50Lgor
ICAgIC8vIENyZWF0ZSBhbiBJbnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JGcm9udGVuZCwg
SW5zcGVjdG9yQmFja2VuZCwgYW5kIEFnZW50cy4KKyAgICAvLyAiSW5zcGVjdG9yQ29udHJvbGxl
cjo6Y29ubmVjdEZyb250ZW5kIi4KK30KKwordm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6
OmRpc2Nvbm5lY3QoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgLy8gIkluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCIuCit9CisKK3ZvaWQgSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3Qg
U3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIC8vICJJbnNwZWN0b3JD
b250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQiCit9CiAKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBhc3NpZ24pIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGU+IGRl
bGVnYXRlOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSB4cGNfY29ubmVjdGlvbl90
IGNvbm5lY3Rpb247Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgYXZhaWxh
YmxlOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICp0YWc7Cit9IC8vIG5h
bWVzcGFjZSBKU0MKIAotQGVuZAorI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNw
ZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oCnNpbWlsYXJpdHkgaW5k
ZXggNTMlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUv
V2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmgKcmVuYW1lIHRv
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5o
CmluZGV4IGY4YmY1ZTguLjZmMmQ5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
Ykluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250
cm9sbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDI2ICsyMywzOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1AY2xhc3Mg
V2ViSW5zcGVjdG9yU2VydmVyOwotQGNsYXNzIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25u
ZWN0aW9uOwotQGNsYXNzIFdlYkluc3BlY3RvclhQQ1dyYXBwZXI7CisjaWZuZGVmIEpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZV9oCisjZGVmaW5lIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZV9oCiAK
LUBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVy
IDogTlNPYmplY3QgewotQHByaXZhdGUKLSAgICBXZWJJbnNwZWN0b3JTZXJ2ZXIgKl9zZXJ2ZXI7
IC8vIHdlYWssIHRoZSBzZXJ2ZXIgc2hvdWxkIG5ldmVyIGRlYWxsb2NhdGUuCi0gICAgTlNNdXRh
YmxlRGljdGlvbmFyeSAqX29wZW5Db25uZWN0aW9uczsKLSAgICBCT09MIF9oYXNTY2hlZHVsZWRQ
dXNoOwotfQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi0tIChpZClpbml0V2l0aFNl
cnZlcjooV2ViSW5zcGVjdG9yU2VydmVyICopc2VydmVyOworI2luY2x1ZGUgIlJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAotLSAodm9p
ZCljbG9zZUFsbENvbm5lY3Rpb25zOworbmFtZXNwYWNlIEpTQyB7CiAKLS0gKHZvaWQpcHVzaExp
c3Rpbmc7Ci0tICh2b2lkKXJlY2VpdmVkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1
c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87CitjbGFzcyBKU0dsb2JhbE9iamVjdDsK
IAotLSAodm9pZCljb25uZWN0aW9uQ2xvc2luZzooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nv
bm5lY3Rpb24gKiljb25uZWN0aW9uOworY2xhc3MgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlIEZJ
TkFMIDogcHVibGljIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlKTsKK3B1YmxpYzoK
KyAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUoSlNHbG9iYWxPYmplY3QmKTsKKyAgICB+SlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlKCkgeyB9CiAKLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0Zyb250
ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2Vy
SW5mbzsKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6
RGVidWdnYWJsZVR5cGUgdHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6SmF2YVNjcmlwdDsgfQogCi1AZW5kCisgICAgdmly
dHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNM
b2NhbERlYnVnZ2VyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZp
cnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgSlNHbG9iYWxPYmplY3QmIG1f
Z2xvYmFsT2JqZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2VuZGlmIC8vICFkZWZpbmVkKEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCA0ZTQ0NmFlLi5iMTcxMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25u
ZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvaW9zL1dlYkNvcmVUaHJlYWQuY3Bw
OgorICAgICAgICAqIHd0Zi9pb3MvV2ViQ29yZVRocmVhZC5oOgorICAgICAgICBFeHBvc2UgV2Vi
VGhyZWFkUnVuL1dlYlRocmVhZFJ1blN5bmMgaU9TIG1ldGhvZHMgZGVmaW5lZCBpbiBXZWJDb3Jl
IHRocm91Z2gKKyAgICAgICAgV1RGIHNvIHRoYXQgSmF2YVNjcmlwdENvcmUgY2FuIHVzZSBpdC4g
QW5vdGhlciBzdWNoIG1ldGhvZCBhbHJlYWR5IGV4aXN0ZWQuCisKIDIwMTMtMTEtMzAgIHBlYXZv
QG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CiAKICAgICAgICAgW1dpbl0gU29tZSBK
YXZhU2NyaXB0IGRhdGUgdGVzdHMgYXJlIGZhaWxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRo
cmVhZC5jcHAKaW5kZXggNDI3NDQ2Ni4uZjA3ZGMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvaW9zL1dlYkNvcmVUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3Jl
VGhyZWFkLmNwcApAQCAtMjgsNCArMjgsNyBAQAogCiAjaWYgVVNFKFdFQl9USFJFQUQpCiBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCAoKldlYkNvcmVXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQp
KHZvaWQpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFkSXNFbmFi
bGVkKSh2b2lkKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1
bikodm9pZCAoXmJsb2NrKSgpKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkICgqV2ViQ29yZVdl
YlRocmVhZFJ1blN5bmMpKHZvaWQgKF5ibG9jaykoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2Vi
Q29yZVRocmVhZC5oCmluZGV4IDEwZTI2YTcuLjgxOWNlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYvaW9zL1dlYkNv
cmVUaHJlYWQuaApAQCAtMzMsNiArMzMsOSBAQCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiBleHRl
cm4gYm9vbCAoKldlYkNvcmVXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQpKHZvaWQpOworZXh0
ZXJuIGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKSh2b2lkKTsKK2V4dGVybiB2b2lk
ICgqV2ViQ29yZVdlYlRocmVhZFJ1bikodm9pZCAoXmJsb2NrKSgpKTsKK2V4dGVybiB2b2lkICgq
V2ViQ29yZVdlYlRocmVhZFJ1blN5bmMpKHZvaWQgKF5ibG9jaykoKSk7CiAKICNpZmRlZiBfX2Nw
bHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM4YjZiYTIuLmViNGQwNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw2MyBAQAorMjAxMy0xMS0yMiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBtaXNzaW5nIGZvbGRlcnMgYW5k
IGZpbGVzIHRvIFhjb2RlIHByb2plY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNDgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisy
MDEzLTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0
aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBhIFdlYkNvcmU6OlBhZ2UgYSAiV2ViIiBS
ZW1vdGUgRGVidWdnYWJsZS4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW90ZUluc3Bl
Y3Rpb25BbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFJlbW90ZUluc3BlY3Rp
b25BbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbW90ZUluc3BlY3RvckluZm9y
bWF0aW9uRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdl
L1BhZ2VEZWJ1Z2dhYmxlLmg6CisgICAgICAgICogcGFnZS9QYWdlRGVidWdnYWJsZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OlBhZ2VEZWJ1Z2dhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjpuYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VEZWJ1Z2dhYmxlOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2Fi
bGU6Omhhc0xvY2FsRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6
OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZyb21S
ZW1vdGVGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6c2V0SW5k
aWNhdGluZyk6CisgICAgICAgIE1ha2UgYSBwYWdlIGEgIldlYiIgZGVidWdnYWJsZS4KKworICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgTWlzYy4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6aW5kaWNhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpoaWRlSW5kaWNhdGUpOgorICAg
ICAgICBGb3J3YXJkIGluZGljYXRlIG1ldGhvZHMgdG8gV2ViS2l0IGNsaWVudHMuCisKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmRpZENoYW5nZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNw
YXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICBQdXNoIHVwZGF0ZXMgd2hlbiByZW1vdGUgZGVi
dWdnYWJsZSBpbmZvcm1hdGlvbiBsaWtlIHRoZSBQYWdlJ3MKKyAgICAgICAgVVJMIG9yIHRpdGxl
IGNoYW5nZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwu
aDoKKyAgICAgICAgUmUtZXhwb3J0IEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
IGFzIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbAorICAgICAgICB0byBhdm9pZCBu
ZWVkbGVzc2x5IHVwZGF0aW5nIGNvZGUgYWxsIG92ZXIgdGhlIHBsYWNlLgorCisgICAgICAgICog
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSk6CisgICAgICAgIE1ha2UgdGhlICJJbnNwZWN0IEVs
ZW1lbnQiIGNvbnRleHQgbWVudSB3b3JrIGNvcnJlY3RseSB3aGVuIHRoZXJlIGlzIGEKKyAgICAg
ICAgcmVtb3RlIGluc3BlY3RvciBpbnN0ZWFkIG9mIGEgbG9jYWwgaW5zcGVjdG9yLgorCiAyMDEz
LTEyLTAyICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBz
ZXR0aW5nIHRvIG9wdCBpbnRvIGEgbW9kZSB3aGVyZSB0aGUgYmFja2dyb3VuZCBleHRlbmRzIGFu
ZCBmaXhlZCBlbGVtZW50cyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL2luc3BlY3Rvci9Gcm9udGVuZENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL2luc3BlY3Rvci9Gcm9udGVuZENoYW5uZWwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44Zjc1YWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0Zyb250ZW5kQ2hhbm5lbC5oCkBAIC0w
LDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWxf
aAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0Zyb250ZW5kQ2hhbm5lbC5oPgorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IDJiOGE1NDguLjkxNmUwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0y
ODA2LDYgKzI4MDYsNyBAQCBfX1pON1dlYkNvcmUzM1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVU
eXBlc1NldEV2CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorX19aTjdX
ZWJDb3JlNFBhZ2UyNnNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkRWIKIF9fWk43V2ViQ29yZTE5
SW5zcGVjdG9yQ29udHJvbGxlcjI3ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kRVJLTjNXVEY2
U3RyaW5nRQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCAyMDBiMWUyLi44ZTg3YjlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCkBAIC0yNjUsNiArMjY1LDkgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9IkZvcndh
cmRpbmdIZWFkZXJzXGhlYXAiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezgyYmE5YmI0LWVh
YTAtNDk3My05YmIzLWEyNzY2N2ExYzE2N308L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0
ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3IiPgor
ICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezEzMmJhZGUyLTBhYWItNjI3NC0wYWRmZi1hZThhZWQ1
YWVkNH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRlciBJbmNs
dWRlPSJoaXN0b3J5Ij4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2ZjM5ZGVkZi0yZDNhLTQx
NGUtODNmZS03YmY2NGY5MTFjZmJ9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpA
QCAtMTIyMjIsNiArMTIyMjUsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNcaGVhcFxTdHJvbmcuaCI+CiAgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFk
ZXJzXGhlYXA8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxGcm9udGVuZENoYW5uZWwuaCI+Cisg
ICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwv
Q2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGlzdG9yeVxCYWNrRm9yd2Fy
ZENsaWVudC5oIj4KICAgICAgIDxGaWx0ZXI+aGlzdG9yeTwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGM1ZjQwOTUuLjBlNzk4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1MjMsNiArMzUyMyw4IEBACiAJCUE1
NTZDMjg5MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU2QzI4NzE4MzIwNkE4
MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1NzMyQjBBMTM2QTE2MUQwMDVDOEQ3QyAv
KiBEYXRlQ29tcG9uZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTczMkIwODEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3Bw
ICovOyB9OwogCQlBNTczMkIwQjEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzMyQjA5MTM2
QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oICovOyB9OworCQlBNUEyQUYwQjE4Mjk3
MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VE
ZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKKwkJQTVBMkFGMEMxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VE
ZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNUEyQUYwQTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCAqLzsgfTsKIAkJ
QTVBQkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQkI3ODYxM0I5
MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovOyB9OwogCQlBNUFD
NEFFRjE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQzRBRUQxODMz
Njk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJ
QTVBQzRBRjAxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFDNEFFRTE4
MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAzMjQsNiArMTAzMjYs
MTIgQEAKIAkJQTU1NkMyODcxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTczMkIwODEzNkExNjFEMDA1
QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTU5M0NGNzIxODQwMkNFOTAwQkZDRTI3IC8qIHByb3RvY29sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRo
ID0gcHJvdG9jb2w7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjczMTg0MDJE
NEIwMEJGQ0UyNyAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRo
ID0gQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTU5M0NGNzQxODQwMkQ0QjAwQkZDRTI3IC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJp
bmdzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3Mu
cHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjc1MTg0MDJENEIwMEJGQ0Uy
NyAvKiBjb21iaW5lLWphdmFzY3JpcHQtcmVzb3VyY2VzLnBsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9ICJj
b21iaW5lLWphdmFzY3JpcHQtcmVzb3VyY2VzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBh
Z2VEZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VEZWJ1
Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUJCNzg2MTNCOTA0QkMw
MEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1QUM0QUVFMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0MTgsNyArMTQ0MjYs
MTEgQEAKIAkJMUM4MUI5NEQwRTk3MzJEOTAwMjY2RTA3IC8qIGluc3BlY3RvciAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTU5M0NGNzIxODQwMkNFOTAw
QkZDRTI3IC8qIHByb3RvY29sICovLAogCQkJCUE1MTgyMjUzMTdFMjhDRjEwMEE5QkExRCAvKiBT
Y3JpcHRzICovLAorCQkJCUE1OTNDRjczMTg0MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2VuZXJhdG9y
SW5zcGVjdG9yLnB5ICovLAorCQkJCUE1OTNDRjc0MTg0MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2Vu
ZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSAqLywKKwkJCQlBNTkzQ0Y3NTE4NDAyRDRCMDBCRkNF
MjcgLyogY29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCAqLywKIAkJCQlGMzVBRTVBQjE0
OTI1RjVCMDA0RDU3NzYgLyogQmluZGluZ1Zpc2l0b3JzLmggKi8sCiAJCQkJMkRGMkU5RDQxNjZF
Mzk3NDAwMzVCRUYyIC8qIENvbnNvbGVBUElUeXBlcy5oICovLAogCQkJCTQxRjA2MThEMEY1RjA2
OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5jcHAgKi8sCkBAIC0xNTY5MCw2ICsxNTcwMiw4
IEBACiAJCQkJQ0QwODI4NUIxNzU3MjUwODAwRUM1RkI3IC8qIFBhZ2VBY3Rpdml0eUFzc2VydGlv
blRva2VuLmggKi8sCiAJCQkJREFBQ0IzRDkxNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25zb2xl
LmNwcCAqLywKIAkJCQlEQUFDQjNEQTE2RjI0MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNvbGUuaCAq
LywKKwkJCQlBNUEyQUYwOTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwICov
LAorCQkJCUE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICovLAog
CQkJCTkzMDJCMEJDMEQ3OUY4MjkwMEM3RUU4MyAvKiBQYWdlR3JvdXAuY3BwICovLAogCQkJCTkz
MDJCMEJFMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCAqLywKIAkJCQk3QTY3NEJEOTBG
OUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCAqLywKQEAgLTIzMDQy
LDYgKzIzMDU2LDcgQEAKIAkJCQlEMDAwRUJBMzExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2Fk
ZXJTdGF0ZU1hY2hpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDU4RUJCMTdCOEYxMjgwMENC
RENBOCAvKiBFbGVtZW50VHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0I3N0EzODBB
REQ3OTI1MDBFQTRCODEgLyogRnJhbWVMb2FkZXJUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTVBMkFGMEMxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2NTg0MzY4NjBBRTAxQjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjI4RDIxNEUxMjEzMUVGNDAwNTVEQ0ZDIC8qIEZyYW1lTmV0d29y
a2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzJBRjcwMTgwRjI4OTUwMEZCQURC
OSAvKiBDcnlwdG9LZXlVc2FnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzc3NSw2ICsyNzc5MCw3
IEBACiAJCQkJQjJBRkZDN0YwRDAwQTVDMTAwMzAwNzREIC8qIFNpbXBsZUZvbnREYXRhTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzVBMUVBN0MxNTJCQ0YwNDAwNEQwMEI2IC8qIFNpbXBsaWZ5
TWFya3VwQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDAwRDdBNDE0QTNGNjE5MDA3
MzQwMTEgLyogU2luY1Jlc2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUEyQUYwQjE4
Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTEzMjdENjExMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0OUU5MTFDQzBFRjg2RDQ3MDA5RDBDQUYgLyogU2tld1RyYW5zZm9ybU9wZXJhdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTUwRjlGMjEyQjZFMEU3MDAwOEM4NjAgLyogU2xp
ZGVyVGh1bWJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDJjYzk1YjEuLjI3YmQ3ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKQEAgLTU2LDEyICs1NiwyMCBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VS
VChpbmhlcml0cyhpbmZvKCkpKTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAg
IHNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoZmFsc2UpOworI2VuZGlmCiB9CiAKIHZvaWQgSlNE
T01HbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNWYWx1
ZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgdGhpc1ZhbHVlKTsKICAgICBBU1NF
UlQoaW5oZXJpdHMoaW5mbygpKSk7CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAg
ICBzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGZhbHNlKTsKKyNlbmRpZgogfQogCiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBKU0RPTUdsb2JhbE9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5k
ZXggNzBhMTljOS4uNDRlN2VhMTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudC5oCkBAIC01Miw2ICs1Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
aGlnaGxpZ2h0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgPSAwOwog
CisgICAgdmlydHVhbCB2b2lkIGluZGljYXRlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGhpZGVJ
bmRpY2F0aW9uKCkgeyB9CisKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2xlYXJCcm93c2VyQ2FjaGUo
KSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhckJyb3dzZXJDYWNoZSgp
IHsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5DbGVhckJyb3dzZXJDb29raWVzKCkgeyByZXR1cm4g
ZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAppbmRleCBkNzUxNmE1Li5lOTU4OTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC04NCw2ICs4NCw5IEBAIEluc3Bl
Y3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9y
Q2xpZW50KiBpbnNwZWN0b3JDCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAsIG1faW5zcGVjdG9y
Q2xpZW50KGluc3BlY3RvckNsaWVudCkKICAgICAsIG1faXNVbmRlclRlc3QoZmFsc2UpCisjaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgLCBtX2hhc1JlbW90ZUZyb250ZW5kKGZhbHNl
KQorI2VuZGlmCiB7CiAgICAgT3duUHRyPEluc3BlY3RvckFnZW50PiBpbnNwZWN0b3JBZ2VudFB0
cihJbnNwZWN0b3JBZ2VudDo6Y3JlYXRlKHBhZ2UsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdl
dCgpLCBtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKTsKICAgICBtX2luc3BlY3RvckFnZW50
ID0gaW5zcGVjdG9yQWdlbnRQdHIuZ2V0KCk7CkBAIC0xNDgsNyArMTUxLDYgQEAgSW5zcGVjdG9y
Q29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGll
bnQqIGluc3BlY3RvckMKICAgICBtX2FnZW50cy5hcHBlbmQocHJvZmlsZXJBZ2VudFB0ci5yZWxl
YXNlKCkpOwogCiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50
OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2luamVjdGVkU2NyaXB0TWFu
YWdlci5nZXQoKSkpOwotCiAjZW5kaWYKIAogICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JX
b3JrZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpOwpAQCAtMjAz
LDYgKzIwNSwyNCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250
ZW5kQ2xpZW50KFBhc3NPd25QdHI8SW5zcGVjdG9yRnJvbnRlbgogICAgIG1faW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQgPSBpbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIH0KIAorYm9vbCBJbnNwZWN0
b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKyAgICByZXR1cm4gaGFzRnJvbnRlbmQoKSAmJiAhbV9oYXNSZW1vdGVG
cm9udGVuZDsKKyNlbHNlCisgICAgcmV0dXJuIGhhc0Zyb250ZW5kKCk7CisjZW5kaWYKK30KKwor
Ym9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0Cit7Cisj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgcmV0dXJuIG1faGFzUmVtb3RlRnJvbnRl
bmQ7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBib29sIEluc3BlY3Rv
ckNvbnRyb2xsZXI6Omhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsKQEAgLTIzMyw2ICsyNTMsMTEgQEAgdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW4KIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVn
aXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSk7CiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKTsKKworI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlmICghbV9oYXNSZW1vdGVGcm9udGVuZCkKKyAg
ICAgICAgbV9wYWdlLT5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKCkK
QEAgLTI1MCwxMCArMjc1LDE3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVj
dEZyb250ZW5kKCkKICAgICBtX292ZXJsYXktPmZyZWVQYWdlKCk7CiAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpmcm9udGVuZERlbGV0ZWQoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnVucmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKG1faW5zdHJ1bWVudGluZ0FnZW50
cy5nZXQoKSk7CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBpZiAoIW1faGFz
UmVtb3RlRnJvbnRlbmQpCisgICAgICAgIG1fcGFnZS0+cmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRp
b25EaWRDaGFuZ2UoKTsKKyNlbmRpZgogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNo
b3coKQogeworICAgIEFTU0VSVCghaGFzUmVtb3RlRnJvbnRlbmQoKSk7CisKICAgICBpZiAoIWVu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMTUsNyArMzQ3LDggQEAgdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjppbnNwZWN0KE5vZGUqIG5vZGUpCiAgICAgaWYgKCFlbmFibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHNob3coKTsKKyAgICBpZiAoIWhhc1JlbW90ZUZyb250
ZW5kKCkpCisgICAgICAgIHNob3coKTsKIAogICAgIG1fZG9tQWdlbnQtPmluc3BlY3Qobm9kZSk7
CiB9CkBAIC0zNTIsNiArMzg1LDE1IEBAIE5vZGUqIEluc3BlY3RvckNvbnRyb2xsZXI6OmhpZ2hs
aWdodGVkTm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fb3ZlcmxheS0+aGlnaGxpZ2h0ZWROb2Rl
KCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0SW5kaWNhdGluZyhib29sIGlu
ZGljYXRpbmcpCit7CisgICAgLy8gRklYTUU6IEZvciBub24taU9TIGNsaWVudHMsIHdlIHNob3Vs
ZCBoYXZlIEluc3BlY3Rvck92ZXJsYXkgZG8gc29tZXRoaW5nIGhlcmUuCisgICAgaWYgKGluZGlj
YXRpbmcpCisgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5pbmRpY2F0ZSgpOworICAgIGVsc2UK
KyAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmhpZGVJbmRpY2F0aW9uKCk7Cit9CisKICNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6cHJv
ZmlsZXJFbmFibGVkKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDk1ZWM3ZTMuLjgzOWY5OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtOTIsMTcgKzkyLDI2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwogCiAgICAgYm9vbCBoYXNGcm9udGVuZCgpIGNvbnN0IHsgcmV0dXJu
ICEhbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7IH0KKyAgICBib29sIGhhc0xvY2FsRnJvbnRl
bmQoKSBjb25zdDsKKyAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3Q7CisKICAgICB2
b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKTsKICAgICB2b2lk
IGRpc2Nvbm5lY3RGcm9udGVuZCgpOwogICAgIHZvaWQgc2V0UHJvY2Vzc0lkKGxvbmcpOwogICAg
IHZvaWQgd2ViVmlld1Jlc2l6ZWQoY29uc3QgSW50U2l6ZSYpOwogCisjaWYgRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCisgICAgdm9pZCBzZXRIYXNSZW1vdGVGcm9udGVuZChib29sIGhhc1JlbW90
ZSkgeyBtX2hhc1JlbW90ZUZyb250ZW5kID0gaGFzUmVtb3RlOyB9CisjZW5kaWYKKwogICAgIHZv
aWQgaW5zcGVjdChOb2RlKik7CiAgICAgdm9pZCBkcmF3SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0OwogICAgIHZvaWQgZ2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCopIGNvbnN0OwogICAg
IHZvaWQgaGlkZUhpZ2hsaWdodCgpOwogICAgIE5vZGUqIGhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0
OwogCisgICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZyk7CisKICAgICBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBj
b25zdDsKIAogICAgIGJvb2wgaXNVbmRlclRlc3QoKTsKQEAgLTE1Myw2ICsxNjIsMTAgQEAgcHJp
dmF0ZToKICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwogICAgIEluc3Bl
Y3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAgYm9vbCBtX2lzVW5kZXJUZXN0OworCisj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgYm9vbCBtX2hhc1JlbW90ZUZyb250ZW5k
OworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKaW5kZXggYjMyMTRlZi4uODQ4ZjE4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaApA
QCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjAsMjIgKzIxLDE2IEBACiAg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsX2gK
LSNkZWZpbmUgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsX2gKKyNpZm5kZWYgV0VCQ09SRV9JbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWxfaAorI2RlZmluZSBXRUJDT1JFX0luc3BlY3RvckZyb250ZW5k
Q2hhbm5lbF9oCiAKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPGluc3BlY3Rv
ci9Gcm9udGVuZENoYW5uZWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsIHsgfTsKK30KIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoKSB7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAw
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsX2gpCisjZW5kaWYgLy8gIWRlZmluZWQoV0VCQ09SRV9JbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWxfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CmluZGV4IGYzNDc0YzMuLmI4ZjdmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcApAQCAtMzMxOSw2ICszMzE5LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZVRp
dGxlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgIG1fY2xpZW50LnNldE1haW5GcmFt
ZURvY3VtZW50UmVhZHkodHJ1ZSk7IC8vIHVwZGF0ZSBvYnNlcnZlcnMgd2l0aCBuZXcgRE9NRG9j
dW1lbnQKICAgICAgICAgbV9jbGllbnQuZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUobG9hZGVyLT50
aXRsZSgpKTsKICAgICB9CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBpZiAo
bV9mcmFtZS5pc01haW5GcmFtZSgpKQorICAgICAgICBtX2ZyYW1lLnBhZ2UoKS0+cmVtb3RlSW5z
cGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsKKyNlbmRpZgogfQogCiB2b2lkIEZyYW1lTG9h
ZGVyOjpkaWRDaGFuZ2VJY29ucyhJY29uVHlwZSB0eXBlKQpAQCAtMzM0MCw5ICszMzQ1LDEyIEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiAKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWQoJm1fZnJhbWUsIG1fZG9jdW1lbnRMb2Fk
ZXIuZ2V0KCkpOwogCi0gICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKKyAgICBpZiAobV9m
cmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5mZWF0dXJlT2Jz
ZXJ2ZXIoKS0+ZGlkQ29tbWl0TG9hZCgpOwotCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CisgICAgICAgIG1fZnJhbWUucGFnZSgpLT5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENo
YW5nZSgpOworI2VuZGlmCisgICAgfQogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjp0ZWxsQ2xpZW50
QWJvdXRQYXN0TWVtb3J5Q2FjaGVMb2FkcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggYzdhM2NkMi4uYTVlYTE4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtODkyLDcgKzg5Miw3
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAjZW5kaWYgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiAoZnJhbWUtPnBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5oYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIHx8IGZyYW1lLT5w
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aGFzUmVtb3RlRnJvbnRlbmQoKSkpKSB7CiAj
ZW5kaWYKIAogICAgICAgICAgICAgICAgIC8vIEluIEdUSysgdW5hdmFpbGFibGUgaXRlbXMgYXJl
IG5vdCBoaWRkZW4gYnV0IGluc2Vuc2l0aXZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOGQ5Mjk5
Ny4uYWU3MjAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVk
ZSAiUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIK
ICNpbmNsdWRlICJQYWdlQ29uc29sZS5oIgorI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dhYmxlLmgiCiAj
aW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgogI2luY2x1
ZGUgIlBsdWdJbkNsaWVudC5oIgpAQCAtMTg2LDYgKzE4Nyw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNs
aWVudHMmIHBhZ2VDbGllbnRzKQogICAgICwgbV9zY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQo
ZmFsc2UpCiAgICAgLCBtX3BhZ2VUaHJvdHRsZXIoc3RkOjptYWtlX3VuaXF1ZTxQYWdlVGhyb3R0
bGVyPigqdGhpcykpCiAgICAgLCBtX2NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29s
ZT4oKnRoaXMpKQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgICwgbV9pbnNwZWN0
b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKKyNl
bmRpZgogICAgICwgbV9sYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVzQ291bnQoMCkgLy8g
Tk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMgZm9yIFNwYXRpYWwgTmF2aWdhdGlvbiB0
ZXN0aW5nLgogICAgICwgbV9mcmFtZXNIYW5kbGluZ0JlZm9yZVVubG9hZEV2ZW50KDApCiB7CkBA
IC0yMDMsNiArMjA3LDEwIEBAIFBhZ2U6OlBhZ2UoUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQog
I2lmbmRlZiBOREVCVUcKICAgICBwYWdlQ291bnRlci5pbmNyZW1lbnQoKTsKICNlbmRpZgorCisj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5p
bml0KCk7CisjZW5kaWYKIH0KIAogUGFnZTo6flBhZ2UoKQpAQCAtMTI5MSw2ICsxMjk5LDIzIEBA
IHZvaWQgUGFnZTo6YWRkRm9vdGVyV2l0aEhlaWdodChpbnQgZm9vdGVySGVpZ2h0KQogfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKK2Jvb2wgUGFnZTo6cmVtb3RlSW5z
cGVjdGlvbkFsbG93ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2luc3BlY3RvckRlYnVnZ2Fi
bGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKTsKK30KKwordm9pZCBQYWdlOjpzZXRSZW1vdGVJ
bnNwZWN0aW9uQWxsb3dlZChib29sIGFsbG93ZWQpCit7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dh
YmxlLT5zZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKGFsbG93ZWQpOworfQorCit2b2lkIFBhZ2U6
OnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCkgY29uc3QKK3sKKyAgICBtX2lu
c3BlY3RvckRlYnVnZ2FibGUtPnVwZGF0ZSgpOworfQorI2VuZGlmCisKIHZvaWQgUGFnZTo6YWRk
TGF5b3V0TWlsZXN0b25lcyhMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCiB7CiAgICAgLy8g
SW4gdGhlIGZ1dHVyZSwgd2UgbWF5IHdhbnQgYSBmdW5jdGlvbiB0aGF0IHJlcGxhY2VzIG1fbGF5
b3V0TWlsZXN0b25lcyBpbnN0ZWFkIG9mIGp1c3QgYWRkaW5nIHRvIGl0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApp
bmRleCBiNjc4Mzg4Li40NWNkNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtODAsNiArODAsNyBAQCBj
bGFzcyBNZWRpYUNhblN0YXJ0TGlzdGVuZXI7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZUFjdGl2
aXR5QXNzZXJ0aW9uVG9rZW47CiBjbGFzcyBQYWdlQ29uc29sZTsKK2NsYXNzIFBhZ2VEZWJ1Z2dh
YmxlOwogY2xhc3MgUGFnZUdyb3VwOwogY2xhc3MgUGFnZVRocm90dGxlcjsKIGNsYXNzIFBsdWdJ
bkNsaWVudDsKQEAgLTE3OCw2ICsxNzksMTIgQEAgcHVibGljOgogICAgIHZvaWQgZGVjcmVtZW50
U3ViZnJhbWVDb3VudCgpIHsgQVNTRVJUKG1fc3ViZnJhbWVDb3VudCk7IC0tbV9zdWJmcmFtZUNv
dW50OyB9CiAgICAgaW50IHN1YmZyYW1lQ291bnQoKSBjb25zdCB7IGNoZWNrU3ViZnJhbWVDb3Vu
dENvbnNpc3RlbmN5KCk7IHJldHVybiBtX3N1YmZyYW1lQ291bnQ7IH0KIAorI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQorICAgIGJvb2wgcmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQoKSBjb25z
dDsKKyAgICB2b2lkIHNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKGJvb2wgYWxsb3dlZCk7Cisg
ICAgdm9pZCByZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpIGNvbnN0OworI2Vu
ZGlmCisKICAgICBDaHJvbWUmIGNocm9tZSgpIGNvbnN0IHsgcmV0dXJuICptX2Nocm9tZTsgfQog
ICAgIERyYWdDYXJldENvbnRyb2xsZXImIGRyYWdDYXJldENvbnRyb2xsZXIoKSBjb25zdCB7IHJl
dHVybiAqbV9kcmFnQ2FyZXRDb250cm9sbGVyOyB9CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
QEAgLTUzMiw2ICs1MzksMTAgQEAgcHJpdmF0ZToKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8
UGFnZVRocm90dGxlcj4gbV9wYWdlVGhyb3R0bGVyOwogICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxQYWdlQ29uc29sZT4gbV9jb25zb2xlOwogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CisgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFBhZ2VEZWJ1Z2dhYmxlPiBtX2luc3BlY3RvckRl
YnVnZ2FibGU7CisjZW5kaWYKKwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NlZW5QbHVnaW5zOwog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NlZW5NZWRpYUVuZ2luZXM7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlRGVidWdnYWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
Y2VhMGFlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVn
Z2FibGUuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFnZURlYnVn
Z2FibGUuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCisjaW5jbHVk
ZSAiUGFnZS5oIgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1BhZ2VEZWJ1Z2dhYmxlOjpQYWdlRGVidWdnYWJsZShQYWdlJiBwYWdlKQorICAg
IDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1N0cmluZyBQYWdlRGVidWdnYWJsZTo6bmFtZSgpIGNv
bnN0Cit7CisgICAgaWYgKCFtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpLT50aXRsZSgpOworfQorCitTdHJpbmcgUGFnZURlYnVnZ2FibGU6OnVybCgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgU3RyaW5nIHVybCA9IG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpLT51cmwoKS5zdHJpbmcoKTsKKyAgICByZXR1cm4gdXJsLmlzRW1wdHkoKSA/IEFTQ0lJTGl0
ZXJhbCgiYWJvdXQ6YmxhbmsiKSA6IHVybDsKK30KKworYm9vbCBQYWdlRGVidWdnYWJsZTo6aGFz
TG9jYWxEZWJ1Z2dlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmhhc0xvY2FsRnJvbnRlbmQoKTsKK30KKwordm9pZCBQYWdlRGVidWdnYWJsZTo6
Y29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCkKK3sK
KyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gbV9wYWdlLmlu
c3BlY3RvckNvbnRyb2xsZXIoKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5zZXRIYXNSZW1v
dGVGcm9udGVuZCh0cnVlKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5jb25uZWN0RnJvbnRl
bmQocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqPihj
aGFubmVsKSk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoKQoreworICAg
IEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBtX3BhZ2UuaW5zcGVj
dG9yQ29udHJvbGxlcigpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmRpc2Nvbm5lY3RGcm9u
dGVuZCgpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPnNldEhhc1JlbW90ZUZyb250ZW5kKGZh
bHNlKTsKK30KKwordm9pZCBQYWdlRGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90
ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3BhZ2UuaW5zcGVjdG9y
Q29udHJvbGxlcigpLT5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7Cit9CisK
K3ZvaWQgUGFnZURlYnVnZ2FibGU6OnNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKQorewor
ICAgIG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldEluZGljYXRpbmcoaW5kaWNhdGlu
Zyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVt
b3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VEZWJ1Z2dhYmxlLmgKc2ltaWxhcml0eSBpbmRleCA1NCUKcmVuYW1lIGZyb20gU291cmNlL1dl
YktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5o
CnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKaW5kZXggZWE1
YjJlMy4uOTI0MjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZURlYnVnZ2FibGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMjkgKzIzLDQxIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaWZuZGVmIFBhZ2VEZWJ1Z2dhYmxlX2gKKyNkZWZp
bmUgUGFnZURlYnVnZ2FibGVfaAogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7CisjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAKLUBwcm90b2NvbCBXZWJJbnNwZWN0b3JDbGllbnRSZWdp
c3RyeURlbGVnYXRlCi0tICh2b2lkKWRpZFJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGll
bnQqKWNsaWVudDsKLS0gKHZvaWQpZGlkVW5yZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xp
ZW50KiljbGllbnQ7Ci1AZW5kCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi1AaW50ZXJm
YWNlIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IDogTlNPYmplY3QgewotQHByaXZhdGUKLSAg
ICB1bnNpZ25lZCBfbmV4dEF2YWlsYWJsZVBhZ2VJZDsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBX
ZWJJbnNwZWN0b3JDbGllbnQqPiBfcGFnZUNsaWVudE1hcDsKLSAgICBpZCA8V2ViSW5zcGVjdG9y
Q2xpZW50UmVnaXN0cnlEZWxlZ2F0ZT4gX2RlbGVnYXRlOwotfQorbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpZCA8V2ViSW5zcGVjdG9yQ2xpZW50
UmVnaXN0cnlEZWxlZ2F0ZT4gZGVsZWdhdGU7CitjbGFzcyBQYWdlOwogCi0rIChXZWJJbnNwZWN0
b3JDbGllbnRSZWdpc3RyeSAqKXNoYXJlZFJlZ2lzdHJ5OworY2xhc3MgUGFnZURlYnVnZ2FibGUg
RklOQUwgOiBwdWJsaWMgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlRGVidWdnYWJsZSk7CitwdWJsaWM6CisgICAgUGFn
ZURlYnVnZ2FibGUoUGFnZSYpOworICAgIH5QYWdlRGVidWdnYWJsZSgpIHsgfQogCi0tICh2b2lk
KXJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudDsKLS0gKHZvaWQpdW5y
ZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQ7Ci0tIChXZWJJbnNwZWN0
b3JDbGllbnQqKWNsaWVudEZvclBhZ2VJZDoodW5zaWduZWQpcGFnZUlkOwotLSAoTlNEaWN0aW9u
YXJ5ICopaW5zcGVjdGFibGVXZWJWaWV3czsKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUgdHlwZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6V2ViOyB9CiAK
LUBlbmQKKyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBTdHJpbmcgdXJsKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGhhc0xv
Y2FsRGVidWdnZXIoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKSBPVkVS
UklERTsKKworcHJpdmF0ZToKKyAgICBQYWdlJiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2VuZGlm
IC8vICFkZWZpbmVkKFBhZ2VEZWJ1Z2dhYmxlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk0OGM1ZjUuLmRhMjUz
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJl
bW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFT
Y3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEzLTEyLTAyICBCZXRo
IERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIG9w
dCBpbnRvIGEgbW9kZSB3aGVyZSB0aGUgYmFja2dyb3VuZCBleHRlbmRzIGFuZCBmaXhlZCBlbGVt
ZW50cyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGNkN2Y1ZjIuLjk0MjVjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzc4LDI0ICszNzgsMTEgQEAKIAkJQTEwQzFEOEQx
ODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZpZXdQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwQzFEODgxODIwMzA1RTAwMzY4ODNB
IC8qIFdlYlBERlZpZXdQbGFjZWhvbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUExMEMxRDhFMTgyMDMwNUUwMDM2ODgzQSAvKiBXZWJQREZW
aWV3UGxhY2Vob2xkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTBDMUQ4OTE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld1BsYWNlaG9sZGVy
Lm1tICovOyB9OwogCQlBMTdBMTFCMTE4MERDODQ4MDBFNTQ5OEMgLyogV2ViUGx1Z2luUGFja2Fn
ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExN0ExMUIwMTgwREM4NDgwMEU1NDk4QyAvKiBXZWJQbHVnaW5QYWNrYWdlUHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1MjE0RkM3
MTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTIxNEZDMTEzQjk3NUM4MDAw
MDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oICovOyB9OwotCQlBNTIxNEZDODEz
Qjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MjE0RkMyMTNCOTc1QzgwMDAw
MTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tICovOyB9OwotCQlBNTIyMDlGODEz
QzUzRTc1MDA0QkE3QjEgLyogV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUyMjA5RjcxM0M1M0U3NTAw
NEJBN0IxIC8qIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNTVFMjBGRjE0RDcyNjRDMDAzMTU0
OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVFMjBGRDE0RDcy
NjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9s
bGVyLmggKi87IH07Ci0JCUE1NUUyMTAwMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JT
ZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVFMjBGRTE0RDcyNjRDMDAzMTU0OUUgLyogV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tICovOyB9OwogCQlB
NTYwOTQ2NjE0RDhBRDI2MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVMYXllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU2MDk0NjQxNEQ4QUQyNjAwNzk5
QThBIC8qIFdlYkluZGljYXRlTGF5ZXIuaCAqLzsgfTsKIAkJQTU2MDk0NjcxNEQ4QUQyNjAwNzk5
QThBIC8qIFdlYkluZGljYXRlTGF5ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTYwOTQ2NTE0RDhBRDI2MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVM
YXllci5tbSAqLzsgfTsKIAkJQTU2ODdCREExMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdo
bGlnaHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTU2ODdCRDgxMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5oICovOyB9Owog
CQlBNTY4N0JEQjEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU2ODdCRDkxMzVCNzkx
QTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5tbSAqLzsgfTsKLQkJQTU3QzI4QTcxM0JB
QTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhBMTEzQkFB
NUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCAqLzsg
fTsKLQkJQTU3QzI4QTgxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTU3QzI4QTIxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uLm1tICovOyB9OwotCQlBNTdDMjhBOTEzQkFBNUFEMDA3MEFDQUIgLyogV2Vi
SW5zcGVjdG9yU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTdDMjhBMzEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLmgg
Ki87IH07Ci0JCUE1N0MyOEFBMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhB
NDEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tICovOyB9OwotCQlBNTdD
MjhBQjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QzI4QTUxM0JBQTVBRDAw
NzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNTdDMjhBQzEzQkFBNUFEMDA3MEFDQUIgLyog
V2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU3QzI4QTYxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQ
Q1dyYXBwZXIubSAqLzsgfTsKIAkJQTU3RTJGMjQxMjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3Rh
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTU3RTJGMjIxMjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3RhTWFuYWdlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1N0VCNzhGMTNCOTdBNEUw
MDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RUI3OEQxM0I5N0E0RTAwOEQ2OTFEIC8q
IFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggKi87IH07Ci0JCUE1N0VCNzkwMTNCOTdBNEUw
MDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0VCNzhFMTNCOTdBNEUwMDhENjkxRCAv
KiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSAqLzsgfTsKIAkJQTU4QTU3OTkxNDNFNzI3
MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNThBNTc5NzE0M0U3MjcwMDAxMjVGNTAg
LyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLzsgfTsKIAkJQTU4QTU3OUExNDNFNzI3
MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4QTU3OTgxNDNFNzI3MDAwMTI1RjUw
IC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tICovOyB9OwogCQlBNURFRkMwQTExRDUz
MzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURFRkMwNzExRDUzMzFDMDA4ODUyNzMgLyogV2Vi
U2VjdXJpdHlPcmlnaW4ubW0gKi87IH07CkBAIC03NzgsMjQgKzc2NSwxMSBAQAogCQlBMTBDMUQ4
OTE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOyBw
YXRoID0gaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CiAJCUExMEMxRDhGMTgyMDMwN0QwMDM2ODgzQSAvKiBXZWJLaXQuaU9T
LmV4cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuZXhwb3J0czsgbmFtZSA9IFdlYktpdC5pT1MuZXhw
OyBwYXRoID0gaW9zL1dlYktpdC5pT1MuZXhwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTdBMTFCMDE4MERDODQ4MDBFNTQ5OEMgLyogV2ViUGx1Z2luUGFja2FnZVByaXZhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGx1Z2luUGFja2FnZVByaXZhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUyMTRGQzExM0I5NzVDODAwMDAxNUVG
IC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oOyBwYXRoID0gcmVtb3RlL1dlYklu
c3BlY3RvclJlbW90ZUNoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUy
MTRGQzIxM0I5NzVDODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JSZW1vdGVD
aGFubmVsLm1tOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MjIwOUY3MTNDNTNFNzUwMDRCQTdCMSAvKiBX
ZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaDsgcGF0aCA9IHJlbW90ZS9XZWJJ
bnNwZWN0b3JSZWxheURlZmluaXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUE1NUUyMEZEMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmg7IHBhdGggPSByZW1v
dGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NUUyMEZFMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJ
bnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbkNvbnRyb2xsZXIubW07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNTYwOTQ2NDE0RDhBRDI2MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVMYXllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbmRpY2F0ZUxheWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1NjA5NDY1MTREOEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRpY2F0
ZUxheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5k
aWNhdGVMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU2ODdCRDgxMzVC
NzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJOb2RlSGlnaGxpZ2h0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU2ODdCRDkxMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk5vZGVIaWdobGln
aHRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTExM0JBQTVBRDAw
NzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uLmg7IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTIxM0JBQTVBRDAwNzBBQ0FC
IC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb24ubW07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0MyOEEzMTNCQUE1QUQwMDcw
QUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV2ViSW5zcGVjdG9yU2VydmVyLmg7IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0MyOEE0MTNCQUE1QUQwMDcw
QUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXIubW07IHBhdGggPSByZW1vdGUvV2ViSW5z
cGVjdG9yU2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdDMjhBNTEz
QkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmg7IHBhdGggPSByZW1v
dGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlBNTdDMjhBNjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IG5hbWUgPSBXZWJJbnNwZWN0b3JYUENXcmFwcGVy
Lm07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTdFMkYyMjEyMDc0OUU2MDAwNDhERjMgLyogV2ViUXVvdGFNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlF1b3RhTWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdFQjc4RDEzQjk3QTRFMDA4RDY5MUQg
LyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaDsgcGF0aCA9IHJlbW90ZS9XZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlB
NTdFQjc4RTEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JDbGll
bnRSZWdpc3RyeS5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4QTU3OTcxNDNFNzI3MDAwMTI1RjUw
IC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1OEE1Nzk4MTQzRTcyNzAwMDEyNUY1MCAvKiBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNURFRkMwNzExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW4ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTZWN1cml0eU9yaWdpbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTIsNyArMTAyNiw2IEBACiAJCTFDNjhG
NjNGMDk1QjVGOUMwMEMyOTg0RSAvKiBXZWJJbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUE1MjE0RkJGMTNCOTc1OTYwMDAwMTVFRiAvKiBy
ZW1vdGUgKi8sCiAJCQkJNUQ3QkY4MTIwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5o
ICovLAogCQkJCTVEN0JGODEzMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0gKi8s
CiAJCQkJQjgwNDE3NkQxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5kLmgg
Ki8sCkBAIC0xNTA5LDI2ICsxNDgyLDYgQEAKIAkJCW5hbWUgPSBpb3M7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OwotCQlBNTIxNEZCRjEzQjk3NTk2MDAwMDE1RUYgLyogcmVtb3Rl
ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlBNTdFQjc4
RDEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCAqLywKLQkJ
CQlBNTdFQjc4RTEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnku
bW0gKi8sCi0JCQkJQTUyMjA5RjcxM0M1M0U3NTAwNEJBN0IxIC8qIFdlYkluc3BlY3RvclJlbGF5
RGVmaW5pdGlvbnMuaCAqLywKLQkJCQlBNTIxNEZDMTEzQjk3NUM4MDAwMDE1RUYgLyogV2ViSW5z
cGVjdG9yUmVtb3RlQ2hhbm5lbC5oICovLAotCQkJCUE1MjE0RkMyMTNCOTc1QzgwMDAwMTVFRiAv
KiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tICovLAotCQkJCUE1N0MyOEEzMTNCQUE1QUQw
MDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCAqLywKLQkJCQlBNTdDMjhBNDEzQkFBNUFE
MDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tICovLAotCQkJCUE1N0MyOEExMTNCQUE1
QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oICovLAot
CQkJCUE1N0MyOEEyMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbi5tbSAqLywKLQkJCQlBNTVFMjBGRDE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggKi8sCi0JCQkJQTU1RTIw
RkUxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
Q29udHJvbGxlci5tbSAqLywKLQkJCQlBNTdDMjhBNTEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5z
cGVjdG9yWFBDV3JhcHBlci5oICovLAotCQkJCUE1N0MyOEE2MTNCQUE1QUQwMDcwQUNBQiAvKiBX
ZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0gKi8sCi0JCQkpOwotCQkJbmFtZSA9IHJlbW90ZTsKLQkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUY1MkNBNkJEMDJERjlEMEYwMTg2MzVD
QSAvKiBIVE1MICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTE4MjUsMTUgKzE3NzgsOCBAQAogCQkJCUExMEMxRDY0MTgyMDMwMEUwMDM2ODgzQSAvKiBXZWJD
aHJvbWVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVEN0JGODE0MEMyQTFEOTAwMDhD
RTA2RCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTA2NjkzRERDMEJGQkE4
NTIwMDIxNjA3MiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1
N0VCNzhGMTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjgwNDE3NkYxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3Rv
ckZyb250ZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QThGRjBEMTEwNzUwMjRBMDBBODBBMDgg
LyogV2ViSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUyMjA5RjgxM0M1
M0U3NTAwNEJBN0IxIC8qIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUE1MjE0RkM3MTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVD
aGFubmVsLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTdDMjhBOTEzQkFBNUFEMDA3MEFDQUIgLyog
V2ViSW5zcGVjdG9yU2VydmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTdDMjhBNzEzQkFBNUFE
MDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAotCQkJCUE1NUUyMEZGMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1N0My
OEFCMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5Mzk4MTA0MjA4MjRCRjAxMDA4REYwMzggLyogV2ViSmF2YVNjcmlwdFRleHRJ
bnB1dFBhbmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0QxRENBODEwNjU5MjhDMDA2OEY3RUYg
LyogV2ViSlNQREZEb2MuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDg1MDgyNEJGMDEwMDhE
RjAzOCAvKiBXZWJLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMjI3NiwxMyArMjIy
Miw3IEBACiAJCQkJNUQ3QkY4MTUwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5tbSBp
biBTb3VyY2VzICovLAogCQkJCTA2NjkzREREMEJGQkE4NTIwMDIxNjA3MiAvKiBXZWJJbnNwZWN0
b3JDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzdCMEM2NjBFQjI0NjREMDBBMjg1MDIg
LyogV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTU3RUI3OTAx
M0I5N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjgwNDE3NzAxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250
ZW5kLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTUyMTRGQzgxM0I5NzVDODAwMDAxNUVGIC8qIFdl
Ykluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNTdDMjhBQTEz
QkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJQTU3QzI4QTgxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTU1RTIxMDAxNEQ3MjY0QzAwMzE1NDlF
IC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbSBpbiBT
b3VyY2VzICovLAotCQkJCUE1N0MyOEFDMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JY
UENXcmFwcGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQlBMTBDMUQxOTE4MjAyRjlDMDAzNjg4M0Eg
LyogV2ViRGVmYXVsdEZvcm1EZWxlZ2F0ZS5tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwRTQw
ODI0QkYwMTAwOERGMDM4IC8qIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTEwQzFEOEIxODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZpZXdJT1MubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKaW5kZXggNTUyZTc2Yi4uNTRhYWNiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jZi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3Rl
IEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlw
dENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAoV2ViSW5z
cGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorCiAyMDEzLTEwLTI1ICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpIGFuZCBlbmFibGUgb24gaU9TIGFuZCBNYWMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0Yu
Y3BwIGIvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRD
Ri5jcHAKaW5kZXggY2EyMmZkZS4uMTIwZTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
Zi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKQEAgLTkxLDEy
ICs5MSwxMCBAQCBzdGF0aWMgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgc2V0dGluZykKICAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoY3JlYXRl
S2V5Rm9yUHJlZmVyZW5jZXMoa2V5KS5nZXQoKSwgc2V0dGluZy5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CiB9CiAKLSNpZiAhRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiBib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICByZXR1cm4gZG9EaXNwYXRj
aE1lc3NhZ2VPbkZyb250ZW5kUGFnZShtX2Zyb250ZW5kUGFnZSwgbWVzc2FnZSk7CiB9Ci0jZW5k
aWYKIAogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckF0dGFjaERpc2FibGVkKCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvaW9zL0NoYW5nZUxvZwppbmRleCBhYjQzNjM1Li5hNjNiZTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0
b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNs
aWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6
aW5zcGVjdG9yRGVzdHJveWVkKToKKwogMjAxMy0xMS0xOCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE1
OTQ1NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudElPUy5tbQppbmRleCA1YWNjMmVlLi5jYTc1ZDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50SU9TLm1tCkBAIC00MiwxMSArNDIsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhy
ZWFkLmg+CiAjaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogCi0jaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIgotI2ltcG9y
dCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJW
aWV3ICp3ZWJWaWV3KQpAQCAtNTQsMjMgKzQ5LDExIEBAIFdlYkluc3BlY3RvckNsaWVudDo6V2Vi
SW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgLCBtX2hpZ2hsaWdodGVyKEFk
b3B0TlMsIFtbV2ViTm9kZUhpZ2hsaWdodGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZp
ZXc6d2ViVmlld10pCiAgICAgLCBtX2Zyb250ZW5kUGFnZSgwKQogICAgICwgbV9mcm9udGVuZENs
aWVudCgwKQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9yZW1vdGVDaGFu
bmVsKDApCi0gICAgLCBtX3BhZ2VJZCgwKQotI2VuZGlmCiB7Ci0jaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3Ry
eV0gcmVnaXN0ZXJDbGllbnQ6dGhpc107Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiB7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gdW5y
ZWdpc3RlckNsaWVudDp0aGlzXTsKLSAgICB0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24odHJ1ZSk7
Ci0jZW5kaWYKLQogICAgIGRlbGV0ZSB0aGlzOwogfQogCkBAIC0xMTYsOTQgKzk5LDYgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVk
KQogICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3Rp
ZmljYXRpb25Pbk1haW5UaHJlYWRXaXRoTmFtZTpXZWJJbnNwZWN0b3JEaWRTdG9wU2VhcmNoaW5n
Rm9yTm9kZSBvYmplY3Q6aW5zcGVjdG9yXTsKIH0KIAotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEg
bWFyayBSZW1vdGUgV2ViIEluc3BlY3RvciBJbXBsZW1lbnRhdGlvbgotCi0jaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBpZiAobV9yZW1vdGVDaGFubmVs
KSB7Ci0gICAgICAgIFttX3JlbW90ZUNoYW5uZWwgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOm1lc3Nh
Z2VdOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBpT1MgZG9lcyBub3Qg
aGF2ZSBhIGxvY2FsIGluc3BlY3Rvci4gVGhlcmUgc2hvdWxkIGJlIG5vIHdheSB0byByZWFjaCB0
aGlzLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0K
LSAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZShtX2Zyb250ZW5kUGFn
ZSwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRv
QmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgQVNTRVJUKG1fcmVtb3RlQ2hh
bm5lbCk7Ci0KLSAgICBQYWdlKiBwYWdlID0gY29yZShtX3dlYlZpZXcpOwotICAgIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2Up
OwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2V0dXBSZW1vdGVDb25uZWN0aW9uKFdl
Ykluc3BlY3RvclJlbW90ZUNoYW5uZWwgKnJlbW90ZUNoYW5uZWwpCi17Ci0gICAgLy8gVGhlcmUg
aXMgYWxyZWFkeSBhIGxvY2FsIHNlc3Npb24sIGRvIG5vdCBhbGxvdyBhIHJlbW90ZSBzZXNzaW9u
LgotICAgIGlmIChoYXNMb2NhbFNlc3Npb24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIHJlbW90ZSBzZXNzaW9uLCBkbyBub3QgYWxsb3cgYSBu
ZXcgcmVtb3RlIHNlc3Npb24uCi0gICAgaWYgKG1fcmVtb3RlQ2hhbm5lbCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgbV9yZW1vdGVDaGFubmVsID0gcmVtb3RlQ2hhbm5lbDsKLQotICAg
IFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmlldyk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5jb25uZWN0RnJvbnRlbmQodGhpcyk7Ci0KLSAgICAvLyBGb3JjZSBkZXZlbG9wZXIg
ZXh0cmFzIHRvIGJlIGVuYWJsZWQgaW4gV2ViQ29yZSB3aGVuIGEgcmVtb3RlIGNvbm5lY3Rpb24g
c3RhcnRzLgotICAgIGlmIChwYWdlLT5zZXR0aW5ncygpKQotICAgICAgICBwYWdlLT5zZXR0aW5n
cygpLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojp0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24o
Ym9vbCBmcm9tTG9jYWxTaWRlKQotewotICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlz
YWJsZWQoKSk7Ci0gICAgaWYgKCFtX3JlbW90ZUNoYW5uZWwpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChmcm9tTG9jYWxTaWRlKQotICAgICAgICBbbV9yZW1vdGVDaGFubmVsIGNsb3NlRnJv
bUxvY2FsU2lkZV07Ci0KLSAgICBQYWdlKiBwYWdlID0gY29yZShtX3dlYlZpZXcpOwotICAgIGlm
IChwYWdlKSB7Ci0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzY29ubmVj
dEZyb250ZW5kKCk7Ci0KLSAgICAgICAgLy8gUmVzdG9yZSBkZXZlbG9wZXIgZXh0cmFzIHNldHRp
bmcgaW4gV2ViQ29yZS4KLSAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+c2V0dGluZ3MoKSkKLSAg
ICAgICAgICAgIHBhZ2UtPnNldHRpbmdzKCktPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoW1tt
X3dlYlZpZXcgcHJlZmVyZW5jZXNdIGRldmVsb3BlckV4dHJhc0VuYWJsZWRdKTsKLSAgICB9Ci0K
LSAgICBpZiAoZnJvbUxvY2FsU2lkZSkKLSAgICAgICAgW21fcmVtb3RlQ2hhbm5lbCByZWxlYXNl
XTsKLQotICAgIG1fcmVtb3RlQ2hhbm5lbCA9IDA7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xp
ZW50OjpoYXNMb2NhbFNlc3Npb24oKSBjb25zdAotewotICAgIHJldHVybiBtX2Zyb250ZW5kUGFn
ZSAhPSAwOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6Y2FuQmVSZW1vdGVseUluc3Bl
Y3RlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX3dlYlZpZXcgY2FuQmVSZW1vdGVseUluc3Bl
Y3RlZF07Ci19Ci0KLVdlYlZpZXcgKldlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkV2ViVmll
dygpCi17Ci0gICAgcmV0dXJuIG1fd2ViVmlldzsKLX0KLSNlbmRpZgotCiAKICNwcmFnbWEgbWFy
ayAtCiAjcHJhZ21hIG1hcmsgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgSW1wbGVtZW50YXRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCBmYzdkMDZkLi41Y2I4MjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNjQgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0
b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKwor
ICAgICAgICBSZW1vdmUgdGhlIG9sZCBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikgY29ubmVjdGlv
biBtYW5hZ2VtZW50IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYklu
c3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKToKKyAgICAgICAgKiBXZWJJbnNwZWN0
b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lmg6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbGF5RGVm
aW5pdGlvbnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYklu
c3BlY3RvclJlbW90ZUNoYW5uZWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3Iv
cmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW06IFJlbW92ZWQuCisgICAgICAgICog
V2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5tbTogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJ
bnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29u
dHJvbGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ci5tOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdC5leHA6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhG
cmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9lbmFibGVSZW1vdGVJ
bnNwZWN0b3JdKToKKyAgICAgICAgKCtbV2ViVmlldyBfZGlzYWJsZVJlbW90ZUluc3BlY3Rvcl0p
OgorICAgICAgICAoK1tXZWJWaWV3IF9kaXNhYmxlQXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yXSk6
CisgICAgICAgICgrW1dlYlZpZXcgX2lzUmVtb3RlSW5zcGVjdG9yRW5hYmxlZF0pOgorICAgICAg
ICAoK1tXZWJWaWV3IF9oYXNSZW1vdGVJbnNwZWN0b3JTZXNzaW9uXSk6CisgICAgICAgICgtW1dl
YlZpZXcgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbl0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEFs
bG93c1JlbW90ZUluc3BlY3Rpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0SW5kaWNhdGlu
Z0ZvclJlbW90ZUluc3BlY3RvcjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRIb3N0QXBwbGlj
YXRpb25CdW5kbGVJZDpuYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9kaWRDb21taXRMb2Fk
Rm9yRnJhbWU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlld0RhdGEubW06CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGluaXRd
KToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgZGVhbGxvY10pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5o
OgorCisyMDEzLTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBj
b25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmluZGljYXRlKToKKyAgICAgICAg
KFdlYkluc3BlY3RvckNsaWVudDo6aGlkZUluZGljYXRlKToKKyAgICAgICAgSG9vayB1cCBXZWJW
aWV3IGluZGljYXRpb24gdGhyb3VnaCB0aGlzIG5ldyBwYXRoLgorCiAyMDEzLTExLTI4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZmVhdHVyZTog
Q1NTIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCAxODc1YWMwLi42ZTc4YTFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQpAQCAtMTM4LDEwICsxMzgsNiBAQAogI2ltcG9ydCAiV2ViSG9zdGVkTmV0
c2NhcGVQbHVnaW5WaWV3LmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCkBAIC02MjEsMTIgKzYx
Nyw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpCiAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+
ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jKQogICAgICAgICAvLyBGSVhNRTogdXNlIGRpcmVj
dGlvbiBvZiB0aXRsZS4KICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0
aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2Vi
VmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUuc3RyaW5n
KCksIG1fd2ViRnJhbWUuZ2V0KCkpOwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0g
ICAgQk9PTCBpc01haW5GcmFtZSA9IFt3ZWJWaWV3IG1haW5GcmFtZV0gPT0gbV93ZWJGcmFtZS5n
ZXQoKTsKLSAgICBpZiAoaXNNYWluRnJhbWUpCi0gICAgICAgIFtbV2ViVmlldyBzaGFyZWRXZWJJ
bnNwZWN0b3JTZXJ2ZXJdIHB1c2hMaXN0aW5nXTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaAppbmRleCA1NTFhZjdmLi4yMmYzYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNzMsNiArNzMs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodCgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZv
aWQgaW5kaWNhdGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZUluZGljYXRpb24o
KSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJv
b2wpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChj
b25zdCBTdHJpbmcmKSBPVkVSUklERTsKQEAgLTg1LDIyICs4OCw2IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcmVsZWFzZUZyb250ZW5kKCk7CiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
LSAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpOwotCi0gICAgYm9v
bCBzZXR1cFJlbW90ZUNvbm5lY3Rpb24oV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqcmVtb3Rl
Q2hhbm5lbCk7Ci0gICAgdm9pZCB0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24oYm9vbCBmcm9tTG9j
YWxTaWRlKTsKLQotICAgIHVuc2lnbmVkIHBhZ2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlk
OyB9Ci0gICAgdm9pZCBzZXRQYWdlSWQodW5zaWduZWQgcGFnZUlkKSB7IG1fcGFnZUlkID0gcGFn
ZUlkOyB9Ci0KLSAgICBib29sIGhhc0xvY2FsU2Vzc2lvbigpIGNvbnN0OwotCi0gICAgYm9vbCBj
YW5CZVJlbW90ZWx5SW5zcGVjdGVkKCkgY29uc3Q7Ci0KLSAgICBXZWJWaWV3ICppbnNwZWN0ZWRX
ZWJWaWV3KCk7Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBjcmVhdGVGcm9udGVuZFNldHRp
bmdzKCk7CiAKQEAgLTEwOCwxMSArOTUsNiBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxXZWJO
b2RlSGlnaGxpZ2h0ZXI+IG1faGlnaGxpZ2h0ZXI7CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9u
dGVuZFBhZ2U7CiAgICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGll
bnQ7Ci0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBXZWJJbnNwZWN0b3JSZW1v
dGVDaGFubmVsICptX3JlbW90ZUNoYW5uZWw7Ci0gICAgdW5zaWduZWQgbV9wYWdlSWQ7Ci0jZW5k
aWYKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IGU0MzhjNmQuLmUyNWViZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
bW0KQEAgLTU1LDExICs1NSw2IEBACiAjaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogI2ltcG9y
dCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSNp
bXBvcnQgIldlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0
b3JSZW1vdGVDaGFubmVsLmgiCi0jZW5kaWYKLQogU09GVF9MSU5LX1NUQUdFRF9GUkFNRVdPUkso
V2ViSW5zcGVjdG9yVUksIFByaXZhdGVGcmFtZXdvcmtzLCBBKQogCiAvLyBUaGUgbWFyZ2luIGZy
b20gdGhlIHRvcCBhbmQgcmlnaHQgb2YgdGhlIGRvY2sgYnV0dG9uIChzYW1lIGFzIHRoZSBmdWxs
IHNjcmVlbiBidXR0b24pLgpAQCAtMTM1LDIzICsxMzAsMTEgQEAgV2ViSW5zcGVjdG9yQ2xpZW50
OjpXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqd2ViVmlldykKICAgICAsIG1faGlnaGxpZ2h0
ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRX
ZWJWaWV3OndlYlZpZXddKSkKICAgICAsIG1fZnJvbnRlbmRQYWdlKDApCiAgICAgLCBtX2Zyb250
ZW5kQ2xpZW50KDApCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX3JlbW90
ZUNoYW5uZWwoMCkKLSAgICAsIG1fcGFnZUlkKDApCi0jZW5kaWYKIHsKLSNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLSAgICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJl
Z2lzdHJ5XSByZWdpc3RlckNsaWVudDp0aGlzXTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKIHsKLSNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKLSAgICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5
XSB1bnJlZ2lzdGVyQ2xpZW50OnRoaXNdOwotICAgIHRlYXJkb3duUmVtb3RlQ29ubmVjdGlvbih0
cnVlKTsKLSNlbmRpZgotCiAgICAgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOwogICAgIGRlbGV0
ZSB0aGlzOwogfQpAQCAtMTk3LDYgKzE4MCwxNiBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6
aGlkZUhpZ2hsaWdodCgpCiAgICAgW21faGlnaGxpZ2h0ZXIuZ2V0KCkgaGlkZUhpZ2hsaWdodF07
CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbmRpY2F0ZSgpCit7CisgICAgW21fd2Vi
VmlldyBzZXRJbmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOllFU107Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpoaWRlSW5kaWNhdGlvbigpCit7CisgICAgW21fd2ViVmlldyBzZXRJ
bmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOk5PXTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQogewogICAgIFdlYklu
c3BlY3RvciAqaW5zcGVjdG9yID0gW21fd2ViVmlldyBpbnNwZWN0b3JdOwpAQCAtMjE1LDc4ICsy
MDgsNiBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKCkKICAgICBt
X2Zyb250ZW5kUGFnZSA9IDA7CiB9CiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLWJv
b2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQotewotICAgIGlmIChtX3JlbW90ZUNoYW5uZWwpIHsKLSAgICAgICAgW21fcmVt
b3RlQ2hhbm5lbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6bWVzc2FnZV07Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQ
YWdlKG1fZnJvbnRlbmRQYWdlLCBtZXNzYWdlKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBB
U1NFUlQobV9yZW1vdGVDaGFubmVsKTsKLQotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmll
dyk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRjaE1lc3NhZ2VGcm9t
RnJvbnRlbmQobWVzc2FnZSk7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXR1cFJl
bW90ZUNvbm5lY3Rpb24oV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqcmVtb3RlQ2hhbm5lbCkK
LXsKLSAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgbG9jYWwgc2Vzc2lvbiwgZG8gbm90IGFsbG93
IGEgcmVtb3RlIHNlc3Npb24uCi0gICAgaWYgKGhhc0xvY2FsU2Vzc2lvbigpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgcmVtb3RlIHNlc3Npb24s
IGRvIG5vdCBhbGxvdyBhIG5ldyByZW1vdGUgc2Vzc2lvbi4KLSAgICBpZiAobV9yZW1vdGVDaGFu
bmVsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBU1NFUlQoW1ttX3dlYlZpZXcgcHJl
ZmVyZW5jZXNdIGRldmVsb3BlckV4dHJhc0VuYWJsZWRdKTsKLQotICAgIG1fcmVtb3RlQ2hhbm5l
bCA9IHJlbW90ZUNoYW5uZWw7Ci0KLSAgICBQYWdlKiBwYWdlID0gY29yZShtX3dlYlZpZXcpOwot
ICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29ubmVjdEZyb250ZW5kKHRoaXMpOwot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojp0ZWFyZG93
blJlbW90ZUNvbm5lY3Rpb24oYm9vbCBmcm9tTG9jYWxTaWRlKQotewotICAgIGlmICghbV9yZW1v
dGVDaGFubmVsKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoZnJvbUxvY2FsU2lkZSkKLSAg
ICAgICAgW21fcmVtb3RlQ2hhbm5lbCBjbG9zZUZyb21Mb2NhbFNpZGVdOwotCi0gICAgaWYgKFBh
Z2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmlldykpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7Ci0KLSAgICBpZiAoZnJvbUxvY2FsU2lkZSkK
LSAgICAgICAgW21fcmVtb3RlQ2hhbm5lbCByZWxlYXNlXTsKLQotICAgIG1fcmVtb3RlQ2hhbm5l
bCA9IDA7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpoYXNMb2NhbFNlc3Npb24oKSBj
b25zdAotewotICAgIHJldHVybiBtX2Zyb250ZW5kUGFnZSAhPSAwOwotfQotCi1ib29sIFdlYklu
c3BlY3RvckNsaWVudDo6Y2FuQmVSZW1vdGVseUluc3BlY3RlZCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFttX3dlYlZpZXcgY2FuQmVSZW1vdGVseUluc3BlY3RlZF07Ci19Ci0KLVdlYlZpZXcgKldl
Ykluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkV2ViVmlldygpCi17Ci0gICAgcmV0dXJuIG1fd2Vi
VmlldzsKLX0KLSNlbmRpZgotCiAKIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0
b3JXaW5kb3dDb250cm9sbGVyKiB3aW5kb3dDb250cm9sbGVyLCBJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyLCBQYWdlKiBmcm9udGVuZFBhZ2UsIFdURjo6UGFzc093blB0
cjxTZXR0aW5ncz4gc2V0dGluZ3MpCiAgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
KGluc3BlY3RvckNvbnRyb2xsZXIsICBmcm9udGVuZFBhZ2UsIHNldHRpbmdzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGll
bnRSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDgwOTQ4ZDUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3Jl
bW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEw
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGll
bnRSZWdpc3RyeS5oIgotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKLSNpbXBvcnQg
IldlYlZpZXdQcml2YXRlLmgiCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0b3JDbGllbnRS
ZWdpc3RyeQotCi1Ac3ludGhlc2l6ZSBkZWxlZ2F0ZSA9IF9kZWxlZ2F0ZTsKLQotKyAoV2ViSW5z
cGVjdG9yQ2xpZW50UmVnaXN0cnkgKilzaGFyZWRSZWdpc3RyeQotewotICAgIHN0YXRpYyBXZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeSAqc2hhcmVkUmVnaXN0cnkgPSBbW1dlYkluc3BlY3RvckNs
aWVudFJlZ2lzdHJ5IGFsbG9jXSBpbml0XTsKLSAgICByZXR1cm4gc2hhcmVkUmVnaXN0cnk7Ci19
Ci0KLS0gKGlkKWluaXQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2Vs
ZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9uZXh0QXZhaWxhYmxlUGFnZUlkID0gMTsK
LQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh1bnNpZ25lZClfZ2V0TmV4dEF2YWlsYWJsZVBh
Z2VJZAotewotICAgIC8vIEJvdW5kYXJ5IHZhbHVlcywgMCBhbmQgVUlOVF9NQVgsIGFyZSBpbnZh
bGlkIEhhc2hNYXAga2V5cy4KLSAgICB1bnNpZ25lZCBuZXh0VmFsaWRQYWdlSWQ7Ci0gICAgZG8g
ewotICAgICAgICBuZXh0VmFsaWRQYWdlSWQgPSBfbmV4dEF2YWlsYWJsZVBhZ2VJZCsrOwotICAg
IH0gd2hpbGUgKCFuZXh0VmFsaWRQYWdlSWQgfHwgbmV4dFZhbGlkUGFnZUlkID09IFVJTlRfTUFY
IHx8IF9wYWdlQ2xpZW50TWFwLmNvbnRhaW5zKG5leHRWYWxpZFBhZ2VJZCkpOwotICAgIHJldHVy
biBuZXh0VmFsaWRQYWdlSWQ7Ci19Ci0KLS0gKHZvaWQpcmVnaXN0ZXJDbGllbnQ6KFdlYkluc3Bl
Y3RvckNsaWVudCopY2xpZW50Ci17Ci0gICAgdW5zaWduZWQgcGFnZUlkID0gW3NlbGYgX2dldE5l
eHRBdmFpbGFibGVQYWdlSWRdOwotICAgIF9wYWdlQ2xpZW50TWFwLnNldChwYWdlSWQsIGNsaWVu
dCk7Ci0gICAgY2xpZW50LT5zZXRQYWdlSWQocGFnZUlkKTsKLSAgICBbX2RlbGVnYXRlIGRpZFJl
Z2lzdGVyQ2xpZW50OmNsaWVudF07Ci19Ci0KLS0gKHZvaWQpdW5yZWdpc3RlckNsaWVudDooV2Vi
SW5zcGVjdG9yQ2xpZW50KiljbGllbnQKLXsKLSAgICB1bnNpZ25lZCBwYWdlSWQgPSBjbGllbnQt
PnBhZ2VJZCgpOwotICAgIF9wYWdlQ2xpZW50TWFwLnJlbW92ZShwYWdlSWQpOwotICAgIFtfZGVs
ZWdhdGUgZGlkVW5yZWdpc3RlckNsaWVudDpjbGllbnRdOwotfQotCi0tIChXZWJJbnNwZWN0b3JD
bGllbnQqKWNsaWVudEZvclBhZ2VJZDoodW5zaWduZWQpcGFnZUlkCi17Ci0gICAgcmV0dXJuIF9w
YWdlQ2xpZW50TWFwLmdldChwYWdlSWQpOwotfQotCi0tIChOU0RpY3Rpb25hcnkgKilpbnNwZWN0
YWJsZVdlYlZpZXdzCi17Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtO
U011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ2FwYWNpdHk6X3BhZ2VDbGllbnRNYXAu
c2l6ZSgpXTsKLQotICAgIEhhc2hNYXA8dW5zaWduZWQsIFdlYkluc3BlY3RvckNsaWVudCo+Ojpp
dGVyYXRvciBlbmQgPSBfcGFnZUNsaWVudE1hcC5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8dW5z
aWduZWQsIFdlYkluc3BlY3RvckNsaWVudCo+OjppdGVyYXRvciBpdCA9IF9wYWdlQ2xpZW50TWFw
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0g
aXQtPnZhbHVlLT5pbnNwZWN0ZWRXZWJWaWV3KCk7Ci0gICAgICAgIGlmICghW3dlYlZpZXcgY2Fu
QmVSZW1vdGVseUluc3BlY3RlZF0pCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBO
U051bWJlciAqcGFnZUlkID0gW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDppdC0+a2V5
XTsKLSAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OndlYlZpZXcgZm9yS2V5OnBhZ2VJZF07
Ci0gICAgfQotCi0gICAgcmV0dXJuIGRpY3Rpb25hcnk7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclJlbW90ZUNoYW5uZWwubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVt
b3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGM4ZmZjZDYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVj
dG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLSNpbXBvcnQgIldlYkluc3BlY3Rv
clJlbW90ZUNoYW5uZWwuaCIKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW1w
b3J0ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9y
U2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCIKLSNpbXBvcnQgIldlYktpdExvZ2dpbmcuaCIKLSNp
bXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotQGludGVyZmFjZSBXZWJJbnNwZWN0b3JSZW1v
dGVDaGFubmVsICgpCi0tIChpZClpbml0V2l0aFJlbW90ZTooV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb24gKilyZW1vdGUgbG9jYWw6KFdlYkluc3BlY3RvckNsaWVudCopbG9jYWw7
Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsCi0KLSsg
KFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKiljcmVhdGVDaGFubmVsRm9yUGFnZUlkOih1bnNp
Z25lZClwYWdlSWQgY29ubmVjdGlvbjooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24gKiljb25uZWN0aW9uCi17Ci0gICAgLy8gR2V0IHRoZSBJbnNwZWN0b3IgY2xpZW50LiBJdHMg
cG9zc2libGUgdGhlIHBhZ2UgY2xvc2VkIGJlZm9yZSB0aGUgcmVtb3RlIGNsaWVudCByZXF1ZXN0
ZWQgaXQuCi0gICAgV2ViSW5zcGVjdG9yQ2xpZW50ICppbnNwZWN0b3JDbGllbnQgPSBbW1dlYklu
c3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XSBjbGllbnRGb3JQYWdlSWQ6cGFn
ZUlkXTsKLSAgICBpZiAoIWluc3BlY3RvckNsaWVudCkgewotICAgICAgICBMT0coUmVtb3RlSW5z
cGVjdG9yLCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbDogUGFnZSByZXF1ZXN0ZWQgbm8gbG9u
Z2VyIGV4aXN0czogKCV1KSIsIHBhZ2VJZCk7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQot
Ci0gICAgLy8gVGhlIFdlYlZpZXcgZG9lcyBub3QgYWxsb3cgcmVtb3RlIGluc3BlY3Rpb24uCi0g
ICAgaWYgKCFpbnNwZWN0b3JDbGllbnQtPmNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQoKSkgewotICAg
ICAgICBMT0coUmVtb3RlSW5zcGVjdG9yLCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbDogV2Vi
VmlldyBmb3IgUGFnZSAoJXUpIGRvZXMgbm90IGFsbG93IHJlbW90ZSBpbnNwZWN0aW9uLiIsIHBh
Z2VJZCk7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgLy8gVGhlIGNoYW5uZWwg
aXMgcmVsZWFzZWQgYnkgd2hpY2hldmVyIHNpZGUgY2xvc2VzIHRoZSBjaGFubmVsLiBUaGUgY2hh
bm5lbCBjb3VsZCBiZSBjbG9zZWQKLSAgICAvLyByZW1vdGVseSBieSB0aGUgc29ja2V0IGNsb3Np
bmcgKHRoZSB1c2VyIG5hdmlnYXRpbmcgYXdheSBmcm9tIHRoZSByZW1vdGUgaW5zcGVjdG9yIHBh
Z2UpLgotICAgIC8vIEl0IGNvdWxkIGJlIGNsb3NlZCBsb2NhbGx5IGJ5IHRoZSBQYWdlIGJlaW5n
IGRlc3Ryb3llZCwgbGlrZSB0aGUgYnJvd3NlciBvciB0YWIgYmVpbmcgY2xvc2VkLgotICAgIC8v
IFNldHRpbmcgdXAgdGhlIGNvbm5lY3Rpb24gY2FuIGZhaWwgaWYgdGhlcmUgaXMgYWxyZWFkeSBh
biBleGlzdGluZyBzZXNzaW9uLgotICAgIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKmNoYW5u
ZWwgPSBbW1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgYWxsb2NdIGluaXRXaXRoUmVtb3RlOmNv
bm5lY3Rpb24gbG9jYWw6aW5zcGVjdG9yQ2xpZW50XTsKLSAgICBpZiAoIWluc3BlY3RvckNsaWVu
dC0+c2V0dXBSZW1vdGVDb25uZWN0aW9uKGNoYW5uZWwpKSB7Ci0gICAgICAgIExPRyhSZW1vdGVJ
bnNwZWN0b3IsICJXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsOiBTZXR0aW5nIHVwIGEgcmVtb3Rl
IHNlc3Npb24gZmFpbGVkLiBQcm9iYWJseSBhbHJlYWR5IGEgbG9jYWwgc2Vzc2lvbi4iKTsKLSAg
ICAgICAgW2NoYW5uZWwgcmVsZWFzZV07Ci0gICAgICAgIGNoYW5uZWwgPSBuaWw7Ci0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNoYW5uZWw7Ci19Ci0KLS0gKGlkKWlu
aXRXaXRoUmVtb3RlOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqKXJlbW90
ZSBsb2NhbDooV2ViSW5zcGVjdG9yQ2xpZW50Kilsb2NhbAotewotICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX3JlbW90
ZSA9IHJlbW90ZTsKLSAgICBfbG9jYWwgPSBsb2NhbDsKLQotICAgIHJldHVybiBzZWxmOwotfQot
Ci0tICh2b2lkKWNsb3NlRnJvbUxvY2FsU2lkZQotewotICAgIC8vIExvY2FsIHNpZGUgd2lsbCBy
ZWxlYXNlLiBNYWtlIHN1cmUgdGhlIHJlbW90ZSBzaWRlIGNsZWFycyBpdHMgcmVmZXJlbmNlIHRv
IHRoZSBjaGFubmVsLgotICAgIFtfcmVtb3RlIGNsZWFyQ2hhbm5lbF07Ci19Ci0KLS0gKHZvaWQp
Y2xvc2VGcm9tUmVtb3RlU2lkZQotewotICAgIC8vIFJlbW90ZSBzaWRlIHdpbGwgcmVsZWFzZS4g
TWFrZSBzdXJlIHRoZSBsb2NhbCBzaWRlIGNsZWFycyBpdHMgcmVmZXJlbmNlIHRvIHRoZSBjaGFu
bmVsLgotICAgIF9sb2NhbC0+dGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKGZhbHNlKTsKLX0KLQot
LSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZQotewotICAg
IFtfcmVtb3RlIHNlbmRNZXNzYWdlVG9Gcm9udGVuZDptZXNzYWdlXTsKLX0KLQotLSAodm9pZClz
ZW5kTWVzc2FnZVRvQmFja2VuZDooTlNTdHJpbmcgKiltZXNzYWdlCi17Ci0gICAgX2xvY2FsLT5z
ZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKTsKLX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
U2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclNlcnZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjY3OTBmLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVj
dG9yU2VydmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xp
ZW50UmVnaXN0cnkuaCIKLQotQGNsYXNzIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uQ29udHJvbGxlcjsKLUBjbGFzcyBXZWJJbnNwZWN0b3JYUENXcmFwcGVyOwotCi1AaW50ZXJm
YWNlIFdlYkluc3BlY3RvclNlcnZlciA6IE5TT2JqZWN0IDxXZWJJbnNwZWN0b3JDbGllbnRSZWdp
c3RyeURlbGVnYXRlPiB7Ci1AcHJpdmF0ZQotICAgIEJPT0wgX2lzRW5hYmxlZDsKLSAgICBCT09M
IF9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247Ci0gICAgaW50IF9ub3RpZnlUb2tlbjsKLSAgICBXZWJJ
bnNwZWN0b3JYUENXcmFwcGVyICpfeHBjQ29ubmVjdGlvbjsKLSAgICBXZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgKl9jb25uZWN0aW9uQ29udHJvbGxlcjsKLX0K
LQotLSAodm9pZClzdGFydDsKLS0gKHZvaWQpc3RvcDsKLS0gKEJPT0wpaXNFbmFibGVkOwotLSAo
dm9pZClwdXNoTGlzdGluZzsKLQotLSAoQk9PTCloYXNBY3RpdmVEZWJ1Z1Nlc3Npb247Ci0tICh2
b2lkKXNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjooQk9PTCloYXNTZXNzaW9uOwotCi0tIChXZWJJ
bnNwZWN0b3JYUENXcmFwcGVyICopeHBjQ29ubmVjdGlvbjsKLQotQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNl
cnZlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM5YTczYS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNl
cnZlci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKLQotI2ltcG9ydCAiV2ViSW5zcGVj
dG9yQ2xpZW50LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmgiCi0j
aW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCIK
LSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCIKLSNpbXBvcnQgIldlYlZpZXdQcml2
YXRlLmgiCi0jaW1wb3J0IDxub3RpZnkuaD4KLSNpbXBvcnQgPHhwYy94cGMuaD4KLQotCi0jcHJh
Z21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIFByaXZhdGUgQ2xhc3MgRGV0YWlscwotCi1AaW50ZXJm
YWNlIFdlYkluc3BlY3RvclNlcnZlciAoKSA8V2ViSW5zcGVjdG9yWFBDV3JhcHBlckRlbGVnYXRl
PgotLSAodm9pZClzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZDsKLS0gKHZvaWQpeHBjQ29ubmVj
dGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb24gcmVjZWl2ZWRNZXNzYWdl
OihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5m
bzsKLS0gKHZvaWQpeHBjQ29ubmVjdGlvbkZhaWxlZDooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAq
KWNvbm5lY3Rpb247Ci1AZW5kCi0KLQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBTZXJ2
ZXIgSW1wbGVtZW50YXRpb24KLQotQGltcGxlbWVudGF0aW9uIFdlYkluc3BlY3RvclNlcnZlcgot
Ci0tIChpZClpbml0Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfY29ubmVjdGlvbkNvbnRyb2xsZXIgPSBbW1dl
Ykluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdFdp
dGhTZXJ2ZXI6c2VsZl07Ci0KLSAgICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJl
ZFJlZ2lzdHJ5XSBzZXREZWxlZ2F0ZTpzZWxmXTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0t
ICh2b2lkKWRlYWxsb2MKLXsKLSAgICAvLyBTaW5nbGV0b24gaXMgbm90IGV4cGVjdGVkIHRvIGJl
IHJlbGVhc2VkLgotCi0gICAgW3NlbGYgc3RvcF07Ci0KLSAgICBBU1NFUlQoIV94cGNDb25uZWN0
aW9uKTsKLSAgICBbX2Nvbm5lY3Rpb25Db250cm9sbGVyIHJlbGVhc2VdOwotCi0gICAgW1tXZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gc2V0RGVsZWdhdGU6bmlsXTsK
LQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClzdGFydAotewotICAgIGlmIChf
aXNFbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfaXNFbmFibGVkID0gWUVTOwotCi0g
ICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKFdJUlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRp
b24sICZfbm90aWZ5VG9rZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oaW50IHRva2Vu
KSB7Ci0gICAgICAgIFtzZWxmIHNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkXTsKLSAgICB9KTsK
LQotICAgIG5vdGlmeV9wb3N0KFdJUlNlcnZpY2VBdmFpbGFiaWxpdHlDaGVja05vdGlmaWNhdGlv
bik7Ci19Ci0KLS0gKHZvaWQpc3RvcAotewotICAgIGlmICghX2lzRW5hYmxlZCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgX2lzRW5hYmxlZCA9IE5POwotCi0gICAgW19jb25uZWN0aW9uQ29udHJv
bGxlciBjbG9zZUFsbENvbm5lY3Rpb25zXTsKLQotICAgIGlmIChfeHBjQ29ubmVjdGlvbikgewot
ICAgICAgICBbX3hwY0Nvbm5lY3Rpb24gY2xvc2VdOwotICAgICAgICBfeHBjQ29ubmVjdGlvbi5k
ZWxlZ2F0ZSA9IG5pbDsKLSAgICAgICAgW194cGNDb25uZWN0aW9uIHJlbGVhc2VdOwotICAgICAg
ICBfeHBjQ29ubmVjdGlvbiA9IG5pbDsKLSAgICB9Ci0KLSAgICBub3RpZnlfY2FuY2VsKF9ub3Rp
ZnlUb2tlbik7Ci19Ci0KLS0gKEJPT0wpaXNFbmFibGVkCi17Ci0gICAgcmV0dXJuIF9pc0VuYWJs
ZWQ7Ci19Ci0KLS0gKFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKil4cGNDb25uZWN0aW9uCi17Ci0g
ICAgcmV0dXJuIF94cGNDb25uZWN0aW9uOwotfQotCi0tICh2b2lkKXNldHVwWFBDQ29ubmVjdGlv
bklmTmVlZGVkCi17Ci0gICAgaWYgKF94cGNDb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0K
LSAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlvbl9jcmVhdGVf
bWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgMCk7Ci0gICAgaWYgKGNvbm5lY3Rpb24pIHsKLSAgICAgICAgX3hwY0Nvbm5lY3Rpb24gPSBb
W1dlYkluc3BlY3RvclhQQ1dyYXBwZXIgYWxsb2NdIGluaXRXaXRoQ29ubmVjdGlvbjpjb25uZWN0
aW9uXTsKLSAgICAgICAgX3hwY0Nvbm5lY3Rpb24uZGVsZWdhdGUgPSBzZWxmOwotICAgICAgICBb
X3hwY0Nvbm5lY3Rpb24gc2VuZE1lc3NhZ2U6QCJzeW4iIHVzZXJJbmZvOm5pbF07Ci0gICAgICAg
IHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwotICAgIH0KLX0KLQotLSAodm9pZClwdXNoTGlzdGlu
ZwotewotICAgIGlmICghX2lzRW5hYmxlZCB8fCAhX3hwY0Nvbm5lY3Rpb24pCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFtfY29ubmVjdGlvbkNvbnRyb2xsZXIgcHVzaExpc3RpbmddOwotfQotCi0t
IChCT09MKWhhc0FjdGl2ZURlYnVnU2Vzc2lvbgotewotICAgIHJldHVybiBfaGFzQWN0aXZlRGVi
dWdTZXNzaW9uOwotfQotCi0tICh2b2lkKXNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjooQk9PTClo
YXNTZXNzaW9uCi17Ci0gICAgaWYgKF9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24gPT0gaGFzU2Vzc2lv
bikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbiA9IGhhc1Nl
c3Npb247Ci0KLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3RO
b3RpZmljYXRpb25OYW1lOl9XZWJWaWV3UmVtb3RlSW5zcGVjdG9ySGFzU2Vzc2lvbkNoYW5nZWRO
b3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci19Ci0KLQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEg
bWFyayBXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGUgSW1wbGVtZW50YXRpb24KLQotLSAo
dm9pZCl4cGNDb25uZWN0aW9uOihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopeHBjQ29ubmVjdGlv
biByZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGlj
dGlvbmFyeSAqKXVzZXJJbmZvCi17Ci0gICAgQVNTRVJUKHhwY0Nvbm5lY3Rpb24gPT0gX3hwY0Nv
bm5lY3Rpb24pOwotCi0gICAgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSUGVy
bWlzc2lvbkRlbmllZF0pCi0gICAgICAgIFtzZWxmIHN0b3BdOwotICAgIGVsc2UKLSAgICAgICAg
W19jb25uZWN0aW9uQ29udHJvbGxlciByZWNlaXZlZE1lc3NhZ2U6bWVzc2FnZU5hbWUgdXNlcklu
Zm86dXNlckluZm9dOwotfQotCi0tICh2b2lkKXhwY0Nvbm5lY3Rpb25GYWlsZWQ6KFdlYkluc3Bl
Y3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uCi17Ci0gICAgW19jb25uZWN0aW9uQ29udHJvbGxl
ciBjbG9zZUFsbENvbm5lY3Rpb25zXTsKLQotICAgIGlmIChfeHBjQ29ubmVjdGlvbikgewotICAg
ICAgICBfeHBjQ29ubmVjdGlvbi5kZWxlZ2F0ZSA9IG5pbDsKLSAgICAgICAgW194cGNDb25uZWN0
aW9uIHJlbGVhc2VdOwotICAgICAgICBfeHBjQ29ubmVjdGlvbiA9IG5pbDsKLSAgICB9Ci19Ci0K
LQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3Ry
eURlbGVnYXRlIGltcGxlbWVudGF0aW9uCi0KLS0gKHZvaWQpZGlkUmVnaXN0ZXJDbGllbnQ6KFdl
Ykluc3BlY3RvckNsaWVudCopY2xpZW50Ci17Ci0gICAgLy8gV2hlbiBhIFdlYlZpZXcgaXMgcmVn
aXN0ZXJlZCBpdCBoYXMgbm8gY29udGVudC4gQnV0IHNvbWUgV2ViVmlld3MKLSAgICAvLyBuZXZl
ciBsb2FkIGNvbnRlbnQgZnJvbSBhIFVSTCwgc3VjaCBhcyBVSVRleHRGaWVsZHMgb24gaU9TLgot
ICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQotLSAodm9pZClkaWRVbnJlZ2lzdGVyQ2xpZW50
OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudAotewotICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsK
LX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYklu
c3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWFlZDgx
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24ubW0KKysrIC9kZXYvbnVsbApAQCAtMSwx
MzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2Vy
dmVyV2ViVmlld0Nvbm5lY3Rpb24uaCIKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50Lmgi
Ci0jaW1wb3J0ICJXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmgiCi0jaW1wb3J0ICJXZWJJ
bnNwZWN0b3JSZW1vdGVDaGFubmVsLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIK
LSNpbXBvcnQgIldlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5o
IgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIgotI2ltcG9ydCAiV2ViS2l0TG9n
Z2luZy5oIgotI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi1AaW1wbGVtZW50YXRpb24g
V2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24KLQotLSAoaWQpaW5pdFdpdGhDb250
cm9sbGVyOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgKilj
b250cm9sbGVyIGNvbm5lY3Rpb25JZGVudGlmaWVyOihOU1N0cmluZyAqKWNvbm5lY3Rpb25JZGVu
dGlmaWVyIGRlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uIGlkZW50aWZpZXI6KE5T
TnVtYmVyICopaWRlbnRpZmllcgotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYg
KCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX2NvbnRyb2xsZXIgPSBjb250cm9s
bGVyOwotICAgIF9jb25uZWN0aW9uSWRlbnRpZmllciA9IFtjb25uZWN0aW9uSWRlbnRpZmllciBj
b3B5XTsKLSAgICBfZGVzdGluYXRpb24gPSBbZGVzdGluYXRpb24gY29weV07Ci0gICAgX2lkZW50
aWZpZXIgPSBbaWRlbnRpZmllciBjb3B5XTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChC
T09MKXNldHVwQ2hhbm5lbAotewotICAgIEFTU0VSVCghX2NoYW5uZWwpOwotICAgIHVuc2lnbmVk
IHBhZ2VJZCA9IFtfaWRlbnRpZmllciB1bnNpZ25lZEludFZhbHVlXTsKLSAgICBfY2hhbm5lbCA9
IFtXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsIGNyZWF0ZUNoYW5uZWxGb3JQYWdlSWQ6cGFnZUlk
IGNvbm5lY3Rpb246c2VsZl07Ci0gICAgcmV0dXJuIF9jaGFubmVsICE9IG5pbDsKLX0KLQotLSAo
dm9pZClkZWFsbG9jCi17Ci0gICAgQVNTRVJUKCFfY2hhbm5lbCk7Ci0gICAgW19jb25uZWN0aW9u
SWRlbnRpZmllciByZWxlYXNlXTsKLSAgICBbX2Rlc3RpbmF0aW9uIHJlbGVhc2VdOwotICAgIFtf
aWRlbnRpZmllciByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKE5TU3Ry
aW5nICopY29ubmVjdGlvbklkZW50aWZpZXIKLXsKLSAgICByZXR1cm4gW1tfY29ubmVjdGlvbklk
ZW50aWZpZXIgY29weV0gYXV0b3JlbGVhc2VdOwotfQotCi0tIChOU051bWJlciAqKWlkZW50aWZp
ZXIKLXsKLSAgICByZXR1cm4gW1tfaWRlbnRpZmllciBjb3B5XSBhdXRvcmVsZWFzZV07Ci19Ci0K
LQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBJbnRlcmFjdGlvbiB3aXRoIHRoZSBjaGFu
bmVsIHRvIHRoZSBsb2NhbCBpbnNwZWN0b3IgYmFja2VuZAotCi0tICh2b2lkKWNsZWFyQ2hhbm5l
bAotewotICAgIF9jaGFubmVsID0gbmlsOwotICAgIFtfY29udHJvbGxlciBjb25uZWN0aW9uQ2xv
c2luZzpzZWxmXTsKLX0KLQotLSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5n
ICopbWVzc2FnZQotewotICAgIE5TRGF0YSAqZGF0YSA9IFttZXNzYWdlIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBOU0RpY3Rpb25hcnkgKm91dGdvaW5nID0g
W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICBkYXRh
LCBXSVJSYXdEYXRhS2V5LAotICAgICAgICBfY29ubmVjdGlvbklkZW50aWZpZXIsIFdJUkNvbm5l
Y3Rpb25JZGVudGlmaWVyS2V5LAotICAgICAgICBfZGVzdGluYXRpb24sIFdJUkRlc3RpbmF0aW9u
S2V5LAotICAgICAgICBuaWxdOwotCi0gICAgW19jb250cm9sbGVyIHNlbmRNZXNzYWdlVG9Gcm9u
dGVuZDpXSVJSYXdEYXRhTWVzc2FnZSB1c2VySW5mbzpvdXRnb2luZ107Ci19Ci0KLS0gKHZvaWQp
c2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZQotewotICAgIEFTU0VSVChf
Y2hhbm5lbCk7Ci0gICAgTE9HKFJlbW90ZUluc3BlY3RvciwgIldlYkluc3BlY3RvclNlcnZlckNv
bm5lY3Rpb246IFJlY2VpdmVkOiB8JXN8IiwgU3RyaW5nKG1lc3NhZ2UpLnV0ZjgoKS5kYXRhKCkp
OwotCi0gICAgW19jaGFubmVsIHNlbmRNZXNzYWdlVG9CYWNrZW5kOm1lc3NhZ2VdOwotfQotCi0K
LSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgSW50ZXJhY3Rpb24gd2l0aCB0aGUgc2VydmVy
IHRvIHRoZSByZW1vdGUgaW5zcGVjdG9yIGZyb250ZW5kCi0KLS0gKHZvaWQpcmVjZWl2ZWREYXRh
OihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNEYXRhICpkYXRhID0gW2RpY3Rp
b25hcnkgb2JqZWN0Rm9yS2V5OldJUlNvY2tldERhdGFLZXldOwotICAgIE5TU3RyaW5nICptZXNz
YWdlID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddOwotICAgIFtzZWxmIHNlbmRNZXNzYWdlVG9CYWNrZW5kOm1lc3NhZ2Vd
OwotICAgIFttZXNzYWdlIHJlbGVhc2VdOwotfQotCi0tICh2b2lkKXJlY2VpdmVkRGlkQ2xvc2U6
KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAgICBpZiAoX2NoYW5uZWwpIHsKLSAgICAg
ICAgW19jaGFubmVsIGNsb3NlRnJvbVJlbW90ZVNpZGVdOwotICAgICAgICBbX2NoYW5uZWwgcmVs
ZWFzZV07Ci0gICAgICAgIF9jaGFubmVsID0gbmlsOwotICAgIH0KLX0KLQotQGVuZAotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbkNvbnRyb2xsZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlYzIx
MzYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9X
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0KKysrIC9kZXYv
bnVsbApAQCAtMSwzODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmgiCi0KLSNpbXBvcnQg
IldlYkluc3BlY3RvckNsaWVudC5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0
cnkuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCIKLSNpbXBvcnQg
IldlYkluc3BlY3RvclNlcnZlci5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb24uaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCIKLSNpbXBv
cnQgIldlYlZpZXcuaCIKLSNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCi0KLSNpZiBQTEFURk9S
TShJT1MpCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWQuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZVRocmVhZFJ1bi5oPgotI2VuZGlmCi0KLQotQGltcGxlbWVudGF0aW9uIFdlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlcgotCi0tIChpZClpbml0V2l0
aFNlcnZlcjooV2ViSW5zcGVjdG9yU2VydmVyICopc2VydmVyCi17Ci0gICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfc2Vy
dmVyID0gc2VydmVyOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwot
ewotICAgIEFTU0VSVCghW19vcGVuQ29ubmVjdGlvbnMgY291bnRdKTsKLSAgICBbX29wZW5Db25u
ZWN0aW9ucyByZWxlYXNlXTsKLQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClj
bG9zZUFsbENvbm5lY3Rpb25zCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFdlYlRocmVhZFJ1
biheewotI2VuZGlmCi0KLSAgICBmb3IgKE5TTnVtYmVyICprZXkgaW4gX29wZW5Db25uZWN0aW9u
cykgewotICAgICAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqY29ubmVj
dGlvbiA9IFtfb3BlbkNvbm5lY3Rpb25zIG9iamVjdEZvcktleTprZXldOwotICAgICAgICBbY29u
bmVjdGlvbiByZWNlaXZlZERpZENsb3NlOm5pbF07Ci0gICAgfQotICAgIFtfb3BlbkNvbm5lY3Rp
b25zIHJlbW92ZUFsbE9iamVjdHNdOwotCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNz
aW9uOk5PXTsKLSAgICB9KTsKLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICB9KTsKLSNlbmRpZgot
fQotCi0tIChOU0RpY3Rpb25hcnkgKilfbGlzdGluZ0ZvcldlYlZpZXc6KFdlYlZpZXcgKil3ZWJW
aWV3IHBhZ2VJZDooTlNOdW1iZXIgKilwYWdlSWQgcmVnaXN0cnk6KFdlYkluc3BlY3RvckNsaWVu
dFJlZ2lzdHJ5ICopcmVnaXN0cnkKLXsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICp3ZWJWaWV3
RGV0YWlscyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwotCi0gICAgLy8gUGFn
ZSBJRC4KLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnBhZ2VJZCBmb3JLZXk6V0lSUGFn
ZUlkZW50aWZpZXJLZXldOwotCi0gICAgLy8gVVJMLgotICAgIE5TU3RyaW5nICp1cmwgPSBbd2Vi
VmlldyBtYWluRnJhbWVVUkxdOwotICAgIGlmICghdXJsKQotICAgICAgICB1cmwgPSBAImFib3V0
OmJsYW5rIjsKLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnVybCBmb3JLZXk6V0lSVVJM
S2V5XTsKLQotICAgIC8vIFRpdGxlLgotICAgIE5TU3RyaW5nICp0aXRsZSA9IFt3ZWJWaWV3IG1h
aW5GcmFtZVRpdGxlXTsKLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnRpdGxlIGZvcktl
eTpXSVJUaXRsZUtleV07Ci0KLSAgICAvLyBbT3B0aW9uYWxdIENvbm5lY3Rpb24gSWRlbnRpZmll
ciAoUmVtb3RlIERlYnVnZ2VyIFVVSUQpLgotICAgIC8vIFtPcHRpb25hbF0gSGFzIExvY2FsIERl
YnVnZ2VyIFNlc3Npb24uCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24g
KmNvbm5lY3Rpb24gPSBbX29wZW5Db25uZWN0aW9ucyBvYmplY3RGb3JLZXk6cGFnZUlkXTsKLSAg
ICBpZiAoY29ubmVjdGlvbikKLSAgICAgICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDpjb25u
ZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlmaWVyIGZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmll
cktleV07Ci0gICAgZWxzZSB7Ci0gICAgICAgIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjdG9y
Q2xpZW50ID0gW3JlZ2lzdHJ5IGNsaWVudEZvclBhZ2VJZDpbcGFnZUlkIHVuc2lnbmVkSW50VmFs
dWVdXTsKLSAgICAgICAgaWYgKGluc3BlY3RvckNsaWVudC0+aGFzTG9jYWxTZXNzaW9uKCkpCi0g
ICAgICAgICAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpZRVNdIGZvcktleTpXSVJIYXNMb2NhbERlYnVnZ2VyS2V5XTsKLSAgICB9Ci0KLSNpZiBQ
TEFURk9STShJT1MpCi0gICAgLy8gW09wdGlvbmFsXSBIb3N0IEFwcGxpY2F0aW9uIElELgotICAg
IE5TU3RyaW5nICpob3N0QXBwbGljYXRpb25JZCA9IFt3ZWJWaWV3IGhvc3RBcHBsaWNhdGlvbkJ1
bmRsZUlkXTsKLSAgICBpZiAoaG9zdEFwcGxpY2F0aW9uSWQpCi0gICAgICAgIFt3ZWJWaWV3RGV0
YWlscyBzZXRPYmplY3Q6aG9zdEFwcGxpY2F0aW9uSWQgZm9yS2V5OldJUkhvc3RBcHBsaWNhdGlv
bklkZW50aWZpZXJLZXldOwotCi0gICAgLy8gW09wdGlvbmFsXSBIb3N0IEFwcGxpY2F0aW9uIE5h
bWUuCi0gICAgTlNTdHJpbmcgKmhvc3RBcHBsaWNhdGlvbk5hbWUgPSBbd2ViVmlldyBob3N0QXBw
bGljYXRpb25OYW1lXTsKLSAgICBpZiAoaG9zdEFwcGxpY2F0aW9uTmFtZSkKLSAgICAgICAgW3dl
YlZpZXdEZXRhaWxzIHNldE9iamVjdDpob3N0QXBwbGljYXRpb25OYW1lIGZvcktleTpXSVJIb3N0
QXBwbGljYXRpb25OYW1lS2V5XTsKLSNlbmRpZgotCi0gICAgLy8gW09wdGlvbmFsXSBSZW1vdGUg
SW5zcGVjdG9yIFdlYlZpZXcgVXNlciBJbmZvIERpY3Rpb25hcnkuCi0gICAgTlNEaWN0aW9uYXJ5
ICpyZW1vdGVJbnNwZWN0b3JVc2VySW5mbyA9IFt3ZWJWaWV3IHJlbW90ZUluc3BlY3RvclVzZXJJ
bmZvXTsKLSAgICBpZiAocmVtb3RlSW5zcGVjdG9yVXNlckluZm8pCi0gICAgICAgIFt3ZWJWaWV3
RGV0YWlscyBzZXRPYmplY3Q6cmVtb3RlSW5zcGVjdG9yVXNlckluZm8gZm9yS2V5OldJUlVzZXJJ
bmZvS2V5XTsKLQotICAgIHJldHVybiB3ZWJWaWV3RGV0YWlsczsKLX0KLQotLSAodm9pZClfcHVz
aExpc3Rpbmc6KE5TU3RyaW5nICopb3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcgotewotI2lm
IFBMQVRGT1JNKElPUykKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotI2VuZGlm
Ci0KLSAgICBfaGFzU2NoZWR1bGVkUHVzaCA9IE5POwotCi0gICAgTlNNdXRhYmxlRGljdGlvbmFy
eSAqcmVzcG9uc2UgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgIFdl
Ykluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ICp3ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSA9IFtX
ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV07Ci0gICAgTlNEaWN0aW9u
YXJ5ICpyZWdpc3RlcmVkVmlld3MgPSBbd2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgaW5zcGVj
dGFibGVXZWJWaWV3c107Ci0gICAgZm9yIChOU051bWJlciAqcGFnZUlkIGluIHJlZ2lzdGVyZWRW
aWV3cykgewotICAgICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3JlZ2lzdGVyZWRWaWV3cyBvYmpl
Y3RGb3JLZXk6cGFnZUlkXTsKLSAgICAgICAgTlNEaWN0aW9uYXJ5ICp3ZWJWaWV3RGV0YWlscyA9
IFtzZWxmIF9saXN0aW5nRm9yV2ViVmlldzp3ZWJWaWV3IHBhZ2VJZDpwYWdlSWQgcmVnaXN0cnk6
d2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnldOwotICAgICAgICBbcmVzcG9uc2Ugc2V0T2JqZWN0
OndlYlZpZXdEZXRhaWxzIGZvcktleTpbcGFnZUlkIHN0cmluZ1ZhbHVlXV07Ci0gICAgfQotCi0g
ICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqb3V0Z29pbmcgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdOwotICAgIFtvdXRnb2luZyBzZXRPYmplY3Q6cmVzcG9uc2UgZm9yS2V5OldJ
Ukxpc3RpbmdLZXldOwotICAgIGlmIChvcHRpb25hbENvbm5lY3Rpb25JZGVudGlmaWVyKQotICAg
ICAgICBbb3V0Z29pbmcgc2V0T2JqZWN0Om9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXIgZm9y
S2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKLQotICAgIFtzZWxmIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZDpXSVJMaXN0aW5nTWVzc2FnZSB1c2VySW5mbzpvdXRnb2luZ107Ci0KLSAgICBb
b3V0Z29pbmcgcmVsZWFzZV07Ci0gICAgW3Jlc3BvbnNlIHJlbGVhc2VdOwotfQotCi0tICh2b2lk
KXB1c2hMaXN0aW5nOihOU1N0cmluZyAqKW9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXIKLXsK
LSNpZiBQTEFURk9STShJT1MpCi0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSNl
bmRpZgotCi0gICAgaWYgKF9oYXNTY2hlZHVsZWRQdXNoKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAob3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcikgewotICAgICAgICBbc2VsZiBfcHVz
aExpc3Rpbmc6b3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcl07Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hf
dGltZShESVNQQVRDSF9USU1FX05PVywgMC4yICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0
X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKLSAg
ICAgICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgICAgICBbc2VsZiBfcHVzaExpc3Rpbmc6bmls
XTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0jZWxzZQotICAgIFtzZWxmIHBlcmZvcm1TZWxlY3Rv
cjpAc2VsZWN0b3IoX3B1c2hMaXN0aW5nOikgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTowLjJd
OwotI2VuZGlmCi0KLSAgICBfaGFzU2NoZWR1bGVkUHVzaCA9IFlFUzsKLX0KLQotLSAodm9pZClw
dXNoTGlzdGluZwotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBXZWJUaHJlYWRSdW4oXnsKLSNl
bmRpZgotCi0gICAgW3NlbGYgcHVzaExpc3Rpbmc6bmlsXTsKLQotI2lmIFBMQVRGT1JNKElPUykK
LSAgICB9KTsKLSNlbmRpZgotfQotCi0tICh2b2lkKV9yZWNlaXZlZFNldHVwOihOU0RpY3Rpb25h
cnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0aW9uYXJ5IG9i
amVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFwYWdlSWQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFtkaWN0
aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07Ci0gICAgaWYg
KCFjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNTdHJpbmcg
KnNlbmRlciA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJTZW5kZXJLZXldOwotICAgIGlm
ICghc2VuZGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIV9vcGVuQ29ubmVjdGlvbnMp
Ci0gICAgICAgIF9vcGVuQ29ubmVjdGlvbnMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdOwotCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKmNvbm5l
Y3Rpb24gPSBbW1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGFsbG9jXSBpbml0
V2l0aENvbnRyb2xsZXI6c2VsZiBjb25uZWN0aW9uSWRlbnRpZmllcjpjb25uZWN0aW9uSWRlbnRp
ZmllciBkZXN0aW5hdGlvbjpzZW5kZXIgaWRlbnRpZmllcjpwYWdlSWRdOwotICAgIGlmIChbY29u
bmVjdGlvbiBzZXR1cENoYW5uZWxdKQotICAgICAgICBbX29wZW5Db25uZWN0aW9ucyBzZXRPYmpl
Y3Q6Y29ubmVjdGlvbiBmb3JLZXk6cGFnZUlkXTsKLSAgICBbY29ubmVjdGlvbiByZWxlYXNlXTsK
LQotICAgIGlmIChbX29wZW5Db25uZWN0aW9ucyBjb3VudF0gPT0gMSkgewotICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgW19z
ZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOllFU107Ci0gICAgICAgIH0pOwotICAgIH0K
LQotICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQotLSAodm9pZClfcmVjZWl2ZWREYXRhOihO
U0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0
aW9uYXJ5IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFwYWdl
SWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25u
ZWN0aW9uICpjb25uZWN0aW9uID0gW19vcGVuQ29ubmVjdGlvbnMgb2JqZWN0Rm9yS2V5OnBhZ2VJ
ZF07Ci0gICAgQVNTRVJUKCFjb25uZWN0aW9uIHx8IFtjb25uZWN0aW9uIGlzS2luZE9mQ2xhc3M6
W1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGNsYXNzXV0pOwotICAgIGlmICgh
Y29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW2Nvbm5lY3Rpb24gcmVjZWl2ZWRE
YXRhOmRpY3Rpb25hcnldOwotfQotCi0tICh2b2lkKV9yZWNlaXZlZERpZENsb3NlOihOU0RpY3Rp
b25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0aW9uYXJ5
IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFwYWdlSWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFtk
aWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07Ci0gICAg
aWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24gPSBbX29wZW5Db25uZWN0
aW9ucyBvYmplY3RGb3JLZXk6cGFnZUlkXTsKLSAgICBBU1NFUlQoIWNvbm5lY3Rpb24gfHwgW2Nv
bm5lY3Rpb24gaXNLaW5kT2ZDbGFzczpbV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24gY2xhc3NdXSk7Ci0gICAgaWYgKCFjb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoIVtjb25uZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6Y29ubmVjdGlvbi5j
b25uZWN0aW9uSWRlbnRpZmllcl0pCi0gICAgICAgIHJldHVybjsKLQotICAgIFtjb25uZWN0aW9u
IHJlY2VpdmVkRGlkQ2xvc2U6ZGljdGlvbmFyeV07Ci0gICAgW19vcGVuQ29ubmVjdGlvbnMgcmVt
b3ZlT2JqZWN0Rm9yS2V5OnBhZ2VJZF07Ci0KLSAgICBpZiAoIVtfb3BlbkNvbm5lY3Rpb25zIGNv
dW50XSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeewotICAgICAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOk5PXTsK
LSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgW3NlbGYgcHVzaExpc3RpbmddOwotfQotCi0tICh2
b2lkKV9yZWNlaXZlZEdldExpc3Rpbmc6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAg
ICBbc2VsZiBwdXNoTGlzdGluZzpbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSQ29ubmVjdGlv
bklkZW50aWZpZXJLZXldXTsKLX0KLQotLSAodm9pZClfcmVjZWl2ZWRJbmRpY2F0ZTooTlNEaWN0
aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbZGljdGlvbmFy
eSBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOwotICAgIGlmICghcGFnZUlkKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tbV2ViSW5zcGVjdG9y
Q2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIGluc3BlY3RhYmxlV2ViVmlld3NdIG9iamVj
dEZvcktleTpwYWdlSWRdOwotICAgIGlmICghd2ViVmlldykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgQk9PTCBpbmRpY2F0ZUVuYWJsZWQgPSBbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldJUklu
ZGljYXRlRW5hYmxlZEtleV0gYm9vbFZhbHVlXTsKLSAgICBbd2ViVmlldyBzZXRJbmRpY2F0aW5n
Rm9yUmVtb3RlSW5zcGVjdG9yOmluZGljYXRlRW5hYmxlZF07Ci19Ci0KLS0gKHZvaWQpX3JlY2Vp
dmVkQ29ubmVjdGlvbkRpZWQ6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAgICBOU1N0
cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lS
Q29ubmVjdGlvbklkZW50aWZpZXJLZXldOwotICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIE5TRGljdGlvbmFyeSAqY29ubmVjdGlvbnNDb3B5ID0g
W1tfb3BlbkNvbm5lY3Rpb25zIGNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICBmb3IgKE5TTnVtYmVy
ICprZXkgaW4gY29ubmVjdGlvbnNDb3B5KSB7Ci0gICAgICAgIFdlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uICpjb25uZWN0aW9uID0gW2Nvbm5lY3Rpb25zQ29weSBvYmplY3RGb3JL
ZXk6a2V5XTsKLSAgICAgICAgaWYgKFtjb25uZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlmaWVyIGlz
RXF1YWxUb1N0cmluZzpjb25uZWN0aW9uSWRlbnRpZmllcl0pIHsKLSAgICAgICAgICAgIFtjb25u
ZWN0aW9uIHJlY2VpdmVkRGlkQ2xvc2U6bmlsXTsKLSAgICAgICAgICAgIFtfb3BlbkNvbm5lY3Rp
b25zIHJlbW92ZU9iamVjdEZvcktleTprZXldOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYg
KCFbX29wZW5Db25uZWN0aW9ucyBjb3VudF0pIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgIFtfc2VydmVyIHNldEhhc0Fj
dGl2ZURlYnVnU2Vzc2lvbjpOT107Ci0gICAgICAgIH0pOwotICAgIH0KLX0KLQotLSAodm9pZCly
ZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGljdGlv
bmFyeSAqKXVzZXJJbmZvCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFdlYlRocmVhZFJ1bihe
ewotI2VuZGlmCi0KLSAgICBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJTb2Nr
ZXRTZXR1cE1lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWRTZXR1cDp1c2VySW5mb107
Ci0gICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJTb2NrZXREYXRh
TWVzc2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZERhdGE6dXNlckluZm9dOwotICAgIGVs
c2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSV2ViUGFnZUNsb3NlTWVzc2Fn
ZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZERpZENsb3NlOnVzZXJJbmZvXTsKLSAgICBlbHNl
IGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkFwcGxpY2F0aW9uR2V0TGlzdGlu
Z01lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWRHZXRMaXN0aW5nOnVzZXJJbmZvXTsK
LSAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkluZGljYXRlTWVz
c2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZEluZGljYXRlOnVzZXJJbmZvXTsKLSAgICBl
bHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkNvbm5lY3Rpb25EaWVkTWVz
c2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZENvbm5lY3Rpb25EaWVkOnVzZXJJbmZvXTsK
LSAgICBlbHNlCi0gICAgICAgIE5TTG9nKEAiVW5yZWNvZ25pemVkIE1lc3NhZ2U6ICVAIiwgbWVz
c2FnZU5hbWUpOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIH0pOwotI2VuZGlmCi19Ci0KLQot
I3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbiBpbnRlcmZhY2UKLQotLSAodm9pZCljb25uZWN0aW9uQ2xvc2luZzooV2ViSW5zcGVj
dG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKiljb25uZWN0aW9uCi17Ci0jaWYgUExBVEZPUk0o
SU9TKQotICAgIFdlYlRocmVhZFJ1biheewotI2VuZGlmCi0KLSAgICBbX29wZW5Db25uZWN0aW9u
cyByZW1vdmVPYmplY3RGb3JLZXk6W2Nvbm5lY3Rpb24gaWRlbnRpZmllcl1dOwotCi0gICAgaWYg
KCFbX29wZW5Db25uZWN0aW9ucyBjb3VudF0pIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgIFtfc2VydmVyIHNldEhhc0Fj
dGl2ZURlYnVnU2Vzc2lvbjpOT107Ci0gICAgICAgIH0pOwotICAgIH0KLQotI2lmIFBMQVRGT1JN
KElPUykKLSAgICB9KTsKLSNlbmRpZgotfQotCi0KLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1h
cmsgVGhyZWFkIFNhZmUgc2VuZCBtZXNzYWdlIHRvIGZyb250ZW5kCi0KLS0gKHZvaWQpc2VuZE1l
c3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rp
b25hcnkgKil1c2VySW5mbwotewotICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBmcm9tIGVpdGhl
ciB0aGUgV2ViVGhyZWFkIG9yIHRoZSBNYWluVGhyZWFkLiBUaGlzCi0gICAgLy8gcmVxdWlyZXMg
YWNjZXNzIHRvIHRoZSBXZWJJbnNwZWN0b3JTZXJ2ZXIncyBYUEMgQ29ubmVjdGlvbiwgd2hpY2gK
LSAgICAvLyBpcyBtYW5hZ2VkIG9uIHRoZSBtYWluIHRocmVhZC4gU28sIGRpc3BhdGNoIHRvIHRo
ZSBtYWluIHRocmVhZCB0bwotICAgIC8vIHNhZmVseSB1c2UgdGhlIHhwYyBjb25uZWN0aW9uLgot
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAg
IFtbX3NlcnZlciB4cGNDb25uZWN0aW9uXSBzZW5kTWVzc2FnZTptZXNzYWdlTmFtZSB1c2VySW5m
bzp1c2VySW5mb107Ci0gICAgfSk7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBw
ZXIubSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
WFBDV3JhcHBlci5tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmIxZTAyLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVj
dG9yWFBDV3JhcHBlci5tCisrKyAvZGV2L251bGwKQEAgLTEsMTYyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCIKLQotI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KLQotI2lmIF9faGFzX2luY2x1ZGUoPENvcmVGb3VuZGF0aW9u
L0NGWFBDQnJpZGdlLmg+KQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGWFBDQnJpZGdlLmg+
Ci0jZWxzZQotZXh0ZXJuIHhwY19vYmplY3RfdCBfQ0ZYUENDcmVhdGVYUENNZXNzYWdlV2l0aENG
T2JqZWN0KENGVHlwZVJlZik7Ci1leHRlcm4gQ0ZUeXBlUmVmIF9DRlhQQ0NyZWF0ZUNGT2JqZWN0
RnJvbVhQQ01lc3NhZ2UoeHBjX29iamVjdF90KTsKLSNlbmRpZgotCi0vLyBDb25zdGFudHMgcHJp
dmF0ZSB0byB0aGlzIGZpbGUgZm9yIG1lc3NhZ2Ugc2VyaWFsaXphdGlvbiBvbiBib3RoIGVuZHMu
Ci0jZGVmaW5lIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJNZXNzYWdlTmFtZUtleSBAIm1lc3NhZ2VO
YW1lIgotI2RlZmluZSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyVXNlckluZm9LZXkgQCJ1c2VySW5m
byIKLSNkZWZpbmUgV2ViSW5zcGVjdG9yWFBDV3JhcHBlclNlcmlhbGl6ZWRNZXNzYWdlS2V5ICJt
c2dEYXRhIgotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKCkKLS0gKHZvaWQp
X2hhbmRsZUV2ZW50Oih4cGNfb2JqZWN0X3Qpb2JqZWN0OwotQGVuZAotCi0KLUBpbXBsZW1lbnRh
dGlvbiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyCi0KLUBkeW5hbWljIGF2YWlsYWJsZTsKLQotQHN5
bnRoZXNpemUgZGVsZWdhdGUgPSBfZGVsZWdhdGU7Ci1Ac3ludGhlc2l6ZSBjb25uZWN0aW9uID0g
X2Nvbm5lY3Rpb247Ci1Ac3ludGhlc2l6ZSB0YWcgPSBfdGFnOwotCi0tIChXZWJJbnNwZWN0b3JY
UENXcmFwcGVyICopaW5pdFdpdGhDb25uZWN0aW9uOih4cGNfY29ubmVjdGlvbl90KWNvbm5lY3Rp
b24KLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAg
cmV0dXJuIG5pbDsKLQotICAgIF9jb25uZWN0aW9uID0geHBjX3JldGFpbihjb25uZWN0aW9uKTsK
LSAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKF9jb25uZWN0aW9uLCBkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxl
cihfY29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3Qgb2JqZWN0KSB7IFtzZWxmIF9oYW5kbGVFdmVu
dDpvYmplY3RdOyB9KTsKLSAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUoX2Nvbm5lY3Rpb24pOwot
Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpY2xvc2UKLXsKLSAgICBpZiAoX2Nvbm5l
Y3Rpb24pIHsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fY2FuY2VsKF9jb25uZWN0aW9uKTsKLSAg
ICAgICAgeHBjX3JlbGVhc2UoX2Nvbm5lY3Rpb24pOwotICAgICAgICBfY29ubmVjdGlvbiA9IE5V
TEw7Ci0gICAgfQotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc2VsZiBjbG9zZV07Ci0g
ICAgW190YWcgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tIChOU0RpY3Rp
b25hcnkgKilfZGVzZXJpYWxpemVNZXNzYWdlOih4cGNfb2JqZWN0X3Qpb2JqZWN0Ci17Ci0gICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNfZ2V0X3R5cGUob2JqZWN0KSA9PSBYUENfVFlQRV9ESUNU
SU9OQVJZLCAiR290IHVuZXhwZWN0ZWQgb2JqZWN0IGZyb20gYW4geHBjIGNvbm5lY3Rpb24iKTsK
LSAgICBpZiAoeHBjX2dldF90eXBlKG9iamVjdCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHhwY19vYmplY3RfdCB4cGNEaWN0aW9uYXJ5ID0geHBj
X2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG9iamVjdCwgV2ViSW5zcGVjdG9yWFBDV3JhcHBlclNlcmlh
bGl6ZWRNZXNzYWdlS2V5KTsKLSAgICBpZiAoIXhwY0RpY3Rpb25hcnkgfHwgeHBjX2dldF90eXBl
KHhwY0RpY3Rpb25hcnkpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpIHsKLSAgICAgICAgLy8gVGhp
cyBpc24ndCBhIG1lc3NhZ2UgdHlwZSB0aGF0IHdlIGtub3cgaG93IHRvIGRlc2VyaWFsaXplLCBz
byB3ZSBsZXQgb3VyIGRlbGVnYXRlIHdvcnJ5IGFib3V0IGl0LgotICAgICAgICBpZiAoW19kZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHhwY0Nvbm5lY3Rpb246dW5oYW5kbGVk
TWVzc2FnZTopXSkKLSAgICAgICAgICAgIFtfZGVsZWdhdGUgeHBjQ29ubmVjdGlvbjpzZWxmIHVu
aGFuZGxlZE1lc3NhZ2U6b2JqZWN0XTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAg
ICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBfQ0ZYUENDcmVhdGVDRk9iamVjdEZyb21YUENN
ZXNzYWdlKHhwY0RpY3Rpb25hcnkpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGljdGlvbmFy
eSwgIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIpOwotICAgIGlmICghZGljdGlv
bmFyeSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbZGljdGlvbmFyeSBhdXRv
cmVsZWFzZV07Ci19Ci0KLS0gKHZvaWQpX2hhbmRsZUV2ZW50Oih4cGNfb2JqZWN0X3Qpb2JqZWN0
Ci17Ci0gICAgaWYgKCFfY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHhw
Y19nZXRfdHlwZShvYmplY3QpID09IFhQQ19UWVBFX0VSUk9SKSB7Ci0gICAgICAgIFtfZGVsZWdh
dGUgeHBjQ29ubmVjdGlvbkZhaWxlZDpzZWxmXTsKLSAgICAgICAgW3NlbGYgY2xvc2VdOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFfZGVsZWdhdGUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIE5TRGljdGlvbmFyeSAqZGF0YURpY3Rpb25hcnkgPSBbc2VsZiBfZGVzZXJpYWxp
emVNZXNzYWdlOm9iamVjdF07Ci0gICAgaWYgKCFkYXRhRGljdGlvbmFyeSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBbZGF0YURpY3Rpb25hcnkgb2JqZWN0Rm9y
S2V5OldlYkluc3BlY3RvclhQQ1dyYXBwZXJNZXNzYWdlTmFtZUtleV07Ci0gICAgTlNEaWN0aW9u
YXJ5ICp1c2VySW5mbyA9IFtkYXRhRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V2ViSW5zcGVjdG9y
WFBDV3JhcHBlclVzZXJJbmZvS2V5XTsKLSAgICBbX2RlbGVnYXRlIHhwY0Nvbm5lY3Rpb246c2Vs
ZiByZWNlaXZlZE1lc3NhZ2U6bWVzc2FnZSB1c2VySW5mbzp1c2VySW5mb107Ci19Ci0KLS0gKHZv
aWQpc2VuZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGljdGlv
bmFyeSAqKXVzZXJJbmZvCi17Ci0gICAgaWYgKCFfY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om1lc3NhZ2VOYW1lIGZvcktleTpXZWJJbnNwZWN0
b3JYUENXcmFwcGVyTWVzc2FnZU5hbWVLZXldOwotICAgIGlmICh1c2VySW5mbykKLSAgICAgICAg
W2RpY3Rpb25hcnkgc2V0T2JqZWN0OnVzZXJJbmZvIGZvcktleTpXZWJJbnNwZWN0b3JYUENXcmFw
cGVyVXNlckluZm9LZXldOwotCi0gICAgeHBjX29iamVjdF90IHhwY0RpY3Rpb25hcnkgPSBfQ0ZY
UENDcmVhdGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KChDRkRpY3Rpb25hcnlSZWYpZGljdGlvbmFy
eSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9uYXJ5ICYmIHhwY19nZXRfdHlw
ZSh4cGNEaWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSB4cGMgbWVzc2FnZSIpOwotICAgIGlmICgheHBjRGljdGlvbmFyeSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgeHBjX29iamVjdF90IG1zZyA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShOVUxM
LCBOVUxMLCAwKTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobXNnLCBXZWJJbnNwZWN0
b3JYUENXcmFwcGVyU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0RpY3Rpb25hcnkpOwotICAgIHhw
Y19yZWxlYXNlKHhwY0RpY3Rpb25hcnkpOwotCi0gICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNz
YWdlKF9jb25uZWN0aW9uLCBtc2cpOwotCi0gICAgeHBjX3JlbGVhc2UobXNnKTsKLX0KLQotLSAo
Qk9PTClhdmFpbGFibGUKLXsKLSAgICByZXR1cm4gX2Nvbm5lY3Rpb24gIT0gTlVMTDsKLX0KLQot
QGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5leHAg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQuZXhwCmluZGV4IGYzZmQyZjQuLjU2ZjgxNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5leHAKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViS2l0LmV4cApAQCAtMjIsNyArMjIsNiBAQAogLm9iamNfY2xhc3NfbmFtZV9XZWJI
aXN0b3J5SXRlbQogLm9iamNfY2xhc3NfbmFtZV9XZWJJY29uRGF0YWJhc2UKIC5vYmpjX2NsYXNz
X25hbWVfV2ViSW5zcGVjdG9yCi0ub2JqY19jbGFzc19uYW1lX1dlYkluc3BlY3RvclhQQ1dyYXBw
ZXIKIC5vYmpjX2NsYXNzX25hbWVfV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsCiAub2JqY19j
bGFzc19uYW1lX1dlYktleUdlbmVyYXRvcgogLm9iamNfY2xhc3NfbmFtZV9XZWJLaXRTdGF0aXN0
aWNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZjVkMzgzNS4uMTg1YWRl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjEyLDcgKzIxMiw2IEBA
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotI2ltcG9ydCAiV2ViSW5z
cGVjdG9yU2VydmVyLmgiCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV2ViSW5kaWNhdGVM
YXllci5oIgogI2VuZGlmCkBAIC0zOTEsMTAgKzM5MCw2IEBAIHN0YXRpYyBXZWJDYWNoZU1vZGVs
IHNfY2FjaGVNb2RlbCA9IFdlYkNhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKIHN0YXRpYyBjb25z
dCBjaGFyIHdlYlZpZXdJc09wZW5bXSA9ICJBdCBsZWFzdCBvbmUgV2ViVmlldyBpcyBzdGlsbCBv
cGVuLiI7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotc3RhdGljIEJP
T0wgYXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yID0gWUVTOwotI2VuZGlmCi0KIEBpbnRlcmZhY2Ug
TlNPYmplY3QgKFdlYlZhbGlkYXRlV2l0aG91dERlbGVnYXRlKQogLSAoQk9PTCl2YWxpZGF0ZVVz
ZXJJbnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOihpZCA8TlNWYWxpZGF0ZWRVc2VySW50ZXJm
YWNlSXRlbT4paXRlbTsKIEBlbmQKQEAgLTUyNSw2ICs1MjAsNyBAQCBOU1N0cmluZyAqX1dlYlZp
ZXdEaWRTdGFydEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdOb3RpZmljYXRpb24gPSBAIl9XZWJWaWV3
RGlkU3RhcgogTlNTdHJpbmcgKiBjb25zdCBXZWJWaWV3V2lsbENsb3NlTm90aWZpY2F0aW9uID0g
QCJXZWJWaWV3V2lsbENsb3NlTm90aWZpY2F0aW9uIjsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQorLy8gRklYTUU6IExlZ2FjeSwgcmVtb3ZlIHRoaXMsIHN3aXRjaCB0byBzb21ldGhp
bmcgZnJvbSBKYXZhU2NyaXB0Q29yZSBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlci4K
IE5TU3RyaW5nICpfV2ViVmlld1JlbW90ZUluc3BlY3Rvckhhc1Nlc3Npb25DaGFuZ2VkTm90aWZp
Y2F0aW9uID0gQCJfV2ViVmlld1JlbW90ZUluc3BlY3Rvckhhc1Nlc3Npb25DaGFuZ2VkTm90aWZp
Y2F0aW9uIjsKICNlbmRpZgogCkBAIC03NjYsMTEgKzc2Miw2IEBAIHN0YXRpYyBib29sIHNob3Vs
ZFVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IoKQogICAgICAgICAKICAg
ICAgICAgU2V0dGluZ3M6OnNldFNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0
dGVycyhzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKSk7CiAKLSNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAgICAgaWYgKGF1dG9TdGFydFJlbW90ZUlu
c3BlY3RvcikKLSAgICAgICAgICAgIFtXZWJWaWV3IF9lbmFibGVSZW1vdGVJbnNwZWN0b3JdOwot
I2VuZGlmCi0KICAgICAgICAgZGlkT25lVGltZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICB9
CiAKQEAgLTc5OCw2ICs3ODksMTAgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlTGVnYWN5QmFja2dy
b3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpCiAgICAgV2ViQ29yZTo6cHJvdmlkZVVzZXJNZWRp
YVRvKF9wcml2YXRlLT5wYWdlLCBuZXcgV2ViVXNlck1lZGlhQ2xpZW50KHNlbGYpKTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKHRydWUpOworI2VuZGlmCisKICAgICBfcHJpdmF0ZS0+
cGFnZS0+c2V0Q2FuU3RhcnRNZWRpYShbc2VsZiB3aW5kb3ddKTsKICAgICBfcHJpdmF0ZS0+cGFn
ZS0+c2V0dGluZ3MoKS5zZXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoW1tzZWxmIHByZWZlcmVu
Y2VzXSBfbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoXSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dHRpbmdzKCkuc2V0VXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcihzaG91
bGRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKCkpOwpAQCAtMTI2Nyw2
MCArMTI2Miw0MiBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRUZWFyZG93bkVuYWJsZWQoKQog
fQogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0rIChXZWJJbnNwZWN0b3JTZXJ2ZXIg
KilzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXIKLXsKLSAgICBzdGF0aWMgV2ViSW5zcGVjdG9yU2Vy
dmVyICpzaGFyZWRTZXJ2ZXIgPSBbW1dlYkluc3BlY3RvclNlcnZlciBhbGxvY10gaW5pdF07Ci0g
ICAgcmV0dXJuIHNoYXJlZFNlcnZlcjsKLX0KLQogKyAodm9pZClfZW5hYmxlUmVtb3RlSW5zcGVj
dG9yCiB7Ci0gICAgW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gc3RhcnRdOwor
ICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JTZXJ2ZXIgaW50ZXJmYWNlIG9yIHJlbW92ZSBpdC4KIH0KIAogKyAodm9pZClfZGlzYWJsZVJl
bW90ZUluc3BlY3RvcgogewotICAgIFtbV2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJd
IHN0b3BdOworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3JTZXJ2ZXIgaW50ZXJmYWNlIG9yIHJlbW92ZSBpdC4KIH0KIAogKyAodm9pZClf
ZGlzYWJsZUF1dG9TdGFydFJlbW90ZUluc3BlY3RvcgogewotICAgIGF1dG9TdGFydFJlbW90ZUlu
c3BlY3RvciA9IE5POworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIgaW50ZXJmYWNlIG9yIHJlbW92ZSBpdC4KIH0KIAogKyAo
Qk9PTClfaXNSZW1vdGVJbnNwZWN0b3JFbmFibGVkCiB7Ci0gICAgcmV0dXJuIFtbV2ViVmlldyBz
aGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIGlzRW5hYmxlZF07CisgICAgLy8gRklYTUU6IE1vdmUg
dGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlciBpbnRlcmZhY2Ug
b3IgcmVtb3ZlIGl0LgorICAgIHJldHVybiBOTzsKIH0KIAogKyAoQk9PTClfaGFzUmVtb3RlSW5z
cGVjdG9yU2Vzc2lvbgogewotICAgIHJldHVybiBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9y
U2VydmVyXSBoYXNBY3RpdmVEZWJ1Z1Nlc3Npb25dOwotfQotCi0tIChCT09MKWNhbkJlUmVtb3Rl
bHlJbnNwZWN0ZWQKLXsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIGlmICghW1tzZWxmIHByZWZl
cmVuY2VzXSBkZXZlbG9wZXJFeHRyYXNFbmFibGVkXSkKLSAgICAgICAgcmV0dXJuIE5POwotI2Vu
ZGlmCi0KLSAgICByZXR1cm4gW3NlbGYgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbl07CisgICAgLy8g
RklYTUU6IE1vdmUgdGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZl
ciBpbnRlcmZhY2Ugb3IgcmVtb3ZlIGl0LgorICAgIHJldHVybiBOTzsKIH0KIAogLSAoQk9PTClh
bGxvd3NSZW1vdGVJbnNwZWN0aW9uCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5hbGxvd3NSZW1v
dGVJbnNwZWN0aW9uOworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgQVBJLgorICAg
IHJldHVybiBOTzsKIH0KIAogLSAodm9pZClzZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uOihCT09M
KWFsbG93CiB7Ci0gICAgaWYgKF9wcml2YXRlLT5hbGxvd3NSZW1vdGVJbnNwZWN0aW9uID09IGFs
bG93KQotICAgICAgICByZXR1cm47Ci0KLSAgICBfcHJpdmF0ZS0+YWxsb3dzUmVtb3RlSW5zcGVj
dGlvbiA9IGFsbG93OwotCi0gICAgW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0g
cHVzaExpc3RpbmddOworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgQVBJLgogfQog
CiAtICh2b2lkKXNldEluZGljYXRpbmdGb3JSZW1vdGVJbnNwZWN0b3I6KEJPT0wpZW5hYmxlZApA
QCAtMTM0MCwyOSArMTMxNywxNSBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRUZWFyZG93bkVu
YWJsZWQoKQogICAgICAgICBfcHJpdmF0ZS0+aW5kaWNhdGVMYXllciA9IG5pbDsKICAgICB9CiAj
ZWxzZQotICAgIC8vIEZJWE1FOiBOZWVkcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAvLyBGSVhNRTog
TmVlZHMgaW1wbGVtZW50YXRpb24gb3IgcHV0IGFuIGltcGxlbWVudGF0aW9uIGluIFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXkuCiAjZW5kaWYKIH0KIAotLSAodm9pZClzZXRSZW1vdGVJbnNwZWN0
b3JVc2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm8KLXsKLSAgICBpZiAoW19wcml2YXRl
LT5yZW1vdGVJbnNwZWN0b3JVc2VySW5mbyBpc0VxdWFsVG9EaWN0aW9uYXJ5OnVzZXJJbmZvXSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgW19wcml2YXRlLT5yZW1vdGVJbnNwZWN0b3JVc2VySW5m
byByZWxlYXNlXTsKLSAgICBfcHJpdmF0ZS0+cmVtb3RlSW5zcGVjdG9yVXNlckluZm8gPSBbdXNl
ckluZm8gY29weV07Ci0KLSAgICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBw
dXNoTGlzdGluZ107Ci19Ci0KLS0gKE5TRGljdGlvbmFyeSAqKXJlbW90ZUluc3BlY3RvclVzZXJJ
bmZvCi17Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5yZW1vdGVJbnNwZWN0b3JVc2VySW5mbzsKLX0K
LQogI2lmIFBMQVRGT1JNKElPUykKIC0gKHZvaWQpc2V0SG9zdEFwcGxpY2F0aW9uQnVuZGxlSWQ6
KE5TU3RyaW5nICopYnVuZGxlSWQgbmFtZTooTlNTdHJpbmcgKiluYW1lCiB7CisgICAgLy8gRklY
TUU6IFRoaXMgaGFzIG5vdCB5ZXQgYmVlbiBwb3J0ZWQgdG8gSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIuCisKICAgICBpZiAoIVtfcHJpdmF0ZS0+aG9zdEFwcGxpY2F0aW9uQnVuZGxl
SWQgaXNFcXVhbFRvU3RyaW5nOmJ1bmRsZUlkXSkgewogICAgICAgICBbX3ByaXZhdGUtPmhvc3RB
cHBsaWNhdGlvbkJ1bmRsZUlkIHJlbGVhc2VdOwogICAgICAgICBfcHJpdmF0ZS0+aG9zdEFwcGxp
Y2F0aW9uQnVuZGxlSWQgPSBbYnVuZGxlSWQgY29weV07CkBAIC0yMTE4LDkgKzIwODEsNiBAQCBz
dGF0aWMgaW5saW5lIElNUCBnZXRNZXRob2QoaWQgbywgU0VMIHMpCiAgICAgaWYgKGZyYW1lID09
IFtzZWxmIG1haW5GcmFtZV0pCiAgICAgICAgIFtzZWxmIF9kaWRDaGFuZ2VWYWx1ZUZvcktleTog
X1dlYk1haW5GcmFtZVVSTEtleV07CiAgICAgW05TQXBwIHNldFdpbmRvd3NOZWVkVXBkYXRlOllF
U107Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgW1tXZWJWaWV3IHNoYXJlZFdl
Ykluc3BlY3RvclNlcnZlcl0gcHVzaExpc3RpbmddOwotI2VuZGlmCiB9CiAKIC0gKHZvaWQpX2Rp
ZEZpbmlzaExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IDI0NTQxNTguLjRjMjY3MmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKQEAgLTIwOCw4ICsyMDgsNiBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBCT09MIGFsbG93c1Jl
bW90ZUluc3BlY3Rpb247Ci0gICAgTlNEaWN0aW9uYXJ5ICpyZW1vdGVJbnNwZWN0b3JVc2VySW5m
bzsKICNpZiBQTEFURk9STShJT1MpCiAgICAgV2ViSW5kaWNhdGVMYXllciAqaW5kaWNhdGVMYXll
cjsKICAgICBOU1N0cmluZyAqaG9zdEFwcGxpY2F0aW9uQnVuZGxlSWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCAwMzQzYTljLi5lYjBiY2JkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KQEAgLTk5LDEwICs5OSw2IEBAIFdl
YlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcihMYXll
ckZsdXNoQ29udHJvbGxlciogZmx1CiAgICAgZGFzaGJvYXJkQmVoYXZpb3JBbGxvd1doZWVsU2Ny
b2xsaW5nID0gWUVTOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAg
ICBhbGxvd3NSZW1vdGVJbnNwZWN0aW9uID0gWUVTOwotI2VuZGlmCi0KICAgICBzaG91bGRDbG9z
ZVdpdGhXaW5kb3cgPSBvYmpjX2NvbGxlY3RpbmdFbmFibGVkKCk7CiAKICAgICBwbHVnaW5EYXRh
YmFzZUNsaWVudENvdW50Kys7CkBAIC0xMzUsNyArMTMxLDYgQEAgV2ViVmlld0xheWVyRmx1c2hT
Y2hlZHVsZXI6OldlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyKExheWVyRmx1c2hDb250cm9sbGVy
KiBmbHUKICAgICBbbWVkaWFTdHlsZSByZWxlYXNlXTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQotICAgIFtyZW1vdGVJbnNwZWN0b3JVc2VySW5mbyByZWxlYXNlXTsKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgW2luZGljYXRlTGF5ZXIgcmVsZWFzZV07CiAgICAgW2hvc3RBcHBsaWNh
dGlvbkJ1bmRsZUlkIHJlbGVhc2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0ludGVybmFsLmgKaW5kZXggMjZjODk4Ni4uY2Q1NGYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC02MSw5ICs2MSw2IEBAIHN0cnVjdCBEaWN0
YXRpb25BbHRlcm5hdGl2ZTsKIEBjbGFzcyBXZWJCYXNlUGx1Z2luUGFja2FnZTsKIEBjbGFzcyBX
ZWJEb3dubG9hZDsKIEBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0OwotI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQotQGNsYXNzIFdlYkluc3BlY3RvclNlcnZlcjsKLSNlbmRpZgogCiAjaWZkZWYg
X19jcGx1c3BsdXMKIApAQCAtMjE3LDEwICsyMTQsNiBAQCBPQkpDX0NMQVNTIE5TVGV4dEFsdGVy
bmF0aXZlczsKIC0gKHZvaWQpX2Z1bGxTY3JlZW5SZW5kZXJlckNoYW5nZWQ6KFdlYkNvcmU6OlJl
bmRlckJveCopcmVuZGVyZXI7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotKyAoV2ViSW5zcGVjdG9yU2VydmVyICopc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyOwotI2Vu
ZGlmCi0KIC8vIENvbnZlcnNpb24gZnVuY3Rpb25zIGJldHdlZW4gV2ViQ29yZSByb290IHZpZXcg
Y29vcmRpbmF0ZXMgYW5kIHdlYiB2aWV3IGNvb3JkaW5hdGVzLgogLSAoTlNQb2ludClfY29udmVy
dFBvaW50RnJvbVJvb3RWaWV3OihOU1BvaW50KXBvaW50OwogLSAoTlNSZWN0KV9jb252ZXJ0UmVj
dEZyb21Sb290VmlldzooTlNSZWN0KXJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdQcml2YXRlLmgKaW5kZXggMmRkZmRlZC4uNTAxZjlhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAtNzcsNiArNzcsNyBAQCBleHRlcm4gTlNT
dHJpbmcgKldlYkVsZW1lbnRJc0luU2Nyb2xsQmFyS2V5OwogZXh0ZXJuIE5TU3RyaW5nICpfV2Vi
Vmlld0RpZFN0YXJ0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ05vdGlmaWNhdGlvbjsKIAogI2lmIEVO
QUJMRV9SRU1PVEVfSU5TUEVDVE9SCisvLyBGSVhNRTogTGVnYWN5LCByZW1vdmUgdGhpcywgc3dp
dGNoIHRvIHNvbWV0aGluZyBmcm9tIEphdmFTY3JpcHRDb3JlIEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yU2VydmVyLgogLy8gTm90aWZpY2F0aW9uIHdoZW4gdGhlIG51bWJlciBvZiBpbnNwZWN0
b3Igc2Vzc2lvbnMgYmVjb21lcyBub24temVybyBvciByZXR1cm5zIHRvIDAuCiAvLyBDaGVjayB0
aGUgY3VycmVudCBzdGF0ZSB2aWEgLVtXZWJWaWV3IF9oYXNSZW1vdGVJbnNwZWN0b3JTZXNzaW9u
XS4KIGV4dGVybiBOU1N0cmluZyAqX1dlYlZpZXdSZW1vdGVJbnNwZWN0b3JIYXNTZXNzaW9uQ2hh
bmdlZE5vdGlmaWNhdGlvbjsKQEAgLTI2MywxNSArMjY0LDYgQEAgdHlwZWRlZiBlbnVtIHsKICsg
KEJPT0wpX2hhc1JlbW90ZUluc3BlY3RvclNlc3Npb247CiAKIC8qIQotICAgIEBtZXRob2QgY2Fu
QmVSZW1vdGVseUluc3BlY3RlZAotICAgIEByZXN1bHQgTG9va3MgYXQgYWxsIHRoZSBmYWN0b3Jz
IG9mIHRoaXMgV2ViVmlldyBhbmQgcmV0dXJucyB3aGV0aGVyIG9yIG5vdAotICAgIHRoaXMgV2Vi
VmlldyBzaG91bGQgYWxsb3cgYSBSZW1vdGUgV2ViIEluc3BlY3RvciB0byBhdHRhY2ggdG8gaXQu
IFRoaXMgdGFrZXMKLSAgICBpbnRvIGFjY291bnQgLWFsbG93c1JlbW90ZUluc3BlY3Rpb24sIFBy
aXZhdGUgQnJvd3NpbmcsIGFuZCBwb3RlbnRpYWxseSBvdGhlcgotICAgIGZhY3RvcnMuCi0qLwot
LSAoQk9PTCljYW5CZVJlbW90ZWx5SW5zcGVjdGVkOwotCi0vKiEKICAgICBAbWV0aG9kIGFsbG93
c1JlbW90ZUluc3BlY3Rpb24KICAgICBAcmVzdWx0IFJldHVybnMgd2hldGhlciBvciBub3QgdGhp
cyBXZWJWaWV3IHdpbGwgYWxsb3cgYSBSZW1vdGUgV2ViIEluc3BlY3RvcgogICAgIHRvIGF0dGFj
aCB0byBpdC4KQEAgLTI5MiwyMSArMjg0LDYgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBAYWJzdHJh
Y3QgaW5kaWNhdGUgdGhpcyBXZWJWaWV3IG9uIHNjcmVlbiBmb3IgYSByZW1vdGUgaW5zcGVjdG9y
LgogKi8KIC0gKHZvaWQpc2V0SW5kaWNhdGluZ0ZvclJlbW90ZUluc3BlY3RvcjooQk9PTCllbmFi
bGVkOwotCi0vKgotICAgIEBtZXRob2Qgc2V0UmVtb3RlSW5zcGVjdG9yVXNlckluZm8KLSAgICBA
cGFyYW0gdGFnIFRoZSBkaWN0aW9uYXJ5IHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgV2ViVmll
dy4KLSAgICBAYWJzdHJhY3QgRGV2ZWxvcGVyIHNwZWNpZmllZCBkaWN0aW9uYXJ5IGZvciB0aGUg
V2ViVmlldyB0aGF0IHdpbGwgYmUKLSAgICBzZW50IHRvIHRoZSBSZW1vdGUgRGVidWdnZXIuIFRo
ZSBkaWN0aW9uYXJ5IG11c3QgY29udGFpbiBwcm9wZXJ0eQotICAgIGxpc3Qgc2VyaWFsaXphYmxl
IHZhbHVlcy4KLSovCi0tICh2b2lkKXNldFJlbW90ZUluc3BlY3RvclVzZXJJbmZvOihOU0RpY3Rp
b25hcnkgKil1c2VySW5mbzsKLQotLyohCi0gICAgQG1ldGhvZCByZW1vdGVJbnNwZWN0b3JVc2Vy
SW5mbwotICAgIEByZXN1bHQgUmV0dXJucyB0aGUgZGljdGlvbmFyeSBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBXZWJWaWV3LgotKi8KLS0gKE5TRGljdGlvbmFyeSAqKXJlbW90ZUluc3BlY3RvclVzZXJJ
bmZvOwogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGNmYTFkMzguLmJjODVjN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3Bl
Y3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYxMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQ
YWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOgor
ICAgICAgICBBbGxvdyB0aGUgV2ViUHJvY2VzcyB0byBhY2Nlc3MgdGhlICJjb20uYXBwbGUud2Vi
aW5zcGVjdG9yIiBuYW1lZAorICAgICAgICBYUEMgc2VydmljZSB0byBleHBvc2UgaXRzIFdlYkNv
cmU6OlBhZ2UncyB0byByZW1vdGUgZGVidWdnZXJzLgorCiAyMDEzLTEyLTAyICBCZXRoIERha2lu
ICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIG9wdCBpbnRv
IGEgbW9kZSB3aGVyZSB0aGUgYmFja2dyb3VuZCBleHRlbmRzIGFuZCBmaXhlZCBlbGVtZW50cyAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBk
Y2VkNWVmLi5kMTFlYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0zNDUsNiArMzQ1LDEwIEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0
X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ICAgIFdlYkNvcmU6OnByb3ZpZGVEZXZpY2VQcm94aW1pdHlUbyhtX3BhZ2UuZ2V0KCksIG5ldyBX
ZWJEZXZpY2VQcm94aW1pdHlDbGllbnQodGhpcykpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKyAgICBtX3BhZ2UtPnNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKHRy
dWUpOworI2VuZGlmCisKICAgICBtX3BhZ2UtPnNldENhblN0YXJ0TWVkaWEoZmFsc2UpOwogICAg
IG1fbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyA9IHBhcmFtZXRlcnMubWF5U3RhcnRNZWRpYVdo
ZW5JbldpbmRvdzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20u
YXBwbGUuV2ViUHJvY2Vzcy5zYi5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29tLmFw
cGxlLldlYlByb2Nlc3Muc2IuaW4KaW5kZXggOTBiYjBlNi4uYzQ3MmMwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCkBA
IC0xMzksNiArMTM5LDEwIEBACiAKICNlbmRpZgogCis7OyBSZW1vdGUgV2ViIEluc3BlY3Rvcgor
KGFsbG93IG1hY2gtbG9va3VwCisgICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUud2ViaW5z
cGVjdG9yIikpCisKIDs7IFZhcmlvdXMgc2VydmljZXMgcmVxdWlyZWQgYnkgQXBwS2l0IGFuZCBv
dGhlciBmcmFtZXdvcmtzCiAoYWxsb3cgbWFjaC1sb29rdXAKICAgICAgICAoZ2xvYmFsLW5hbWUg
ImNvbS5hcHBsZS5EaXNrQXJiaXRyYXRpb24uZGlza2FyYml0cmF0aW9uZCIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218305</attachid>
            <date>2013-12-03 10:30:40 -0800</date>
            <delta_ts>2013-12-03 11:25:35 -0800</delta_ts>
            <desc>[PATCH] Combined For Bots 5</desc>
            <filename>for-bots-5.patch</filename>
            <type>text/plain</type>
            <size>214103</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5oCmluZGV4IDEyNjdiN2EuLmY5ZDdjZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaApAQCAtMTY0LDYgKzE2NCwxMiBA
QCBPQkpDX1ZJU0lCTEUKICovCiBAcHJvcGVydHkocmVhZG9ubHksIHJldGFpbikgSlNWaXJ0dWFs
TWFjaGluZSAqdmlydHVhbE1hY2hpbmU7CiAKKy8qIQorQHByb3BlcnR5CitAZGlzY3Vzc2lvbiBO
YW1lIG9mIHRoZSBKU0NvbnRleHQuIEV4cG9zZWQgd2hlbiByZW1vdGUgZGVidWdnaW5nIHRoZSBj
b250ZXh0LgorKi8KK0Bwcm9wZXJ0eShjb3B5KSBOU1N0cmluZyAqbmFtZTsKKwogQGVuZAogCiAv
KiEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggYmM4ZmMxYS4uNDdk
Y2IwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTE2Niw2ICsx
NjYsMjIgQEAKICAgICByZXR1cm4gbV92aXJ0dWFsTWFjaGluZTsKIH0KIAorLSAoTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTR2xvYmFsQ29udGV4dENvcHlOYW1l
KG1fY29udGV4dCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
cmV0dXJuIFsoTlNTdHJpbmcgKilKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBuYW1lKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZUpTID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZT
dHJpbmcoKENGU3RyaW5nUmVmKVtuYW1lIGNvcHldKTsKKyAgICBKU0dsb2JhbENvbnRleHRTZXRO
YW1lKG1fY29udGV4dCwgbmFtZUpTKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UobmFtZUpTKTsKK30K
KwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gSlNDb250ZXh0KFN1YnNjcmlwdFN1cHBvcnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggZjBhNDM1Yy4u
ODFiNjFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApA
QCAtMjEzLDYgKzIxMywzNyBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFs
Q29udGV4dChKU0NvbnRleHRSZWYgY3R4KQogICAgIHJldHVybiB0b0dsb2JhbFJlZihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSk7CiB9CiAKK0pTU3RyaW5nUmVmIEpT
R2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCit7CisgICAgaWYg
KCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBBUElFbnRy
eVNoaW0gZW50cnlTaGltKGV4ZWMpOworCisgICAgU3RyaW5nIG5hbWUgPSBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCktPm5hbWUoKTsKKyAgICBpZiAobmFtZS5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKS5sZWFr
UmVmKCk7Cit9CisKK3ZvaWQgSlNHbG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRS
ZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7
CisKKyAgICBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnNldE5hbWUobmFtZSA/IG5hbWUt
PnN0cmluZygpIDogU3RyaW5nKCkpOworfQorCisKIGNsYXNzIEJhY2t0cmFjZUZ1bmN0b3Igewog
cHVibGljOgogICAgIEJhY2t0cmFjZUZ1bmN0b3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5z
aWduZWQgcmVtYWluaW5nQ2FwYWNpdHlGb3JGcmFtZUNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuaAppbmRleCA3NzA1OTU1Li5lYWI3YTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgKQEAgLTEzMyw2ICsxMzMsMjQgQEAgSlNf
RVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBj
dHgpIEFWQUlMQUJMRV9JTl9XRUIKICovCiBKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpT
Q29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEw
XzcsIDRfMCk7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyBhIGNvcHkgb2YgdGhl
IG5hbWUgb2YgYSBjb250ZXh0LgorQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHdob3Nl
IG5hbWUgeW91IHdhbnQgdG8gZ2V0LgorQHJlc3VsdCBUaGUgbmFtZSBmb3IgY3R4LgorQGRpc2N1
c3Npb24gQSBKU0dsb2JhbENvbnRleHQncyBuYW1lIGlzIGV4cG9zZWQgZm9yIHJlbW90ZSBkZWJ1
Z2dpbmcgdG8gbWFrZSBpdAorZWFzaWVyIHRvIGlkZW50aWZ5IHRoZSBjb250ZXh0IHlvdSB3b3Vs
ZCBsaWtlIHRvIGF0dGFjaCB0by4KKyovCitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNHbG9iYWxD
b250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCk7CisKKy8qIQorQGZ1bmN0aW9u
CitAYWJzdHJhY3QgU2V0cyB0aGUgcmVtb3RlIGRlYnVnZ2luZyBuYW1lIGZvciBhIGNvbnRleHQu
CitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBuYW1lLgor
QHBhcmFtIG5hbWUgVGhlIHJlbW90ZSBkZWJ1Z2dpbmcgbmFtZSB0byBzZXQgb24gY3R4LgorKi8K
K0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldE5hbWUoSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgbmFtZSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWIyY2RmZS4uNDQ5ZmFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEsNiArMTEsNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vZnRsIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaGVhcCIKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5z
cGVjdG9yIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGlu
dCIKQEAgLTU4Myw2ICs1ODQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFE
RVJTX0RJUkVDVE9SSUVTCiAgICAgY29sbGVjdG9yL2hhbmRsZXMKICAgICBkZWJ1Z2dlcgogICAg
IGhlYXAKKyAgICBpbnNwZWN0b3IKICAgICBpbnRlcnByZXRlcgogICAgIGppdAogICAgIGxsaW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiNDQzYmUyLi41NTY3ZGRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzEgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNo
IFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEph
dmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtlIEpTQ29udGV4dCBAY2xhc3MgYW5kIEphdmFTY3JpcHRDb3JlOjpKU0NvbnRleHRS
ZWYKKyAgICAgICAgIkphdmFTY3JpcHQiIFJlbW90ZSBEZWJ1Z2dhYmxlcy4KKworICAgICAgICAq
IEFQSS9KU0NvbnRleHQuaDoKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAo
LVtKU0NvbnRleHQgbmFtZV0pOgorICAgICAgICAoLVtKU0NvbnRleHQgc2V0TmFtZTpdKToKKyAg
ICAgICAgT2JqQyBBUEkgdG8gZW5hYmxlL2Rpc2FibGUgSlNDb250ZXh0IHJlbW90ZSBpbnNwZWN0
aW9uIGFuZCBnaXZlIGEgbmFtZS4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuaDoKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dEdl
dE5hbWUpOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0U2V0TmFtZSk6CisgICAgICAgIEMgQVBJ
IHRvIGdpdmUgYSBKU0NvbnRleHQgYSBuYW1lLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNldE5hbWUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6Om5hbWUpOgorICAgICAgICBTaGFyZWQgaGFuZGxpbmcgb2YgdGhlIEFQSXMgYWJvdmUuCisK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OkpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6bmFtZSk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzY29ubmVjdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90
ZUZyb250ZW5kKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5o
OiBBZGRlZC4KKyAgICAgICAgU3R1YiBmb3IgdGhlIGFjdHVhbCByZW1vdGUgZGVidWdnaW5nIGlt
cGxlbWVudGF0aW9uLiBXZSB3aWxsIHB1c2gKKyAgICAgICAgZG93biB0aGUgYXBwcm9wcmlhdGUg
V2ViQ29yZS9pbnNwZWN0b3IgcGVpY2VzIHN1aXRhYmxlIGZvciBkZWJ1Z2dpbmcKKyAgICAgICAg
anVzdCBhIEphdmFTY3JpcHQgY29udGV4dC4KKworMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVt
b3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNj
cmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDYxMworCisgICAgICAgIE1vdmUgdGhlIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSByZW1v
dGUgZGVidWdnZXIgY29ubmVjdGlvbiBtYW5hZ2VtZW50CisgICAgICAgIGludG8gSmF2YVNjcmlw
dENvcmUgKG9yaWdpbmFsbHkgZnJvbSBXZWJLaXQvbWFjKS4gSW5jbHVkZSBlbmhhbmNlbWVudHM6
CisKKyAgICAgICAgICAqIGFsbG93IGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgcmVtb3RlIGRlYnVn
Z2FibGUgdGFyZ2V0cywKKyAgICAgICAgICAgIGV2ZW50dWFsbHkgYXQgbGVhc3QgYSBKU0NvbnRl
eHQsIFdlYlZpZXcsIFdLVmlldy4KKyAgICAgICAgICAqIGFsbG93IGRlYnVnZ2FibGVzIHRvIGJl
IHJlZ2lzdGVyZWQgYW5kIGRlYnVnZ2VkIG9uIGFueSB0aHJlYWQuIFVubGlrZQorICAgICAgICAg
ICAgV2ViVmlld3MsIEpTQ29udGV4dHMgbWF5IGJlIHJ1biBlbnRpcmVseSBvZmYgb2YgdGhlIG1h
aW4gdGhyZWFkLgorICAgICAgICAgICogbW92ZSB0aGUgcmVtb3RlIGNvbm5lY3Rpb24gKFhQQyBj
b25uZWN0aW9uKSBpdHNlbGYgb2ZmIG9mIHRoZSBtYWluIHRocmVhZCwKKyAgICAgICAgICAgIGl0
IGRvZXNuJ3QgbmVlZCB0byBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlLmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6flJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlOjppbml0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6dXBkYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluZm8pOgorICAgICAgICBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlIGRlZmluZXMgYSBkZWJ1Z2dhYmxlIHRhcmdldC4gQXMgbG9uZyBhcworICAg
ICAgICBzb21ldGhpbmcgY3JlYXRlcyBhIGRlYnVnZ2FibGUgYW5kIGlzIHNldCB0byBhbGxvdyBy
ZW1vdGUgaW5zcGVjdGlvbgorICAgICAgICBpdCB3aWxsIGJlIGxpc3RlZCBpbiByZW1vdGUgZGVi
dWdnZXJzLiBGb3IgdGhlIGRpZmZlcmVudCB0eXBlcyBvZgorICAgICAgICBkZWJ1Z2dhYmxlcyAo
SmF2YVNjcmlwdCBhbmQgV2ViKSB0aGVyZSBpcyBkaWZmZXJlbnQgYmFzaWMgaW5mb3JtYXRpb24K
KyAgICAgICAgdGhhdCBtYXkgYmUgbGlzdGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsOjp+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKToKKyAgICAgICAg
VGhlIG9ubHkgdGhpbmcgYSBkZWJ1Z2dhYmxlIG5lZWRzIGZvciByZW1vdGUgZGVidWdnaW5nIGlz
IGFuCisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBhIHdheSB0byBzZW5kIG1lc3Nh
Z2VzIHRvIGEgcmVtb3RlIGZyb250ZW5kLgorICAgICAgICBUaGlzIGNsYXNzIHByb3ZpZGVzIHRo
YXQgbWV0aG9kLCBhbmQgaXMgdmVuZGVkIHRvIHRoZQorICAgICAgICBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlIHdoZW4gYSByZW1vdGUgY29ubmVjdGlvbiBpcyBzZXR1cC4KKworICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOiBBZGRlZC4KKyAgICAgICAgU2luZ2xl
dG9uLCBjcmVhdGVkIGF0IGxlYXN0IHdoZW4gdGhlIGZpcnN0IERlYnVnZ2FibGUgaXMgY3JlYXRl
ZC4KKyAgICAgICAgVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBsaXN0IG9mIGRlYnVnZ2FibGVzLCBh
bnkgY29ubmVjdGlvbiB0byBhCisgICAgICAgIHJlbW90ZSBkZWJ1Z2dlciBwcm94eSAoWFBDIHNl
cnZpY2UgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiKS4KKworICAgICAgICAoSW5zcGVjdG9yOjpk
aXNwYXRjaEFzeW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6bmV4dEF2YWlsYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGUpOgorICAgICAgICBEZWJ1
Z2dhYmxlIG1hbmFnZW1lbnQuIFdoZW4gZGVidWdnYWJsZXMgYXJlIGFkZGVkLCByZW1vdmVkLCBv
ciB1cGRhdGVkCisgICAgICAgIHdlIHN0YXNoIGEgY29weSBvZiB0aGUgZGVidWdnYWJsZSBpbmZv
cm1hdGlvbiBhbmQgcHVzaCBhbiB1cGRhdGUgdG8KKyAgICAgICAgZGVidWdnZXJzLiBTdGFzaGlu
ZyBhIGNvcHkgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBSZW1vdGVJbnNwZWN0b3IKKyAgICAg
ICAgaXMgYSB0aHJlYWQgc2FmZSB3YXkgdG8gYXZvaWQgd2Fsa2luZyBvdmVyIGFsbCBkZWJ1Z2dh
YmxlcyB0byBnYXRoZXIKKyAgICAgICAgdGhlIGluZm9ybWF0aW9uIHdoZW4gaXQgaXMgbmVlZGVk
LgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0b3ApOgorICAgICAgICBSdW50aW1lIEFQ
SSB0byBlbmFibGUgLyBkaXNhYmxlIHRoZSBmZWF0dXJlLgorCisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nTm93KToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ1Nvb24pOgorICAgICAgICBQdXNoaW5nIGEg
bGlzdGluZyB0byByZW1vdGUgZGVidWdnZXJzLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVz
c2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlv
bkZhaWxlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVj
dGlvblVuaGFuZGxlZE1lc3NhZ2UpOgorICAgICAgICBYUEMgc2V0dXAsIHNlbmQsIGFuZCByZWNl
aXZlIGhhbmRsaW5nLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBk
YXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKToKKyAgICAgICAgQXBwbGljYXRpb25zIGJlaW5nIGRl
YnVnZ2VkIG1heSB3YW50IHRvIGtub3cgd2hlbiBhIGRlYnVnCisgICAgICAgIHNlc3Npb24gaXMg
YWN0aXZlLiBUaGlzIHByb3ZpZGVzIHRoYXQgbm90aWZpY2F0aW9uLgorCisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldExpc3RpbmdN
ZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZElu
ZGljYXRlTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVj
ZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UpOgorICAgICAgICBEaXNwYXRjaGluZyBpbmNvbWlu
ZyByZW1vdGUgZGVidWdnaW5nIHByb3RvY29sIG1lc3NhZ2VzLgorICAgICAgICBUaGVzZSBhcmUg
d3JhcHBpbmcgYWJvdmUgdGhlIGluc3BlY3RvciBwcm90b2NvbCBtZXNzYWdlcy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg6IEFkZGVkLgor
ICAgICAgICBQcm90b2NvbCBtZXNzYWdlcyBhbmQgZGljdGlvbmFyeSBrZXlzIGluc2lkZSB0aGUg
bWVzc2FnZXMuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm86OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24ubW06IEFkZGVkLgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVuIHRo
ZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGUuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb246OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246On5SZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbik6CisgICAgICAgIEFsbG93IGZvciBkaXNwYXRjaGlu
ZyBtZXNzYWdlcyBvbiBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzIG9uIGEgZGlzcGF0Y2hfcXVldWUK
KyAgICAgICAgaW5zdGVhZCBvZiB0aGUgbWFpbiBxdWV1ZS4KKworICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGVzdGluYXRpb24pOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y29u
bmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBOZWVkZWQgaW4gdGhlIHJlbW90ZSBkZWJ1Z2dp
bmcgcHJvdG9jb2wgdG8gaWRlbnRpZnkgdGhlIHJlbW90ZSBkZWJ1Z2dlci4KKworICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0Y2hT
eW5jT25EZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXApOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
Y2xvc2VGcm9tRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICBUaGUgY29ubmVjdGlvbiBpcyBhIHRoaW4g
Y2hhbm5lbCBiZXR3ZWVuIHRoZSB0d28gc2lkZXMgdGhhdCBjYW4gYmUgY2xvc2VkCisgICAgICAg
IGZyb20gZWl0aGVyIHNpZGUsIHNvIHRoZXJlIGlzIHNvbWUgbG9naWMgYXJvdW5kIG11bHRpLXRo
cmVhZGVkIGFjY2Vzcy4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50Ojp+Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06IEFkZGVkLgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24pOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2Fn
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVu
IHRoZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhbiBYUEMgc2VydmljZQorICAgICAg
ICBuYW1lZCAiY29tLmFwcGxlLndlYmluc3BlY3RvciIuIFRoaXMgaGFuZGxlcyBzZXJpYWxpemF0
aW9uIG9mIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1lc3NhZ2VzIHRvIGFuZCBmcm9tIHRoZSBz
ZXJ2aWNlLiBUaGUgcmVjZWl2aW5nIGlzIGRvbmUgb24gYSBub24tbWFpbiBxdWV1ZS4KKwogMjAx
My0xMi0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3Jl
cyB0byBsb2NhbCBjYXB0dXJlZCB2YXJpYWJsZXMgc2hvdWxkIGJlIGludGVyY2VwdGVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNDJhYTY0My4uMDg1ZmNhNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNTksNiArNTksNyBAQCBqYXZhc2NyaXB0
Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rp
c2Fzc2VtYmxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bCBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAgXAorCS1JJChzcmNkaXIpL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdCBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50IFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMTFiZDA5NS4uMTg1
MTU3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTYx
MCw2ICs2MTAsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaWN1L3VuaWNvZGUvdXRmX29sZC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aWN1L3VuaWNvZGUvdXR5cGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29k
ZS91dmVyc2lvbi5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
QWJzdHJhY3RQQy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0
cmFjdFBDLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxs
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggYzM2YTg3OS4u
M2VmNDI4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC05OTQs
NiArOTk0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vha1NldC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0SW5saW5lcy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0LmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxBYnN0
cmFjdFBDLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWNo
ZWRDYWxsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWxs
RnJhbWUuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycwppbmRleCA4MDEzMmYyLi5iMzQ3YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZp
bHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0yNSw2ICsyNSw5IEBACiAgICAgPEZp
bHRlciBJbmNsdWRlPSJoZWFwIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntiZDQ5ZTVjZi05
NWQ2LTQxNTEtYjI4Ni04ODM3Y2NkMzQ3ZmF9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmls
dGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iaW5zcGVjdG9yIj4KKyAgICAgIDxVbmlxdWVJZGVu
dGlmaWVyPnswOWFlMDlkYS0xMjM5LTAwZWEtOGRmZS05MDg3YWUxMjNiYmV9PC9VbmlxdWVJZGVu
dGlmaWVyPgorICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iaW50ZXJwcmV0ZXIi
PgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezEwZDk3ZWEzLTJhZjktNDg5Yy1hNTRlLWQ2OWVm
MmU0Y2EwYX08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0xNzAwLDYgKzE3
MDMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBw
b3J0LmgiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsLmgiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFic3RyYWN0UEMuaCI+
CiAgICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY2NTg1NWYuLmU4M2ZmN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODYsNiArODg2LDE4IEBACiAJCUExNzEyQjQxMTFD
N0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEw
MDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0MxNTZFRUQzQjAwNTY2
Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRB
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1OTQ1NThGMTgyNDVFRkQw
MENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAv
KiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKKwkJQTU5NDU1OTIxODI0NzQ0
NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5MDE4MjQ3NDQ3MDBDQzM4NDMg
LyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKKwkJQTU5NDU1OTMxODI0NzQ0
NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OTExODI0NzQ0NzAwQ0MzODQzIC8q
IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oICovOyB9OworCQlBNTk0NTU5NTE4MjQ3OUVCMDBD
QzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3Bl
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVC
QTE1RTExODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1QkExNUU5MTgyMzQwQjMwMEE4
MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yLm1tICovOyB9OworCQlBNUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNUJBMTVFMzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVC
QTE1RUIxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJB
MTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b24uaCAqLzsgfTsKKwkJQTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTVCQTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tICovOyB9OworCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLzsgfTsKKwkJQTVCQTE1RUUxODIzNDBCNDAw
QTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNzE4MjM0MEIzMDBBODJFNjkg
LyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLzsgfTsKKwkJQTVCQTE1RjAxODIz
NDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUVGMTgyMzQ1QUYwMEE4MkU2
OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcwMDg3MzkxN0NCRTg1MzAwQzNFNjQzIC8qIE1h
cENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi87
IH07CiAJCUE3MDA4NzNBMTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3MzgxN0NCRTg1
MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggKi87IH07CiAJCUE3MDA4NzNEMTdDQkU4RDMw
MEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlw
ZS5jcHAgKi87IH07CkBAIC0yMTk2LDYgKzIyMDgsMTggQEAKIAkJQTE3MTJCM0ExMUM3QjIxMjAw
N0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlZ0V4cENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3
MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUuY3BwOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5NDU1OTAx
ODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4NDMg
LyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbC5oOyBwYXRoID0gaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90
ZUluc3BlY3Rvci5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTIxODIzNDBCMzAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IFJlbW90ZUluc3BlY3Rvci5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFMzE4MjM0MEIz
MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oOyBwYXRoID0gaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTVCQTE1RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg7IHBhdGggPSBpbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE1QkExNUU1MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tOyBwYXRoID0g
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oOyBwYXRoID0gaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE1QkExNUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTVCQTE1RUYxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZS5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDA4NzM3MTdDQkU4NTMwMEMz
RTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNYXBDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3MDA4NzM4MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNYXBDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNzAwODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcFByb3RvdHlwZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjk0LDYgKzI3MTgsNyBAQAogCQkJCTA4
NjdENjlBRkU4NDAyOEZDMDJBQUMwNyAvKiBGcmFtZXdvcmtzICovLAogCQkJCTBGRUEwOUZDMTcw
NTEzN0YwMEJCNzIyQyAvKiBmdGwgKi8sCiAJCQkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8q
IGhlYXAgKi8sCisJCQkJQTVCQTE1REYxODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAqLywK
IAkJCQkxNDI5RDc3QTBFRDIwRDczMDBCODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8sCiAJCQkJMTQy
OUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLywKIAkJCQkwRjQ2ODA5QzE0QkE3RjREMDBC
RkUyNzIgLyogbGxpbnQgKi8sCkBAIC0zNDc3LDYgKzM1MDIsOCBAQAogCQkJCTBGMkI2NkM4MTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMu
aCAqLywKIAkJCQkxNERFMEQ2ODBEMDI0MzE0MDBBQUNDQTIgLyogSlNHbG9iYWxPYmplY3QuY3Bw
ICovLAogCQkJCUE4RTg5NDMzMENEMDYwM0YwMDM2NzE3OSAvKiBKU0dsb2JhbE9iamVjdC5oICov
LAorCQkJCUE1OTQ1NTkwMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGUuY3BwICovLAorCQkJCUE1OTQ1NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVj
dERlYnVnZ2FibGUuaCAqLywKIAkJCQlCQzc1NkZDNjBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwICovLAogCQkJCUJDNzU2RkM3MEUyMDMxQjIwMERFN0QxMiAv
KiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oICovLAogCQkJCTBGMkI2NkNBMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0ludDE2QXJyYXkuaCAqLywKQEAgLTQxNDUsNiArNDE3MiwzMSBAQAogCQkJcGF0
aCA9IGJ5dGVjb2RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTVCQTE1
REYxODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTVCQTE1RTAxODIzNDA5RDAwQTgyRTY5IC8qIHJlbW90
ZSAqLywKKwkJCQlBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmggKi8sCisJCQkpOworCQkJbmFtZSA9IGluc3BlY3RvcjsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CisJCUE1QkExNUUwMTgyMzQwOUQwMEE4MkU2OSAvKiByZW1vdGUg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1QkExNUUx
MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCAqLywKKwkJCQlBNUJBMTVFMjE4
MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tICovLAorCQkJCUE1QkExNUUzMTgy
MzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCAqLywKKwkJCQlBNUJB
MTVFRjE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oICovLAor
CQkJCUE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
LmNwcCAqLywKKwkJCQlBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24uaCAqLywKKwkJCQlBNUJBMTVFNTE4MjM0MEIzMDBBODJFNjkg
LyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gKi8sCisJCQkJQTVCQTE1
RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLywK
KwkJCQlBNUJBMTVFNzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbi5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gcmVtb3RlOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQyMTUsNiArNDI2Nyw3IEBACiAJCQkJ
ODY2NzM5RDIxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0ODE2RTFDMTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEMzRUMwRTE2RjVDRDAwQjM0NDYwIC8qIEJvb2xlYW5PYmplY3QuaCBp
biBIZWFkZXJzICovLAorCQkJCUE1QkExNUVBMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNw
ZWN0b3JDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk3MTVFRDhFNDYwMEYx
NjdCMiAvKiBCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk4MTVFRDhFNDYw
MEYxNjdCMiAvKiBCdXR0ZXJmbHlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI3
RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8s
CkBAIC00Mjg1LDYgKzQzMzgsNyBAQAogCQkJCTBGMTYwMTVFMTU2MTk4QzkwMEMyNTg3QyAvKiBE
RkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA1
QzNCNDE2ODNDRjkyMDBCQUY0NUIgLyogREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY2Mzk0ODUxNUU0ODExQjAwNkE1OTdDIC8qIERGR0FycmF5TW9k
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RUIxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5
QTI5NTE3QTBCQzc0MDBFRTI2MTggLyogREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY3MTRDQTUxNkVBOTJGMjAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3Bh
Z2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIwMTc2MTQzRkNEM0IwMDY4Qjc3
QyAvKiBERkdCYXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLywKQEAgLTQzNjAsNiArNDQxNCw3IEBA
CiAJCQkJMEZEOEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlv
blBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyog
REZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkwQzdG
IC8qIERGR09TUkV4aXRCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUJBMTVFRDE4MjM0MEI0
MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGQjkyMUMxNkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbklu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdP
U1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4
MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtNDQx
OCw2ICs0NDczLDcgQEAKIAkJCQkwRkVBMEEwODE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2
aWF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8q
IEZUTEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYxNzA4QjAwNzAw
QkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBBMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmls
aXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBG
VExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBDMTcwNTEzREIwMEJC
NzIyQyAvKiBGVExDb21waWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ1MTAsNiArNDU2Niw3IEBA
CiAJCQkJODZDQ0VGREUwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERpc2Fz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgy
MTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkIxNEUxRjE4MTI0QUNFMDA5QjZCNEQgLyogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTQ2ODEsNiArNDczOCw3IEBACiAJCQkJMTREMkYzREIxMzlGNEJF
MjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJENkYxMjEz
NTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjExMjJF
MzE1REQ5QUIzMDA3OTBFM0EgLyogTWFya1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTU5NDU1OTUxODI0NzlFQjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODYxMkU0Q0QxNTIzODlFQzAwQzgzNkJFIC8qIE1hdGNoUmVz
dWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzQzBFMTZGNUNEMDBCMzQ0NjAgLyogTWF0
aE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNBNDBDMjAwRDQyMkYzIC8q
IE1lbW9yeVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLApAQCAtNDg0OSw2ICs0OTA3LDcgQEAK
IAkJCQkxNDJFMzEzQzEzNEZGMEE2MDBBRkFEQjUgLyogV2Vhay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTRFODRGOUYxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTRGNzI1NjYxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVP
d25lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRFODRGQTIxNEVFMUFDQzAwRDZENUQ0IC8qIFdl
YWtJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEJFN0QzMzE3MTM1Q0Y0MDBEMTgwN0EgLyog
V2Vha0lubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTQ0Myw2ICs1NTAyLDcgQEAKIAkJCQlB
N0I0OEY0OTBFRTg5MzZGMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NkRCNjQ2NDBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFsbG9j
YXRvckZpeGVkVk1Qb29sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTZBMUQ1MTUwMDFDRjQw
MDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1OTQ1
NTkyMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZCMTA1ODUxNjc1NDgwRjAwRjhBQjZFIC8qIEV4aXRLaW5kLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRUEwQTFDMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFj
dEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMUUxNzA4QjAwNzAwQkI3MjJDIC8q
IEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NjA0LDYg
KzU2NjQsNyBAQAogCQkJCTE0NDY5RERFMTA3RUM3RTcwMDY1MDQ0NiAvKiBMb29rdXAuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCNzIzQjIxMkQ3REE0NjAwM0JENUVE
IC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTk0NTU4RjE4
MjQ1RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkVCM0VDRjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNz
ZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5
OCAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTczMSw2ICs1
NzkyLDkgQEAKIAkJCQlBN0NBM0FFNTE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEU4NEZBMDE0RUUxQUNDMDBENkQ1RDQgLyogV2Vh
a1NldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyog
V3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUJBMTVFOTE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTVC
QTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlBN0U1QUIz
QTE3OTlFNEIyMDBEMjgzM0QgLyogWDg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVy
cHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaApzaW1pbGFyaXR5IGluZGV4IDgz
JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsLmgKaW5kZXggYjMyMTRlZi4uZmEwYThlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTAsMjUgKzEwLDI1IEBACiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgogICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCiAgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKICAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAogI2lmbmRlZiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAog
I2RlZmluZSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAogCi0jaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCB7CiBwdWJsaWM6CkBAIC0zNiw2ICszNiw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogfTsK
IAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNl
bmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNkNDAzYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3Rvci5oCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaWZuZGVm
IFJlbW90ZUluc3BlY3Rvcl9oCisjZGVmaW5lIFJlbW90ZUluc3BlY3Rvcl9oCisKKyNpbXBvcnQg
IlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgiCisjaW1wb3J0ICJSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLmgiCisjaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgorI2ltcG9y
dCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9y
dCA8d3RmL1RocmVhZGluZy5oPgorCitPQkpDX0NMQVNTIE5TU3RyaW5nOworT0JKQ19DTEFTUyBO
U0RpY3Rpb25hcnk7CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlOworc3RydWN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvOwor
CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3IgRklOQUwgOiBwdWJsaWMg
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVtb3RlSW5zcGVjdG9yJiBzaGFyZWQoKTsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0
cm95ZWQ8UmVtb3RlSW5zcGVjdG9yPjsKKworICAgIHZvaWQgcmVnaXN0ZXJEZWJ1Z2dhYmxlKFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJEZWJ1Z2dhYmxl
KFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqKTsKKyAgICB2b2lkIHVwZGF0ZURlYnVnZ2FibGUo
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSopOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1JlbW90
ZUZyb250ZW5kKHVuc2lnbmVkIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisK
KyAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAgICBib29s
IGhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlRGVidWdT
ZXNzaW9uOyB9CisKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CisKK3ByaXZh
dGU6CisgICAgUmVtb3RlSW5zcGVjdG9yKCk7CisKKyAgICB1bnNpZ25lZCBuZXh0QXZhaWxhYmxl
SWRlbnRpZmllcigpOworCisgICAgdm9pZCBzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCgpOwor
CisgICAgTlNEaWN0aW9uYXJ5ICpsaXN0aW5nRm9yRGVidWdnYWJsZShjb25zdCBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlSW5mbyYpIGNvbnN0OworICAgIHZvaWQgcHVzaExpc3RpbmdOb3coKTsK
KyAgICB2b2lkIHB1c2hMaXN0aW5nU29vbigpOworCisgICAgdm9pZCB1cGRhdGVIYXNBY3RpdmVE
ZWJ1Z1Nlc3Npb24oKTsKKworICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uUmVjZWl2ZWRN
ZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCBOU1N0cmluZyAqbWVzc2FnZU5h
bWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB4
cGNDb25uZWN0aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UoUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIHhwY19vYmplY3RfdCkgT1ZFUlJJREU7CisKKyAgICB2
b2lkIHJlY2VpdmVkU2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworICAgIHZv
aWQgcmVjZWl2ZWREYXRhTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lk
IHJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworICAgIHZv
aWQgcmVjZWl2ZWRHZXRMaXN0aW5nTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKyAg
ICB2b2lkIHJlY2VpdmVkSW5kaWNhdGVNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOwor
ICAgIHZvaWQgcmVjZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2Vy
SW5mbyk7CisKKyAgICAvLyBEZWJ1Z2dhYmxlcyBjYW4gYmUgcmVnaXN0ZXJlZCBmcm9tIGFueSB0
aHJlYWQgYXQgYW55IHRpbWUuCisgICAgLy8gQW55IGRlYnVnZ2FibGUgY2FuIHNlbmQgbWVzc2Fn
ZXMgb3ZlciB0aGUgWFBDIGNvbm5lY3Rpb24uCisgICAgLy8gU28gbG9jayBhY2Nlc3MgdG8gYWxs
IG1hcHMgYW5kIHN0YXRlIGFzIHRoZXkgY2FuIGNoYW5nZQorICAgIC8vIGZyb20gYW55IHRocmVh
ZC4KKyAgICBNdXRleCBtX2xvY2s7CisKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnBhaXI8
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSosIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZv
Pj4gbV9kZWJ1Z2dhYmxlTWFwOworICAgIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbk1hcDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbj4gbV94cGNDb25uZWN0aW9u
OworICAgIHVuc2lnbmVkIG1fbmV4dEF2YWlsYWJsZUlkZW50aWZpZXI7CisgICAgaW50IG1fbm90
aWZ5VG9rZW47CisgICAgYm9vbCBtX2VuYWJsZWQ7CisgICAgYm9vbCBtX2hhc0FjdGl2ZURlYnVn
U2Vzc2lvbjsKKyAgICBib29sIG1fcHVzaFNjaGVkdWxlZDsKK307CisKK30gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNlbmRp
ZiAvLyBXZWJJbnNwZWN0b3JTZXJ2ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3OWI0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KQEAgLTAs
MCArMSw0ODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3Rvci5oIgorCisjaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbXBvcnQgIkluaXRpYWxpemVUaHJlYWRpbmcu
aCIKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oIgorI2ltcG9ydCAiUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZS5oIgorI2ltcG9ydCA8bm90aWZ5Lmg+CisjaW1wb3J0IDx4cGMv
eHBjLmg+CisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKKyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0IDx3dGYvaW9zL1dl
YkNvcmVUaHJlYWQuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworc3RhdGlj
IHZvaWQgZGlzcGF0Y2hBc3luY09uUXVldWVTYWZlRm9yQW55RGVidWdnYWJsZSh2b2lkICheYmxv
Y2spKCkpCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChXZWJDb3JlV2ViVGhyZWFkSXNF
bmFibGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQoKSkgeworICAgICAgICBXZWJDb3Jl
V2ViVGhyZWFkUnVuKGJsb2NrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisg
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgYmxvY2spOworfQor
CitSZW1vdGVJbnNwZWN0b3ImIFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5zcGVjdG9yPiBzaGFyZWQ7CisKKyAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2U7CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKKyAgICAg
ICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1h
aW5UaHJlYWQoKTsKKyAgICAgICAgc2hhcmVkLmdldCgpLnN0YXJ0KCk7CisgICAgfSk7CisKKyAg
ICByZXR1cm4gc2hhcmVkOworfQorCitSZW1vdGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcigp
CisgICAgOiBtX25leHRBdmFpbGFibGVJZGVudGlmaWVyKDEpCisgICAgLCBtX25vdGlmeVRva2Vu
KDApCisgICAgLCBtX2VuYWJsZWQoZmFsc2UpCisgICAgLCBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lv
bihmYWxzZSkKKyAgICAsIG1fcHVzaFNjaGVkdWxlZChmYWxzZSkKK3sKK30KKwordW5zaWduZWQg
UmVtb3RlSW5zcGVjdG9yOjpuZXh0QXZhaWxhYmxlSWRlbnRpZmllcigpCit7CisgICAgdW5zaWdu
ZWQgbmV4dFZhbGlkSWRlbnRpZmllcjsKKyAgICBkbyB7CisgICAgICAgIG5leHRWYWxpZElkZW50
aWZpZXIgPSBtX25leHRBdmFpbGFibGVJZGVudGlmaWVyKys7CisgICAgfSB3aGlsZSAoIW5leHRW
YWxpZElkZW50aWZpZXIgfHwgbmV4dFZhbGlkSWRlbnRpZmllciA9PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkgfHwgbV9kZWJ1Z2dhYmxlTWFwLmNvbnRhaW5zKG5leHRWYWxp
ZElkZW50aWZpZXIpKTsKKyAgICByZXR1cm4gbmV4dFZhbGlkSWRlbnRpZmllcjsKK30KKwordm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlKiBkZWJ1Z2dhYmxlKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwor
CisgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IG5leHRBdmFpbGFibGVJZGVudGlmaWVyKCk7Cisg
ICAgZGVidWdnYWJsZS0+c2V0SWRlbnRpZmllcihpZGVudGlmaWVyKTsKKworICAgIGF1dG8gcmVz
dWx0ID0gbV9kZWJ1Z2dhYmxlTWFwLnNldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfcGFpcihkZWJ1
Z2dhYmxlLCBkZWJ1Z2dhYmxlLT5pbmZvKCkpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgaWYgKGRlYnVnZ2FibGUtPnJlbW90ZURlYnVnZ2lu
Z0FsbG93ZWQoKSkKKyAgICAgICAgcHVzaExpc3RpbmdTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjp1bnJlZ2lzdGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
KiBkZWJ1Z2dhYmxlKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAg
dW5zaWduZWQgaWRlbnRpZmllciA9IGRlYnVnZ2FibGUtPmlkZW50aWZpZXIoKTsKKyAgICBpZiAo
IWlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1f
ZGVidWdnYWJsZU1hcC5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRCh3YXNS
ZW1vdmVkLCB3YXNSZW1vdmVkKTsKKworICAgIGlmIChSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAudGFrZShpZGVu
dGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y2xvc2VGcm9tRGVidWdnYWJsZSgpOworCisg
ICAgaWYgKGRlYnVnZ2FibGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKSkKKyAgICAgICAgcHVz
aExpc3RpbmdTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVEZWJ1Z2dh
YmxlKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUpCit7CisgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gZGVidWdn
YWJsZS0+aWRlbnRpZmllcigpOworICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byByZXN1bHQgPSBtX2RlYnVnZ2FibGVNYXAuc2V0KGlkZW50aWZpZXIsIHN0
ZDo6bWFrZV9wYWlyKGRlYnVnZ2FibGUsIGRlYnVnZ2FibGUtPmluZm8oKSkpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgaWYgKGRlYnVnZ2Fi
bGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKSkKKyAgICAgICAgcHVzaExpc3RpbmdTb29uKCk7
Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQo
dW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKCFtX3hwY0Nvbm5lY3Rpb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbj4gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQoaWRlbnRpZmllcik7CisgICAg
aWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0RpY3Rpb25hcnkgKnVz
ZXJJbmZvID0gQHsKKyAgICAgICAgV0lSUmF3RGF0YUtleTogW3N0YXRpY19jYXN0PE5TU3RyaW5n
ICo+KG1lc3NhZ2UpIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwKKyAg
ICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25J
ZGVudGlmaWVyKCksCisgICAgICAgIFdJUkRlc3RpbmF0aW9uS2V5OiBjb25uZWN0aW9uLT5kZXN0
aW5hdGlvbigpCisgICAgfTsKKworICAgIG1feHBjQ29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lS
UmF3RGF0YU1lc3NhZ2UsIHVzZXJJbmZvKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0
YXJ0KCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmIChtX2Vu
YWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZW5hYmxlZCA9IHRydWU7CisKKyAgICBu
b3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goV0lSU2VydmljZUF2YWlsYWJsZU5vdGlmaWNhdGlvbiwg
Jm1fbm90aWZ5VG9rZW4sIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVf
UFJJT1JJVFlfREVGQVVMVCwgMCksIF4oaW50KSB7CisgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6
c2hhcmVkKCkuc2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQoKTsKKyAgICB9KTsKKworICAgIG5v
dGlmeV9wb3N0KFdJUlNlcnZpY2VBdmFpbGFiaWxpdHlDaGVja05vdGlmaWNhdGlvbik7Cit9CisK
K3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzdG9wKCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKKworICAgIGlmICghbV9lbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2VuYWJsZWQgPSBmYWxzZTsKKworICAgIG1fcHVzaFNjaGVkdWxlZCA9IGZhbHNlOworCisgICAg
Zm9yIChhdXRvIGl0ID0gbV9jb25uZWN0aW9uTWFwLmJlZ2luKCksIGVuZCA9IG1fY29ubmVjdGlv
bk1hcC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPmNsb3NlKCk7
CisgICAgbV9jb25uZWN0aW9uTWFwLmNsZWFyKCk7CisKKyAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1
Z1Nlc3Npb24oKTsKKworICAgIGlmIChtX3hwY0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgbV94cGND
b25uZWN0aW9uLT5jbG9zZSgpOworICAgICAgICBtX3hwY0Nvbm5lY3Rpb24gPSBudWxscHRyOwor
ICAgIH0KKworICAgIG5vdGlmeV9jYW5jZWwobV9ub3RpZnlUb2tlbik7Cit9CisKK3ZvaWQgUmVt
b3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCgpCit7CisgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBpZiAobV94cGNDb25uZWN0aW9uKQorICAgICAg
ICByZXR1cm47CisKKyAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVj
dGlvbl9jcmVhdGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgMCk7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3hwY0Nvbm5lY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24+KGNvbm5lY3Rpb24sIHRoaXMpOworICAgIG1feHBjQ29ubmVjdGlvbi0+
c2VuZE1lc3NhZ2UoQCJzeW4iLCBuaWwpOyAvLyBTZW5kIGEgc2ltcGxlIG1lc3NhZ2UgdG8gaW5p
dGlhbGl6ZSB0aGUgWFBDIGNvbm5lY3Rpb24uCisgICAgeHBjX3JlbGVhc2UoY29ubmVjdGlvbik7
CisKKyAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30KKworI3ByYWdtYSBtYXJrIC0gUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4cGND
b25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCBO
U1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxU
b1N0cmluZzpXSVJQZXJtaXNzaW9uRGVuaWVkXSkgeworICAgICAgICBzdG9wKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpX
SVJTb2NrZXREYXRhTWVzc2FnZV0pCisgICAgICAgIHJlY2VpdmVkRGF0YU1lc3NhZ2UodXNlcklu
Zm8pOworICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSU29ja2V0
U2V0dXBNZXNzYWdlXSkKKyAgICAgICAgcmVjZWl2ZWRTZXR1cE1lc3NhZ2UodXNlckluZm8pOwor
ICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSV2ViUGFnZUNsb3Nl
TWVzc2FnZV0pCisgICAgICAgIHJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdlKHVzZXJJbmZvKTsKKyAg
ICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkFwcGxpY2F0aW9uR2V0
TGlzdGluZ01lc3NhZ2VdKQorICAgICAgICByZWNlaXZlZEdldExpc3RpbmdNZXNzYWdlKHVzZXJJ
bmZvKTsKKyAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkluZGlj
YXRlTWVzc2FnZV0pCisgICAgICAgIHJlY2VpdmVkSW5kaWNhdGVNZXNzYWdlKHVzZXJJbmZvKTsK
KyAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkNvbm5lY3Rpb25E
aWVkTWVzc2FnZV0pCisgICAgICAgIHJlY2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKHVzZXJJ
bmZvKTsKKyAgICBlbHNlCisgICAgICAgIE5TTG9nKEAiVW5yZWNvZ25pemVkIFJlbW90ZUluc3Bl
Y3RvciBYUEMgTWVzc2FnZTogJUAiLCBtZXNzYWdlTmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5z
cGVjdG9yOjp4cGNDb25uZWN0aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24q
KQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgbV9wdXNoU2NoZWR1
bGVkID0gZmFsc2U7CisKKyAgICBmb3IgKGF1dG8gaXQgPSBtX2Nvbm5lY3Rpb25NYXAuYmVnaW4o
KSwgZW5kID0gbV9jb25uZWN0aW9uTWFwLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAg
IGl0LT52YWx1ZS0+Y2xvc2UoKTsKKyAgICBtX2Nvbm5lY3Rpb25NYXAuY2xlYXIoKTsKKworICAg
IHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOworCisgICAgaWYgKG1feHBjQ29ubmVjdGlv
bikgeworICAgICAgICBtX3hwY0Nvbm5lY3Rpb24tPmNsb3NlKCk7CisgICAgICAgIG1feHBjQ29u
bmVjdGlvbiA9IG51bGxwdHI7CisgICAgfQorfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBj
Q29ubmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbios
IHhwY19vYmplY3RfdCkKK3sKKyAgICAvLyBJbnRlbnRpb25hbGx5IGlnbm9yZWQuCit9CisKKyNw
cmFnbWEgbWFyayAtIExpc3RpbmdzCisKK05TRGljdGlvbmFyeSAqUmVtb3RlSW5zcGVjdG9yOjps
aXN0aW5nRm9yRGVidWdnYWJsZShjb25zdCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyYg
ZGVidWdnYWJsZUluZm8pIGNvbnN0Cit7CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGVidWdn
YWJsZURldGFpbHMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKworICAgIFtk
ZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6QChkZWJ1Z2dhYmxlSW5mby5pZGVudGlmaWVyKSBm
b3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOworCisgICAgc3dpdGNoIChkZWJ1Z2dhYmxlSW5m
by50eXBlKSB7CisgICAgY2FzZSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpKYXZhU2NyaXB0
OiB7CisgICAgICAgIE5TU3RyaW5nICpuYW1lID0gZGVidWdnYWJsZUluZm8ubmFtZTsKKyAgICAg
ICAgW2RlYnVnZ2FibGVEZXRhaWxzIHNldE9iamVjdDpuYW1lIGZvcktleTpXSVJUaXRsZUtleV07
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGU6OldlYjogeworICAgICAgICBOU1N0cmluZyAqdXJsID0gZGVidWdnYWJsZUluZm8udXJsOwor
ICAgICAgICBOU1N0cmluZyAqdGl0bGUgPSBkZWJ1Z2dhYmxlSW5mby5uYW1lOworICAgICAgICBb
ZGVidWdnYWJsZURldGFpbHMgc2V0T2JqZWN0OnVybCBmb3JLZXk6V0lSVVJMS2V5XTsKKyAgICAg
ICAgW2RlYnVnZ2FibGVEZXRhaWxzIHNldE9iamVjdDp0aXRsZSBmb3JLZXk6V0lSVGl0bGVLZXld
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChSZWZQdHI8UmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rp
b25NYXAuZ2V0KGRlYnVnZ2FibGVJbmZvLmlkZW50aWZpZXIpKQorICAgICAgICBbZGVidWdnYWJs
ZURldGFpbHMgc2V0T2JqZWN0OmNvbm5lY3Rpb24tPmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgZm9y
S2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKKworICAgIGlmIChkZWJ1Z2dhYmxlSW5m
by5oYXNMb2NhbERlYnVnZ2VyKQorICAgICAgICBbZGVidWdnYWJsZURldGFpbHMgc2V0T2JqZWN0
OkBZRVMgZm9yS2V5OldJUkhhc0xvY2FsRGVidWdnZXJLZXldOworCisgICAgcmV0dXJuIGRlYnVn
Z2FibGVEZXRhaWxzOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdOb3co
KQoreworICAgIEFTU0VSVChtX3hwY0Nvbm5lY3Rpb24pOworICAgIGlmICghbV94cGNDb25uZWN0
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3B1c2hTY2hlZHVsZWQgPSBmYWxzZTsKKwor
ICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiByZXNwb25zZSA9IGFkb3B0TlMoW1tO
U011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgZm9yIChhdXRvIGl0ID0gbV9k
ZWJ1Z2dhYmxlTWFwLmJlZ2luKCksIGVuZCA9IG1fZGVidWdnYWJsZU1hcC5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CisgICAgICAgIGNvbnN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZv
JiBkZWJ1Z2dhYmxlSW5mbyA9IGl0LT52YWx1ZS5zZWNvbmQ7CisgICAgICAgIGlmIChkZWJ1Z2dh
YmxlSW5mby5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKSB7CisgICAgICAgICAgICBOU0RpY3Rpb25h
cnkgKmRldGFpbHMgPSBsaXN0aW5nRm9yRGVidWdnYWJsZShkZWJ1Z2dhYmxlSW5mbyk7CisgICAg
ICAgICAgICBbcmVzcG9uc2Ugc2V0T2JqZWN0OmRldGFpbHMgZm9yS2V5OltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiJXUiLCBkZWJ1Z2dhYmxlSW5mby5pZGVudGlmaWVyXV07CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gb3V0Z29pbmcg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIFtvdXRn
b2luZyBzZXRPYmplY3Q6cmVzcG9uc2UuZ2V0KCkgZm9yS2V5OldJUkxpc3RpbmdLZXldOworCisg
ICAgbV94cGNDb25uZWN0aW9uLT5zZW5kTWVzc2FnZShXSVJMaXN0aW5nTWVzc2FnZSwgb3V0Z29p
bmcuZ2V0KCkpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdTb29uKCkK
K3sKKyAgICBpZiAoIW1feHBjQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KG1fcHVzaFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wdXNoU2NoZWR1bGVk
ID0gdHJ1ZTsKKyAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVf
Tk9XLCAwLjAyICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQ
QVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKKyAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgICAgIGlmIChtX3B1c2hTY2hlZHVsZWQpCisgICAgICAgICAg
ICBwdXNoTGlzdGluZ05vdygpOworICAgIH0pOworfQorCisjcHJhZ21hIG1hcmsgLSBBY3RpdmUg
RGVidWdnZXIgU2Vzc2lvbnMKKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUhhc0FjdGl2
ZURlYnVnU2Vzc2lvbigpCit7CisgICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb24gPSAh
bV9jb25uZWN0aW9uTWFwLmlzRW1wdHkoKTsKKyAgICBpZiAoaGFzQWN0aXZlRGVidWdnZXJTZXNz
aW9uID09IG1faGFzQWN0aXZlRGVidWdTZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2hhc0FjdGl2ZURlYnVnU2Vzc2lvbiA9IGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbjsKKworICAg
IC8vIEZJWE1FOiBFeHBvc2Ugc29tZSB3YXkgdG8gYWNjZXNzIHRoaXMgc3RhdGUgaW4gYW4gZW1i
ZWRkZXIuCisgICAgLy8gTGVnYWN5IGlPUyBXZWJLaXQgMSBoYWQgYSBub3RpZmljYXRpb24uIFRo
aXMgd2lsbCBuZWVkIHRvIGJlIHNtYXJ0ZXIgd2l0aCBXZWJLaXQyLgorfQorCisjcHJhZ21hIG1h
cmsgLSBSZWNlaXZlZCBYUEMgTWVzc2FnZXMKKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2Vp
dmVkU2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTlNOdW1iZXIg
KnBhZ2VJZCA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOwor
ICAgIGlmICghcGFnZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmluZyAqY29ubmVj
dGlvbklkZW50aWZpZXIgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVu
dGlmaWVyS2V5XTsKKyAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBOU1N0cmluZyAqc2VuZGVyID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJT
ZW5kZXJLZXldOworICAgIGlmICghc2VuZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNp
Z25lZCBpZGVudGlmaWVyID0gW3BhZ2VJZCB1bnNpZ25lZEludFZhbHVlXTsKKyAgICBpZiAobV9j
b25uZWN0aW9uTWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIGl0ID0gbV9kZWJ1Z2dhYmxlTWFwLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0
ID09IG1fZGVidWdnYWJsZU1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQXR0
ZW1wdCB0byBjcmVhdGUgYSBjb25uZWN0aW9uLiBUaGlzIG1heSBmYWlsIGlmIHRoZSBwYWdlIGFs
cmVhZHkgaGFzIGFuIGluc3BlY3RvciBvciBpZiBpdCBkaXNhbGxvd3MgaW5zcGVjdGlvbi4KKyAg
ICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlID0gaXQtPnZhbHVlLmZpcnN0
OworICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIGRlYnVnZ2FibGVJbmZvID0gaXQt
PnZhbHVlLnNlY29uZDsKKyAgICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9wdFJlZihuZXcgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUNvbm5lY3Rpb24oZGVidWdnYWJsZSwgY29ubmVjdGlvbklkZW50aWZpZXIsIHNlbmRlciwgZGVi
dWdnYWJsZUluZm8udHlwZSkpOworICAgIGlmICghY29ubmVjdGlvbi0+c2V0dXAoKSkgeworICAg
ICAgICBjb25uZWN0aW9uLT5jbG9zZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9jb25uZWN0aW9uTWFwLnNldChpZGVudGlmaWVyLCBjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisK
KyAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKKworICAgIHB1c2hMaXN0aW5nU29v
bigpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWREYXRhTWVzc2FnZShOU0Rp
Y3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbdXNlckluZm8g
b2JqZWN0Rm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIXBhZ2VJZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgcGFnZUlkZW50aWZpZXIgPSBbcGFnZUlkIHVu
c2lnbmVkSW50VmFsdWVdOworICAgIFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29u
bmVjdGlvbj4gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQocGFnZUlkZW50aWZpZXIp
OworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNEYXRhICpk
YXRhID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJTb2NrZXREYXRhS2V5XTsKKyAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IG1lc3NhZ2UgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRX
aXRoRGF0YTpkYXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgY29ubmVj
dGlvbi0+c2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZS5nZXQoKSk7Cit9CisKK3ZvaWQgUmVt
b3RlSW5zcGVjdG9yOjpyZWNlaXZlZERpZENsb3NlTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJ
bmZvKQoreworICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJ
UlBhZ2VJZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIXBhZ2VJZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyID0gW3VzZXJJbmZvIG9iamVjdEZv
cktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07CisgICAgaWYgKCFjb25uZWN0aW9uSWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IFtw
YWdlSWQgdW5zaWduZWRJbnRWYWx1ZV07CisgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChpZGVudGlm
aWVyKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
W2Nvbm5lY3Rpb25JZGVudGlmaWVyIGlzRXF1YWxUb1N0cmluZzpjb25uZWN0aW9uLT5jb25uZWN0
aW9uSWRlbnRpZmllcigpXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29ubmVjdGlvbi0+Y2xv
c2UoKTsKKyAgICBtX2Nvbm5lY3Rpb25NYXAucmVtb3ZlKGlkZW50aWZpZXIpOworCisgICAgdXBk
YXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CisKKyAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30K
Kwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkR2V0TGlzdGluZ01lc3NhZ2UoTlNEaWN0
aW9uYXJ5ICopCit7CisgICAgcHVzaExpc3RpbmdOb3coKTsKK30KKwordm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OnJlY2VpdmVkSW5kaWNhdGVNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7
CisgICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSUGFnZUlk
ZW50aWZpZXJLZXldOworICAgIGlmICghcGFnZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICB1
bnNpZ25lZCBpZGVudGlmaWVyID0gW3BhZ2VJZCB1bnNpZ25lZEludFZhbHVlXTsKKyAgICBCT09M
IGluZGljYXRlRW5hYmxlZCA9IFtbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUkluZGljYXRlRW5h
YmxlZEtleV0gYm9vbFZhbHVlXTsKKworICAgIGRpc3BhdGNoQXN5bmNPblF1ZXVlU2FmZUZvckFu
eURlYnVnZ2FibGUoXnsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAg
ICAgICAgYXV0byBpdCA9IG1fZGVidWdnYWJsZU1hcC5maW5kKGlkZW50aWZpZXIpOworICAgICAg
ICBpZiAoaXQgPT0gbV9kZWJ1Z2dhYmxlTWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUgPSBpdC0+dmFs
dWUuZmlyc3Q7CisgICAgICAgIGRlYnVnZ2FibGUtPnNldEluZGljYXRpbmcoaW5kaWNhdGVFbmFi
bGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQ29ubmVj
dGlvbkRpZWRNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTlNTdHJpbmcg
KmNvbm5lY3Rpb25JZGVudGlmaWVyID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJDb25uZWN0
aW9uSWRlbnRpZmllcktleV07CisgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBpdCA9IG1fY29ubmVjdGlvbk1hcC5iZWdpbigpOworICAg
IGF1dG8gZW5kID0gbV9jb25uZWN0aW9uTWFwLmVuZCgpOworICAgIGZvciAoOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgaWYgKFtjb25uZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJp
bmc6aXQtPnZhbHVlLT5jb25uZWN0aW9uSWRlbnRpZmllcigpXSkKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIGlmIChpdCA9PSBlbmQpCisgICAgICAgIHJldHVybjsKKworICAgIFJl
ZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IGl0
LT52YWx1ZTsKKyAgICBjb25uZWN0aW9uLT5jbG9zZSgpOworICAgIG1fY29ubmVjdGlvbk1hcC5y
ZW1vdmUoaXQpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dl
Ykluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oCnNpbWlsYXJpdHkgaW5kZXgg
OTMlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaAppbmRleCAxZjNi
YzMyLi4yNmExZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
cmVtb3RlL1dlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaApAQCAt
MjMsMTYgKzIzLDE1IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViSW5zcGVj
dG9yUmVsYXlEZWZpbml0aW9uc19oCi0jZGVmaW5lIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlv
bnNfaAorI2lmbmRlZiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHNfaAorI2RlZmluZSBSZW1vdGVJ
bnNwZWN0b3JDb25zdGFudHNfaAogCiAvLyBXSVJDb25zdGFudHMgYXJlICJXZWIgSW5zcGVjdG9y
IFJlbGF5IiBjb25zdGFudHMgc2hhcmVkIGJldHdlZW4KLS8vIHRoZSBXZWJJbnNwZWN0b3IgZnJh
bWV3b3JrIG9uIHRoZSBkZWJ1Z2dlciBzaWRlLCB3ZWJpbnNwZWN0b3JkLAotLy8gYW5kIFdlYktp
dCBvbiB0aGUgZGVidWdnYWJsZSBhcHBsaWNhdGlvbiBzaWRlLgorLy8gdGhlIFdlYkluc3BlY3Rv
ciBmcmFtZXdvcmsgb24gdGhlIE9TIFggc2lkZSwgd2ViaW5zcGVjdG9yZCwgYW5kCisvLyBpT1Mg
V2ViS2l0IG9uIHRoZSBkZXZpY2Ugc2lkZS4KIAogI2RlZmluZSBXSVJTaW11bGF0b3JUQ1BQb3J0
TnVtYmVyICAgICAgICAgICAgICAgMjc3NTMKICNkZWZpbmUgV0lSWFBDTWFjaFBvcnROYW1lICAg
ICAgICAgICAgICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yIgotI2RlZmluZSBXSVJY
UENEZWJ1Z2dlclNlcnZpY2VOYW1lICAgICAgICAgICAgICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0
b3IuZGVidWdnZXIiCiAjZGVmaW5lIFdJUlNlcnZpY2VBdmFpbGFibGVOb3RpZmljYXRpb24gICAg
ICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXZhaWxhYmxlIgogI2RlZmluZSBXSVJTZXJ2
aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24gImNvbS5hcHBsZS53ZWJpbnNwZWN0b3Jk
LmF2YWlsYWJpbGl0eV9jaGVjayIKICNkZWZpbmUgV0lSU2VydmljZUVuYWJsZWROb3RpZmljYXRp
b24gICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5lbmFibGVkIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAKc2ltaWxhcml0eSBpbmRleCA1MSUK
cmVuYW1lIGZyb20gU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNw
ZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcAppbmRl
eCBjN2E1YmNjLi5mZGYxZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNw
ZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIzLDMzICsyMyw1OSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1AY2xhc3MgV2Vi
SW5zcGVjdG9yUmVtb3RlQ2hhbm5lbDsKLUBjbGFzcyBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbkNvbnRyb2xsZXI7CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oIgogCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclNlcnZl
cldlYlZpZXdDb25uZWN0aW9uIDogTlNPYmplY3QgewotQHByaXZhdGUKLSAgICBXZWJJbnNwZWN0
b3JSZW1vdGVDaGFubmVsICpfY2hhbm5lbDsKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
IAotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciAqX2Nv
bnRyb2xsZXI7IC8vIHdlYWssIHRoZSBjb250cm9sbGVyIG93bnMgdXMuCi0gICAgTlNTdHJpbmcg
Kl9jb25uZWN0aW9uSWRlbnRpZmllcjsKLSAgICBOU1N0cmluZyAqX2Rlc3RpbmF0aW9uOwotICAg
IE5TTnVtYmVyICpfaWRlbnRpZmllcjsKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3IuaCIKKworbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CisKK1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGUoKQorICAgIDogbV9pZGVudGlmaWVyKDApCisgICAgLCBtX2FsbG93ZWQoZmFsc2UpCit7Cit9
CisKK1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6On5SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
KCkKK3sKKyAgICBSZW1vdGVJbnNwZWN0b3I6OnNoYXJlZCgpLnVucmVnaXN0ZXJEZWJ1Z2dhYmxl
KHRoaXMpOwogfQogCi0tIChpZClpbml0V2l0aENvbnRyb2xsZXI6KFdlYkluc3BlY3RvclNlcnZl
cldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciAqKWNvbnRyb2xsZXIgY29ubmVjdGlvbklkZW50
aWZpZXI6KE5TU3RyaW5nICopY29ubmVjdGlvbklkZW50aWZpZXIgZGVzdGluYXRpb246KE5TU3Ry
aW5nICopZGVzdGluYXRpb24gaWRlbnRpZmllcjooTlNOdW1iZXIgKilpZGVudGlmaWVyOwotLSAo
Qk9PTClzZXR1cENoYW5uZWw7Ci0tIChOU1N0cmluZyAqKWNvbm5lY3Rpb25JZGVudGlmaWVyOwot
LSAoTlNOdW1iZXIgKilpZGVudGlmaWVyOwordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Ojppbml0KCkKK3sKKyAgICBSZW1vdGVJbnNwZWN0b3I6OnNoYXJlZCgpLnJlZ2lzdGVyRGVidWdn
YWJsZSh0aGlzKTsKK30KIAotLy8gTWVzc2FnZXMgZnJvbSB0aGUgSW5zcGVjdG9yU2VydmVyLgot
LSAodm9pZClyZWNlaXZlZERhdGE6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnk7Ci0tICh2b2lk
KXJlY2VpdmVkRGlkQ2xvc2U6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnk7Cit2b2lkIFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGU6OnVwZGF0ZSgpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpz
aGFyZWQoKS51cGRhdGVEZWJ1Z2dhYmxlKHRoaXMpOworfQogCi0vLyBNZXNzYWdlcyBmcm9tIHRo
ZSBDaGFubmVsLgotLSAodm9pZCljbGVhckNoYW5uZWw7Ci0tICh2b2lkKXNlbmRNZXNzYWdlVG9G
cm9udGVuZDooTlNTdHJpbmcgKiltZXNzYWdlOwordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlOjpzZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKGJvb2wgYWxsb3dlZCkKK3sKKyAgICBpZiAo
bV9hbGxvd2VkID09IGFsbG93ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYWxsb3dlZCA9
IGFsbG93ZWQ7CisKKyAgICB1cGRhdGUoKTsKK30KKworUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm8gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6aW5mbygpIGNvbnN0Cit7CisgICAgUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gaW5mbzsKKyAgICBpbmZvLmlkZW50aWZpZXIgPSBp
ZGVudGlmaWVyKCk7CisgICAgaW5mby50eXBlID0gdHlwZSgpOworICAgIGluZm8ubmFtZSA9IG5h
bWUoKTsKKyAgICBpbmZvLnVybCA9IHVybCgpOworICAgIGluZm8uaGFzTG9jYWxEZWJ1Z2dlciA9
IGhhc0xvY2FsRGVidWdnZXIoKTsKKyAgICBpbmZvLnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQgPSBy
ZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCk7CisgICAgcmV0dXJuIGluZm87Cit9CiAKLS8vIE1lc3Nh
Z2VzIHRvIHRoZSBDaGFubmVsLgotLSAodm9pZClzZW5kTWVzc2FnZVRvQmFja2VuZDooTlNTdHJp
bmcgKiltZXNzYWdlOworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKLUBlbmQKKyNlbmRpZiAv
LyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDI3NGFkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZS5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CisKKyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZV9oCisjZGVmaW5lIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7
CitzdHJ1Y3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm87CisKK2NsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUgeworcHVibGljOgorICAgIFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGUoKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlKCk7CisKKyAgICB2b2lkIGluaXQoKTsKKyAgICB2b2lkIHVwZGF0ZSgpOworCisgICAg
dW5zaWduZWQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAg
IHZvaWQgc2V0SWRlbnRpZmllcih1bnNpZ25lZCBpZGVudGlmaWVyKSB7IG1faWRlbnRpZmllciA9
IGlkZW50aWZpZXI7IH0KKworICAgIGJvb2wgcmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWxsb3dlZDsgfQorICAgIHZvaWQgc2V0UmVtb3RlRGVidWdnaW5nQWxsb3dl
ZChib29sKTsKKworICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIGluZm8oKSBjb25z
dDsKKworICAgIGVudW0gRGVidWdnYWJsZVR5cGUgeyBKYXZhU2NyaXB0LCBXZWIgfTsKKyAgICB2
aXJ0dWFsIERlYnVnZ2FibGVUeXBlIHR5cGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJp
bmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8vIEphdmFTY3JpcHQgYW5kIFdl
YgorICAgIHZpcnR1YWwgU3RyaW5nIHVybCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8v
IFdlYgorICAgIHZpcnR1YWwgYm9vbCBoYXNMb2NhbERlYnVnZ2VyKCkgY29uc3QgPSAwOworCisg
ICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCkgeyB9IC8vIERlZmF1bHQgaXMg
dG8gZG8gbm90aGluZy4KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX2lkZW50aWZpZXI7Cisg
ICAgYm9vbCBtX2FsbG93ZWQ7Cit9OworCitzdHJ1Y3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm8geworICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvKCkKKyAgICAgICAgOiBp
ZGVudGlmaWVyKDApCisgICAgICAgICwgdHlwZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpK
YXZhU2NyaXB0KQorICAgICAgICAsIGhhc0xvY2FsRGVidWdnZXIoZmFsc2UpCisgICAgICAgICwg
cmVtb3RlRGVidWdnaW5nQWxsb3dlZChmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgdW5zaWdu
ZWQgaWRlbnRpZmllcjsKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpEZWJ1Z2dhYmxl
VHlwZSB0eXBlOworICAgIFN0cmluZyBuYW1lOworICAgIFN0cmluZyB1cmw7CisgICAgYm9vbCBo
YXNMb2NhbERlYnVnZ2VyOworICAgIGJvb2wgcmVtb3RlRGVidWdnaW5nQWxsb3dlZDsKK307CisK
K30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZV9oCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNGQ4ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNp
Zm5kZWYgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb25faAorI2RlZmluZSBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbl9oCisKKyNpbXBvcnQgIkluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbC5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oIgor
I2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgorCitPQkpDX0NMQVNTIE5TU3RyaW5nOworCituYW1lc3BhY2UgSW5zcGVjdG9yIHsK
KworY2xhc3MgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24gRklOQUwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b24+LCBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKK3B1YmxpYzoKKyAgICBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbihSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
KiwgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyLCBOU1N0cmluZyAqZGVzdGluYXRpb24s
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkRlYnVnZ2FibGVUeXBlKTsKKyAgICB2aXJ0dWFs
IH5SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbigpOworCisgICAgTlNTdHJpbmcg
KmRlc3RpbmF0aW9uKCkgY29uc3Q7CisgICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVy
KCkgY29uc3Q7CisgICAgdW5zaWduZWQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQorCisgICAgYm9vbCBzZXR1cCgpOworCisgICAgdm9pZCBjbG9zZSgpOworICAg
IHZvaWQgY2xvc2VGcm9tRGVidWdnYWJsZSgpOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFj
a2VuZChOU1N0cmluZyAqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIHZvaWQgZGlzcGF0Y2hT
eW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSk7CisgICAgdm9pZCBkaXNwYXRjaEFzeW5j
T25EZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSk7CisKKyAgICAvLyBUaGlzIGNvbm5lY3Rpb24g
ZnJvbSB0aGUgUmVtb3RlSW5zcGVjdG9yIHNpbmdsZXRvbiB0byB0aGUgRGVidWdnYWJsZQorICAg
IC8vIGNhbiBiZSB1c2VkIG9uIG11bHRpcGxlIHRocmVhZHMuIFNvIGFueSBhY2Nlc3MgdG8gdGhl
IGRlYnVnZ2FibGUKKyAgICAvLyBpdHNlbGYgbXVzdCB0YWtlIHRoaXMgbG9jayB0byBlbnN1cmUg
bV9kZWJ1Z2dhYmxlIGlzIHZhbGlkLgorICAgIE11dGV4IG1fZGVidWdnYWJsZUxvY2s7CisKKyAg
ICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBtX2RlYnVnZ2FibGU7CisgICAgZGlzcGF0Y2hf
cXVldWVfdCBtX3F1ZXVlRm9yRGVidWdnYWJsZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1f
Y29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2Rlc3RpbmF0
aW9uOworICAgIHVuc2lnbmVkIG1faWRlbnRpZmllcjsKKyAgICBib29sIG1fY29ubmVjdGVkOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbl9oCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZmZmVhNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCkBAIC0wLDAgKzEsMTY0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oIgorCisj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3Rvci5o
IgorCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCA8d3RmL2lvcy9XZWJDb3JlVGhyZWFkLmg+
CisjZW5kaWYKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK1JlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbihSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlLCBOU1N0cmluZyAqY29ubmVjdGlvbklk
ZW50aWZpZXIsIE5TU3RyaW5nICpkZXN0aW5hdGlvbiwgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZTo6RGVidWdnYWJsZVR5cGUgdHlwZSkKKyAgICA6IG1fZGVidWdnYWJsZShkZWJ1Z2dhYmxlKQor
ICAgICwgbV9xdWV1ZUZvckRlYnVnZ2FibGUoTlVMTCkKKyAgICAsIG1fY29ubmVjdGlvbklkZW50
aWZpZXIoY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0
aW9uKQorICAgICwgbV9pZGVudGlmaWVyKGRlYnVnZ2FibGUtPmlkZW50aWZpZXIoKSkKKyAgICAs
IG1fY29ubmVjdGVkKGZhbHNlKQoreworICAgIC8vIFdlYiBkZWJ1Z2dhYmxlcyBtdXN0IGJlIGFj
Y2Vzc2VkIG9uIHRoZSBtYWluIHF1ZXVlIChvciB0aGUgV2ViVGhyZWFkIG9uIGlPUykuIFNpZ25h
bCB0aGF0IHdpdGggYSBOVUxMIG1fcXVldWVGb3JEZWJ1Z2dhYmxlLgorICAgIC8vIEhvd2V2ZXIs
IEphdmFTY3JpcHQgZGVidWdnYWJsZXMgY2FuIGJlIGFjY2Vzc2VkIGZyb20gYW55IHRocmVhZC9x
dWV1ZSwgc28gd2UgY3JlYXRlIGEgcXVldWUgZm9yIGVhY2ggSmF2YVNjcmlwdCBkZWJ1Z2dhYmxl
LgorICAgIGlmICh0eXBlID09IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkphdmFTY3JpcHQp
CisgICAgICAgIG1fcXVldWVGb3JEZWJ1Z2dhYmxlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJj
b20uYXBwbGUuSmF2YVNjcmlwdENvcmUucmVtb3RlLWluc3BlY3Rvci14cGMtY29ubmVjdGlvbiIs
IERJU1BBVENIX1FVRVVFX1NFUklBTCk7Cit9CisKK1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVD
b25uZWN0aW9uOjp+UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oKQoreworICAg
IGlmIChtX3F1ZXVlRm9yRGVidWdnYWJsZSkgeworICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1f
cXVldWVGb3JEZWJ1Z2dhYmxlKTsKKyAgICAgICAgbV9xdWV1ZUZvckRlYnVnZ2FibGUgPSBOVUxM
OworICAgIH0KK30KKworTlNTdHJpbmcgKlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uOjpkZXN0aW5hdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtbbV9kZXN0aW5hdGlvbiBj
b3B5XSBhdXRvcmVsZWFzZV07Cit9CisKK05TU3RyaW5nICpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbjo6Y29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVy
biBbW21fY29ubmVjdGlvbklkZW50aWZpZXIgY29weV0gYXV0b3JlbGVhc2VdOworfQorCit2b2lk
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNPbkRlYnVn
Z2FibGUodm9pZCAoXmJsb2NrKSgpKQoreworICAgIGlmIChtX3F1ZXVlRm9yRGVidWdnYWJsZSkK
KyAgICAgICAgZGlzcGF0Y2hfc3luYyhtX3F1ZXVlRm9yRGVidWdnYWJsZSwgYmxvY2spOworI2lm
IFBMQVRGT1JNKElPUykKKyAgICBlbHNlIGlmIChXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkICYm
IFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQoKSkKKyAgICAgICAgV2ViQ29yZVdlYlRocmVhZFJ1
blN5bmMoYmxvY2spOworI2VuZGlmCisgICAgZWxzZQorICAgICAgICBkaXNwYXRjaF9zeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0Y2hBc3luY09uRGVidWdnYWJsZSh2b2lkIChe
YmxvY2spKCkpCit7CisgICAgaWYgKG1fcXVldWVGb3JEZWJ1Z2dhYmxlKQorICAgICAgICBkaXNw
YXRjaF9hc3luYyhtX3F1ZXVlRm9yRGVidWdnYWJsZSwgYmxvY2spOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICBlbHNlIGlmIChXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkICYmIFdlYkNvcmVXZWJU
aHJlYWRJc0VuYWJsZWQoKSkKKyAgICAgICAgV2ViQ29yZVdlYlRocmVhZFJ1bihibG9jayk7Cisj
ZW5kaWYKKyAgICBlbHNlCisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIGJsb2NrKTsKK30KKworYm9vbCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29u
bmVjdGlvbjo6c2V0dXAoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2FibGVM
b2NrKTsKKworICAgIGlmICghbV9kZWJ1Z2dhYmxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBkaXNwYXRjaFN5bmNPbkRlYnVnZ2FibGUoXnsKKyAgICAgICAgaWYgKCFtX2RlYnVnZ2Fi
bGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBpZiAobV9kZWJ1Z2dhYmxlLT5oYXNMb2NhbERlYnVnZ2VyKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgbV9kZWJ1Z2dhYmxlLT5jb25uZWN0KHRoaXMpOworICAgICAgICBt
X2Nvbm5lY3RlZCA9IHRydWU7CisgICAgfSk7CisKKyAgICByZXR1cm4gbV9jb25uZWN0ZWQ7Cit9
CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmNsb3NlRnJvbURl
YnVnZ2FibGUoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2FibGVMb2NrKTsK
KworICAgIG1fZGVidWdnYWJsZSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAgICByZWYoKTsKKyAgICBkaXNwYXRj
aEFzeW5jT25EZWJ1Z2dhYmxlKF57CisgICAgICAgIHsKKyAgICAgICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX2RlYnVnZ2FibGVMb2NrKTsKKworICAgICAgICAgICAgaWYgKG1fZGVidWdnYWJs
ZSkgeworICAgICAgICAgICAgICAgIGlmIChtX2Nvbm5lY3RlZCkKKyAgICAgICAgICAgICAgICAg
ICAgbV9kZWJ1Z2dhYmxlLT5kaXNjb25uZWN0KCk7CisKKyAgICAgICAgICAgICAgICBtX2RlYnVn
Z2FibGUgPSBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGRlcmVm
KCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b246OnNlbmRNZXNzYWdlVG9CYWNrZW5kKE5TU3RyaW5nICptZXNzYWdlKQoreworICAgIHJlZigp
OworICAgIGRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUoXnsKKyAgICAgICAgeworICAgICAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGVidWdnYWJsZUxvY2spOworCisgICAgICAgICAgICBp
ZiAobV9kZWJ1Z2dhYmxlKQorICAgICAgICAgICAgICAgIG1fZGVidWdnYWJsZS0+ZGlzcGF0Y2hN
ZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKG1lc3NhZ2UpOworICAgICAgICB9CisgICAgICAgIGRl
cmVmKCk7CisgICAgfSk7Cit9CisKK2Jvb2wgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb246OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS5zZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQo
aWRlbnRpZmllcigpLCBtZXNzYWdlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNw
ZWN0b3JYUENXcmFwcGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmgKc2ltaWxhcml0eSBpbmRleCA1MCUKY29w
eSBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
WFBDV3JhcHBlci5oCmNvcHkgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oCmluZGV4IDNmOTQ0ZWMuLjBiZjM2YWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5z
cGVjdG9yWFBDV3JhcHBlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzIgKzIzLDQ5IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaWZuZGVmIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb25faAorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uX2gKKworI2ltcG9y
dCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbXBvcnQgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lt
cG9ydCA8eHBjL3hwYy5oPgogCi1AY2xhc3MgV2ViSW5zcGVjdG9yWFBDV3JhcHBlcjsKLQotQHBy
b3RvY29sIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJEZWxlZ2F0ZSA8TlNPYmplY3Q+Ci0tICh2b2lk
KXhwY0Nvbm5lY3Rpb246KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uIHJlY2Vp
dmVkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5
ICopdXNlckluZm87Ci0tICh2b2lkKXhwY0Nvbm5lY3Rpb25GYWlsZWQ6KFdlYkluc3BlY3RvclhQ
Q1dyYXBwZXIgKiljb25uZWN0aW9uOwotQG9wdGlvbmFsCi0tICh2b2lkKXhwY0Nvbm5lY3Rpb246
KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uIHVuaGFuZGxlZE1lc3NhZ2U6KHhw
Y19vYmplY3RfdCltZXNzYWdlOwotQGVuZAotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclhQQ1dy
YXBwZXIgOiBOU09iamVjdAotewotICAgIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdh
dGU+IF9kZWxlZ2F0ZTsKLSAgICB4cGNfY29ubmVjdGlvbl90IF9jb25uZWN0aW9uOwotICAgIE5T
U3RyaW5nICpfdGFnOwotfQotCi0tIChXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopaW5pdFdpdGhD
b25uZWN0aW9uOih4cGNfY29ubmVjdGlvbl90KWNvbm5lY3Rpb247Ci0tICh2b2lkKWNsb3NlOwot
LSAodm9pZClzZW5kTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNE
aWN0aW9uYXJ5ICopdXNlckluZm87Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGlk
IDxXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGU+IGRlbGVnYXRlOwotQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb247Ci1AcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgYXZhaWxhYmxlOwotQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIE5TU3RyaW5nICp0YWc7Ci0KLUBlbmQKK09CSkNfQ0xBU1MgTlNTdHJpbmc7
CitPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2Ns
YXNzIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24geworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24pOworCitwdWJsaWM6CisgICAgY2xhc3Mg
Q2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgeHBjQ29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uKiwgTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkg
KnVzZXJJbmZvKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uRmFpbGVk
KFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB4cGNDb25uZWN0aW9uVW5oYW5kbGVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uKiwgeHBjX29iamVjdF90KSA9IDA7CisgICAgfTsKKworICAgIFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCwgQ2xpZW50Kik7CisgICAgdmlydHVhbCB+UmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbigpOworCisgICAgdm9pZCBjbG9zZSgpOworICAgIHZv
aWQgc2VuZE1lc3NhZ2UoTlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJ
bmZvKTsKKworcHJpdmF0ZToKKyAgICBOU0RpY3Rpb25hcnkgKmRlc2VyaWFsaXplTWVzc2FnZSh4
cGNfb2JqZWN0X3QpOworICAgIHZvaWQgaGFuZGxlRXZlbnQoeHBjX29iamVjdF90KTsKKworICAg
IHhwY19jb25uZWN0aW9uX3QgbV9jb25uZWN0aW9uOworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9x
dWV1ZTsKKyAgICBDbGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCisKKyNlbmRpZiAvLyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uX2gKKworI2VuZGlm
IC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQxNjk5
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KQEAgLTAsMCArMSwxNDYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCIKKworI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisKKyNpZiBfX2hhc19pbmNsdWRlKDxDb3Jl
Rm91bmRhdGlvbi9DRlhQQ0JyaWRnZS5oPikKKyNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGWFBD
QnJpZGdlLmg+CisjZWxzZQorZXh0ZXJuICJDIiB4cGNfb2JqZWN0X3QgX0NGWFBDQ3JlYXRlWFBD
TWVzc2FnZVdpdGhDRk9iamVjdChDRlR5cGVSZWYpOworZXh0ZXJuICJDIiBDRlR5cGVSZWYgX0NG
WFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4cGNfb2JqZWN0X3QpOworI2VuZGlmCisK
K25hbWVzcGFjZSBJbnNwZWN0b3IgeworCisvLyBDb25zdGFudHMgcHJpdmF0ZSB0byB0aGlzIGZp
bGUgZm9yIG1lc3NhZ2Ugc2VyaWFsaXphdGlvbiBvbiBib3RoIGVuZHMuCisjZGVmaW5lIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25NZXNzYWdlTmFtZUtleSBAIm1lc3NhZ2VOYW1lIgorI2Rl
ZmluZSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uVXNlckluZm9LZXkgQCJ1c2VySW5mbyIK
KyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5
ICJtc2dEYXRhIgorCitSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgQ2xpZW50KiBjbGll
bnQpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fcXVldWUoZGlzcGF0
Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuSmF2YVNjcmlwdENvcmUucmVtb3RlLWluc3BlY3Rv
ci14cGMtY29ubmVjdGlvbiIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpCisgICAgLCBtX2NsaWVu
dChjbGllbnQpCit7CisgICAgeHBjX3JldGFpbihtX2Nvbm5lY3Rpb24pOworICAgIHhwY19jb25u
ZWN0aW9uX3NldF90YXJnZXRfcXVldWUobV9jb25uZWN0aW9uLCBtX3F1ZXVlKTsKKyAgICBSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiB3ZWFrVGhpcyA9IHRoaXM7CisgICAgeHBjX2Nvbm5l
Y3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBvYmpl
Y3QpIHsKKyAgICAgICAgd2Vha1RoaXMtPmhhbmRsZUV2ZW50KG9iamVjdCk7CisgICAgfSk7Cisg
ICAgeHBjX2Nvbm5lY3Rpb25fcmVzdW1lKG1fY29ubmVjdGlvbik7Cit9CisKK1JlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb246On5SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKCkKK3sKKyAg
ICBBU1NFUlQoIW1fY2xpZW50KTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7Cit9CisKK3Zv
aWQgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAgIGlmICghbV9j
b25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICB4cGNfY29ubmVjdGlvbl9jYW5jZWwo
bV9jb25uZWN0aW9uKTsKKyAgICB4cGNfcmVsZWFzZShtX2Nvbm5lY3Rpb24pOworICAgIG1fY29u
bmVjdGlvbiA9IE5VTEw7CisKKyAgICBkaXNwYXRjaF9yZWxlYXNlKG1fcXVldWUpOworICAgIG1f
cXVldWUgPSBOVUxMOworCisgICAgbV9jbGllbnQgPSBudWxscHRyOworfQorCitOU0RpY3Rpb25h
cnkgKlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSh4cGNf
b2JqZWN0X3Qgb2JqZWN0KQoreworICAgIGlmICh4cGNfZ2V0X3R5cGUob2JqZWN0KSAhPSBYUENf
VFlQRV9ESUNUSU9OQVJZKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgeHBjX29iamVjdF90
IHhwY0RpY3Rpb25hcnkgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFsdWUob2JqZWN0LCBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXkpOworICAgIGlmICgheHBj
RGljdGlvbmFyeSB8fCB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgIT0gWFBDX1RZUEVfRElD
VElPTkFSWSkgeworICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+
eHBjQ29ubmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UodGhpcywgb2JqZWN0KTsKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICB9CisKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBzdGF0aWNf
Y2FzdDxOU0RpY3Rpb25hcnkgKj4oX0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4
cGNEaWN0aW9uYXJ5KSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkaWN0aW9uYXJ5LCAiVW5h
YmxlIHRvIGRlc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7CisgICAgcmV0dXJuIFtkaWN0aW9uYXJ5
IGF1dG9yZWxlYXNlXTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpo
YW5kbGVFdmVudCh4cGNfb2JqZWN0X3Qgb2JqZWN0KQoreworICAgIGlmICghbV9jb25uZWN0aW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoeHBjX2dldF90eXBlKG9iamVjdCkgPT0gWFBD
X1RZUEVfRVJST1IpIHsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGll
bnQtPnhwY0Nvbm5lY3Rpb25GYWlsZWQodGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBOU0RpY3Rpb25hcnkgKmRhdGFEaWN0aW9uYXJ5ID0gZGVzZXJpYWxpemVNZXNzYWdlKG9i
amVjdCk7CisgICAgaWYgKCFkYXRhRGljdGlvbmFyeSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
TlNTdHJpbmcgKm1lc3NhZ2UgPSBbZGF0YURpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OlJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb25NZXNzYWdlTmFtZUtleV07CisgICAgTlNEaWN0aW9uYXJ5ICp1
c2VySW5mbyA9IFtkYXRhRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6UmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvblVzZXJJbmZvS2V5XTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT54cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKHRoaXMsIG1lc3NhZ2UsIHVzZXJJbmZv
KTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShO
U1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgaWYg
KCFtX2Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKmRpY3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVj
dDptZXNzYWdlTmFtZSBmb3JLZXk6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1lc3NhZ2VO
YW1lS2V5XTsKKyAgICBpZiAodXNlckluZm8pCisgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVj
dDp1c2VySW5mbyBmb3JLZXk6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5
XTsKKworICAgIHhwY19vYmplY3RfdCB4cGNEaWN0aW9uYXJ5ID0gX0NGWFBDQ3JlYXRlWFBDTWVz
c2FnZVdpdGhDRk9iamVjdCgoQ0ZEaWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkpOworICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoeHBjRGljdGlvbmFyeSAmJiB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFy
eSkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSwgIlVuYWJsZSB0byBzZXJpYWxpemUgeHBjIG1lc3Nh
Z2UiKTsKKyAgICBpZiAoIXhwY0RpY3Rpb25hcnkpCisgICAgICAgIHJldHVybjsKKworICAgIHhw
Y19vYmplY3RfdCBtc2cgPSB4cGNfZGljdGlvbmFyeV9jcmVhdGUoTlVMTCwgTlVMTCwgMCk7Cisg
ICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKG1zZywgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5LCB4cGNEaWN0aW9uYXJ5KTsKKyAgICB4cGNfcmVsZWFz
ZSh4cGNEaWN0aW9uYXJ5KTsKKworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShtX2Nv
bm5lY3Rpb24sIG1zZyk7CisKKyAgICB4cGNfcmVsZWFzZShtc2cpOworfQorCit9IC8vIG5hbWVz
cGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IGJhM2Q0MjIuLmIzMzdhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEyNSw2ICsxMjUsMTEgQEAKICNpbmNsdWRlICJKU1By
b21pc2VSZXNvbHZlclByb3RvdHlwZS5oIgogI2VuZGlmIC8vIEVOQUJMRShQUk9NSVNFUykKIAor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZS5oIgorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3Rvci5oIgorI2VuZGlmCisKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5sdXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xODcsNiAr
MTkyLDEyIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSkK
IAogICAgIG1fZGVidWdnZXIgPSAwOwogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisg
ICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVj
dERlYnVnZ2FibGU+KCp0aGlzKTsKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPmluaXQoKTsK
KyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQodHJ1
ZSk7CisjZW5kaWYKKwogICAgIHJlc2V0KHByb3RvdHlwZSgpKTsKIH0KIApAQCAtNzYwLDQgKzc3
MSwzMSBAQCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFs
Q29kZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLAogICAgIHJldHVybiB1bmxpbmtlZENvZGVC
bG9jazsKIH0KIAordm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0UmVtb3RlRGVidWdnaW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpCit7CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9p
bnNwZWN0b3JEZWJ1Z2dhYmxlLT5zZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKGVuYWJsZWQpOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CisjZW5kaWYKK30KKworYm9vbCBKU0ds
b2JhbE9iamVjdDo6cmVtb3RlRGVidWdnaW5nRW5hYmxlZCgpIGNvbnN0Cit7CisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisgICAgcmV0dXJuIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+cmVt
b3RlRGVidWdnaW5nQWxsb3dlZCgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
K30KKwordm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgbV9uYW1lID0gbmFtZTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAg
IG1faW5zcGVjdG9yRGVidWdnYWJsZS0+dXBkYXRlKCk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAppbmRleCA0YmQ3NDQ2Li42MzFmYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTU4LDYgKzU4LDcgQEAgY2xhc3MgRnVuY3Rp
b25FeGVjdXRhYmxlOwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBHZXR0ZXJTZXR0
ZXI7CiBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CitjbGFzcyBKU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGU7CiBjbGFzcyBKU1Byb21pc2VQcm90b3R5cGU7CiBjbGFzcyBKU1Byb21pc2VSZXNvbHZlclBy
b3RvdHlwZTsKIGNsYXNzIEpTU3RhY2s7CkBAIC0yMjksOCArMjMwLDE0IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgCiAgICAgdm9pZCogbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6VGFibGVTaXpl
XTsgLy8gU3BlY2lhbCBwb2ludGVycyB1c2VkIGJ5IHRoZSBMTEludCBhbmQgSklULgogCisgICAg
U3RyaW5nIG1fbmFtZTsKKwogICAgIERlYnVnZ2VyKiBtX2RlYnVnZ2VyOwogCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisgICAgc3RkOjp1bmlxdWVfcHRyPEpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZT4gbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlOworI2VuZGlmCisKICAgICBSZWZQdHI8V2F0
Y2hwb2ludFNldD4gbV9tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludDsKICAgICBSZWZQ
dHI8V2F0Y2hwb2ludFNldD4gbV9oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQ7CiAgICAgUmVmUHRy
PFdhdGNocG9pbnRTZXQ+IG1fdmFySW5qZWN0aW9uV2F0Y2hwb2ludDsKQEAgLTQyMCw2ICs0Mjcs
MTIgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZS5n
ZXQoKTsgfQogI2VuZGlmIC8vIEVOQUJMRShQUk9NSVNFUykKIAorICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgc2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgcmVtb3RlRGVidWdnaW5nRW5hYmxlZCgpIGNvbnN0OworCisg
ICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgY29uc3QgU3RyaW5nJiBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisKICAgICBKU0FycmF5QnVmZmVyUHJvdG90
eXBlKiBhcnJheUJ1ZmZlclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJQ
cm90b3R5cGUuZ2V0KCk7IH0KIAogI2RlZmluZSBERUZJTkVfQUNDRVNTT1JTX0ZPUl9TSU1QTEVf
VFlQRShjYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJOYW1lLCBpbnN0YW5jZVR5cGUsIGpz
TmFtZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90
ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCnNpbWlsYXJpdHkgaW5kZXggNTMlCnJlbmFt
ZSBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
WFBDV3JhcHBlci5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCmluZGV4IDNmOTQ0ZWMuLmIyOGYzMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBD
V3JhcHBlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzLDMyICsyMyw0OSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1w
b3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSNpbXBvcnQgPHhwYy94cGMuaD4KKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCIKIAot
QGNsYXNzIFdlYkluc3BlY3RvclhQQ1dyYXBwZXI7CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCiAKLUBwcm90b2NvbCBXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGUgPE5TT2JqZWN0
PgotLSAodm9pZCl4cGNDb25uZWN0aW9uOihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopY29ubmVj
dGlvbiByZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5T
RGljdGlvbmFyeSAqKXVzZXJJbmZvOwotLSAodm9pZCl4cGNDb25uZWN0aW9uRmFpbGVkOihXZWJJ
bnNwZWN0b3JYUENXcmFwcGVyICopY29ubmVjdGlvbjsKLUBvcHRpb25hbAotLSAodm9pZCl4cGND
b25uZWN0aW9uOihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopY29ubmVjdGlvbiB1bmhhbmRsZWRN
ZXNzYWdlOih4cGNfb2JqZWN0X3QpbWVzc2FnZTsKLUBlbmQKKyNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUg
IlJlbW90ZUluc3BlY3Rvci5oIgogCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIg
OiBOU09iamVjdAordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKworbmFtZXNwYWNlIEpTQyB7
CisKK0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlKEpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCisgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxP
YmplY3QpCiB7Ci0gICAgaWQgPFdlYkluc3BlY3RvclhQQ1dyYXBwZXJEZWxlZ2F0ZT4gX2RlbGVn
YXRlOwotICAgIHhwY19jb25uZWN0aW9uX3QgX2Nvbm5lY3Rpb247Ci0gICAgTlNTdHJpbmcgKl90
YWc7CiB9CiAKLS0gKFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKilpbml0V2l0aENvbm5lY3Rpb246
KHhwY19jb25uZWN0aW9uX3QpY29ubmVjdGlvbjsKLS0gKHZvaWQpY2xvc2U7Ci0tICh2b2lkKXNl
bmRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkg
Kil1c2VySW5mbzsKK1N0cmluZyBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6Om5hbWUoKSBjb25z
dAoreworICAgIFN0cmluZyBuYW1lID0gbV9nbG9iYWxPYmplY3QubmFtZSgpOworICAgIHJldHVy
biBuYW1lLmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgiSlNDb250ZXh0IikgOiBuYW1lOworfQor
Cit2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgLy8gQ3JlYXRlIGFu
IEluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3RvckZyb250ZW5kLCBJbnNwZWN0b3JCYWNrZW5k
LCBhbmQgQWdlbnRzLgorICAgIC8vICJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRl
bmQiLgorfQorCit2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzY29ubmVjdCgpCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICAvLyAiSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlzY29ubmVjdEZyb250ZW5kIi4KK30KKwordm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6
OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmKQoreworICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgLy8gIkluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3Bh
dGNoTWVzc2FnZUZyb21Gcm9udGVuZCIKK30KIAotQHByb3BlcnR5IChub25hdG9taWMsIGFzc2ln
bikgaWQgPFdlYkluc3BlY3RvclhQQ1dyYXBwZXJEZWxlZ2F0ZT4gZGVsZWdhdGU7Ci1AcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbjsKLUBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBhdmFpbGFibGU7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKnRhZzsKK30gLy8gbmFtZXNwYWNlIEpTQwogCi1A
ZW5kCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lz
dHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVn
Z2FibGUuaApzaW1pbGFyaXR5IGluZGV4IDUzJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmgKcmVuYW1l
IHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5oCmluZGV4IGVhNWIyZTMuLjZmMmQ5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjkg
KzIzLDM5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+
CisjaWZuZGVmIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZV9oCisjZGVmaW5lIEpTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZV9oCiAKLWNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKKyNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKIAotQHByb3RvY29sIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5
RGVsZWdhdGUKLS0gKHZvaWQpZGlkUmVnaXN0ZXJDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVudCop
Y2xpZW50OwotLSAodm9pZClkaWRVbnJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQq
KWNsaWVudDsKLUBlbmQKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgiCisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKLUBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yQ2xp
ZW50UmVnaXN0cnkgOiBOU09iamVjdCB7Ci1AcHJpdmF0ZQotICAgIHVuc2lnbmVkIF9uZXh0QXZh
aWxhYmxlUGFnZUlkOwotICAgIEhhc2hNYXA8dW5zaWduZWQsIFdlYkluc3BlY3RvckNsaWVudCo+
IF9wYWdlQ2xpZW50TWFwOwotICAgIGlkIDxXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeURlbGVn
YXRlPiBfZGVsZWdhdGU7Ci19CituYW1lc3BhY2UgSlNDIHsKIAotQHByb3BlcnR5IChub25hdG9t
aWMsIGFzc2lnbikgaWQgPFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5RGVsZWdhdGU+IGRlbGVn
YXRlOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAKLSsgKFdlYkluc3BlY3RvckNsaWVudFJlZ2lz
dHJ5ICopc2hhcmVkUmVnaXN0cnk7CitjbGFzcyBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUgRklO
QUwgOiBwdWJsaWMgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUpOworcHVibGljOgor
ICAgIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZShKU0dsb2JhbE9iamVjdCYpOworICAgIH5KU0ds
b2JhbE9iamVjdERlYnVnZ2FibGUoKSB7IH0KIAotLSAodm9pZClyZWdpc3RlckNsaWVudDooV2Vi
SW5zcGVjdG9yQ2xpZW50KiljbGllbnQ7Ci0tICh2b2lkKXVucmVnaXN0ZXJDbGllbnQ6KFdlYklu
c3BlY3RvckNsaWVudCopY2xpZW50OwotLSAoV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnRGb3JQ
YWdlSWQ6KHVuc2lnbmVkKXBhZ2VJZDsKLS0gKE5TRGljdGlvbmFyeSAqKWluc3BlY3RhYmxlV2Vi
Vmlld3M7CisgICAgdmlydHVhbCBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6
OkRlYnVnZ2FibGVUeXBlIHR5cGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkphdmFTY3JpcHQ7IH0KIAotQGVuZAorICAgIHZp
cnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
TG9jYWxEZWJ1Z2dlcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIEpTR2xvYmFsT2JqZWN0JiBt
X2dsb2JhbE9iamVjdDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChKU0dsb2JhbE9iamVj
dERlYnVnZ2FibGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggNGU0NDZhZS4uYjE3MTE2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29u
bmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYxMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmNw
cDoKKyAgICAgICAgKiB3dGYvaW9zL1dlYkNvcmVUaHJlYWQuaDoKKyAgICAgICAgRXhwb3NlIFdl
YlRocmVhZFJ1bi9XZWJUaHJlYWRSdW5TeW5jIGlPUyBtZXRob2RzIGRlZmluZWQgaW4gV2ViQ29y
ZSB0aHJvdWdoCisgICAgICAgIFdURiBzbyB0aGF0IEphdmFTY3JpcHRDb3JlIGNhbiB1c2UgaXQu
IEFub3RoZXIgc3VjaCBtZXRob2QgYWxyZWFkeSBleGlzdGVkLgorCiAyMDEzLTExLTMwICBwZWF2
b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5dIFNvbWUg
SmF2YVNjcmlwdCBkYXRlIHRlc3RzIGFyZSBmYWlsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvaW9zL1dlYkNvcmVUaHJlYWQuY3BwIGIvU291cmNlL1dURi93dGYvaW9zL1dlYkNvcmVU
aHJlYWQuY3BwCmluZGV4IDQyNzQ0NjYuLmYwN2RjMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL2lvcy9XZWJDb3JlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29y
ZVRocmVhZC5jcHAKQEAgLTI4LDQgKzI4LDcgQEAKIAogI2lmIFVTRShXRUJfVEhSRUFEKQogV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVk
KSh2b2lkKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sICgqV2ViQ29yZVdlYlRocmVhZElzRW5h
YmxlZCkodm9pZCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCAoKldlYkNvcmVXZWJUaHJlYWRS
dW4pKHZvaWQgKF5ibG9jaykoKSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCAoKldlYkNvcmVX
ZWJUaHJlYWRSdW5TeW5jKSh2b2lkICheYmxvY2spKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5oIGIvU291cmNlL1dURi93dGYvaW9zL1dl
YkNvcmVUaHJlYWQuaAppbmRleCAxMGUyNmE3Li44MTljZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJD
b3JlVGhyZWFkLmgKQEAgLTMzLDYgKzMzLDkgQEAgZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogZXh0
ZXJuIGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKSh2b2lkKTsKK2V4
dGVybiBib29sICgqV2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCkodm9pZCk7CitleHRlcm4gdm9p
ZCAoKldlYkNvcmVXZWJUaHJlYWRSdW4pKHZvaWQgKF5ibG9jaykoKSk7CitleHRlcm4gdm9pZCAo
KldlYkNvcmVXZWJUaHJlYWRSdW5TeW5jKSh2b2lkICheYmxvY2spKCkpOwogCiAjaWZkZWYgX19j
cGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzOGI2YmEyLi5lYjRkMDcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjMgQEAKKzIwMTMtMTEtMjIgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgbWlzc2luZyBmb2xkZXJzIGFu
ZCBmaWxlcyB0byBYY29kZSBwcm9qZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjQ4MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwor
MjAxMy0xMS0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVj
dGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYxMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgYSBXZWJDb3JlOjpQYWdlIGEgIldlYiIg
UmVtb3RlIERlYnVnZ2FibGUuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdGVJbnNw
ZWN0aW9uQWxsb3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRSZW1vdGVJbnNwZWN0
aW9uQWxsb3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW1vdGVJbnNwZWN0b3JJbmZv
cm1hdGlvbkRpZENoYW5nZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFn
ZS9QYWdlRGVidWdnYWJsZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjpQYWdlRGVidWdnYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6bmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlRGVidWdnYWJsZTo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dh
YmxlOjpoYXNMb2NhbERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxl
Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjpkaXNjb25uZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjpkaXNwYXRjaE1lc3NhZ2VGcm9t
UmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OnNldElu
ZGljYXRpbmcpOgorICAgICAgICBNYWtlIGEgcGFnZSBhICJXZWIiIGRlYnVnZ2FibGUuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgIE1pc2MuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OmluZGljYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6aGlkZUluZGljYXRlKToKKyAg
ICAgICAgRm9yd2FyZCBpbmRpY2F0ZSBtZXRob2RzIHRvIFdlYktpdCBjbGllbnRzLgorCisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpkaWRDaGFuZ2VUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlz
cGF0Y2hEaWRDb21taXRMb2FkKToKKyAgICAgICAgUHVzaCB1cGRhdGVzIHdoZW4gcmVtb3RlIGRl
YnVnZ2FibGUgaW5mb3JtYXRpb24gbGlrZSB0aGUgUGFnZSdzCisgICAgICAgIFVSTCBvciB0aXRs
ZSBjaGFuZ2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
Lmg6CisgICAgICAgIFJlLWV4cG9ydCBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCBhcyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwKKyAgICAgICAgdG8gYXZvaWQg
bmVlZGxlc3NseSB1cGRhdGluZyBjb2RlIGFsbCBvdmVyIHRoZSBwbGFjZS4KKworICAgICAgICAq
IHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
eHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICBNYWtlIHRoZSAiSW5zcGVjdCBF
bGVtZW50IiBjb250ZXh0IG1lbnUgd29yayBjb3JyZWN0bHkgd2hlbiB0aGVyZSBpcyBhCisgICAg
ICAgIHJlbW90ZSBpbnNwZWN0b3IgaW5zdGVhZCBvZiBhIGxvY2FsIGluc3BlY3Rvci4KKwogMjAx
My0xMi0wMiAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEg
c2V0dGluZyB0byBvcHQgaW50byBhIG1vZGUgd2hlcmUgdGhlIGJhY2tncm91bmQgZXh0ZW5kcyBh
bmQgZml4ZWQgZWxlbWVudHMgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEzYWUyNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9G
V0RfSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggODg3MTgzNS4uMzlhNTJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0z
ODEwLDcgKzM4MTAsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggXAotCVNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBcCisJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmlu
ZGV4IDJiOGE1NDguLjkxNmUwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yODA2LDYgKzI4
MDYsNyBAQCBfX1pON1dlYkNvcmUzM1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldEV2
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorX19aTjdXZWJDb3JlNFBh
Z2UyNnNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkRWIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9y
Q29udHJvbGxlcjI3ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kRVJLTjNXVEY2U3RyaW5nRQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCmluZGV4IDdiN2MzOTEuLjYxMTYwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMjA5MzUsNyArMjA5MzUsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckRPTUFnZW50LmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZvcndhcmRpbmcuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JGcm9udGVuZEhvc3QuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCAyMDBiMWUyLi5jM2E5Yjc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvai5maWx0ZXJzCkBAIC0yNjUsNiArMjY1LDkgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9IkZv
cndhcmRpbmdIZWFkZXJzXGhlYXAiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezgyYmE5YmI0
LWVhYTAtNDk3My05YmIzLWEyNzY2N2ExYzE2N308L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9G
aWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3Ii
PgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezEzMmJhZGUyLTBhYWItNjI3NC0wYWRmZi1hZThh
ZWQ1YWVkNH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRlciBJ
bmNsdWRlPSJoaXN0b3J5Ij4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2ZjM5ZGVkZi0yZDNh
LTQxNGUtODNmZS03YmY2NGY5MTFjZmJ9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVy
PgpAQCAtMTIyMjIsNiArMTIyMjUsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9y
d2FyZGluZ0hlYWRlcnNcaGVhcFxTdHJvbmcuaCI+CiAgICAgICA8RmlsdGVyPkZvcndhcmRpbmdI
ZWFkZXJzXGhlYXA8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JGb3J3YXJkaW5n
LmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3I8L0ZpbHRlcj4K
KyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhpc3RvcnlcQmFj
a0ZvcndhcmRDbGllbnQuaCI+CiAgICAgICA8RmlsdGVyPmhpc3Rvcnk8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KQEAgLTEyNDI2LDcgKzEyNDMyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCI+CiAgICAgICA8Rmls
dGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIj4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGb3J3YXJkaW5nLmgiPgog
ICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
Ij4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBjNWY0MDk1Li5kMGE0NjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODUsNyArODg1LDcgQEAKIAkJMjA5QjQ1
NkIxNjc5NkE3RTAwRTU0RTRFIC8qIEpTQ3J5cHRvQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwOUI0NTZBMTY3OTZBN0UwMEU1NEU0RSAv
KiBKU0NyeXB0b0N1c3RvbS5jcHAgKi87IH07CiAJCTIwRDYyOTI2MTI1MzY5MEIwMDA4MTU0MyAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjBENjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAgKi87IH07CiAJCTIwRDYyOTI3MTI1MzY5MEIwMDA4MTU0MyAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYyOTI1MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCAqLzsgfTsKLQkJMjI3Nzc3NjAxMzQ1REVBOTAwOEVBNDU1IC8qIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjI3Nzc3NUYxMzQ1REVBOTAwOEVBNDU1IC8qIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTIyNzc3NzYwMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGb3J3YXJkaW5nLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjc3Nzc1RjEz
NDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRm9yd2FyZGluZy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTIyOEMyODQ1MTBEODI1MDAwMDlEMEQw
RSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyMjky
QjI3QzEzNTY2Njk0MDBDRjExRUYgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI5MkIyN0IxMzU2NjY5NDAwQ0Yx
MUVGIC8qIEltYWdlQnVmZmVyRGF0YUNHLmNwcCAqLzsgfTsKIAkJMjJCRDlGN0YxMzUzNjI1QzAw
OUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjJCRDlGN0QxMzUzNjI1QzAwOUJEMTAyIC8qIEltYWdlQnVmZmVy
RGF0YS5oICovOyB9OwpAQCAtMzUyMyw2ICszNTIzLDggQEAKIAkJQTU1NkMyODkxODMyMDZBODAw
OENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NTZDMjg3MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTU3MzJCMEExMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzMy
QjA4MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5jcHAgKi87IH07CiAJCUE1NzMy
QjBCMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8q
IERhdGVDb21wb25lbnRzLmggKi87IH07CisJCUE1QTJBRjBCMTgyOTczNDMwMERFMTcyOSAvKiBQ
YWdlRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUEyQUYwOTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwICov
OyB9OworCQlBNUEyQUYwQzE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjBBMTgyOTcz
NDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICovOyB9OwogCQlBNUFCQjc4NzEzQjkwNEJD
MDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyog
TGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi87IH07CiAJCUE1QUM0QUVGMTgzMzY5NzUwMDcx
MTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFDNEFFRDE4MzM2OTc1MDA3MTE0RTAgLyog
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwICovOyB9OwogCQlBNUFDNEFGMDE4MzM2OTc1
MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUM0QUVFMTgzMzY5NzUwMDcxMTRFMCAv
KiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NTAyLDcgKzc1MDQsNyBAQAogCQkyMDlCNDU2QTE2
Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNDcnlwdG9DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyMEQ2MjkyNDEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwRDYy
OTI1MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGb3J3YXJkaW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckZvcndhcmRpbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjI4QzI4NDQxMEQ4MjUwMDAwOUQwRDBFIC8qIFNj
cmlwdFdyYXBwYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRX
cmFwcGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjI5MkIyN0IxMzU2NjY5
NDAwQ0YxMUVGIC8qIEltYWdlQnVmZmVyRGF0YUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyRGF0YUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjJCRDlGN0QxMzUzNjI1QzAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlckRhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzI0LDYgKzEwMzI2LDEyIEBACiAJCUE1NTZD
Mjg3MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckFnZW50UmVnaXN0cnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVD
b21wb25lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVD
b21wb25lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3MzJCMDkxMzZB
MTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE1OTNDRjcyMTg0MDJDRTkwMEJGQ0UyNyAvKiBwcm90b2NvbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IHByb3RvY29sOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y3MzE4NDAyRDRCMDBCRkNFMjcgLyog
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IENvZGVHZW5lcmF0
b3JJbnNwZWN0b3IucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjc0MTg0
MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y3NTE4NDAyRDRCMDBCRkNFMjcgLyogY29tYmluZS1q
YXZhc2NyaXB0LXJlc291cmNlcy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSAiY29tYmluZS1qYXZhc2Ny
aXB0LXJlc291cmNlcy5wbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QTJBRjA5
MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlRGVidWdnYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlRGVidWdnYWJsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGlu
ZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNUFDNEFFRDE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFDNEFFRTE4
MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NDE4LDcgKzE0NDI2LDExIEBACiAJCTFDODFC
OTREMEU5NzMyRDkwMDI2NkUwNyAvKiBpbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE1OTNDRjcyMTg0MDJDRTkwMEJGQ0UyNyAvKiBwcm90
b2NvbCAqLywKIAkJCQlBNTE4MjI1MzE3RTI4Q0YxMDBBOUJBMUQgLyogU2NyaXB0cyAqLywKKwkJ
CQlBNTkzQ0Y3MzE4NDAyRDRCMDBCRkNFMjcgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAq
LywKKwkJCQlBNTkzQ0Y3NDE4NDAyRDRCMDBCRkNFMjcgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rv
clN0cmluZ3MucHkgKi8sCisJCQkJQTU5M0NGNzUxODQwMkQ0QjAwQkZDRTI3IC8qIGNvbWJpbmUt
amF2YXNjcmlwdC1yZXNvdXJjZXMucGwgKi8sCiAJCQkJRjM1QUU1QUIxNDkyNUY1QjAwNEQ1Nzc2
IC8qIEJpbmRpbmdWaXNpdG9ycy5oICovLAogCQkJCTJERjJFOUQ0MTY2RTM5NzQwMDM1QkVGMiAv
KiBDb25zb2xlQVBJVHlwZXMuaCAqLywKIAkJCQk0MUYwNjE4RDBGNUYwNjk4MDBBMDdFQUMgLyog
Q29uc29sZU1lc3NhZ2UuY3BwICovLApAQCAtMTQ0ODQsNyArMTQ0OTYsNyBAQAogCQkJCTUwNEFB
Q0NDMTgzNDQ1NTkwMEUzRDlCQyAvKiBJbnNwZWN0b3JOb2RlRmluZGVyLmggKi8sCiAJCQkJN0E3
NEVDQjgxMDE4MzlBNTAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgKi8s
CiAJCQkJN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5oICovLAotCQkJCTIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaCAqLywKKwkJCQkyMjc3Nzc1RjEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9y
Rm9yd2FyZGluZy5oICovLAogCQkJCUYzNDRDNzEyMTEyNUI4MkMwMEYyNkVFRSAvKiBJbnNwZWN0
b3JGcm9udGVuZENsaWVudC5oICovLAogCQkJCUYzNDRDNzU3MTEyOTRGRjYwMEYyNkVFRSAvKiBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCAqLywKIAkJCQlGMzQ0Qzc1MjExMjk0RDlE
MDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oICovLApAQCAtMTU2OTAs
NiArMTU3MDIsOCBAQAogCQkJCUNEMDgyODVCMTc1NzI1MDgwMEVDNUZCNyAvKiBQYWdlQWN0aXZp
dHlBc3NlcnRpb25Ub2tlbi5oICovLAogCQkJCURBQUNCM0Q5MTZGMjQxNjQwMDY2NjEzNSAvKiBQ
YWdlQ29uc29sZS5jcHAgKi8sCiAJCQkJREFBQ0IzREExNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VD
b25zb2xlLmggKi8sCisJCQkJQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dh
YmxlLmNwcCAqLywKKwkJCQlBNUEyQUYwQTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2Fi
bGUuaCAqLywKIAkJCQk5MzAyQjBCQzBENzlGODI5MDBDN0VFODMgLyogUGFnZUdyb3VwLmNwcCAq
LywKIAkJCQk5MzAyQjBCRTBENzlGODJDMDBDN0VFODMgLyogUGFnZUdyb3VwLmggKi8sCiAJCQkJ
N0E2NzRCRDkwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5jcHAgKi8s
CkBAIC0yMzA0Miw2ICsyMzA1Niw3IEBACiAJCQkJRDAwMEVCQTMxMUJEQUZENDAwQzQ3NzI2IC8q
IEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEQ1OEVCQjE3
QjhGMTI4MDBDQkRDQTggLyogRWxlbWVudFRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTNCNzdBMzgwQURENzkyNTAwRUE0QjgxIC8qIEZyYW1lTG9hZGVyVHlwZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE1QTJBRjBDMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjU4NDM2ODYwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1lTG9hZFJl
cXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyOEQyMTRFMTIxMzFFRjQwMDU1RENGQyAvKiBG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTcyQUY3MDE4MEYy
ODk1MDBGQkFEQjkgLyogQ3J5cHRvS2V5VXNhZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjMzMzAs
NyArMjMzNDUsNyBAQAogCQkJCTdBNzRFQ0JCMTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDU4NTM0MTdGREU2RDkwMDVG
MkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc4
REEyMEUxNTIwRUI4QzAwNjE0MUMxIC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAq
LywKLQkJCQkyMjc3Nzc2MDEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsLmggaW4gSGVhZGVycyAqLywKKwkJCQkyMjc3Nzc2MDEzNDVERUE5MDA4RUE0NTUgLyogSW5z
cGVjdG9yRm9yd2FyZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM0NEM3MTQxMTI1QjgyQzAw
RjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlG
MzQ0Qzc1MzExMjk0RDlEMDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0EwRTc3MEYxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3Rv
ckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzc3NSw2ICsyNzc5MCw3IEBACiAJ
CQkJQjJBRkZDN0YwRDAwQTVDMTAwMzAwNzREIC8qIFNpbXBsZUZvbnREYXRhTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQzVBMUVBN0MxNTJCQ0YwNDAwNEQwMEI2IC8qIFNpbXBsaWZ5TWFya3Vw
Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDAwRDdBNDE0QTNGNjE5MDA3MzQwMTEg
LyogU2luY1Jlc2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUEyQUYwQjE4Mjk3MzQz
MDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzMjdE
NjExMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0OUU5MTFDQzBFRjg2RDQ3MDA5RDBDQUYgLyogU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0MTUwRjlGMjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1
bWJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDJjYzk1YjEuLjI3YmQ3ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAg
LTU2LDEyICs1NiwyMCBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHNldFJl
bW90ZURlYnVnZ2luZ0VuYWJsZWQoZmFsc2UpOworI2VuZGlmCiB9CiAKIHZvaWQgSlNET01HbG9i
YWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNWYWx1ZSkKIHsK
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgdGhpc1ZhbHVlKTsKICAgICBBU1NFUlQoaW5o
ZXJpdHMoaW5mbygpKSk7CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBzZXRS
ZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGZhbHNlKTsKKyNlbmRpZgogfQogCiBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBKU0RPTUdsb2JhbE9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvcklu
c3BlY3RvclN0cmluZ3MucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRv
ckluc3BlY3RvclN0cmluZ3MucHkKaW5kZXggYmQxOGJmMi4uNDFlMzM4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3Ry
aW5ncy5weQpAQCAtMTc5LDcgKzE3OSw3IEBAIGJhY2tlbmRfY3BwID0gKAogCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJk
aW5nLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCkBAIC0yMDAsNyArMjAwLDcgQEAgZnJvbnRlbmRfY3BwID0gKAogCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKIAotI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwCmluZGV4IGE4M2YyNDIuLmJmYTRjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApAQCAt
MjksNyArMjksNyBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNzBhMTljOS4uNDRlN2VhMTZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCkBAIC01Miw2ICs1Miw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBoaWRlSGlnaGxpZ2h0KCkgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIGluZGljYXRlKCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIGhpZGVJbmRpY2F0aW9uKCkgeyB9CisKICAgICB2aXJ0dWFs
IGJvb2wgY2FuQ2xlYXJCcm93c2VyQ2FjaGUoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgdm9pZCBjbGVhckJyb3dzZXJDYWNoZSgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5DbGVh
ckJyb3dzZXJDb29raWVzKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBkNzUxNmE1Li5lOTU4OTY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCkBAIC04NCw2ICs4NCw5IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRy
b2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAgLCBtX3Bh
Z2UocGFnZSkKICAgICAsIG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKICAgICAs
IG1faXNVbmRlclRlc3QoZmFsc2UpCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAg
LCBtX2hhc1JlbW90ZUZyb250ZW5kKGZhbHNlKQorI2VuZGlmCiB7CiAgICAgT3duUHRyPEluc3Bl
Y3RvckFnZW50PiBpbnNwZWN0b3JBZ2VudFB0cihJbnNwZWN0b3JBZ2VudDo6Y3JlYXRlKHBhZ2Us
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0
KCkpKTsKICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnRQdHIuZ2V0KCk7CkBA
IC0xNDgsNyArMTUxLDYgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxl
cihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBtX2FnZW50cy5h
cHBlbmQocHJvZmlsZXJBZ2VudFB0ci5yZWxlYXNlKCkpOwogCiAgICAgbV9hZ2VudHMuYXBwZW5k
KEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSkpOwotCiAjZW5kaWYKIAogICAg
IG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JXb3JrZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5nZXQoKSkpOwpAQCAtMjAzLDYgKzIwNSwyNCBAQCB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFBhc3NPd25QdHI8SW5zcGVjdG9y
RnJvbnRlbgogICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgPSBpbnNwZWN0b3JGcm9udGVu
ZENsaWVudDsKIH0KIAorYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5k
KCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICByZXR1cm4gaGFz
RnJvbnRlbmQoKSAmJiAhbV9oYXNSZW1vdGVGcm9udGVuZDsKKyNlbHNlCisgICAgcmV0dXJuIGhh
c0Zyb250ZW5kKCk7CisjZW5kaWYKK30KKworYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNS
ZW1vdGVGcm9udGVuZCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisg
ICAgcmV0dXJuIG1faGFzUmVtb3RlRnJvbnRlbmQ7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorfQorCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc0luc3BlY3RvckZyb250
ZW5kQ2xpZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVu
dDsKQEAgLTIzMyw2ICsyNTMsMTEgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0
RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW4KIAogICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpm
cm9udGVuZENyZWF0ZWQoKTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlm
ICghbV9oYXNSZW1vdGVGcm9udGVuZCkKKyAgICAgICAgbV9wYWdlLT5yZW1vdGVJbnNwZWN0b3JJ
bmZvcm1hdGlvbkRpZENoYW5nZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKCkKQEAgLTI1MCwxMCArMjc1LDE3IEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKCkKICAgICBtX292ZXJsYXktPmZy
ZWVQYWdlKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZERlbGV0ZWQo
KTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVucmVnaXN0ZXJJbnN0cnVtZW50aW5n
QWdlbnRzKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSk7CisKKyNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKKyAgICBpZiAoIW1faGFzUmVtb3RlRnJvbnRlbmQpCisgICAgICAgIG1fcGFn
ZS0+cmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsKKyNlbmRpZgogfQogCiB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3coKQogeworICAgIEFTU0VSVCghaGFzUmVtb3Rl
RnJvbnRlbmQoKSk7CisKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0zMTUsNyArMzQ3LDggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0KE5vZGUq
IG5vZGUpCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNob3co
KTsKKyAgICBpZiAoIWhhc1JlbW90ZUZyb250ZW5kKCkpCisgICAgICAgIHNob3coKTsKIAogICAg
IG1fZG9tQWdlbnQtPmluc3BlY3Qobm9kZSk7CiB9CkBAIC0zNTIsNiArMzg1LDE1IEBAIE5vZGUq
IEluc3BlY3RvckNvbnRyb2xsZXI6OmhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fb3ZlcmxheS0+aGlnaGxpZ2h0ZWROb2RlKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpCit7CisgICAgLy8gRklYTUU6IEZv
ciBub24taU9TIGNsaWVudHMsIHdlIHNob3VsZCBoYXZlIEluc3BlY3Rvck92ZXJsYXkgZG8gc29t
ZXRoaW5nIGhlcmUuCisgICAgaWYgKGluZGljYXRpbmcpCisgICAgICAgIG1faW5zcGVjdG9yQ2xp
ZW50LT5pbmRpY2F0ZSgpOworICAgIGVsc2UKKyAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmhp
ZGVJbmRpY2F0aW9uKCk7Cit9CisKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIGJv
b2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6cHJvZmlsZXJFbmFibGVkKCkgY29uc3QKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDk1ZWM3
ZTMuLjgzOWY5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaApAQCAtOTIsMTcgKzkyLDI2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNo
TWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAgICAgYm9vbCBo
YXNGcm9udGVuZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7
IH0KKyAgICBib29sIGhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdDsKKyAgICBib29sIGhhc1JlbW90
ZUZyb250ZW5kKCkgY29uc3Q7CisKICAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwogICAgIHZv
aWQgc2V0UHJvY2Vzc0lkKGxvbmcpOwogICAgIHZvaWQgd2ViVmlld1Jlc2l6ZWQoY29uc3QgSW50
U2l6ZSYpOwogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgdm9pZCBzZXRIYXNS
ZW1vdGVGcm9udGVuZChib29sIGhhc1JlbW90ZSkgeyBtX2hhc1JlbW90ZUZyb250ZW5kID0gaGFz
UmVtb3RlOyB9CisjZW5kaWYKKwogICAgIHZvaWQgaW5zcGVjdChOb2RlKik7CiAgICAgdm9pZCBk
cmF3SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogICAgIHZvaWQgZ2V0SGlnaGxp
Z2h0KEhpZ2hsaWdodCopIGNvbnN0OwogICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwogICAgIE5v
ZGUqIGhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJv
b2wgaW5kaWNhdGluZyk7CisKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRP
YmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNVbmRlclRlc3Qo
KTsKQEAgLTE1Myw2ICsxNjIsMTAgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JDbGllbnQqIG1f
aW5zcGVjdG9yQ2xpZW50OwogICAgIEluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CiAg
ICAgYm9vbCBtX2lzVW5kZXJUZXN0OworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisg
ICAgYm9vbCBtX2hhc1JlbW90ZUZyb250ZW5kOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbW90
ZUNoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5n
LmgKc2ltaWxhcml0eSBpbmRleCA2MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdC9tYWMvV2Vi
SW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmgKcmVuYW1lIHRvIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5nLmgKaW5kZXggYzMyMGZk
ZS4uZjYwNjU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3Jl
bW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAsMTAgKzExLDEwIEBACiAgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQogICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
ICAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgogICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCiAgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCiAgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKQEAgLTIzLDIwICsyNCwxMyBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7Ci1AY2xhc3MgV2ViSW5zcGVjdG9yU2Vy
dmVyV2ViVmlld0Nvbm5lY3Rpb247CisjaWZuZGVmIEluc3BlY3RvckZvcndhcmRpbmdfaAorI2Rl
ZmluZSBJbnNwZWN0b3JGb3J3YXJkaW5nX2gKIAotQGludGVyZmFjZSBXZWJJbnNwZWN0b3JSZW1v
dGVDaGFubmVsIDogTlNPYmplY3QgewotQHByaXZhdGUKLSAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJX
ZWJWaWV3Q29ubmVjdGlvbiAqX3JlbW90ZTsKLSAgICBXZWJJbnNwZWN0b3JDbGllbnQqIF9sb2Nh
bDsKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCA6IHB1Ymxp
YyBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7IH07CiB9CiAKLSsgKFdlYklu
c3BlY3RvclJlbW90ZUNoYW5uZWwgKiljcmVhdGVDaGFubmVsRm9yUGFnZUlkOih1bnNpZ25lZClw
YWdlSWQgY29ubmVjdGlvbjooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKilj
b25uZWN0aW9uOwotCi0tICh2b2lkKWNsb3NlRnJvbUxvY2FsU2lkZTsKLS0gKHZvaWQpY2xvc2VG
cm9tUmVtb3RlU2lkZTsKLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAq
KW1lc3NhZ2U7Ci0tICh2b2lkKXNlbmRNZXNzYWdlVG9CYWNrZW5kOihOU1N0cmluZyAqKW1lc3Nh
Z2U7Ci0KLUBlbmQKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JGb3J3YXJkaW5nX2gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApp
bmRleCA2OGNhZGFiLi4zMjgwMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKQEAgLTM0LDggKzM0LDggQEAKIAogI2luY2x1ZGUg
Ikluc3BlY3RvcldvcmtlckFnZW50LmgiCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5n
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRl
ICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiVVJMLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5k
ZXggYzI5NGZlNC4uZWYyMzAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMzksOCArMzksOCBAQAogI2lu
Y2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2VudC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgot
I2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCmluZGV4IGYzNDc0YzMuLmI4ZjdmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzMxOSw2ICszMzE5LDExIEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgIG1fY2xp
ZW50LnNldE1haW5GcmFtZURvY3VtZW50UmVhZHkodHJ1ZSk7IC8vIHVwZGF0ZSBvYnNlcnZlcnMg
d2l0aCBuZXcgRE9NRG9jdW1lbnQKICAgICAgICAgbV9jbGllbnQuZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUobG9hZGVyLT50aXRsZSgpKTsKICAgICB9CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKyAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQorICAgICAgICBtX2ZyYW1lLnBh
Z2UoKS0+cmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsKKyNlbmRpZgogfQog
CiB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29ucyhJY29uVHlwZSB0eXBlKQpAQCAtMzM0
MCw5ICszMzQ1LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgp
CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWQoJm1fZnJhbWUs
IG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogCi0gICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUo
KSkKKyAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIG1fZnJhbWUucGFn
ZSgpLT5mZWF0dXJlT2JzZXJ2ZXIoKS0+ZGlkQ29tbWl0TG9hZCgpOwotCisjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCisgICAgICAgIG1fZnJhbWUucGFnZSgpLT5yZW1vdGVJbnNwZWN0b3JJ
bmZvcm1hdGlvbkRpZENoYW5nZSgpOworI2VuZGlmCisgICAgfQogfQogCiB2b2lkIEZyYW1lTG9h
ZGVyOjp0ZWxsQ2xpZW50QWJvdXRQYXN0TWVtb3J5Q2FjaGVMb2FkcygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggYzdhM2NkMi4uYTVlYTE4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApA
QCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgp
CiAjZW5kaWYgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICB9IGVsc2UgewogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiBmcmFt
ZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmhhc0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50KCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiAoZnJhbWUt
PnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5oYXNJbnNwZWN0b3JGcm9udGVuZENsaWVu
dCgpIHx8IGZyYW1lLT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aGFzUmVtb3RlRnJv
bnRlbmQoKSkpKSB7CiAjZW5kaWYKIAogICAgICAgICAgICAgICAgIC8vIEluIEdUSysgdW5hdmFp
bGFibGUgaXRlbXMgYXJlIG5vdCBoaWRkZW4gYnV0IGluc2Vuc2l0aXZlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKaW5kZXggOGQ5Mjk5Ny4uYWU3MjAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01OSw2ICs1
OSw3IEBACiAjaW5jbHVkZSAiUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIKICNpbmNsdWRl
ICJQYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZS5oIgorI2luY2x1ZGUgIlBhZ2VE
ZWJ1Z2dhYmxlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZVRocm90
dGxlci5oIgogI2luY2x1ZGUgIlBsdWdJbkNsaWVudC5oIgpAQCAtMTg2LDYgKzE4Nyw5IEBAIFBh
Z2U6OlBhZ2UoUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQogICAgICwgbV9zY3JpcHRlZEFuaW1h
dGlvbnNTdXNwZW5kZWQoZmFsc2UpCiAgICAgLCBtX3BhZ2VUaHJvdHRsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlVGhyb3R0bGVyPigqdGhpcykpCiAgICAgLCBtX2NvbnNvbGUoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlQ29uc29sZT4oKnRoaXMpKQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
ICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2Fi
bGU+KCp0aGlzKSkKKyNlbmRpZgogICAgICwgbV9sYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRh
dGVzQ291bnQoMCkgLy8gTk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMgZm9yIFNwYXRp
YWwgTmF2aWdhdGlvbiB0ZXN0aW5nLgogICAgICwgbV9mcmFtZXNIYW5kbGluZ0JlZm9yZVVubG9h
ZEV2ZW50KDApCiB7CkBAIC0yMDMsNiArMjA3LDEwIEBAIFBhZ2U6OlBhZ2UoUGFnZUNsaWVudHMm
IHBhZ2VDbGllbnRzKQogI2lmbmRlZiBOREVCVUcKICAgICBwYWdlQ291bnRlci5pbmNyZW1lbnQo
KTsKICNlbmRpZgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9pbnNwZWN0
b3JEZWJ1Z2dhYmxlLT5pbml0KCk7CisjZW5kaWYKIH0KIAogUGFnZTo6flBhZ2UoKQpAQCAtMTI5
MSw2ICsxMjk5LDIzIEBAIHZvaWQgUGFnZTo6YWRkRm9vdGVyV2l0aEhlaWdodChpbnQgZm9vdGVy
SGVpZ2h0KQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKK2Jvb2wg
UGFnZTo6cmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lu
c3BlY3RvckRlYnVnZ2FibGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKTsKK30KKwordm9pZCBQ
YWdlOjpzZXRSZW1vdGVJbnNwZWN0aW9uQWxsb3dlZChib29sIGFsbG93ZWQpCit7CisgICAgbV9p
bnNwZWN0b3JEZWJ1Z2dhYmxlLT5zZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKGFsbG93ZWQpOwor
fQorCit2b2lkIFBhZ2U6OnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCkgY29u
c3QKK3sKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnVwZGF0ZSgpOworfQorI2VuZGlmCisK
IHZvaWQgUGFnZTo6YWRkTGF5b3V0TWlsZXN0b25lcyhMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9u
ZXMpCiB7CiAgICAgLy8gSW4gdGhlIGZ1dHVyZSwgd2UgbWF5IHdhbnQgYSBmdW5jdGlvbiB0aGF0
IHJlcGxhY2VzIG1fbGF5b3V0TWlsZXN0b25lcyBpbnN0ZWFkIG9mIGp1c3QgYWRkaW5nIHRvIGl0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAppbmRleCBiNjc4Mzg4Li40NWNkNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAt
ODAsNiArODAsNyBAQCBjbGFzcyBNZWRpYUNhblN0YXJ0TGlzdGVuZXI7CiBjbGFzcyBOb2RlOwog
Y2xhc3MgUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47CiBjbGFzcyBQYWdlQ29uc29sZTsKK2Ns
YXNzIFBhZ2VEZWJ1Z2dhYmxlOwogY2xhc3MgUGFnZUdyb3VwOwogY2xhc3MgUGFnZVRocm90dGxl
cjsKIGNsYXNzIFBsdWdJbkNsaWVudDsKQEAgLTE3OCw2ICsxNzksMTIgQEAgcHVibGljOgogICAg
IHZvaWQgZGVjcmVtZW50U3ViZnJhbWVDb3VudCgpIHsgQVNTRVJUKG1fc3ViZnJhbWVDb3VudCk7
IC0tbV9zdWJmcmFtZUNvdW50OyB9CiAgICAgaW50IHN1YmZyYW1lQ291bnQoKSBjb25zdCB7IGNo
ZWNrU3ViZnJhbWVDb3VudENvbnNpc3RlbmN5KCk7IHJldHVybiBtX3N1YmZyYW1lQ291bnQ7IH0K
IAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGJvb2wgcmVtb3RlSW5zcGVjdGlv
bkFsbG93ZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKGJv
b2wgYWxsb3dlZCk7CisgICAgdm9pZCByZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5n
ZSgpIGNvbnN0OworI2VuZGlmCisKICAgICBDaHJvbWUmIGNocm9tZSgpIGNvbnN0IHsgcmV0dXJu
ICptX2Nocm9tZTsgfQogICAgIERyYWdDYXJldENvbnRyb2xsZXImIGRyYWdDYXJldENvbnRyb2xs
ZXIoKSBjb25zdCB7IHJldHVybiAqbV9kcmFnQ2FyZXRDb250cm9sbGVyOyB9CiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKQEAgLTUzMiw2ICs1MzksMTAgQEAgcHJpdmF0ZToKICAgICBjb25zdCBz
dGQ6OnVuaXF1ZV9wdHI8UGFnZVRocm90dGxlcj4gbV9wYWdlVGhyb3R0bGVyOwogICAgIGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxQYWdlQ29uc29sZT4gbV9jb25zb2xlOwogCisjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCisgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFBhZ2VEZWJ1Z2dhYmxl
PiBtX2luc3BlY3RvckRlYnVnZ2FibGU7CisjZW5kaWYKKwogICAgIEhhc2hTZXQ8U3RyaW5nPiBt
X3NlZW5QbHVnaW5zOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NlZW5NZWRpYUVuZ2luZXM7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMzA0MTA3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUGFnZURlYnVnZ2FibGUuaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5o
IgorI2luY2x1ZGUgIlBhZ2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitQYWdlRGVidWdnYWJsZTo6UGFnZURlYnVnZ2FibGUoUGFnZSYg
cGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCitTdHJpbmcgUGFnZURlYnVnZ2FibGU6
Om5hbWUoKSBjb25zdAoreworICAgIGlmICghbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCkp
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3BhZ2UubWFpbkZyYW1l
KCkuZG9jdW1lbnQoKS0+dGl0bGUoKTsKK30KKworU3RyaW5nIFBhZ2VEZWJ1Z2dhYmxlOjp1cmwo
KSBjb25zdAoreworICAgIGlmICghbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFN0cmluZyB1cmwgPSBtX3BhZ2UubWFpbkZyYW1l
KCkuZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7CisgICAgcmV0dXJuIHVybC5pc0VtcHR5KCkg
PyBBU0NJSUxpdGVyYWwoImFib3V0OmJsYW5rIikgOiB1cmw7Cit9CisKK2Jvb2wgUGFnZURlYnVn
Z2FibGU6Omhhc0xvY2FsRGVidWdnZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhZ2UuaW5z
cGVjdG9yQ29udHJvbGxlcigpLT5oYXNMb2NhbEZyb250ZW5kKCk7Cit9CisKK3ZvaWQgUGFnZURl
YnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGNo
YW5uZWwpCit7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9
IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+
c2V0SGFzUmVtb3RlRnJvbnRlbmQodHJ1ZSk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+Y29u
bmVjdEZyb250ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKj4oY2hhbm5lbCkpOworfQorCit2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpkaXNjb25uZWN0
KCkKK3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gbV9w
YWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5kaXNj
b25uZWN0RnJvbnRlbmQoKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5zZXRIYXNSZW1vdGVG
cm9udGVuZChmYWxzZSk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2Fn
ZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9wYWdl
Lmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3Nh
Z2UpOworfQorCit2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNh
dGluZykKK3sKKyAgICBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbmRpY2F0aW5n
KGluZGljYXRpbmcpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5z
cGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaApzaW1pbGFyaXR5IGlu
ZGV4IDU0JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3Rl
L1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oCnJlbmFtZSB0
byBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKaW5kZXggZjhiZjVlOC4uOTI0
MjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9X
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI2ICsyMyw0MSBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1AY2xhc3MgV2ViSW5zcGVjdG9yU2VydmVyOwotQGNsYXNzIFdlYkluc3BlY3Rv
clNlcnZlcldlYlZpZXdDb25uZWN0aW9uOwotQGNsYXNzIFdlYkluc3BlY3RvclhQQ1dyYXBwZXI7
CisjaWZuZGVmIFBhZ2VEZWJ1Z2dhYmxlX2gKKyNkZWZpbmUgUGFnZURlYnVnZ2FibGVfaAogCi1A
aW50ZXJmYWNlIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciA6
IE5TT2JqZWN0IHsKLUBwcml2YXRlCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyICpfc2VydmVyOyAv
LyB3ZWFrLCB0aGUgc2VydmVyIHNob3VsZCBuZXZlciBkZWFsbG9jYXRlLgotICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKl9vcGVuQ29ubmVjdGlvbnM7Ci0gICAgQk9PTCBfaGFzU2NoZWR1bGVkUHVz
aDsKLX0KKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotLSAoaWQpaW5pdFdpdGhTZXJ2
ZXI6KFdlYkluc3BlY3RvclNlcnZlciAqKXNlcnZlcjsKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAKLS0gKHZvaWQpY2xvc2VBbGxDb25uZWN0aW9uczsKK25hbWVzcGFjZSBXZWJDb3JlIHsK
IAotLSAodm9pZClwdXNoTGlzdGluZzsKLS0gKHZvaWQpcmVjZWl2ZWRNZXNzYWdlOihOU1N0cmlu
ZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKK2NsYXNz
IFBhZ2U7CiAKLS0gKHZvaWQpY29ubmVjdGlvbkNsb3Npbmc6KFdlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uICopY29ubmVjdGlvbjsKK2NsYXNzIFBhZ2VEZWJ1Z2dhYmxlIEZJTkFM
IDogcHVibGljIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUGFnZURlYnVnZ2FibGUpOworcHVibGljOgorICAgIFBhZ2VEZWJ1
Z2dhYmxlKFBhZ2UmKTsKKyAgICB+UGFnZURlYnVnZ2FibGUoKSB7IH0KIAotLSAodm9pZClzZW5k
TWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGlj
dGlvbmFyeSAqKXVzZXJJbmZvOworICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlOjpEZWJ1Z2dhYmxlVHlwZSB0eXBlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpXZWI7IH0KIAotQGVuZAor
ICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0
cmluZyB1cmwoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzTG9jYWxEZWJ1
Z2dlcigpIGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzY29ubmVjdCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3Nh
Z2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpIE9WRVJSSURFOwor
Citwcml2YXRlOgorICAgIFBhZ2UmIG1fcGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gIWRl
ZmluZWQoUGFnZURlYnVnZ2FibGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCBjYTk5NjlkLi5jN2ViYzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC01OSw3ICs1OSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvdW50
ZXJzLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JPdmVybGF5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk0OGM1ZjUuLmRhMjUzOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNw
ZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3Jl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEzLTEyLTAyICBCZXRoIERha2luICA8
YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzZXR0aW5nIHRvIG9wdCBpbnRvIGEg
bW9kZSB3aGVyZSB0aGUgYmFja2dyb3VuZCBleHRlbmRzIGFuZCBmaXhlZCBlbGVtZW50cyAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNk
N2Y1ZjIuLjk0MjVjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMzc4LDI0ICszNzgsMTEgQEAKIAkJQTEwQzFEOEQxODIwMzA1RTAw
MzY4ODNBIC8qIFdlYlBERlZpZXdQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwQzFEODgxODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBE
RlZpZXdQbGFjZWhvbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUExMEMxRDhFMTgyMDMwNUUwMDM2ODgzQSAvKiBXZWJQREZWaWV3UGxhY2Vo
b2xkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MTBDMUQ4OTE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tICovOyB9
OwogCQlBMTdBMTFCMTE4MERDODQ4MDBFNTQ5OEMgLyogV2ViUGx1Z2luUGFja2FnZVByaXZhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0ExMUIw
MTgwREM4NDgwMEU1NDk4QyAvKiBXZWJQbHVnaW5QYWNrYWdlUHJpdmF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1MjE0RkM3MTNCOTc1Qzgw
MDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTIxNEZDMTEzQjk3NUM4MDAwMDE1RUYgLyog
V2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oICovOyB9OwotCQlBNTIxNEZDODEzQjk3NUM4MDAw
MDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MjE0RkMyMTNCOTc1QzgwMDAwMTVFRiAvKiBX
ZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tICovOyB9OwotCQlBNTIyMDlGODEzQzUzRTc1MDA0
QkE3QjEgLyogV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUyMjA5RjcxM0M1M0U3NTAwNEJBN0IxIC8q
IFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNTVFMjBGRjE0RDcyNjRDMDAzMTU0OUUgLyogV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVFMjBGRDE0RDcyNjRDMDAzMTU0
OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggKi87
IH07Ci0JCUE1NUUyMTAwMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJW
aWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTVFMjBGRTE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9y
U2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tICovOyB9OwogCQlBNTYwOTQ2NjE0
RDhBRDI2MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU2MDk0NjQxNEQ4QUQyNjAwNzk5QThBIC8qIFdl
YkluZGljYXRlTGF5ZXIuaCAqLzsgfTsKIAkJQTU2MDk0NjcxNEQ4QUQyNjAwNzk5QThBIC8qIFdl
YkluZGljYXRlTGF5ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTYwOTQ2NTE0RDhBRDI2MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVMYXllci5tbSAq
LzsgfTsKIAkJQTU2ODdCREExMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU2ODdCRDgx
MzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5oICovOyB9OwogCQlBNTY4N0JE
QjEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU2ODdCRDkxMzVCNzkxQTAwNzRDQkNC
IC8qIFdlYk5vZGVIaWdobGlnaHRlci5tbSAqLzsgfTsKLQkJQTU3QzI4QTcxM0JBQTVBRDAwNzBB
Q0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhBMTEzQkFBNUFEMDA3MEFD
QUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCAqLzsgfTsKLQkJQTU3
QzI4QTgxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3
QzI4QTIxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uLm1tICovOyB9OwotCQlBNTdDMjhBOTEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9y
U2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTdDMjhBMzEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLmggKi87IH07Ci0J
CUE1N0MyOEFBMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhBNDEzQkFBNUFE
MDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tICovOyB9OwotCQlBNTdDMjhBQjEzQkFB
NUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QzI4QTUxM0JBQTVBRDAwNzBBQ0FCIC8q
IFdlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQlBNTdDMjhBQzEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVj
dG9yWFBDV3JhcHBlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTU3QzI4QTYxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIu
bSAqLzsgfTsKIAkJQTU3RTJGMjQxMjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3RhTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RTJGMjIx
MjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3RhTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1N0VCNzhGMTNCOTdBNEUwMDhENjkxRCAv
KiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RUI3OEQxM0I5N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3Bl
Y3RvckNsaWVudFJlZ2lzdHJ5LmggKi87IH07Ci0JCUE1N0VCNzkwMTNCOTdBNEUwMDhENjkxRCAv
KiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0VCNzhFMTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNw
ZWN0b3JDbGllbnRSZWdpc3RyeS5tbSAqLzsgfTsKIAkJQTU4QTU3OTkxNDNFNzI3MDAwMTI1RjUw
IC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNThBNTc5NzE0M0U3MjcwMDAxMjVGNTAgLyogV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLzsgfTsKIAkJQTU4QTU3OUExNDNFNzI3MDAwMTI1RjUw
IC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4QTU3OTgxNDNFNzI3MDAwMTI1RjUwIC8qIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tICovOyB9OwogCQlBNURFRkMwQTExRDUzMzFDMDA4ODUy
NzMgLyogV2ViU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNURFRkMwNzExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlP
cmlnaW4ubW0gKi87IH07CkBAIC03NzgsMjQgKzc2NSwxMSBAQAogCQlBMTBDMUQ4OTE4MjAzMDVF
MDAzNjg4M0EgLyogV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOyBwYXRoID0gaW9z
L1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CiAJCUExMEMxRDhGMTgyMDMwN0QwMDM2ODgzQSAvKiBXZWJLaXQuaU9TLmV4cCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuZXhwb3J0czsgbmFtZSA9IFdlYktpdC5pT1MuZXhwOyBwYXRoID0g
aW9zL1dlYktpdC5pT1MuZXhwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTdBMTFC
MDE4MERDODQ4MDBFNTQ5OEMgLyogV2ViUGx1Z2luUGFja2FnZVByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGx1Z2luUGFja2FnZVByaXZhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUyMTRGQzExM0I5NzVDODAwMDAxNUVGIC8qIFdlYklu
c3BlY3RvclJlbW90ZUNoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvclJl
bW90ZUNoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUyMTRGQzIxM0I5
NzVDODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1t
OyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUE1MjIwOUY3MTNDNTNFNzUwMDRCQTdCMSAvKiBXZWJJbnNwZWN0
b3JSZWxheURlZmluaXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdl
Ykluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaDsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JS
ZWxheURlZmluaXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NUUyMEZE
MTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9y
U2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmg7IHBhdGggPSByZW1vdGUvV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUE1NUUyMEZFMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JT
ZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNv
bnRyb2xsZXIubW07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb25Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTYwOTQ2
NDE0RDhBRDI2MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVMYXllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJJbmRpY2F0ZUxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1NjA5NDY1MTREOEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRpY2F0ZUxheWVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5kaWNhdGVMYXll
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU2ODdCRDgxMzVCNzkxQTAwNzRD
QkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJOb2RlSGlnaGxpZ2h0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTU2ODdCRDkxMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk5vZGVIaWdobGlnaHRlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTExM0JBQTVBRDAwNzBBQ0FCIC8q
IFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmg7IHBh
dGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTIxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24ubW07
IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0MyOEEzMTNCQUE1QUQwMDcwQUNBQiAvKiBX
ZWJJbnNwZWN0b3JTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2Vi
SW5zcGVjdG9yU2VydmVyLmg7IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0MyOEE0MTNCQUE1QUQwMDcwQUNBQiAvKiBX
ZWJJbnNwZWN0b3JTZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXIubW07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2Vy
dmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdDMjhBNTEzQkFBNUFEMDA3
MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmg7IHBhdGggPSByZW1vdGUvV2ViSW5z
cGVjdG9yWFBDV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdDMjhB
NjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLm9iamM7IG5hbWUgPSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLm07IHBhdGgg
PSByZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTdFMkYyMjEyMDc0OUU2MDAwNDhERjMgLyogV2ViUXVvdGFNYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlF1b3RhTWFuYWdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdFQjc4RDEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5z
cGVjdG9yQ2xpZW50UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaDsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JD
bGllbnRSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdFQjc4RTEz
Qjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3Ry
eS5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4QTU3OTcxNDNFNzI3MDAwMTI1RjUwIC8qIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1OEE1Nzk4MTQzRTcyNzAwMDEyNUY1MCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNURFRkMw
NzExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW4ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTZWN1cml0eU9yaWdpbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTIsNyArMTAyNiw2IEBACiAJCTFDNjhGNjNGMDk1QjVG
OUMwMEMyOTg0RSAvKiBXZWJJbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAotCQkJCUE1MjE0RkJGMTNCOTc1OTYwMDAwMTVFRiAvKiByZW1vdGUgKi8s
CiAJCQkJNUQ3QkY4MTIwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5oICovLAogCQkJ
CTVEN0JGODEzMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0gKi8sCiAJCQkJQjgw
NDE3NkQxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5kLmggKi8sCkBAIC0x
NTA5LDI2ICsxNDgyLDYgQEAKIAkJCW5hbWUgPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OwotCQlBNTIxNEZCRjEzQjk3NTk2MDAwMDE1RUYgLyogcmVtb3RlICovID0gewot
CQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlBNTdFQjc4RDEzQjk3QTRF
MDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCAqLywKLQkJCQlBNTdFQjc4
RTEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0gKi8sCi0J
CQkJQTUyMjA5RjcxM0M1M0U3NTAwNEJBN0IxIC8qIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlv
bnMuaCAqLywKLQkJCQlBNTIxNEZDMTEzQjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVjdG9yUmVt
b3RlQ2hhbm5lbC5oICovLAotCQkJCUE1MjE0RkMyMTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNw
ZWN0b3JSZW1vdGVDaGFubmVsLm1tICovLAotCQkJCUE1N0MyOEEzMTNCQUE1QUQwMDcwQUNBQiAv
KiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCAqLywKLQkJCQlBNTdDMjhBNDEzQkFBNUFEMDA3MEFDQUIg
LyogV2ViSW5zcGVjdG9yU2VydmVyLm1tICovLAotCQkJCUE1N0MyOEExMTNCQUE1QUQwMDcwQUNB
QiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oICovLAotCQkJCUE1N0My
OEEyMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlv
bi5tbSAqLywKLQkJCQlBNTVFMjBGRDE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2Vy
dmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggKi8sCi0JCQkJQTU1RTIwRkUxNEQ3MjY0
QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxl
ci5tbSAqLywKLQkJCQlBNTdDMjhBNTEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBD
V3JhcHBlci5oICovLAotCQkJCUE1N0MyOEE2MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0
b3JYUENXcmFwcGVyLm0gKi8sCi0JCQkpOwotCQkJbmFtZSA9IHJlbW90ZTsKLQkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUY1MkNBNkJEMDJERjlEMEYwMTg2MzVDQSAvKiBIVE1M
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE4MjUsMTUg
KzE3NzgsOCBAQAogCQkJCUExMEMxRDY0MTgyMDMwMEUwMDM2ODgzQSAvKiBXZWJDaHJvbWVDbGll
bnRJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVEN0JGODE0MEMyQTFEOTAwMDhDRTA2RCAvKiBX
ZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTA2NjkzRERDMEJGQkE4NTIwMDIxNjA3
MiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1N0VCNzhGMTNC
OTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjgwNDE3NkYxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5k
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QThGRjBEMTEwNzUwMjRBMDBBODBBMDggLyogV2ViSW5z
cGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUyMjA5RjgxM0M1M0U3NTAwNEJB
N0IxIC8qIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUE1MjE0RkM3MTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlBNTdDMjhBOTEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVj
dG9yU2VydmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTdDMjhBNzEzQkFBNUFEMDA3MEFDQUIg
LyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAot
CQkJCUE1NUUyMEZGMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1N0MyOEFCMTNCQUE1
QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5Mzk4MTA0MjA4MjRCRjAxMDA4REYwMzggLyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVs
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0QxRENBODEwNjU5MjhDMDA2OEY3RUYgLyogV2ViSlNQ
REZEb2MuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDg1MDgyNEJGMDEwMDhERjAzOCAvKiBX
ZWJLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMjI3NiwxMyArMjIyMiw3IEBACiAJ
CQkJNUQ3QkY4MTUwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTA2NjkzREREMEJGQkE4NTIwMDIxNjA3MiAvKiBXZWJJbnNwZWN0b3JDbGllbnQu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzdCMEM2NjBFQjI0NjREMDBBMjg1MDIgLyogV2ViSW5z
cGVjdG9yQ2xpZW50Q0YuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTU3RUI3OTAxM0I5N0E0RTAw
OEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjgwNDE3NzAxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5kLm1tIGlu
IFNvdXJjZXMgKi8sCi0JCQkJQTUyMTRGQzgxM0I5NzVDODAwMDAxNUVGIC8qIFdlYkluc3BlY3Rv
clJlbW90ZUNoYW5uZWwubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNTdDMjhBQTEzQkFBNUFEMDA3
MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTU3QzI4
QTgxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTU1RTIxMDAxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICov
LAotCQkJCUE1N0MyOEFDMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVy
Lm0gaW4gU291cmNlcyAqLywKIAkJCQlBMTBDMUQxOTE4MjAyRjlDMDAzNjg4M0EgLyogV2ViRGVm
YXVsdEZvcm1EZWxlZ2F0ZS5tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwRTQwODI0QkYwMTAw
OERGMDM4IC8qIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTEwQzFEOEIxODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZpZXdJT1MubW0gaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeS5oCmluZGV4IGYyZjY1ZmMu
LmNkMWNjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEJsYWNrQmVycnkuaApAQCAtMjEs
NyArMjEsNyBAQAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5X2gKIAogI2luY2x1
ZGUgIkluc3BlY3RvckNsaWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JPdmVybGF5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheUJsYWNrQmVycnkuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwppbmRleCA1NTJlNzZiLi41NGFhY2Ji
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTExLTE5ICBKb3NlcGggUGVj
b3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVz
aCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBK
YXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAg
IChXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisKIDIwMTMtMTAt
MjUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0
cmVhbSBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikgYW5kIGVuYWJsZSBvbiBpT1MgYW5kIE1hYwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudENGLmNwcAppbmRleCBjYTIyZmRlLi4xMjBlMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApA
QCAtOTEsMTIgKzkxLDEwIEBAIHN0YXRpYyB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBzZXR0aW5nKQogICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1
ZShjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpLmdldCgpLCBzZXR0aW5nLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKIH0KIAotI2lm
ICFFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5k
TWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiBk
b0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKG1fZnJvbnRlbmRQYWdlLCBtZXNzYWdlKTsK
IH0KLSNlbmRpZgogCiBib29sIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yQXR0YWNoRGlz
YWJsZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRFZmwuaAppbmRleCA4YmZlYjJkLi44NmJlODNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaApA
QCAtMzUsNyArMzUsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJJbnNw
ZWN0b3JDbGllbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5oIgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRHdGsuaAppbmRleCAzMWZkZTgwNS4uYzVkYWZlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKQEAgLTMw
LDcgKzMwLDcgQEAKICNkZWZpbmUgSW5zcGVjdG9yQ2xpZW50R3RrX2gKIAogI2luY2x1ZGUgIklu
c3BlY3RvckNsaWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgor
I2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmgiCiAjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9yLmgiCiAjaW5j
bHVkZSAid2Via2l0d2Vidmlldy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IGFiNDM2MzUuLmE2M2Jl
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0xMS0xOSAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGlu
dG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQpOgorCiAyMDEzLTExLTE4ICBD
b21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTU5NDU1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9p
b3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCmluZGV4IDVhY2MyZWUu
LmNhNzVkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KQEAgLTQyLDExICs0Miw2IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+CiAK
LSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVu
dFJlZ2lzdHJ5LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmgiCi0jZW5k
aWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdlYkluc3BlY3RvckNsaWVudDo6V2Vi
SW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCkBAIC01NCwyMyArNDksMTEgQEAgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqd2ViVmlldykKICAg
ICAsIG1faGlnaGxpZ2h0ZXIoQWRvcHROUywgW1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2NdIGlu
aXRXaXRoSW5zcGVjdGVkV2ViVmlldzp3ZWJWaWV3XSkKICAgICAsIG1fZnJvbnRlbmRQYWdlKDAp
CiAgICAgLCBtX2Zyb250ZW5kQ2xpZW50KDApCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
Ci0gICAgLCBtX3JlbW90ZUNoYW5uZWwoMCkKLSAgICAsIG1fcGFnZUlkKDApCi0jZW5kaWYKIHsK
LSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBbW1dlYkluc3BlY3RvckNsaWVudFJl
Z2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XSByZWdpc3RlckNsaWVudDp0aGlzXTsKLSNlbmRpZgogfQog
CiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKIHsKLSNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5
IHNoYXJlZFJlZ2lzdHJ5XSB1bnJlZ2lzdGVyQ2xpZW50OnRoaXNdOwotICAgIHRlYXJkb3duUmVt
b3RlQ29ubmVjdGlvbih0cnVlKTsKLSNlbmRpZgotCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKQEAg
LTExNiw5NCArOTksNiBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5n
Rm9yTm9kZShib29sIGVuYWJsZWQpCiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk9uTWFpblRocmVhZFdpdGhOYW1lOldlYkluc3Bl
Y3RvckRpZFN0b3BTZWFyY2hpbmdGb3JOb2RlIG9iamVjdDppbnNwZWN0b3JdOwogfQogCi0jcHJh
Z21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIFJlbW90ZSBXZWIgSW5zcGVjdG9yIEltcGxlbWVudGF0
aW9uCi0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLWJvb2wgV2ViSW5zcGVjdG9yQ2xp
ZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAg
IGlmIChtX3JlbW90ZUNoYW5uZWwpIHsKLSAgICAgICAgW21fcmVtb3RlQ2hhbm5lbCBzZW5kTWVz
c2FnZVRvRnJvbnRlbmQ6bWVzc2FnZV07Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
ICAgIC8vIGlPUyBkb2VzIG5vdCBoYXZlIGEgbG9jYWwgaW5zcGVjdG9yLiBUaGVyZSBzaG91bGQg
YmUgbm8gd2F5IHRvIHJlYWNoIHRoaXMuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLQotICAgIHJldHVybiBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRl
bmRQYWdlKG1fZnJvbnRlbmRQYWdlLCBtZXNzYWdlKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAg
ICBBU1NFUlQobV9yZW1vdGVDaGFubmVsKTsKLQotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2Vi
Vmlldyk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRjaE1lc3NhZ2VG
cm9tRnJvbnRlbmQobWVzc2FnZSk7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXR1
cFJlbW90ZUNvbm5lY3Rpb24oV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqcmVtb3RlQ2hhbm5l
bCkKLXsKLSAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgbG9jYWwgc2Vzc2lvbiwgZG8gbm90IGFs
bG93IGEgcmVtb3RlIHNlc3Npb24uCi0gICAgaWYgKGhhc0xvY2FsU2Vzc2lvbigpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgcmVtb3RlIHNlc3Np
b24sIGRvIG5vdCBhbGxvdyBhIG5ldyByZW1vdGUgc2Vzc2lvbi4KLSAgICBpZiAobV9yZW1vdGVD
aGFubmVsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX3JlbW90ZUNoYW5uZWwgPSBy
ZW1vdGVDaGFubmVsOwotCi0gICAgUGFnZSogcGFnZSA9IGNvcmUobV93ZWJWaWV3KTsKLSAgICBw
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVuZCh0aGlzKTsKLQotICAg
IC8vIEZvcmNlIGRldmVsb3BlciBleHRyYXMgdG8gYmUgZW5hYmxlZCBpbiBXZWJDb3JlIHdoZW4g
YSByZW1vdGUgY29ubmVjdGlvbiBzdGFydHMuCi0gICAgaWYgKHBhZ2UtPnNldHRpbmdzKCkpCi0g
ICAgICAgIHBhZ2UtPnNldHRpbmdzKCktPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnRlYXJk
b3duUmVtb3RlQ29ubmVjdGlvbihib29sIGZyb21Mb2NhbFNpZGUpCi17Ci0gICAgQVNTRVJUKFdl
YlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpKTsKLSAgICBpZiAoIW1fcmVtb3RlQ2hhbm5lbCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGZyb21Mb2NhbFNpZGUpCi0gICAgICAgIFttX3Jl
bW90ZUNoYW5uZWwgY2xvc2VGcm9tTG9jYWxTaWRlXTsKLQotICAgIFBhZ2UqIHBhZ2UgPSBjb3Jl
KG1fd2ViVmlldyk7Ci0gICAgaWYgKHBhZ2UpIHsKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5kaXNjb25uZWN0RnJvbnRlbmQoKTsKLQotICAgICAgICAvLyBSZXN0b3JlIGRl
dmVsb3BlciBleHRyYXMgc2V0dGluZyBpbiBXZWJDb3JlLgotICAgICAgICBpZiAocGFnZSAmJiBw
YWdlLT5zZXR0aW5ncygpKQotICAgICAgICAgICAgcGFnZS0+c2V0dGluZ3MoKS0+c2V0RGV2ZWxv
cGVyRXh0cmFzRW5hYmxlZChbW21fd2ViVmlldyBwcmVmZXJlbmNlc10gZGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZF0pOwotICAgIH0KLQotICAgIGlmIChmcm9tTG9jYWxTaWRlKQotICAgICAgICBbbV9y
ZW1vdGVDaGFubmVsIHJlbGVhc2VdOwotCi0gICAgbV9yZW1vdGVDaGFubmVsID0gMDsKLX0KLQot
Ym9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6Omhhc0xvY2FsU2Vzc2lvbigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fZnJvbnRlbmRQYWdlICE9IDA7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50
OjpjYW5CZVJlbW90ZWx5SW5zcGVjdGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21fd2ViVmll
dyBjYW5CZVJlbW90ZWx5SW5zcGVjdGVkXTsKLX0KLQotV2ViVmlldyAqV2ViSW5zcGVjdG9yQ2xp
ZW50OjppbnNwZWN0ZWRXZWJWaWV3KCkKLXsKLSAgICByZXR1cm4gbV93ZWJWaWV3OwotfQotI2Vu
ZGlmCi0KIAogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudCBJbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGZjN2QwNmQuLjVjYjgy
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxMy0xMS0xOSAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGlu
dG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNDYxMworCisgICAgICAgIFJlbW92ZSB0aGUgb2xkIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKSBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGll
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQpOgor
ICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnku
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNs
aWVudFJlZ2lzdHJ5Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUv
V2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYklu
c3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZl
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
U2VydmVyLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJ
bnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLm1tOiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5z
cGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xs
ZXIubW06IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0
b3JYUENXcmFwcGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9X
ZWJJbnNwZWN0b3JYUENXcmFwcGVyLm06IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0LmV4cDoK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1v
bkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgrW1dl
YlZpZXcgX2VuYWJsZVJlbW90ZUluc3BlY3Rvcl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9kaXNh
YmxlUmVtb3RlSW5zcGVjdG9yXSk6CisgICAgICAgICgrW1dlYlZpZXcgX2Rpc2FibGVBdXRvU3Rh
cnRSZW1vdGVJbnNwZWN0b3JdKToKKyAgICAgICAgKCtbV2ViVmlldyBfaXNSZW1vdGVJbnNwZWN0
b3JFbmFibGVkXSk6CisgICAgICAgICgrW1dlYlZpZXcgX2hhc1JlbW90ZUluc3BlY3RvclNlc3Np
b25dKToKKyAgICAgICAgKC1bV2ViVmlldyBhbGxvd3NSZW1vdGVJbnNwZWN0aW9uXSk6CisgICAg
ICAgICgtW1dlYlZpZXcgc2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbjpdKToKKyAgICAgICAgKC1b
V2ViVmlldyBzZXRJbmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOl0pOgorICAgICAgICAoLVtX
ZWJWaWV3IHNldEhvc3RBcHBsaWNhdGlvbkJ1bmRsZUlkOm5hbWU6XSk6CisgICAgICAgICgtW1dl
YlZpZXcgX2RpZENvbW1pdExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXdEYXRhLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5tbToKKyAgICAgICAgKC1b
V2ViVmlld1ByaXZhdGUgaW5pdF0pOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBkZWFsbG9j
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXdQcml2YXRlLmg6CisKKzIwMTMtMTEtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJ
bnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6
aW5kaWNhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWRlSW5kaWNhdGUpOgor
ICAgICAgICBIb29rIHVwIFdlYlZpZXcgaW5kaWNhdGlvbiB0aHJvdWdoIHRoaXMgbmV3IHBhdGgu
CisKIDIwMTMtMTEtMjggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBmZWF0dXJlOiBDU1MgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDE4
NzVhYzAuLjZlNzhhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMzgsMTAgKzEzOCw2IEBACiAj
aW1wb3J0ICJXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcuaCIKICNlbmRpZgogCi0jaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKLSNl
bmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKQEAgLTYyMSwxMiArNjE3LDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGkKICAgICBp
ZiAoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1bmMpCiAgICAgICAg
IC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgICAgICBDYWxsRnJhbWVMb2Fk
RGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1bmMsIHdl
YlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTopLCAoTlNT
dHJpbmcgKil0aXRsZS5zdHJpbmcoKSwgbV93ZWJGcmFtZS5nZXQoKSk7Ci0KLSNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKLSAgICBCT09MIGlzTWFpbkZyYW1lID0gW3dlYlZpZXcgbWFpbkZy
YW1lXSA9PSBtX3dlYkZyYW1lLmdldCgpOwotICAgIGlmIChpc01haW5GcmFtZSkKLSAgICAgICAg
W1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gcHVzaExpc3RpbmddOwotI2VuZGlm
CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMo
V2ViQ29yZTo6SWNvblR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDU1MWFmN2YuLjFlN2EwNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oCkBAIC0yNyw3ICsyNyw3IEBACiAgKi8KIAogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0
b3JDbGllbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oPgogCiAjaW1wb3J0IDx3dGYvRm9yd2Fy
ZC5oPgpAQCAtNzMsNiArNzMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdo
dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgT1ZFUlJJREU7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5kaWNhdGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgaGlkZUluZGljYXRpb24oKSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRT
ZWFyY2hpbmdGb3JOb2RlKGJvb2wpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIHNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKQEAgLTg1LDIyICs4OCw2
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVsZWFzZUZyb250ZW5kKCk7CiAKLSNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKLSAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0
cmluZyYpOwotCi0gICAgYm9vbCBzZXR1cFJlbW90ZUNvbm5lY3Rpb24oV2ViSW5zcGVjdG9yUmVt
b3RlQ2hhbm5lbCAqcmVtb3RlQ2hhbm5lbCk7Ci0gICAgdm9pZCB0ZWFyZG93blJlbW90ZUNvbm5l
Y3Rpb24oYm9vbCBmcm9tTG9jYWxTaWRlKTsKLQotICAgIHVuc2lnbmVkIHBhZ2VJZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZUlkOyB9Ci0gICAgdm9pZCBzZXRQYWdlSWQodW5zaWduZWQgcGFnZUlk
KSB7IG1fcGFnZUlkID0gcGFnZUlkOyB9Ci0KLSAgICBib29sIGhhc0xvY2FsU2Vzc2lvbigpIGNv
bnN0OwotCi0gICAgYm9vbCBjYW5CZVJlbW90ZWx5SW5zcGVjdGVkKCkgY29uc3Q7Ci0KLSAgICBX
ZWJWaWV3ICppbnNwZWN0ZWRXZWJWaWV3KCk7Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICBQYXNz
T3duUHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBj
cmVhdGVGcm9udGVuZFNldHRpbmdzKCk7CiAKQEAgLTEwOCwxMSArOTUsNiBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxXZWJOb2RlSGlnaGxpZ2h0ZXI+IG1faGlnaGxpZ2h0ZXI7CiAgICAgV2Vi
Q29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7CiAgICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQqIG1fZnJvbnRlbmRDbGllbnQ7Ci0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAg
ICBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICptX3JlbW90ZUNoYW5uZWw7Ci0gICAgdW5zaWdu
ZWQgbV9wYWdlSWQ7Ci0jZW5kaWYKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IGU0MzhjNmQuLmUy
NWViZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTU1LDExICs1NSw2IEBACiAjaW1wb3J0IDx3dGYvUGFz
c093blB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKLSNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLSNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmgiCi0j
aW1wb3J0ICJXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmgiCi0jZW5kaWYKLQogU09GVF9MSU5L
X1NUQUdFRF9GUkFNRVdPUksoV2ViSW5zcGVjdG9yVUksIFByaXZhdGVGcmFtZXdvcmtzLCBBKQog
CiAvLyBUaGUgbWFyZ2luIGZyb20gdGhlIHRvcCBhbmQgcmlnaHQgb2YgdGhlIGRvY2sgYnV0dG9u
IChzYW1lIGFzIHRoZSBmdWxsIHNjcmVlbiBidXR0b24pLgpAQCAtMTM1LDIzICsxMzAsMTEgQEAg
V2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqd2ViVmlldykK
ICAgICAsIG1faGlnaGxpZ2h0ZXIoYWRvcHROUyhbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10g
aW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OndlYlZpZXddKSkKICAgICAsIG1fZnJvbnRlbmRQYWdl
KDApCiAgICAgLCBtX2Zyb250ZW5kQ2xpZW50KDApCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi0gICAgLCBtX3JlbW90ZUNoYW5uZWwoMCkKLSAgICAsIG1fcGFnZUlkKDApCi0jZW5kaWYK
IHsKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBbW1dlYkluc3BlY3RvckNsaWVu
dFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XSByZWdpc3RlckNsaWVudDp0aGlzXTsKLSNlbmRpZgog
fQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKIHsKLSNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lz
dHJ5IHNoYXJlZFJlZ2lzdHJ5XSB1bnJlZ2lzdGVyQ2xpZW50OnRoaXNdOwotICAgIHRlYXJkb3du
UmVtb3RlQ29ubmVjdGlvbih0cnVlKTsKLSNlbmRpZgotCiAgICAgY2xvc2VJbnNwZWN0b3JGcm9u
dGVuZCgpOwogICAgIGRlbGV0ZSB0aGlzOwogfQpAQCAtMTk3LDYgKzE4MCwxNiBAQCB2b2lkIFdl
Ykluc3BlY3RvckNsaWVudDo6aGlkZUhpZ2hsaWdodCgpCiAgICAgW21faGlnaGxpZ2h0ZXIuZ2V0
KCkgaGlkZUhpZ2hsaWdodF07CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbmRpY2F0
ZSgpCit7CisgICAgW21fd2ViVmlldyBzZXRJbmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOllF
U107Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWRlSW5kaWNhdGlvbigpCit7Cisg
ICAgW21fd2ViVmlldyBzZXRJbmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOk5PXTsKK30KKwog
dm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFi
bGVkKQogewogICAgIFdlYkluc3BlY3RvciAqaW5zcGVjdG9yID0gW21fd2ViVmlldyBpbnNwZWN0
b3JdOwpAQCAtMjE1LDc4ICsyMDgsNiBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFz
ZUZyb250ZW5kKCkKICAgICBtX2Zyb250ZW5kUGFnZSA9IDA7CiB9CiAKLSNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIGlmIChtX3JlbW90ZUNoYW5uZWwp
IHsKLSAgICAgICAgW21fcmVtb3RlQ2hhbm5lbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6bWVzc2Fn
ZV07Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBkb0Rpc3BhdGNo
TWVzc2FnZU9uRnJvbnRlbmRQYWdlKG1fZnJvbnRlbmRQYWdlLCBtZXNzYWdlKTsKLX0KLQotdm9p
ZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKLXsKLSAgICBBU1NFUlQobV9yZW1vdGVDaGFubmVsKTsKLQotICAgIFBhZ2UqIHBh
Z2UgPSBjb3JlKG1fd2ViVmlldyk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5k
aXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7Ci19Ci0KLWJvb2wgV2ViSW5zcGVj
dG9yQ2xpZW50OjpzZXR1cFJlbW90ZUNvbm5lY3Rpb24oV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5l
bCAqcmVtb3RlQ2hhbm5lbCkKLXsKLSAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgbG9jYWwgc2Vz
c2lvbiwgZG8gbm90IGFsbG93IGEgcmVtb3RlIHNlc3Npb24uCi0gICAgaWYgKGhhc0xvY2FsU2Vz
c2lvbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGVyZSBpcyBhbHJlYWR5
IGEgcmVtb3RlIHNlc3Npb24sIGRvIG5vdCBhbGxvdyBhIG5ldyByZW1vdGUgc2Vzc2lvbi4KLSAg
ICBpZiAobV9yZW1vdGVDaGFubmVsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBU1NF
UlQoW1ttX3dlYlZpZXcgcHJlZmVyZW5jZXNdIGRldmVsb3BlckV4dHJhc0VuYWJsZWRdKTsKLQot
ICAgIG1fcmVtb3RlQ2hhbm5lbCA9IHJlbW90ZUNoYW5uZWw7Ci0KLSAgICBQYWdlKiBwYWdlID0g
Y29yZShtX3dlYlZpZXcpOwotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29ubmVj
dEZyb250ZW5kKHRoaXMpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViSW5zcGVj
dG9yQ2xpZW50Ojp0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24oYm9vbCBmcm9tTG9jYWxTaWRlKQot
ewotICAgIGlmICghbV9yZW1vdGVDaGFubmVsKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
ZnJvbUxvY2FsU2lkZSkKLSAgICAgICAgW21fcmVtb3RlQ2hhbm5lbCBjbG9zZUZyb21Mb2NhbFNp
ZGVdOwotCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmlldykpCi0gICAgICAgIHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7Ci0KLSAgICBp
ZiAoZnJvbUxvY2FsU2lkZSkKLSAgICAgICAgW21fcmVtb3RlQ2hhbm5lbCByZWxlYXNlXTsKLQot
ICAgIG1fcmVtb3RlQ2hhbm5lbCA9IDA7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50Ojpo
YXNMb2NhbFNlc3Npb24oKSBjb25zdAotewotICAgIHJldHVybiBtX2Zyb250ZW5kUGFnZSAhPSAw
OwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6Y2FuQmVSZW1vdGVseUluc3BlY3RlZCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX3dlYlZpZXcgY2FuQmVSZW1vdGVseUluc3BlY3RlZF07
Ci19Ci0KLVdlYlZpZXcgKldlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkV2ViVmlldygpCi17
Ci0gICAgcmV0dXJuIG1fd2ViVmlldzsKLX0KLSNlbmRpZgotCiAKIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRX
ZWJWaWV3LCBXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyKiB3aW5kb3dDb250cm9sbGVyLCBJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBQYWdlKiBmcm9udGVuZFBh
Z2UsIFdURjo6UGFzc093blB0cjxTZXR0aW5ncz4gc2V0dGluZ3MpCiAgICAgOiBJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsKGluc3BlY3RvckNvbnRyb2xsZXIsICBmcm9udGVuZFBhZ2UsIHNl
dHRpbmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90
ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYklu
c3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDgwOTQ4ZDUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotCi0jaW1wb3J0
ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIgotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JD
bGllbnQuaCIKLSNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCi0KLUBpbXBsZW1lbnRhdGlvbiBX
ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeQotCi1Ac3ludGhlc2l6ZSBkZWxlZ2F0ZSA9IF9kZWxl
Z2F0ZTsKLQotKyAoV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgKilzaGFyZWRSZWdpc3RyeQot
ewotICAgIHN0YXRpYyBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSAqc2hhcmVkUmVnaXN0cnkg
PSBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IGFsbG9jXSBpbml0XTsKLSAgICByZXR1cm4g
c2hhcmVkUmVnaXN0cnk7Ci19Ci0KLS0gKGlkKWluaXQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9uZXh0QXZh
aWxhYmxlUGFnZUlkID0gMTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh1bnNpZ25lZClf
Z2V0TmV4dEF2YWlsYWJsZVBhZ2VJZAotewotICAgIC8vIEJvdW5kYXJ5IHZhbHVlcywgMCBhbmQg
VUlOVF9NQVgsIGFyZSBpbnZhbGlkIEhhc2hNYXAga2V5cy4KLSAgICB1bnNpZ25lZCBuZXh0VmFs
aWRQYWdlSWQ7Ci0gICAgZG8gewotICAgICAgICBuZXh0VmFsaWRQYWdlSWQgPSBfbmV4dEF2YWls
YWJsZVBhZ2VJZCsrOwotICAgIH0gd2hpbGUgKCFuZXh0VmFsaWRQYWdlSWQgfHwgbmV4dFZhbGlk
UGFnZUlkID09IFVJTlRfTUFYIHx8IF9wYWdlQ2xpZW50TWFwLmNvbnRhaW5zKG5leHRWYWxpZFBh
Z2VJZCkpOwotICAgIHJldHVybiBuZXh0VmFsaWRQYWdlSWQ7Ci19Ci0KLS0gKHZvaWQpcmVnaXN0
ZXJDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVudCopY2xpZW50Ci17Ci0gICAgdW5zaWduZWQgcGFn
ZUlkID0gW3NlbGYgX2dldE5leHRBdmFpbGFibGVQYWdlSWRdOwotICAgIF9wYWdlQ2xpZW50TWFw
LnNldChwYWdlSWQsIGNsaWVudCk7Ci0gICAgY2xpZW50LT5zZXRQYWdlSWQocGFnZUlkKTsKLSAg
ICBbX2RlbGVnYXRlIGRpZFJlZ2lzdGVyQ2xpZW50OmNsaWVudF07Ci19Ci0KLS0gKHZvaWQpdW5y
ZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQKLXsKLSAgICB1bnNpZ25l
ZCBwYWdlSWQgPSBjbGllbnQtPnBhZ2VJZCgpOwotICAgIF9wYWdlQ2xpZW50TWFwLnJlbW92ZShw
YWdlSWQpOwotICAgIFtfZGVsZWdhdGUgZGlkVW5yZWdpc3RlckNsaWVudDpjbGllbnRdOwotfQot
Ci0tIChXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudEZvclBhZ2VJZDoodW5zaWduZWQpcGFnZUlk
Ci17Ci0gICAgcmV0dXJuIF9wYWdlQ2xpZW50TWFwLmdldChwYWdlSWQpOwotfQotCi0tIChOU0Rp
Y3Rpb25hcnkgKilpbnNwZWN0YWJsZVdlYlZpZXdzCi17Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFy
eSAqZGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ2FwYWNp
dHk6X3BhZ2VDbGllbnRNYXAuc2l6ZSgpXTsKLQotICAgIEhhc2hNYXA8dW5zaWduZWQsIFdlYklu
c3BlY3RvckNsaWVudCo+OjppdGVyYXRvciBlbmQgPSBfcGFnZUNsaWVudE1hcC5lbmQoKTsKLSAg
ICBmb3IgKEhhc2hNYXA8dW5zaWduZWQsIFdlYkluc3BlY3RvckNsaWVudCo+OjppdGVyYXRvciBp
dCA9IF9wYWdlQ2xpZW50TWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBX
ZWJWaWV3ICp3ZWJWaWV3ID0gaXQtPnZhbHVlLT5pbnNwZWN0ZWRXZWJWaWV3KCk7Ci0gICAgICAg
IGlmICghW3dlYlZpZXcgY2FuQmVSZW1vdGVseUluc3BlY3RlZF0pCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBOU051bWJlciAqcGFnZUlkID0gW05TTnVtYmVyIG51bWJlcldpdGhV
bnNpZ25lZEludDppdC0+a2V5XTsKLSAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OndlYlZp
ZXcgZm9yS2V5OnBhZ2VJZF07Ci0gICAgfQotCi0gICAgcmV0dXJuIGRpY3Rpb25hcnk7Ci19Ci0K
LUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0
b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4ZmZjZDYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1t
CisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLSNp
bXBvcnQgIldlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCIKLQotI2ltcG9ydCAiV2ViSW5zcGVj
dG9yQ2xpZW50LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIgotI2lt
cG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCIKLSNpbXBvcnQgIldl
YktpdExvZ2dpbmcuaCIKLSNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotQGludGVyZmFj
ZSBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICgpCi0tIChpZClpbml0V2l0aFJlbW90ZTooV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKilyZW1vdGUgbG9jYWw6KFdlYkluc3Bl
Y3RvckNsaWVudCopbG9jYWw7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0b3JS
ZW1vdGVDaGFubmVsCi0KLSsgKFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKiljcmVhdGVDaGFu
bmVsRm9yUGFnZUlkOih1bnNpZ25lZClwYWdlSWQgY29ubmVjdGlvbjooV2ViSW5zcGVjdG9yU2Vy
dmVyV2ViVmlld0Nvbm5lY3Rpb24gKiljb25uZWN0aW9uCi17Ci0gICAgLy8gR2V0IHRoZSBJbnNw
ZWN0b3IgY2xpZW50LiBJdHMgcG9zc2libGUgdGhlIHBhZ2UgY2xvc2VkIGJlZm9yZSB0aGUgcmVt
b3RlIGNsaWVudCByZXF1ZXN0ZWQgaXQuCi0gICAgV2ViSW5zcGVjdG9yQ2xpZW50ICppbnNwZWN0
b3JDbGllbnQgPSBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XSBj
bGllbnRGb3JQYWdlSWQ6cGFnZUlkXTsKLSAgICBpZiAoIWluc3BlY3RvckNsaWVudCkgewotICAg
ICAgICBMT0coUmVtb3RlSW5zcGVjdG9yLCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbDogUGFn
ZSByZXF1ZXN0ZWQgbm8gbG9uZ2VyIGV4aXN0czogKCV1KSIsIHBhZ2VJZCk7Ci0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgfQotCi0gICAgLy8gVGhlIFdlYlZpZXcgZG9lcyBub3QgYWxsb3cgcmVt
b3RlIGluc3BlY3Rpb24uCi0gICAgaWYgKCFpbnNwZWN0b3JDbGllbnQtPmNhbkJlUmVtb3RlbHlJ
bnNwZWN0ZWQoKSkgewotICAgICAgICBMT0coUmVtb3RlSW5zcGVjdG9yLCAiV2ViSW5zcGVjdG9y
UmVtb3RlQ2hhbm5lbDogV2ViVmlldyBmb3IgUGFnZSAoJXUpIGRvZXMgbm90IGFsbG93IHJlbW90
ZSBpbnNwZWN0aW9uLiIsIHBhZ2VJZCk7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0g
ICAgLy8gVGhlIGNoYW5uZWwgaXMgcmVsZWFzZWQgYnkgd2hpY2hldmVyIHNpZGUgY2xvc2VzIHRo
ZSBjaGFubmVsLiBUaGUgY2hhbm5lbCBjb3VsZCBiZSBjbG9zZWQKLSAgICAvLyByZW1vdGVseSBi
eSB0aGUgc29ja2V0IGNsb3NpbmcgKHRoZSB1c2VyIG5hdmlnYXRpbmcgYXdheSBmcm9tIHRoZSBy
ZW1vdGUgaW5zcGVjdG9yIHBhZ2UpLgotICAgIC8vIEl0IGNvdWxkIGJlIGNsb3NlZCBsb2NhbGx5
IGJ5IHRoZSBQYWdlIGJlaW5nIGRlc3Ryb3llZCwgbGlrZSB0aGUgYnJvd3NlciBvciB0YWIgYmVp
bmcgY2xvc2VkLgotICAgIC8vIFNldHRpbmcgdXAgdGhlIGNvbm5lY3Rpb24gY2FuIGZhaWwgaWYg
dGhlcmUgaXMgYWxyZWFkeSBhbiBleGlzdGluZyBzZXNzaW9uLgotICAgIFdlYkluc3BlY3RvclJl
bW90ZUNoYW5uZWwgKmNoYW5uZWwgPSBbW1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgYWxsb2Nd
IGluaXRXaXRoUmVtb3RlOmNvbm5lY3Rpb24gbG9jYWw6aW5zcGVjdG9yQ2xpZW50XTsKLSAgICBp
ZiAoIWluc3BlY3RvckNsaWVudC0+c2V0dXBSZW1vdGVDb25uZWN0aW9uKGNoYW5uZWwpKSB7Ci0g
ICAgICAgIExPRyhSZW1vdGVJbnNwZWN0b3IsICJXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsOiBT
ZXR0aW5nIHVwIGEgcmVtb3RlIHNlc3Npb24gZmFpbGVkLiBQcm9iYWJseSBhbHJlYWR5IGEgbG9j
YWwgc2Vzc2lvbi4iKTsKLSAgICAgICAgW2NoYW5uZWwgcmVsZWFzZV07Ci0gICAgICAgIGNoYW5u
ZWwgPSBuaWw7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNoYW5u
ZWw7Ci19Ci0KLS0gKGlkKWluaXRXaXRoUmVtb3RlOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbiAqKXJlbW90ZSBsb2NhbDooV2ViSW5zcGVjdG9yQ2xpZW50Kilsb2NhbAotewot
ICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4g
bmlsOwotCi0gICAgX3JlbW90ZSA9IHJlbW90ZTsKLSAgICBfbG9jYWwgPSBsb2NhbDsKLQotICAg
IHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWNsb3NlRnJvbUxvY2FsU2lkZQotewotICAgIC8v
IExvY2FsIHNpZGUgd2lsbCByZWxlYXNlLiBNYWtlIHN1cmUgdGhlIHJlbW90ZSBzaWRlIGNsZWFy
cyBpdHMgcmVmZXJlbmNlIHRvIHRoZSBjaGFubmVsLgotICAgIFtfcmVtb3RlIGNsZWFyQ2hhbm5l
bF07Ci19Ci0KLS0gKHZvaWQpY2xvc2VGcm9tUmVtb3RlU2lkZQotewotICAgIC8vIFJlbW90ZSBz
aWRlIHdpbGwgcmVsZWFzZS4gTWFrZSBzdXJlIHRoZSBsb2NhbCBzaWRlIGNsZWFycyBpdHMgcmVm
ZXJlbmNlIHRvIHRoZSBjaGFubmVsLgotICAgIF9sb2NhbC0+dGVhcmRvd25SZW1vdGVDb25uZWN0
aW9uKGZhbHNlKTsKLX0KLQotLSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5n
ICopbWVzc2FnZQotewotICAgIFtfcmVtb3RlIHNlbmRNZXNzYWdlVG9Gcm9udGVuZDptZXNzYWdl
XTsKLX0KLQotLSAodm9pZClzZW5kTWVzc2FnZVRvQmFja2VuZDooTlNTdHJpbmcgKiltZXNzYWdl
Ci17Ci0gICAgX2xvY2FsLT5zZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKTsKLX0KLQotQGVu
ZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9y
ZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0
b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjZjY3OTBmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rv
ci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCIKLQotQGNsYXNzIFdlYkluc3BlY3RvclNl
cnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlcjsKLUBjbGFzcyBXZWJJbnNwZWN0b3JYUENX
cmFwcGVyOwotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclNlcnZlciA6IE5TT2JqZWN0IDxXZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeURlbGVnYXRlPiB7Ci1AcHJpdmF0ZQotICAgIEJPT0wgX2lz
RW5hYmxlZDsKLSAgICBCT09MIF9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247Ci0gICAgaW50IF9ub3Rp
ZnlUb2tlbjsKLSAgICBXZWJJbnNwZWN0b3JYUENXcmFwcGVyICpfeHBjQ29ubmVjdGlvbjsKLSAg
ICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgKl9jb25uZWN0
aW9uQ29udHJvbGxlcjsKLX0KLQotLSAodm9pZClzdGFydDsKLS0gKHZvaWQpc3RvcDsKLS0gKEJP
T0wpaXNFbmFibGVkOwotLSAodm9pZClwdXNoTGlzdGluZzsKLQotLSAoQk9PTCloYXNBY3RpdmVE
ZWJ1Z1Nlc3Npb247Ci0tICh2b2lkKXNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjooQk9PTCloYXNT
ZXNzaW9uOwotCi0tIChXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopeHBjQ29ubmVjdGlvbjsKLQot
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9X
ZWJJbnNwZWN0b3JTZXJ2ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVt
b3RlL1dlYkluc3BlY3RvclNlcnZlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YmM5YTczYS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVt
b3RlL1dlYkluc3BlY3RvclNlcnZlci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKLQot
I2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JSZWxh
eURlZmluaXRpb25zLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVj
dGlvbkNvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCIKLSNp
bXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCi0jaW1wb3J0IDxub3RpZnkuaD4KLSNpbXBvcnQgPHhw
Yy94cGMuaD4KLQotCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIFByaXZhdGUgQ2xhc3Mg
RGV0YWlscwotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclNlcnZlciAoKSA8V2ViSW5zcGVjdG9y
WFBDV3JhcHBlckRlbGVnYXRlPgotLSAodm9pZClzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZDsK
LS0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rp
b24gcmVjZWl2ZWRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0Rp
Y3Rpb25hcnkgKil1c2VySW5mbzsKLS0gKHZvaWQpeHBjQ29ubmVjdGlvbkZhaWxlZDooV2ViSW5z
cGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb247Ci1AZW5kCi0KLQotI3ByYWdtYSBtYXJrIC0K
LSNwcmFnbWEgbWFyayBTZXJ2ZXIgSW1wbGVtZW50YXRpb24KLQotQGltcGxlbWVudGF0aW9uIFdl
Ykluc3BlY3RvclNlcnZlcgotCi0tIChpZClpbml0Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0
XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfY29ubmVjdGlv
bkNvbnRyb2xsZXIgPSBbW1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJv
bGxlciBhbGxvY10gaW5pdFdpdGhTZXJ2ZXI6c2VsZl07Ci0KLSAgICBbW1dlYkluc3BlY3RvckNs
aWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XSBzZXREZWxlZ2F0ZTpzZWxmXTsKLQotICAgIHJl
dHVybiBzZWxmOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICAvLyBTaW5nbGV0b24gaXMg
bm90IGV4cGVjdGVkIHRvIGJlIHJlbGVhc2VkLgotCi0gICAgW3NlbGYgc3RvcF07Ci0KLSAgICBB
U1NFUlQoIV94cGNDb25uZWN0aW9uKTsKLSAgICBbX2Nvbm5lY3Rpb25Db250cm9sbGVyIHJlbGVh
c2VdOwotCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0g
c2V0RGVsZWdhdGU6bmlsXTsKLQotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClz
dGFydAotewotICAgIGlmIChfaXNFbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfaXNF
bmFibGVkID0gWUVTOwotCi0gICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKFdJUlNlcnZpY2VB
dmFpbGFibGVOb3RpZmljYXRpb24sICZfbm90aWZ5VG9rZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF4oaW50IHRva2VuKSB7Ci0gICAgICAgIFtzZWxmIHNldHVwWFBDQ29ubmVjdGlvbklm
TmVlZGVkXTsKLSAgICB9KTsKLQotICAgIG5vdGlmeV9wb3N0KFdJUlNlcnZpY2VBdmFpbGFiaWxp
dHlDaGVja05vdGlmaWNhdGlvbik7Ci19Ci0KLS0gKHZvaWQpc3RvcAotewotICAgIGlmICghX2lz
RW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2lzRW5hYmxlZCA9IE5POwotCi0gICAg
W19jb25uZWN0aW9uQ29udHJvbGxlciBjbG9zZUFsbENvbm5lY3Rpb25zXTsKLQotICAgIGlmIChf
eHBjQ29ubmVjdGlvbikgewotICAgICAgICBbX3hwY0Nvbm5lY3Rpb24gY2xvc2VdOwotICAgICAg
ICBfeHBjQ29ubmVjdGlvbi5kZWxlZ2F0ZSA9IG5pbDsKLSAgICAgICAgW194cGNDb25uZWN0aW9u
IHJlbGVhc2VdOwotICAgICAgICBfeHBjQ29ubmVjdGlvbiA9IG5pbDsKLSAgICB9Ci0KLSAgICBu
b3RpZnlfY2FuY2VsKF9ub3RpZnlUb2tlbik7Ci19Ci0KLS0gKEJPT0wpaXNFbmFibGVkCi17Ci0g
ICAgcmV0dXJuIF9pc0VuYWJsZWQ7Ci19Ci0KLS0gKFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKil4
cGNDb25uZWN0aW9uCi17Ci0gICAgcmV0dXJuIF94cGNDb25uZWN0aW9uOwotfQotCi0tICh2b2lk
KXNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkCi17Ci0gICAgaWYgKF94cGNDb25uZWN0aW9uKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNf
Y29ubmVjdGlvbl9jcmVhdGVfbWFjaF9zZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgMCk7Ci0gICAgaWYgKGNvbm5lY3Rpb24pIHsKLSAgICAgICAg
X3hwY0Nvbm5lY3Rpb24gPSBbW1dlYkluc3BlY3RvclhQQ1dyYXBwZXIgYWxsb2NdIGluaXRXaXRo
Q29ubmVjdGlvbjpjb25uZWN0aW9uXTsKLSAgICAgICAgX3hwY0Nvbm5lY3Rpb24uZGVsZWdhdGUg
PSBzZWxmOwotICAgICAgICBbX3hwY0Nvbm5lY3Rpb24gc2VuZE1lc3NhZ2U6QCJzeW4iIHVzZXJJ
bmZvOm5pbF07Ci0gICAgICAgIHhwY19yZWxlYXNlKGNvbm5lY3Rpb24pOwotICAgIH0KLX0KLQot
LSAodm9pZClwdXNoTGlzdGluZwotewotICAgIGlmICghX2lzRW5hYmxlZCB8fCAhX3hwY0Nvbm5l
Y3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIFtfY29ubmVjdGlvbkNvbnRyb2xsZXIgcHVz
aExpc3RpbmddOwotfQotCi0tIChCT09MKWhhc0FjdGl2ZURlYnVnU2Vzc2lvbgotewotICAgIHJl
dHVybiBfaGFzQWN0aXZlRGVidWdTZXNzaW9uOwotfQotCi0tICh2b2lkKXNldEhhc0FjdGl2ZURl
YnVnU2Vzc2lvbjooQk9PTCloYXNTZXNzaW9uCi17Ci0gICAgaWYgKF9oYXNBY3RpdmVEZWJ1Z1Nl
c3Npb24gPT0gaGFzU2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2hhc0FjdGl2ZURl
YnVnU2Vzc2lvbiA9IGhhc1Nlc3Npb247Ci0KLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOl9XZWJWaWV3UmVtb3RlSW5zcGVjdG9y
SGFzU2Vzc2lvbkNoYW5nZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci19Ci0KLQotI3ByYWdt
YSBtYXJrIC0KLSNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGUgSW1w
bGVtZW50YXRpb24KLQotLSAodm9pZCl4cGNDb25uZWN0aW9uOihXZWJJbnNwZWN0b3JYUENXcmFw
cGVyICopeHBjQ29ubmVjdGlvbiByZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5h
bWUgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvCi17Ci0gICAgQVNTRVJUKHhwY0Nv
bm5lY3Rpb24gPT0gX3hwY0Nvbm5lY3Rpb24pOwotCi0gICAgaWYgKFttZXNzYWdlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6V0lSUGVybWlzc2lvbkRlbmllZF0pCi0gICAgICAgIFtzZWxmIHN0b3BdOwot
ICAgIGVsc2UKLSAgICAgICAgW19jb25uZWN0aW9uQ29udHJvbGxlciByZWNlaXZlZE1lc3NhZ2U6
bWVzc2FnZU5hbWUgdXNlckluZm86dXNlckluZm9dOwotfQotCi0tICh2b2lkKXhwY0Nvbm5lY3Rp
b25GYWlsZWQ6KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uCi17Ci0gICAgW19j
b25uZWN0aW9uQ29udHJvbGxlciBjbG9zZUFsbENvbm5lY3Rpb25zXTsKLQotICAgIGlmIChfeHBj
Q29ubmVjdGlvbikgewotICAgICAgICBfeHBjQ29ubmVjdGlvbi5kZWxlZ2F0ZSA9IG5pbDsKLSAg
ICAgICAgW194cGNDb25uZWN0aW9uIHJlbGVhc2VdOwotICAgICAgICBfeHBjQ29ubmVjdGlvbiA9
IG5pbDsKLSAgICB9Ci19Ci0KLQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBXZWJJbnNw
ZWN0b3JDbGllbnRSZWdpc3RyeURlbGVnYXRlIGltcGxlbWVudGF0aW9uCi0KLS0gKHZvaWQpZGlk
UmVnaXN0ZXJDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVudCopY2xpZW50Ci17Ci0gICAgLy8gV2hl
biBhIFdlYlZpZXcgaXMgcmVnaXN0ZXJlZCBpdCBoYXMgbm8gY29udGVudC4gQnV0IHNvbWUgV2Vi
Vmlld3MKLSAgICAvLyBuZXZlciBsb2FkIGNvbnRlbnQgZnJvbSBhIFVSTCwgc3VjaCBhcyBVSVRl
eHRGaWVsZHMgb24gaU9TLgotICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQotLSAodm9pZClk
aWRVbnJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudAotewotICAgIFtz
ZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dl
Ykluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkMWFlZDgxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYklu
c3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24ubW0KKysr
IC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9y
dCAiV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCIKLQotI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yQ2xpZW50LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25z
LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmgiCi0jaW1wb3J0ICJXZWJJ
bnNwZWN0b3JTZXJ2ZXIuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25u
ZWN0aW9uQ29udHJvbGxlci5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIgot
I2ltcG9ydCAiV2ViS2l0TG9nZ2luZy5oIgotI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgot
Ci1AaW1wbGVtZW50YXRpb24gV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24KLQot
LSAoaWQpaW5pdFdpdGhDb250cm9sbGVyOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVj
dGlvbkNvbnRyb2xsZXIgKiljb250cm9sbGVyIGNvbm5lY3Rpb25JZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWNvbm5lY3Rpb25JZGVudGlmaWVyIGRlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0
aW9uIGlkZW50aWZpZXI6KE5TTnVtYmVyICopaWRlbnRpZmllcgotewotICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX2Nv
bnRyb2xsZXIgPSBjb250cm9sbGVyOwotICAgIF9jb25uZWN0aW9uSWRlbnRpZmllciA9IFtjb25u
ZWN0aW9uSWRlbnRpZmllciBjb3B5XTsKLSAgICBfZGVzdGluYXRpb24gPSBbZGVzdGluYXRpb24g
Y29weV07Ci0gICAgX2lkZW50aWZpZXIgPSBbaWRlbnRpZmllciBjb3B5XTsKLQotICAgIHJldHVy
biBzZWxmOwotfQotCi0tIChCT09MKXNldHVwQ2hhbm5lbAotewotICAgIEFTU0VSVCghX2NoYW5u
ZWwpOwotICAgIHVuc2lnbmVkIHBhZ2VJZCA9IFtfaWRlbnRpZmllciB1bnNpZ25lZEludFZhbHVl
XTsKLSAgICBfY2hhbm5lbCA9IFtXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsIGNyZWF0ZUNoYW5u
ZWxGb3JQYWdlSWQ6cGFnZUlkIGNvbm5lY3Rpb246c2VsZl07Ci0gICAgcmV0dXJuIF9jaGFubmVs
ICE9IG5pbDsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgQVNTRVJUKCFfY2hhbm5lbCk7
Ci0gICAgW19jb25uZWN0aW9uSWRlbnRpZmllciByZWxlYXNlXTsKLSAgICBbX2Rlc3RpbmF0aW9u
IHJlbGVhc2VdOwotICAgIFtfaWRlbnRpZmllciByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxv
Y107Ci19Ci0KLS0gKE5TU3RyaW5nICopY29ubmVjdGlvbklkZW50aWZpZXIKLXsKLSAgICByZXR1
cm4gW1tfY29ubmVjdGlvbklkZW50aWZpZXIgY29weV0gYXV0b3JlbGVhc2VdOwotfQotCi0tIChO
U051bWJlciAqKWlkZW50aWZpZXIKLXsKLSAgICByZXR1cm4gW1tfaWRlbnRpZmllciBjb3B5XSBh
dXRvcmVsZWFzZV07Ci19Ci0KLQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBJbnRlcmFj
dGlvbiB3aXRoIHRoZSBjaGFubmVsIHRvIHRoZSBsb2NhbCBpbnNwZWN0b3IgYmFja2VuZAotCi0t
ICh2b2lkKWNsZWFyQ2hhbm5lbAotewotICAgIF9jaGFubmVsID0gbmlsOwotICAgIFtfY29udHJv
bGxlciBjb25uZWN0aW9uQ2xvc2luZzpzZWxmXTsKLX0KLQotLSAodm9pZClzZW5kTWVzc2FnZVRv
RnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZQotewotICAgIE5TRGF0YSAqZGF0YSA9IFttZXNz
YWdlIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBOU0RpY3Rp
b25hcnkgKm91dGdvaW5nID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRL
ZXlzOgotICAgICAgICBkYXRhLCBXSVJSYXdEYXRhS2V5LAotICAgICAgICBfY29ubmVjdGlvbklk
ZW50aWZpZXIsIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5LAotICAgICAgICBfZGVzdGluYXRp
b24sIFdJUkRlc3RpbmF0aW9uS2V5LAotICAgICAgICBuaWxdOwotCi0gICAgW19jb250cm9sbGVy
IHNlbmRNZXNzYWdlVG9Gcm9udGVuZDpXSVJSYXdEYXRhTWVzc2FnZSB1c2VySW5mbzpvdXRnb2lu
Z107Ci19Ci0KLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2Fn
ZQotewotICAgIEFTU0VSVChfY2hhbm5lbCk7Ci0gICAgTE9HKFJlbW90ZUluc3BlY3RvciwgIldl
Ykluc3BlY3RvclNlcnZlckNvbm5lY3Rpb246IFJlY2VpdmVkOiB8JXN8IiwgU3RyaW5nKG1lc3Nh
Z2UpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgW19jaGFubmVsIHNlbmRNZXNzYWdlVG9CYWNrZW5k
Om1lc3NhZ2VdOwotfQotCi0KLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgSW50ZXJhY3Rp
b24gd2l0aCB0aGUgc2VydmVyIHRvIHRoZSByZW1vdGUgaW5zcGVjdG9yIGZyb250ZW5kCi0KLS0g
KHZvaWQpcmVjZWl2ZWREYXRhOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNE
YXRhICpkYXRhID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldJUlNvY2tldERhdGFLZXldOwot
ICAgIE5TU3RyaW5nICptZXNzYWdlID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRh
dGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgIFtzZWxmIHNlbmRNZXNzYWdl
VG9CYWNrZW5kOm1lc3NhZ2VdOwotICAgIFttZXNzYWdlIHJlbGVhc2VdOwotfQotCi0tICh2b2lk
KXJlY2VpdmVkRGlkQ2xvc2U6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAgICBpZiAo
X2NoYW5uZWwpIHsKLSAgICAgICAgW19jaGFubmVsIGNsb3NlRnJvbVJlbW90ZVNpZGVdOwotICAg
ICAgICBbX2NoYW5uZWwgcmVsZWFzZV07Ci0gICAgICAgIF9jaGFubmVsID0gbmlsOwotICAgIH0K
LX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYklu
c3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9s
bGVyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0
b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDdlYzIxMzYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
SW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRy
b2xsZXIubW0KKysrIC9kZXYvbnVsbApAQCAtMSwzODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9s
bGVyLmgiCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVudC5oIgotI2ltcG9ydCAiV2ViSW5z
cGVjdG9yQ2xpZW50UmVnaXN0cnkuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclJlbGF5RGVmaW5p
dGlvbnMuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclNlcnZlci5oIgotI2ltcG9ydCAiV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclhQ
Q1dyYXBwZXIuaCIKLSNpbXBvcnQgIldlYlZpZXcuaCIKLSNpbXBvcnQgIldlYlZpZXdQcml2YXRl
LmgiCi0KLSNpZiBQTEFURk9STShJT1MpCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWQu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgotI2VuZGlmCi0KLQotQGlt
cGxlbWVudGF0aW9uIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxl
cgotCi0tIChpZClpbml0V2l0aFNlcnZlcjooV2ViSW5zcGVjdG9yU2VydmVyICopc2VydmVyCi17
Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICBfc2VydmVyID0gc2VydmVyOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0K
LS0gKHZvaWQpZGVhbGxvYwotewotICAgIEFTU0VSVCghW19vcGVuQ29ubmVjdGlvbnMgY291bnRd
KTsKLSAgICBbX29wZW5Db25uZWN0aW9ucyByZWxlYXNlXTsKLQotICAgIFtzdXBlciBkZWFsbG9j
XTsKLX0KLQotLSAodm9pZCljbG9zZUFsbENvbm5lY3Rpb25zCi17Ci0jaWYgUExBVEZPUk0oSU9T
KQotICAgIFdlYlRocmVhZFJ1biheewotI2VuZGlmCi0KLSAgICBmb3IgKE5TTnVtYmVyICprZXkg
aW4gX29wZW5Db25uZWN0aW9ucykgewotICAgICAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbiAqY29ubmVjdGlvbiA9IFtfb3BlbkNvbm5lY3Rpb25zIG9iamVjdEZvcktleTpr
ZXldOwotICAgICAgICBbY29ubmVjdGlvbiByZWNlaXZlZERpZENsb3NlOm5pbF07Ci0gICAgfQot
ICAgIFtfb3BlbkNvbm5lY3Rpb25zIHJlbW92ZUFsbE9iamVjdHNdOwotCi0gICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgW19zZXJ2ZXIgc2V0
SGFzQWN0aXZlRGVidWdTZXNzaW9uOk5PXTsKLSAgICB9KTsKLQotI2lmIFBMQVRGT1JNKElPUykK
LSAgICB9KTsKLSNlbmRpZgotfQotCi0tIChOU0RpY3Rpb25hcnkgKilfbGlzdGluZ0ZvcldlYlZp
ZXc6KFdlYlZpZXcgKil3ZWJWaWV3IHBhZ2VJZDooTlNOdW1iZXIgKilwYWdlSWQgcmVnaXN0cnk6
KFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ICopcmVnaXN0cnkKLXsKLSAgICBOU011dGFibGVE
aWN0aW9uYXJ5ICp3ZWJWaWV3RGV0YWlscyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25h
cnldOwotCi0gICAgLy8gUGFnZSBJRC4KLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnBh
Z2VJZCBmb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOwotCi0gICAgLy8gVVJMLgotICAgIE5T
U3RyaW5nICp1cmwgPSBbd2ViVmlldyBtYWluRnJhbWVVUkxdOwotICAgIGlmICghdXJsKQotICAg
ICAgICB1cmwgPSBAImFib3V0OmJsYW5rIjsKLSAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0
OnVybCBmb3JLZXk6V0lSVVJMS2V5XTsKLQotICAgIC8vIFRpdGxlLgotICAgIE5TU3RyaW5nICp0
aXRsZSA9IFt3ZWJWaWV3IG1haW5GcmFtZVRpdGxlXTsKLSAgICBbd2ViVmlld0RldGFpbHMgc2V0
T2JqZWN0OnRpdGxlIGZvcktleTpXSVJUaXRsZUtleV07Ci0KLSAgICAvLyBbT3B0aW9uYWxdIENv
bm5lY3Rpb24gSWRlbnRpZmllciAoUmVtb3RlIERlYnVnZ2VyIFVVSUQpLgotICAgIC8vIFtPcHRp
b25hbF0gSGFzIExvY2FsIERlYnVnZ2VyIFNlc3Npb24uCi0gICAgV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24gPSBbX29wZW5Db25uZWN0aW9ucyBvYmplY3RG
b3JLZXk6cGFnZUlkXTsKLSAgICBpZiAoY29ubmVjdGlvbikKLSAgICAgICAgW3dlYlZpZXdEZXRh
aWxzIHNldE9iamVjdDpjb25uZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlmaWVyIGZvcktleTpXSVJD
b25uZWN0aW9uSWRlbnRpZmllcktleV07Ci0gICAgZWxzZSB7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQ2xpZW50ID0gW3JlZ2lzdHJ5IGNsaWVudEZvclBhZ2VJZDpbcGFn
ZUlkIHVuc2lnbmVkSW50VmFsdWVdXTsKLSAgICAgICAgaWYgKGluc3BlY3RvckNsaWVudC0+aGFz
TG9jYWxTZXNzaW9uKCkpCi0gICAgICAgICAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OltO
U051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdIGZvcktleTpXSVJIYXNMb2NhbERlYnVnZ2VyS2V5
XTsKLSAgICB9Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gW09wdGlvbmFsXSBIb3N0IEFw
cGxpY2F0aW9uIElELgotICAgIE5TU3RyaW5nICpob3N0QXBwbGljYXRpb25JZCA9IFt3ZWJWaWV3
IGhvc3RBcHBsaWNhdGlvbkJ1bmRsZUlkXTsKLSAgICBpZiAoaG9zdEFwcGxpY2F0aW9uSWQpCi0g
ICAgICAgIFt3ZWJWaWV3RGV0YWlscyBzZXRPYmplY3Q6aG9zdEFwcGxpY2F0aW9uSWQgZm9yS2V5
OldJUkhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXldOwotCi0gICAgLy8gW09wdGlvbmFsXSBI
b3N0IEFwcGxpY2F0aW9uIE5hbWUuCi0gICAgTlNTdHJpbmcgKmhvc3RBcHBsaWNhdGlvbk5hbWUg
PSBbd2ViVmlldyBob3N0QXBwbGljYXRpb25OYW1lXTsKLSAgICBpZiAoaG9zdEFwcGxpY2F0aW9u
TmFtZSkKLSAgICAgICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDpob3N0QXBwbGljYXRpb25O
YW1lIGZvcktleTpXSVJIb3N0QXBwbGljYXRpb25OYW1lS2V5XTsKLSNlbmRpZgotCi0gICAgLy8g
W09wdGlvbmFsXSBSZW1vdGUgSW5zcGVjdG9yIFdlYlZpZXcgVXNlciBJbmZvIERpY3Rpb25hcnku
Ci0gICAgTlNEaWN0aW9uYXJ5ICpyZW1vdGVJbnNwZWN0b3JVc2VySW5mbyA9IFt3ZWJWaWV3IHJl
bW90ZUluc3BlY3RvclVzZXJJbmZvXTsKLSAgICBpZiAocmVtb3RlSW5zcGVjdG9yVXNlckluZm8p
Ci0gICAgICAgIFt3ZWJWaWV3RGV0YWlscyBzZXRPYmplY3Q6cmVtb3RlSW5zcGVjdG9yVXNlcklu
Zm8gZm9yS2V5OldJUlVzZXJJbmZvS2V5XTsKLQotICAgIHJldHVybiB3ZWJWaWV3RGV0YWlsczsK
LX0KLQotLSAodm9pZClfcHVzaExpc3Rpbmc6KE5TU3RyaW5nICopb3B0aW9uYWxDb25uZWN0aW9u
SWRlbnRpZmllcgotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXND
dXJyZW50KCkpOwotI2VuZGlmCi0KLSAgICBfaGFzU2NoZWR1bGVkUHVzaCA9IE5POwotCi0gICAg
TlNNdXRhYmxlRGljdGlvbmFyeSAqcmVzcG9uc2UgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRdOwotICAgIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ICp3ZWJJbnNwZWN0b3JD
bGllbnRSZWdpc3RyeSA9IFtXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3Ry
eV07Ci0gICAgTlNEaWN0aW9uYXJ5ICpyZWdpc3RlcmVkVmlld3MgPSBbd2ViSW5zcGVjdG9yQ2xp
ZW50UmVnaXN0cnkgaW5zcGVjdGFibGVXZWJWaWV3c107Ci0gICAgZm9yIChOU051bWJlciAqcGFn
ZUlkIGluIHJlZ2lzdGVyZWRWaWV3cykgewotICAgICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3Jl
Z2lzdGVyZWRWaWV3cyBvYmplY3RGb3JLZXk6cGFnZUlkXTsKLSAgICAgICAgTlNEaWN0aW9uYXJ5
ICp3ZWJWaWV3RGV0YWlscyA9IFtzZWxmIF9saXN0aW5nRm9yV2ViVmlldzp3ZWJWaWV3IHBhZ2VJ
ZDpwYWdlSWQgcmVnaXN0cnk6d2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnldOwotICAgICAgICBb
cmVzcG9uc2Ugc2V0T2JqZWN0OndlYlZpZXdEZXRhaWxzIGZvcktleTpbcGFnZUlkIHN0cmluZ1Zh
bHVlXV07Ci0gICAgfQotCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqb3V0Z29pbmcgPSBbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgIFtvdXRnb2luZyBzZXRPYmplY3Q6
cmVzcG9uc2UgZm9yS2V5OldJUkxpc3RpbmdLZXldOwotICAgIGlmIChvcHRpb25hbENvbm5lY3Rp
b25JZGVudGlmaWVyKQotICAgICAgICBbb3V0Z29pbmcgc2V0T2JqZWN0Om9wdGlvbmFsQ29ubmVj
dGlvbklkZW50aWZpZXIgZm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKLQotICAg
IFtzZWxmIHNlbmRNZXNzYWdlVG9Gcm9udGVuZDpXSVJMaXN0aW5nTWVzc2FnZSB1c2VySW5mbzpv
dXRnb2luZ107Ci0KLSAgICBbb3V0Z29pbmcgcmVsZWFzZV07Ci0gICAgW3Jlc3BvbnNlIHJlbGVh
c2VdOwotfQotCi0tICh2b2lkKXB1c2hMaXN0aW5nOihOU1N0cmluZyAqKW9wdGlvbmFsQ29ubmVj
dGlvbklkZW50aWZpZXIKLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgQVNTRVJUKFdlYlRocmVh
ZElzQ3VycmVudCgpKTsKLSNlbmRpZgotCi0gICAgaWYgKF9oYXNTY2hlZHVsZWRQdXNoKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAob3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcikgewot
ICAgICAgICBbc2VsZiBfcHVzaExpc3Rpbmc6b3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcl07
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgZGlzcGF0
Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgMC4yICogTlNFQ19QRVJf
U0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9E
RUZBVUxULCAwKSwgXnsKLSAgICAgICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgICAgICBbc2Vs
ZiBfcHVzaExpc3Rpbmc6bmlsXTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0jZWxzZQotICAgIFtz
ZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX3B1c2hMaXN0aW5nOikgd2l0aE9iamVjdDpu
aWwgYWZ0ZXJEZWxheTowLjJdOwotI2VuZGlmCi0KLSAgICBfaGFzU2NoZWR1bGVkUHVzaCA9IFlF
UzsKLX0KLQotLSAodm9pZClwdXNoTGlzdGluZwotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBX
ZWJUaHJlYWRSdW4oXnsKLSNlbmRpZgotCi0gICAgW3NlbGYgcHVzaExpc3Rpbmc6bmlsXTsKLQot
I2lmIFBMQVRGT1JNKElPUykKLSAgICB9KTsKLSNlbmRpZgotfQotCi0tICh2b2lkKV9yZWNlaXZl
ZFNldHVwOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJ
ZCA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAg
aWYgKCFwYWdlSWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICpjb25uZWN0aW9u
SWRlbnRpZmllciA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRp
ZmllcktleV07Ci0gICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgTlNTdHJpbmcgKnNlbmRlciA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJT
ZW5kZXJLZXldOwotICAgIGlmICghc2VuZGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
IV9vcGVuQ29ubmVjdGlvbnMpCi0gICAgICAgIF9vcGVuQ29ubmVjdGlvbnMgPSBbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24gPSBbW1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25u
ZWN0aW9uIGFsbG9jXSBpbml0V2l0aENvbnRyb2xsZXI6c2VsZiBjb25uZWN0aW9uSWRlbnRpZmll
cjpjb25uZWN0aW9uSWRlbnRpZmllciBkZXN0aW5hdGlvbjpzZW5kZXIgaWRlbnRpZmllcjpwYWdl
SWRdOwotICAgIGlmIChbY29ubmVjdGlvbiBzZXR1cENoYW5uZWxdKQotICAgICAgICBbX29wZW5D
b25uZWN0aW9ucyBzZXRPYmplY3Q6Y29ubmVjdGlvbiBmb3JLZXk6cGFnZUlkXTsKLSAgICBbY29u
bmVjdGlvbiByZWxlYXNlXTsKLQotICAgIGlmIChbX29wZW5Db25uZWN0aW9ucyBjb3VudF0gPT0g
MSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBe
ewotICAgICAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOllFU107Ci0g
ICAgICAgIH0pOwotICAgIH0KLQotICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKLX0KLQotLSAodm9p
ZClfcmVjZWl2ZWREYXRhOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1i
ZXIgKnBhZ2VJZCA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktl
eV07Ci0gICAgaWYgKCFwYWdlSWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkluc3BlY3Rv
clNlcnZlcldlYlZpZXdDb25uZWN0aW9uICpjb25uZWN0aW9uID0gW19vcGVuQ29ubmVjdGlvbnMg
b2JqZWN0Rm9yS2V5OnBhZ2VJZF07Ci0gICAgQVNTRVJUKCFjb25uZWN0aW9uIHx8IFtjb25uZWN0
aW9uIGlzS2luZE9mQ2xhc3M6W1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGNs
YXNzXV0pOwotICAgIGlmICghY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW2Nv
bm5lY3Rpb24gcmVjZWl2ZWREYXRhOmRpY3Rpb25hcnldOwotfQotCi0tICh2b2lkKV9yZWNlaXZl
ZERpZENsb3NlOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBh
Z2VJZCA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0g
ICAgaWYgKCFwYWdlSWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICpjb25uZWN0
aW9uSWRlbnRpZmllciA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRl
bnRpZmllcktleV07Ci0gICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKmNvbm5lY3Rp
b24gPSBbX29wZW5Db25uZWN0aW9ucyBvYmplY3RGb3JLZXk6cGFnZUlkXTsKLSAgICBBU1NFUlQo
IWNvbm5lY3Rpb24gfHwgW2Nvbm5lY3Rpb24gaXNLaW5kT2ZDbGFzczpbV2ViSW5zcGVjdG9yU2Vy
dmVyV2ViVmlld0Nvbm5lY3Rpb24gY2xhc3NdXSk7Ci0gICAgaWYgKCFjb25uZWN0aW9uKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoIVtjb25uZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9T
dHJpbmc6Y29ubmVjdGlvbi5jb25uZWN0aW9uSWRlbnRpZmllcl0pCi0gICAgICAgIHJldHVybjsK
LQotICAgIFtjb25uZWN0aW9uIHJlY2VpdmVkRGlkQ2xvc2U6ZGljdGlvbmFyeV07Ci0gICAgW19v
cGVuQ29ubmVjdGlvbnMgcmVtb3ZlT2JqZWN0Rm9yS2V5OnBhZ2VJZF07Ci0KLSAgICBpZiAoIVtf
b3BlbkNvbm5lY3Rpb25zIGNvdW50XSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZl
RGVidWdTZXNzaW9uOk5PXTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgW3NlbGYgcHVzaExp
c3RpbmddOwotfQotCi0tICh2b2lkKV9yZWNlaXZlZEdldExpc3Rpbmc6KE5TRGljdGlvbmFyeSAq
KWRpY3Rpb25hcnkKLXsKLSAgICBbc2VsZiBwdXNoTGlzdGluZzpbZGljdGlvbmFyeSBvYmplY3RG
b3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldXTsKLX0KLQotLSAodm9pZClfcmVjZWl2
ZWRJbmRpY2F0ZTooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIE5TTnVtYmVyICpw
YWdlSWQgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOwot
ICAgIGlmICghcGFnZUlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJWaWV3ICp3ZWJWaWV3
ID0gW1tbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIGluc3BlY3Rh
YmxlV2ViVmlld3NdIG9iamVjdEZvcktleTpwYWdlSWRdOwotICAgIGlmICghd2ViVmlldykKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQk9PTCBpbmRpY2F0ZUVuYWJsZWQgPSBbW2RpY3Rpb25hcnkg
b2JqZWN0Rm9yS2V5OldJUkluZGljYXRlRW5hYmxlZEtleV0gYm9vbFZhbHVlXTsKLSAgICBbd2Vi
VmlldyBzZXRJbmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOmluZGljYXRlRW5hYmxlZF07Ci19
Ci0KLS0gKHZvaWQpX3JlY2VpdmVkQ29ubmVjdGlvbkRpZWQ6KE5TRGljdGlvbmFyeSAqKWRpY3Rp
b25hcnkKLXsKLSAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbZGljdGlvbmFy
eSBvYmplY3RGb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOwotICAgIGlmICghY29u
bmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TRGljdGlvbmFyeSAq
Y29ubmVjdGlvbnNDb3B5ID0gW1tfb3BlbkNvbm5lY3Rpb25zIGNvcHldIGF1dG9yZWxlYXNlXTsK
LSAgICBmb3IgKE5TTnVtYmVyICprZXkgaW4gY29ubmVjdGlvbnNDb3B5KSB7Ci0gICAgICAgIFdl
Ykluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uICpjb25uZWN0aW9uID0gW2Nvbm5lY3Rp
b25zQ29weSBvYmplY3RGb3JLZXk6a2V5XTsKLSAgICAgICAgaWYgKFtjb25uZWN0aW9uLmNvbm5l
Y3Rpb25JZGVudGlmaWVyIGlzRXF1YWxUb1N0cmluZzpjb25uZWN0aW9uSWRlbnRpZmllcl0pIHsK
LSAgICAgICAgICAgIFtjb25uZWN0aW9uIHJlY2VpdmVkRGlkQ2xvc2U6bmlsXTsKLSAgICAgICAg
ICAgIFtfb3BlbkNvbm5lY3Rpb25zIHJlbW92ZU9iamVjdEZvcktleTprZXldOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgaWYgKCFbX29wZW5Db25uZWN0aW9ucyBjb3VudF0pIHsKLSAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAg
IFtfc2VydmVyIHNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjpOT107Ci0gICAgICAgIH0pOwotICAg
IH0KLX0KLQotLSAodm9pZClyZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUg
dXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvCi17Ci0jaWYgUExBVEZPUk0oSU9TKQot
ICAgIFdlYlRocmVhZFJ1biheewotI2VuZGlmCi0KLSAgICBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1
YWxUb1N0cmluZzpXSVJTb2NrZXRTZXR1cE1lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2
ZWRTZXR1cDp1c2VySW5mb107Ci0gICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0
cmluZzpXSVJTb2NrZXREYXRhTWVzc2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZERhdGE6
dXNlckluZm9dOwotICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lS
V2ViUGFnZUNsb3NlTWVzc2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZERpZENsb3NlOnVz
ZXJJbmZvXTsKLSAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkFw
cGxpY2F0aW9uR2V0TGlzdGluZ01lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWRHZXRM
aXN0aW5nOnVzZXJJbmZvXTsKLSAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOldJUkluZGljYXRlTWVzc2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZEluZGljYXRl
OnVzZXJJbmZvXTsKLSAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJ
UkNvbm5lY3Rpb25EaWVkTWVzc2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZENvbm5lY3Rp
b25EaWVkOnVzZXJJbmZvXTsKLSAgICBlbHNlCi0gICAgICAgIE5TTG9nKEAiVW5yZWNvZ25pemVk
IE1lc3NhZ2U6ICVAIiwgbWVzc2FnZU5hbWUpOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIH0p
OwotI2VuZGlmCi19Ci0KLQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBXZWJJbnNwZWN0
b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiBpbnRlcmZhY2UKLQotLSAodm9pZCljb25uZWN0aW9u
Q2xvc2luZzooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKiljb25uZWN0aW9u
Ci17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFdlYlRocmVhZFJ1biheewotI2VuZGlmCi0KLSAg
ICBbX29wZW5Db25uZWN0aW9ucyByZW1vdmVPYmplY3RGb3JLZXk6W2Nvbm5lY3Rpb24gaWRlbnRp
Zmllcl1dOwotCi0gICAgaWYgKCFbX29wZW5Db25uZWN0aW9ucyBjb3VudF0pIHsKLSAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAg
IFtfc2VydmVyIHNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjpOT107Ci0gICAgICAgIH0pOwotICAg
IH0KLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICB9KTsKLSNlbmRpZgotfQotCi0KLSNwcmFnbWEg
bWFyayAtCi0jcHJhZ21hIG1hcmsgVGhyZWFkIFNhZmUgc2VuZCBtZXNzYWdlIHRvIGZyb250ZW5k
Ci0KLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1l
IHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbwotewotICAgIC8vIFRoaXMgbWF5IGJl
IGNhbGxlZCBmcm9tIGVpdGhlciB0aGUgV2ViVGhyZWFkIG9yIHRoZSBNYWluVGhyZWFkLiBUaGlz
Ci0gICAgLy8gcmVxdWlyZXMgYWNjZXNzIHRvIHRoZSBXZWJJbnNwZWN0b3JTZXJ2ZXIncyBYUEMg
Q29ubmVjdGlvbiwgd2hpY2gKLSAgICAvLyBpcyBtYW5hZ2VkIG9uIHRoZSBtYWluIHRocmVhZC4g
U28sIGRpc3BhdGNoIHRvIHRoZSBtYWluIHRocmVhZCB0bwotICAgIC8vIHNhZmVseSB1c2UgdGhl
IHhwYyBjb25uZWN0aW9uLgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57Ci0gICAgICAgIFtbX3NlcnZlciB4cGNDb25uZWN0aW9uXSBzZW5kTWVzc2FnZTpt
ZXNzYWdlTmFtZSB1c2VySW5mbzp1c2VySW5mb107Ci0gICAgfSk7Ci19Ci0KLUBlbmQKLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dl
Ykluc3BlY3RvclhQQ1dyYXBwZXIubSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9y
ZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1ZmIxZTAyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rv
ci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tCisrKyAvZGV2L251bGwKQEAgLTEsMTYy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dy
YXBwZXIuaCIKLQotI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KLQotI2lmIF9faGFzX2luY2x1
ZGUoPENvcmVGb3VuZGF0aW9uL0NGWFBDQnJpZGdlLmg+KQotI2luY2x1ZGUgPENvcmVGb3VuZGF0
aW9uL0NGWFBDQnJpZGdlLmg+Ci0jZWxzZQotZXh0ZXJuIHhwY19vYmplY3RfdCBfQ0ZYUENDcmVh
dGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KENGVHlwZVJlZik7Ci1leHRlcm4gQ0ZUeXBlUmVmIF9D
RlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjX29iamVjdF90KTsKLSNlbmRpZgot
Ci0vLyBDb25zdGFudHMgcHJpdmF0ZSB0byB0aGlzIGZpbGUgZm9yIG1lc3NhZ2Ugc2VyaWFsaXph
dGlvbiBvbiBib3RoIGVuZHMuCi0jZGVmaW5lIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJNZXNzYWdl
TmFtZUtleSBAIm1lc3NhZ2VOYW1lIgotI2RlZmluZSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyVXNl
ckluZm9LZXkgQCJ1c2VySW5mbyIKLSNkZWZpbmUgV2ViSW5zcGVjdG9yWFBDV3JhcHBlclNlcmlh
bGl6ZWRNZXNzYWdlS2V5ICJtc2dEYXRhIgotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclhQQ1dy
YXBwZXIgKCkKLS0gKHZvaWQpX2hhbmRsZUV2ZW50Oih4cGNfb2JqZWN0X3Qpb2JqZWN0OwotQGVu
ZAotCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyCi0KLUBkeW5hbWlj
IGF2YWlsYWJsZTsKLQotQHN5bnRoZXNpemUgZGVsZWdhdGUgPSBfZGVsZWdhdGU7Ci1Ac3ludGhl
c2l6ZSBjb25uZWN0aW9uID0gX2Nvbm5lY3Rpb247Ci1Ac3ludGhlc2l6ZSB0YWcgPSBfdGFnOwot
Ci0tIChXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopaW5pdFdpdGhDb25uZWN0aW9uOih4cGNfY29u
bmVjdGlvbl90KWNvbm5lY3Rpb24KLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlm
ICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9jb25uZWN0aW9uID0geHBjX3Jl
dGFpbihjb25uZWN0aW9uKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKF9j
b25uZWN0aW9uLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKLSAgICB4cGNfY29ubmVjdGlv
bl9zZXRfZXZlbnRfaGFuZGxlcihfY29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3Qgb2JqZWN0KSB7
IFtzZWxmIF9oYW5kbGVFdmVudDpvYmplY3RdOyB9KTsKLSAgICB4cGNfY29ubmVjdGlvbl9yZXN1
bWUoX2Nvbm5lY3Rpb24pOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpY2xvc2UK
LXsKLSAgICBpZiAoX2Nvbm5lY3Rpb24pIHsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fY2FuY2Vs
KF9jb25uZWN0aW9uKTsKLSAgICAgICAgeHBjX3JlbGVhc2UoX2Nvbm5lY3Rpb24pOwotICAgICAg
ICBfY29ubmVjdGlvbiA9IE5VTEw7Ci0gICAgfQotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAg
ICBbc2VsZiBjbG9zZV07Ci0gICAgW190YWcgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2Nd
OwotfQotCi0tIChOU0RpY3Rpb25hcnkgKilfZGVzZXJpYWxpemVNZXNzYWdlOih4cGNfb2JqZWN0
X3Qpb2JqZWN0Ci17Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNfZ2V0X3R5cGUob2JqZWN0
KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiR290IHVuZXhwZWN0ZWQgb2JqZWN0IGZyb20gYW4g
eHBjIGNvbm5lY3Rpb24iKTsKLSAgICBpZiAoeHBjX2dldF90eXBlKG9iamVjdCkgIT0gWFBDX1RZ
UEVfRElDVElPTkFSWSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHhwY19vYmplY3RfdCB4
cGNEaWN0aW9uYXJ5ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG9iamVjdCwgV2ViSW5zcGVj
dG9yWFBDV3JhcHBlclNlcmlhbGl6ZWRNZXNzYWdlS2V5KTsKLSAgICBpZiAoIXhwY0RpY3Rpb25h
cnkgfHwgeHBjX2dldF90eXBlKHhwY0RpY3Rpb25hcnkpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkp
IHsKLSAgICAgICAgLy8gVGhpcyBpc24ndCBhIG1lc3NhZ2UgdHlwZSB0aGF0IHdlIGtub3cgaG93
IHRvIGRlc2VyaWFsaXplLCBzbyB3ZSBsZXQgb3VyIGRlbGVnYXRlIHdvcnJ5IGFib3V0IGl0Lgot
ICAgICAgICBpZiAoW19kZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHhwY0Nv
bm5lY3Rpb246dW5oYW5kbGVkTWVzc2FnZTopXSkKLSAgICAgICAgICAgIFtfZGVsZWdhdGUgeHBj
Q29ubmVjdGlvbjpzZWxmIHVuaGFuZGxlZE1lc3NhZ2U6b2JqZWN0XTsKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICB9Ci0KLSAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBfQ0ZYUENDcmVh
dGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpOwotICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoZGljdGlvbmFyeSwgIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIp
OwotICAgIGlmICghZGljdGlvbmFyeSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVy
biBbZGljdGlvbmFyeSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKHZvaWQpX2hhbmRsZUV2ZW50Oih4
cGNfb2JqZWN0X3Qpb2JqZWN0Ci17Ci0gICAgaWYgKCFfY29ubmVjdGlvbikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKHhwY19nZXRfdHlwZShvYmplY3QpID09IFhQQ19UWVBFX0VSUk9SKSB7
Ci0gICAgICAgIFtfZGVsZWdhdGUgeHBjQ29ubmVjdGlvbkZhaWxlZDpzZWxmXTsKLSAgICAgICAg
W3NlbGYgY2xvc2VdOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFfZGVsZWdh
dGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TRGljdGlvbmFyeSAqZGF0YURpY3Rpb25hcnkg
PSBbc2VsZiBfZGVzZXJpYWxpemVNZXNzYWdlOm9iamVjdF07Ci0gICAgaWYgKCFkYXRhRGljdGlv
bmFyeSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBbZGF0YURp
Y3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldlYkluc3BlY3RvclhQQ1dyYXBwZXJNZXNzYWdlTmFtZUtl
eV07Ci0gICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtkYXRhRGljdGlvbmFyeSBvYmplY3RG
b3JLZXk6V2ViSW5zcGVjdG9yWFBDV3JhcHBlclVzZXJJbmZvS2V5XTsKLSAgICBbX2RlbGVnYXRl
IHhwY0Nvbm5lY3Rpb246c2VsZiByZWNlaXZlZE1lc3NhZ2U6bWVzc2FnZSB1c2VySW5mbzp1c2Vy
SW5mb107Ci19Ci0KLS0gKHZvaWQpc2VuZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUg
dXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvCi17Ci0gICAgaWYgKCFfY29ubmVjdGlv
bikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFy
eSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om1lc3NhZ2VOYW1l
IGZvcktleTpXZWJJbnNwZWN0b3JYUENXcmFwcGVyTWVzc2FnZU5hbWVLZXldOwotICAgIGlmICh1
c2VySW5mbykKLSAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OnVzZXJJbmZvIGZvcktleTpX
ZWJJbnNwZWN0b3JYUENXcmFwcGVyVXNlckluZm9LZXldOwotCi0gICAgeHBjX29iamVjdF90IHhw
Y0RpY3Rpb25hcnkgPSBfQ0ZYUENDcmVhdGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KChDRkRpY3Rp
b25hcnlSZWYpZGljdGlvbmFyeSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9u
YXJ5ICYmIHhwY19nZXRfdHlwZSh4cGNEaWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZ
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIpOwotICAgIGlmICgheHBjRGljdGlv
bmFyeSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgeHBjX29iamVjdF90IG1zZyA9IHhwY19kaWN0
aW9uYXJ5X2NyZWF0ZShOVUxMLCBOVUxMLCAwKTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFs
dWUobXNnLCBXZWJJbnNwZWN0b3JYUENXcmFwcGVyU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0Rp
Y3Rpb25hcnkpOwotICAgIHhwY19yZWxlYXNlKHhwY0RpY3Rpb25hcnkpOwotCi0gICAgeHBjX2Nv
bm5lY3Rpb25fc2VuZF9tZXNzYWdlKF9jb25uZWN0aW9uLCBtc2cpOwotCi0gICAgeHBjX3JlbGVh
c2UobXNnKTsKLX0KLQotLSAoQk9PTClhdmFpbGFibGUKLXsKLSAgICByZXR1cm4gX2Nvbm5lY3Rp
b24gIT0gTlVMTDsKLX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYktpdC5leHAgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQuZXhwCmluZGV4IGYz
ZmQyZjQuLjU2ZjgxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5leHAK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0LmV4cApAQCAtMjIsNyArMjIsNiBAQAogLm9i
amNfY2xhc3NfbmFtZV9XZWJIaXN0b3J5SXRlbQogLm9iamNfY2xhc3NfbmFtZV9XZWJJY29uRGF0
YWJhc2UKIC5vYmpjX2NsYXNzX25hbWVfV2ViSW5zcGVjdG9yCi0ub2JqY19jbGFzc19uYW1lX1dl
Ykluc3BlY3RvclhQQ1dyYXBwZXIKIC5vYmpjX2NsYXNzX25hbWVfV2ViSmF2YVNjcmlwdFRleHRJ
bnB1dFBhbmVsCiAub2JqY19jbGFzc19uYW1lX1dlYktleUdlbmVyYXRvcgogLm9iamNfY2xhc3Nf
bmFtZV9XZWJLaXRTdGF0aXN0aWNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5k
ZXggZjVkMzgzNS4uMTg1YWRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtMjEyLDcgKzIxMiw2IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCiAjaWYgUExBVEZPUk0oSU9TKQogI2lt
cG9ydCAiV2ViSW5kaWNhdGVMYXllci5oIgogI2VuZGlmCkBAIC0zOTEsMTAgKzM5MCw2IEBAIHN0
YXRpYyBXZWJDYWNoZU1vZGVsIHNfY2FjaGVNb2RlbCA9IFdlYkNhY2hlTW9kZWxEb2N1bWVudFZp
ZXdlcjsKIHN0YXRpYyBjb25zdCBjaGFyIHdlYlZpZXdJc09wZW5bXSA9ICJBdCBsZWFzdCBvbmUg
V2ViVmlldyBpcyBzdGlsbCBvcGVuLiI7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQotc3RhdGljIEJPT0wgYXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yID0gWUVTOwotI2Vu
ZGlmCi0KIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYlZhbGlkYXRlV2l0aG91dERlbGVnYXRlKQog
LSAoQk9PTCl2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOihpZCA8TlNW
YWxpZGF0ZWRVc2VySW50ZXJmYWNlSXRlbT4paXRlbTsKIEBlbmQKQEAgLTUyNSw2ICs1MjAsNyBA
QCBOU1N0cmluZyAqX1dlYlZpZXdEaWRTdGFydEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdOb3RpZmlj
YXRpb24gPSBAIl9XZWJWaWV3RGlkU3RhcgogTlNTdHJpbmcgKiBjb25zdCBXZWJWaWV3V2lsbENs
b3NlTm90aWZpY2F0aW9uID0gQCJXZWJWaWV3V2lsbENsb3NlTm90aWZpY2F0aW9uIjsKIAogI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorLy8gRklYTUU6IExlZ2FjeSwgcmVtb3ZlIHRoaXMs
IHN3aXRjaCB0byBzb21ldGhpbmcgZnJvbSBKYXZhU2NyaXB0Q29yZSBJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvclNlcnZlci4KIE5TU3RyaW5nICpfV2ViVmlld1JlbW90ZUluc3BlY3Rvckhhc1Nl
c3Npb25DaGFuZ2VkTm90aWZpY2F0aW9uID0gQCJfV2ViVmlld1JlbW90ZUluc3BlY3Rvckhhc1Nl
c3Npb25DaGFuZ2VkTm90aWZpY2F0aW9uIjsKICNlbmRpZgogCkBAIC03NjYsMTEgKzc2Miw2IEBA
IHN0YXRpYyBib29sIHNob3VsZFVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZp
b3IoKQogICAgICAgICAKICAgICAgICAgU2V0dGluZ3M6OnNldFNob3VsZFJlc3BlY3RQcmlvcml0
eUluQ1NTQXR0cmlidXRlU2V0dGVycyhzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0
ZVNldHRlcnMoKSk7CiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAgICAgaWYg
KGF1dG9TdGFydFJlbW90ZUluc3BlY3RvcikKLSAgICAgICAgICAgIFtXZWJWaWV3IF9lbmFibGVS
ZW1vdGVJbnNwZWN0b3JdOwotI2VuZGlmCi0KICAgICAgICAgZGlkT25lVGltZUluaXRpYWxpemF0
aW9uID0gdHJ1ZTsKICAgICB9CiAKQEAgLTc5OCw2ICs3ODksMTAgQEAgc3RhdGljIGJvb2wgc2hv
dWxkVXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpCiAgICAgV2ViQ29y
ZTo6cHJvdmlkZVVzZXJNZWRpYVRvKF9wcml2YXRlLT5wYWdlLCBuZXcgV2ViVXNlck1lZGlhQ2xp
ZW50KHNlbGYpKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAg
X3ByaXZhdGUtPnBhZ2UtPnNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKHRydWUpOworI2VuZGlm
CisKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0Q2FuU3RhcnRNZWRpYShbc2VsZiB3aW5kb3ddKTsK
ICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGgoW1tzZWxmIHByZWZlcmVuY2VzXSBfbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoXSk7CiAgICAg
X3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0VXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9y
dGhhbmRCZWhhdmlvcihzaG91bGRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2
aW9yKCkpOwpAQCAtMTI2Nyw2MCArMTI2Miw0MiBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRU
ZWFyZG93bkVuYWJsZWQoKQogfQogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0rIChX
ZWJJbnNwZWN0b3JTZXJ2ZXIgKilzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXIKLXsKLSAgICBzdGF0
aWMgV2ViSW5zcGVjdG9yU2VydmVyICpzaGFyZWRTZXJ2ZXIgPSBbW1dlYkluc3BlY3RvclNlcnZl
ciBhbGxvY10gaW5pdF07Ci0gICAgcmV0dXJuIHNoYXJlZFNlcnZlcjsKLX0KLQogKyAodm9pZClf
ZW5hYmxlUmVtb3RlSW5zcGVjdG9yCiB7Ci0gICAgW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3Rv
clNlcnZlcl0gc3RhcnRdOworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIgaW50ZXJmYWNlIG9yIHJlbW92ZSBpdC4KIH0KIAog
KyAodm9pZClfZGlzYWJsZVJlbW90ZUluc3BlY3RvcgogewotICAgIFtbV2ViVmlldyBzaGFyZWRX
ZWJJbnNwZWN0b3JTZXJ2ZXJdIHN0b3BdOworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBu
ZXcgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIgaW50ZXJmYWNlIG9yIHJlbW92ZSBp
dC4KIH0KIAogKyAodm9pZClfZGlzYWJsZUF1dG9TdGFydFJlbW90ZUluc3BlY3RvcgogewotICAg
IGF1dG9TdGFydFJlbW90ZUluc3BlY3RvciA9IE5POworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMg
dG8gYSBuZXcgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIgaW50ZXJmYWNlIG9yIHJl
bW92ZSBpdC4KIH0KIAogKyAoQk9PTClfaXNSZW1vdGVJbnNwZWN0b3JFbmFibGVkCiB7Ci0gICAg
cmV0dXJuIFtbV2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIGlzRW5hYmxlZF07Cisg
ICAgLy8gRklYTUU6IE1vdmUgdGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
clNlcnZlciBpbnRlcmZhY2Ugb3IgcmVtb3ZlIGl0LgorICAgIHJldHVybiBOTzsKIH0KIAogKyAo
Qk9PTClfaGFzUmVtb3RlSW5zcGVjdG9yU2Vzc2lvbgogewotICAgIHJldHVybiBbW1dlYlZpZXcg
c2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBoYXNBY3RpdmVEZWJ1Z1Nlc3Npb25dOwotfQotCi0t
IChCT09MKWNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQKLXsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAg
IGlmICghW1tzZWxmIHByZWZlcmVuY2VzXSBkZXZlbG9wZXJFeHRyYXNFbmFibGVkXSkKLSAgICAg
ICAgcmV0dXJuIE5POwotI2VuZGlmCi0KLSAgICByZXR1cm4gW3NlbGYgYWxsb3dzUmVtb3RlSW5z
cGVjdGlvbl07CisgICAgLy8gRklYTUU6IE1vdmUgdGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvclNlcnZlciBpbnRlcmZhY2Ugb3IgcmVtb3ZlIGl0LgorICAgIHJldHVybiBO
TzsKIH0KIAogLSAoQk9PTClhbGxvd3NSZW1vdGVJbnNwZWN0aW9uCiB7Ci0gICAgcmV0dXJuIF9w
cml2YXRlLT5hbGxvd3NSZW1vdGVJbnNwZWN0aW9uOworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMg
dG8gYSBuZXcgQVBJLgorICAgIHJldHVybiBOTzsKIH0KIAogLSAodm9pZClzZXRBbGxvd3NSZW1v
dGVJbnNwZWN0aW9uOihCT09MKWFsbG93CiB7Ci0gICAgaWYgKF9wcml2YXRlLT5hbGxvd3NSZW1v
dGVJbnNwZWN0aW9uID09IGFsbG93KQotICAgICAgICByZXR1cm47Ci0KLSAgICBfcHJpdmF0ZS0+
YWxsb3dzUmVtb3RlSW5zcGVjdGlvbiA9IGFsbG93OwotCi0gICAgW1tXZWJWaWV3IHNoYXJlZFdl
Ykluc3BlY3RvclNlcnZlcl0gcHVzaExpc3RpbmddOworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMg
dG8gYSBuZXcgQVBJLgogfQogCiAtICh2b2lkKXNldEluZGljYXRpbmdGb3JSZW1vdGVJbnNwZWN0
b3I6KEJPT0wpZW5hYmxlZApAQCAtMTM0MCwyOSArMTMxNywxNSBAQCBzdGF0aWMgYm9vbCBmYXN0
RG9jdW1lbnRUZWFyZG93bkVuYWJsZWQoKQogICAgICAgICBfcHJpdmF0ZS0+aW5kaWNhdGVMYXll
ciA9IG5pbDsKICAgICB9CiAjZWxzZQotICAgIC8vIEZJWE1FOiBOZWVkcyBpbXBsZW1lbnRhdGlv
bi4KKyAgICAvLyBGSVhNRTogTmVlZHMgaW1wbGVtZW50YXRpb24gb3IgcHV0IGFuIGltcGxlbWVu
dGF0aW9uIGluIFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXkuCiAjZW5kaWYKIH0KIAotLSAodm9p
ZClzZXRSZW1vdGVJbnNwZWN0b3JVc2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm8KLXsK
LSAgICBpZiAoW19wcml2YXRlLT5yZW1vdGVJbnNwZWN0b3JVc2VySW5mbyBpc0VxdWFsVG9EaWN0
aW9uYXJ5OnVzZXJJbmZvXSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW19wcml2YXRlLT5yZW1v
dGVJbnNwZWN0b3JVc2VySW5mbyByZWxlYXNlXTsKLSAgICBfcHJpdmF0ZS0+cmVtb3RlSW5zcGVj
dG9yVXNlckluZm8gPSBbdXNlckluZm8gY29weV07Ci0KLSAgICBbW1dlYlZpZXcgc2hhcmVkV2Vi
SW5zcGVjdG9yU2VydmVyXSBwdXNoTGlzdGluZ107Ci19Ci0KLS0gKE5TRGljdGlvbmFyeSAqKXJl
bW90ZUluc3BlY3RvclVzZXJJbmZvCi17Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5yZW1vdGVJbnNw
ZWN0b3JVc2VySW5mbzsKLX0KLQogI2lmIFBMQVRGT1JNKElPUykKIC0gKHZvaWQpc2V0SG9zdEFw
cGxpY2F0aW9uQnVuZGxlSWQ6KE5TU3RyaW5nICopYnVuZGxlSWQgbmFtZTooTlNTdHJpbmcgKilu
YW1lCiB7CisgICAgLy8gRklYTUU6IFRoaXMgaGFzIG5vdCB5ZXQgYmVlbiBwb3J0ZWQgdG8gSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuCisKICAgICBpZiAoIVtfcHJpdmF0ZS0+aG9z
dEFwcGxpY2F0aW9uQnVuZGxlSWQgaXNFcXVhbFRvU3RyaW5nOmJ1bmRsZUlkXSkgewogICAgICAg
ICBbX3ByaXZhdGUtPmhvc3RBcHBsaWNhdGlvbkJ1bmRsZUlkIHJlbGVhc2VdOwogICAgICAgICBf
cHJpdmF0ZS0+aG9zdEFwcGxpY2F0aW9uQnVuZGxlSWQgPSBbYnVuZGxlSWQgY29weV07CkBAIC0y
MTE4LDkgKzIwODEsNiBAQCBzdGF0aWMgaW5saW5lIElNUCBnZXRNZXRob2QoaWQgbywgU0VMIHMp
CiAgICAgaWYgKGZyYW1lID09IFtzZWxmIG1haW5GcmFtZV0pCiAgICAgICAgIFtzZWxmIF9kaWRD
aGFuZ2VWYWx1ZUZvcktleTogX1dlYk1haW5GcmFtZVVSTEtleV07CiAgICAgW05TQXBwIHNldFdp
bmRvd3NOZWVkVXBkYXRlOllFU107Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAg
W1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gcHVzaExpc3RpbmddOwotI2VuZGlm
CiB9CiAKIC0gKHZvaWQpX2RpZEZpbmlzaExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IDI0NTQxNTguLjRjMjY3
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKQEAgLTIwOCw4ICsy
MDgsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
LSAgICBCT09MIGFsbG93c1JlbW90ZUluc3BlY3Rpb247Ci0gICAgTlNEaWN0aW9uYXJ5ICpyZW1v
dGVJbnNwZWN0b3JVc2VySW5mbzsKICNpZiBQTEFURk9STShJT1MpCiAgICAgV2ViSW5kaWNhdGVM
YXllciAqaW5kaWNhdGVMYXllcjsKICAgICBOU1N0cmluZyAqaG9zdEFwcGxpY2F0aW9uQnVuZGxl
SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCAwMzQzYTlj
Li5lYjBiY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdE
YXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KQEAg
LTk5LDEwICs5OSw2IEBAIFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpXZWJWaWV3TGF5ZXJG
bHVzaFNjaGVkdWxlcihMYXllckZsdXNoQ29udHJvbGxlciogZmx1CiAgICAgZGFzaGJvYXJkQmVo
YXZpb3JBbGxvd1doZWVsU2Nyb2xsaW5nID0gWUVTOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLSAgICBhbGxvd3NSZW1vdGVJbnNwZWN0aW9uID0gWUVTOwotI2VuZGlm
Ci0KICAgICBzaG91bGRDbG9zZVdpdGhXaW5kb3cgPSBvYmpjX2NvbGxlY3RpbmdFbmFibGVkKCk7
CiAKICAgICBwbHVnaW5EYXRhYmFzZUNsaWVudENvdW50Kys7CkBAIC0xMzUsNyArMTMxLDYgQEAg
V2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6OldlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyKExh
eWVyRmx1c2hDb250cm9sbGVyKiBmbHUKICAgICBbbWVkaWFTdHlsZSByZWxlYXNlXTsKIAogI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIFtyZW1vdGVJbnNwZWN0b3JVc2VySW5mbyBy
ZWxlYXNlXTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgW2luZGljYXRlTGF5ZXIgcmVsZWFzZV07
CiAgICAgW2hvc3RBcHBsaWNhdGlvbkJ1bmRsZUlkIHJlbGVhc2VdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggMjZjODk4Ni4uY2Q1NGYwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC02MSw5ICs2
MSw2IEBAIHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIEBjbGFzcyBXZWJCYXNlUGx1Z2lu
UGFja2FnZTsKIEBjbGFzcyBXZWJEb3dubG9hZDsKIEBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0Owot
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotQGNsYXNzIFdlYkluc3BlY3RvclNlcnZlcjsK
LSNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIApAQCAtMjE3LDEwICsyMTQsNiBAQCBPQkpD
X0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKIC0gKHZvaWQpX2Z1bGxTY3JlZW5SZW5kZXJlckNo
YW5nZWQ6KFdlYkNvcmU6OlJlbmRlckJveCopcmVuZGVyZXI7CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQotKyAoV2ViSW5zcGVjdG9yU2VydmVyICopc2hhcmVkV2ViSW5z
cGVjdG9yU2VydmVyOwotI2VuZGlmCi0KIC8vIENvbnZlcnNpb24gZnVuY3Rpb25zIGJldHdlZW4g
V2ViQ29yZSByb290IHZpZXcgY29vcmRpbmF0ZXMgYW5kIHdlYiB2aWV3IGNvb3JkaW5hdGVzLgog
LSAoTlNQb2ludClfY29udmVydFBvaW50RnJvbVJvb3RWaWV3OihOU1BvaW50KXBvaW50OwogLSAo
TlNSZWN0KV9jb252ZXJ0UmVjdEZyb21Sb290VmlldzooTlNSZWN0KXJlY3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMmRkZmRlZC4uNTAxZjlhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAtNzcsNiAr
NzcsNyBAQCBleHRlcm4gTlNTdHJpbmcgKldlYkVsZW1lbnRJc0luU2Nyb2xsQmFyS2V5OwogZXh0
ZXJuIE5TU3RyaW5nICpfV2ViVmlld0RpZFN0YXJ0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ05vdGlm
aWNhdGlvbjsKIAogI2lmIEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SCisvLyBGSVhNRTogTGVnYWN5
LCByZW1vdmUgdGhpcywgc3dpdGNoIHRvIHNvbWV0aGluZyBmcm9tIEphdmFTY3JpcHRDb3JlIElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyLgogLy8gTm90aWZpY2F0aW9uIHdoZW4gdGhl
IG51bWJlciBvZiBpbnNwZWN0b3Igc2Vzc2lvbnMgYmVjb21lcyBub24temVybyBvciByZXR1cm5z
IHRvIDAuCiAvLyBDaGVjayB0aGUgY3VycmVudCBzdGF0ZSB2aWEgLVtXZWJWaWV3IF9oYXNSZW1v
dGVJbnNwZWN0b3JTZXNzaW9uXS4KIGV4dGVybiBOU1N0cmluZyAqX1dlYlZpZXdSZW1vdGVJbnNw
ZWN0b3JIYXNTZXNzaW9uQ2hhbmdlZE5vdGlmaWNhdGlvbjsKQEAgLTI2MywxNSArMjY0LDYgQEAg
dHlwZWRlZiBlbnVtIHsKICsgKEJPT0wpX2hhc1JlbW90ZUluc3BlY3RvclNlc3Npb247CiAKIC8q
IQotICAgIEBtZXRob2QgY2FuQmVSZW1vdGVseUluc3BlY3RlZAotICAgIEByZXN1bHQgTG9va3Mg
YXQgYWxsIHRoZSBmYWN0b3JzIG9mIHRoaXMgV2ViVmlldyBhbmQgcmV0dXJucyB3aGV0aGVyIG9y
IG5vdAotICAgIHRoaXMgV2ViVmlldyBzaG91bGQgYWxsb3cgYSBSZW1vdGUgV2ViIEluc3BlY3Rv
ciB0byBhdHRhY2ggdG8gaXQuIFRoaXMgdGFrZXMKLSAgICBpbnRvIGFjY291bnQgLWFsbG93c1Jl
bW90ZUluc3BlY3Rpb24sIFByaXZhdGUgQnJvd3NpbmcsIGFuZCBwb3RlbnRpYWxseSBvdGhlcgot
ICAgIGZhY3RvcnMuCi0qLwotLSAoQk9PTCljYW5CZVJlbW90ZWx5SW5zcGVjdGVkOwotCi0vKiEK
ICAgICBAbWV0aG9kIGFsbG93c1JlbW90ZUluc3BlY3Rpb24KICAgICBAcmVzdWx0IFJldHVybnMg
d2hldGhlciBvciBub3QgdGhpcyBXZWJWaWV3IHdpbGwgYWxsb3cgYSBSZW1vdGUgV2ViIEluc3Bl
Y3RvcgogICAgIHRvIGF0dGFjaCB0byBpdC4KQEAgLTI5MiwyMSArMjg0LDYgQEAgdHlwZWRlZiBl
bnVtIHsKICAgICBAYWJzdHJhY3QgaW5kaWNhdGUgdGhpcyBXZWJWaWV3IG9uIHNjcmVlbiBmb3Ig
YSByZW1vdGUgaW5zcGVjdG9yLgogKi8KIC0gKHZvaWQpc2V0SW5kaWNhdGluZ0ZvclJlbW90ZUlu
c3BlY3RvcjooQk9PTCllbmFibGVkOwotCi0vKgotICAgIEBtZXRob2Qgc2V0UmVtb3RlSW5zcGVj
dG9yVXNlckluZm8KLSAgICBAcGFyYW0gdGFnIFRoZSBkaWN0aW9uYXJ5IHRvIGJlIGFzc29jaWF0
ZWQgd2l0aCB0aGUgV2ViVmlldy4KLSAgICBAYWJzdHJhY3QgRGV2ZWxvcGVyIHNwZWNpZmllZCBk
aWN0aW9uYXJ5IGZvciB0aGUgV2ViVmlldyB0aGF0IHdpbGwgYmUKLSAgICBzZW50IHRvIHRoZSBS
ZW1vdGUgRGVidWdnZXIuIFRoZSBkaWN0aW9uYXJ5IG11c3QgY29udGFpbiBwcm9wZXJ0eQotICAg
IGxpc3Qgc2VyaWFsaXphYmxlIHZhbHVlcy4KLSovCi0tICh2b2lkKXNldFJlbW90ZUluc3BlY3Rv
clVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKLQotLyohCi0gICAgQG1ldGhvZCBy
ZW1vdGVJbnNwZWN0b3JVc2VySW5mbwotICAgIEByZXN1bHQgUmV0dXJucyB0aGUgZGljdGlvbmFy
eSBhc3NvY2lhdGVkIHdpdGggdGhpcyBXZWJWaWV3LgotKi8KLS0gKE5TRGljdGlvbmFyeSAqKXJl
bW90ZUluc3BlY3RvclVzZXJJbmZvOwogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBlNWRjYjdh
Li4xOTBlMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSA8V2Vi
Q29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNsaWVudC5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlTGlz
dGVuZXIuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdpbkNFLmggYi9Tb3VyY2UvV2Vi
S2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdpbkNFLmgKaW5kZXggMmFm
MjZjOC4uZWRkY2Q2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRXaW5DRS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2Vi
Q29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2luQ0UuaApAQCAtMjYsNyArMjYsNyBAQAogI2Rl
ZmluZSBJbnNwZWN0b3JDbGllbnRXaW5DRV9oCiAKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQu
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JGb3J3YXJkaW5nLmgiCiAKIGNsYXNzIFdlYlZpZXc7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjZmEx
ZDM4Li5iYzg1YzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMTEtMTkgIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVu
dCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb20uYXBw
bGUuV2ViUHJvY2Vzcy5zYi5pbjoKKyAgICAgICAgQWxsb3cgdGhlIFdlYlByb2Nlc3MgdG8gYWNj
ZXNzIHRoZSAiY29tLmFwcGxlLndlYmluc3BlY3RvciIgbmFtZWQKKyAgICAgICAgWFBDIHNlcnZp
Y2UgdG8gZXhwb3NlIGl0cyBXZWJDb3JlOjpQYWdlJ3MgdG8gcmVtb3RlIGRlYnVnZ2Vycy4KKwog
MjAxMy0xMi0wMiAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IGEgc2V0dGluZyB0byBvcHQgaW50byBhIG1vZGUgd2hlcmUgdGhlIGJhY2tncm91bmQgZXh0ZW5k
cyBhbmQgZml4ZWQgZWxlbWVudHMgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggZGNlZDVlZi4uZDExZWM1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzQ1LDYgKzM0NSwxMCBAQCBX
ZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKICAgICBXZWJDb3JlOjpwcm92aWRlRGV2aWNlUHJveGltaXR5
VG8obV9wYWdlLmdldCgpLCBuZXcgV2ViRGV2aWNlUHJveGltaXR5Q2xpZW50KHRoaXMpKTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9wYWdlLT5zZXRSZW1v
dGVJbnNwZWN0aW9uQWxsb3dlZCh0cnVlKTsKKyNlbmRpZgorCiAgICAgbV9wYWdlLT5zZXRDYW5T
dGFydE1lZGlhKGZhbHNlKTsKICAgICBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cgPSBwYXJh
bWV0ZXJzLm1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3c7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCmluZGV4IDkwYmIwZTYu
LmM0NzJjMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29tLmFwcGxl
LldlYlByb2Nlc3Muc2IuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBw
bGUuV2ViUHJvY2Vzcy5zYi5pbgpAQCAtMTM5LDYgKzEzOSwxMCBAQAogCiAjZW5kaWYKIAorOzsg
UmVtb3RlIFdlYiBJbnNwZWN0b3IKKyhhbGxvdyBtYWNoLWxvb2t1cAorICAgICAgIChnbG9iYWwt
bmFtZSAiY29tLmFwcGxlLndlYmluc3BlY3RvciIpKQorCiA7OyBWYXJpb3VzIHNlcnZpY2VzIHJl
cXVpcmVkIGJ5IEFwcEtpdCBhbmQgb3RoZXIgZnJhbWV3b3JrcwogKGFsbG93IG1hY2gtbG9va3Vw
CiAgICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuRGlza0FyYml0cmF0aW9uLmRpc2thcmJp
dHJhdGlvbmQiKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218315</attachid>
            <date>2013-12-03 11:25:35 -0800</date>
            <delta_ts>2013-12-03 12:14:59 -0800</delta_ts>
            <desc>[PATCH] Combined For Bots 6</desc>
            <filename>for-bots-6.patch</filename>
            <type>text/plain</type>
            <size>215421</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5oCmluZGV4IDEyNjdiN2EuLmY5ZDdjZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaApAQCAtMTY0LDYgKzE2NCwxMiBA
QCBPQkpDX1ZJU0lCTEUKICovCiBAcHJvcGVydHkocmVhZG9ubHksIHJldGFpbikgSlNWaXJ0dWFs
TWFjaGluZSAqdmlydHVhbE1hY2hpbmU7CiAKKy8qIQorQHByb3BlcnR5CitAZGlzY3Vzc2lvbiBO
YW1lIG9mIHRoZSBKU0NvbnRleHQuIEV4cG9zZWQgd2hlbiByZW1vdGUgZGVidWdnaW5nIHRoZSBj
b250ZXh0LgorKi8KK0Bwcm9wZXJ0eShjb3B5KSBOU1N0cmluZyAqbmFtZTsKKwogQGVuZAogCiAv
KiEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggYmM4ZmMxYS4uNDdk
Y2IwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTE2Niw2ICsx
NjYsMjIgQEAKICAgICByZXR1cm4gbV92aXJ0dWFsTWFjaGluZTsKIH0KIAorLSAoTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTR2xvYmFsQ29udGV4dENvcHlOYW1l
KG1fY29udGV4dCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
cmV0dXJuIFsoTlNTdHJpbmcgKilKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBuYW1lKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZUpTID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZT
dHJpbmcoKENGU3RyaW5nUmVmKVtuYW1lIGNvcHldKTsKKyAgICBKU0dsb2JhbENvbnRleHRTZXRO
YW1lKG1fY29udGV4dCwgbmFtZUpTKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UobmFtZUpTKTsKK30K
KwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gSlNDb250ZXh0KFN1YnNjcmlwdFN1cHBvcnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggZjBhNDM1Yy4u
ODFiNjFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApA
QCAtMjEzLDYgKzIxMywzNyBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFs
Q29udGV4dChKU0NvbnRleHRSZWYgY3R4KQogICAgIHJldHVybiB0b0dsb2JhbFJlZihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSk7CiB9CiAKK0pTU3RyaW5nUmVmIEpT
R2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCit7CisgICAgaWYg
KCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBBUElFbnRy
eVNoaW0gZW50cnlTaGltKGV4ZWMpOworCisgICAgU3RyaW5nIG5hbWUgPSBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCktPm5hbWUoKTsKKyAgICBpZiAobmFtZS5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKS5sZWFr
UmVmKCk7Cit9CisKK3ZvaWQgSlNHbG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRS
ZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7
CisKKyAgICBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnNldE5hbWUobmFtZSA/IG5hbWUt
PnN0cmluZygpIDogU3RyaW5nKCkpOworfQorCisKIGNsYXNzIEJhY2t0cmFjZUZ1bmN0b3Igewog
cHVibGljOgogICAgIEJhY2t0cmFjZUZ1bmN0b3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5z
aWduZWQgcmVtYWluaW5nQ2FwYWNpdHlGb3JGcmFtZUNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuaAppbmRleCA3NzA1OTU1Li5lYWI3YTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgKQEAgLTEzMyw2ICsxMzMsMjQgQEAgSlNf
RVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBj
dHgpIEFWQUlMQUJMRV9JTl9XRUIKICovCiBKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpT
Q29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEw
XzcsIDRfMCk7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyBhIGNvcHkgb2YgdGhl
IG5hbWUgb2YgYSBjb250ZXh0LgorQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHdob3Nl
IG5hbWUgeW91IHdhbnQgdG8gZ2V0LgorQHJlc3VsdCBUaGUgbmFtZSBmb3IgY3R4LgorQGRpc2N1
c3Npb24gQSBKU0dsb2JhbENvbnRleHQncyBuYW1lIGlzIGV4cG9zZWQgZm9yIHJlbW90ZSBkZWJ1
Z2dpbmcgdG8gbWFrZSBpdAorZWFzaWVyIHRvIGlkZW50aWZ5IHRoZSBjb250ZXh0IHlvdSB3b3Vs
ZCBsaWtlIHRvIGF0dGFjaCB0by4KKyovCitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNHbG9iYWxD
b250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCk7CisKKy8qIQorQGZ1bmN0aW9u
CitAYWJzdHJhY3QgU2V0cyB0aGUgcmVtb3RlIGRlYnVnZ2luZyBuYW1lIGZvciBhIGNvbnRleHQu
CitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBuYW1lLgor
QHBhcmFtIG5hbWUgVGhlIHJlbW90ZSBkZWJ1Z2dpbmcgbmFtZSB0byBzZXQgb24gY3R4LgorKi8K
K0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldE5hbWUoSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgbmFtZSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWIyY2RmZS4uNDQ5ZmFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEsNiArMTEsNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vZnRsIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaGVhcCIKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5z
cGVjdG9yIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGlu
dCIKQEAgLTU4Myw2ICs1ODQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFE
RVJTX0RJUkVDVE9SSUVTCiAgICAgY29sbGVjdG9yL2hhbmRsZXMKICAgICBkZWJ1Z2dlcgogICAg
IGhlYXAKKyAgICBpbnNwZWN0b3IKICAgICBpbnRlcnByZXRlcgogICAgIGppdAogICAgIGxsaW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiMDc1N2IzLi43NjI2MTUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNjkgQEAKKzIwMTMtMTItMDMgIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNo
IFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEph
dmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb3ZlIHRoZSBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikgcmVtb3RlIGRlYnVnZ2VyIGNv
bm5lY3Rpb24gbWFuYWdlbWVudAorICAgICAgICBpbnRvIEphdmFTY3JpcHRDb3JlIChvcmlnaW5h
bGx5IGZyb20gV2ViS2l0L21hYykuIEluY2x1ZGUgZW5oYW5jZW1lbnRzOgorCisgICAgICAgICAg
KiBhbGxvdyBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIHJlbW90ZSBkZWJ1Z2dhYmxlIHRhcmdldHMs
CisgICAgICAgICAgICBldmVudHVhbGx5IGF0IGxlYXN0IGEgSlNDb250ZXh0LCBXZWJWaWV3LCBX
S1ZpZXcuCisgICAgICAgICAgKiBhbGxvdyBkZWJ1Z2dhYmxlcyB0byBiZSByZWdpc3RlcmVkIGFu
ZCBkZWJ1Z2dlZCBvbiBhbnkgdGhyZWFkLiBVbmxpa2UKKyAgICAgICAgICAgIFdlYlZpZXdzLCBK
U0NvbnRleHRzIG1heSBiZSBydW4gZW50aXJlbHkgb2ZmIG9mIHRoZSBtYWluIHRocmVhZC4KKyAg
ICAgICAgICAqIG1vdmUgdGhlIHJlbW90ZSBjb25uZWN0aW9uIChYUEMgY29ubmVjdGlvbikgaXRz
ZWxmIG9mZiBvZiB0aGUgbWFpbiB0aHJlYWQsCisgICAgICAgICAgICBpdCBkb2Vzbid0IG5lZWQg
dG8gYmUgb24gdGhlIG1haW4gdGhyZWFkLgorCisgICAgICAgIE1ha2UgSlNDb250ZXh0IEBjbGFz
cyBhbmQgSmF2YVNjcmlwdENvcmU6OkpTQ29udGV4dFJlZgorICAgICAgICAiSmF2YVNjcmlwdCIg
UmVtb3RlIERlYnVnZ2FibGVzLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlLmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6flJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlOjppbml0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6dXBkYXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluZm8pOgorICAgICAgICBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlIGRlZmluZXMgYSBkZWJ1Z2dhYmxlIHRhcmdldC4gQXMgbG9uZyBhcworICAg
ICAgICBzb21ldGhpbmcgY3JlYXRlcyBhIGRlYnVnZ2FibGUgYW5kIGlzIHNldCB0byBhbGxvdyBy
ZW1vdGUgaW5zcGVjdGlvbgorICAgICAgICBpdCB3aWxsIGJlIGxpc3RlZCBpbiByZW1vdGUgZGVi
dWdnZXJzLiBGb3IgdGhlIGRpZmZlcmVudCB0eXBlcyBvZgorICAgICAgICBkZWJ1Z2dhYmxlcyAo
SmF2YVNjcmlwdCBhbmQgV2ViKSB0aGVyZSBpcyBkaWZmZXJlbnQgYmFzaWMgaW5mb3JtYXRpb24K
KyAgICAgICAgdGhhdCBtYXkgYmUgbGlzdGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsOjp+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKToKKyAgICAgICAg
VGhlIG9ubHkgdGhpbmcgYSBkZWJ1Z2dhYmxlIG5lZWRzIGZvciByZW1vdGUgZGVidWdnaW5nIGlz
IGFuCisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBhIHdheSB0byBzZW5kIG1lc3Nh
Z2VzIHRvIGEgcmVtb3RlIGZyb250ZW5kLgorICAgICAgICBUaGlzIGNsYXNzIHByb3ZpZGVzIHRo
YXQgbWV0aG9kLCBhbmQgaXMgdmVuZGVkIHRvIHRoZQorICAgICAgICBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlIHdoZW4gYSByZW1vdGUgY29ubmVjdGlvbiBpcyBzZXR1cC4KKworICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOiBBZGRlZC4KKyAgICAgICAgU2luZ2xl
dG9uLCBjcmVhdGVkIGF0IGxlYXN0IHdoZW4gdGhlIGZpcnN0IERlYnVnZ2FibGUgaXMgY3JlYXRl
ZC4KKyAgICAgICAgVGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBsaXN0IG9mIGRlYnVnZ2FibGVzLCBh
bnkgY29ubmVjdGlvbiB0byBhCisgICAgICAgIHJlbW90ZSBkZWJ1Z2dlciBwcm94eSAoWFBDIHNl
cnZpY2UgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiKS4KKworICAgICAgICAoSW5zcGVjdG9yOjpk
aXNwYXRjaEFzeW5jT25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6bmV4dEF2YWlsYWJsZUlkZW50aWZpZXIpOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGUpOgorICAgICAgICBEZWJ1
Z2dhYmxlIG1hbmFnZW1lbnQuIFdoZW4gZGVidWdnYWJsZXMgYXJlIGFkZGVkLCByZW1vdmVkLCBv
ciB1cGRhdGVkCisgICAgICAgIHdlIHN0YXNoIGEgY29weSBvZiB0aGUgZGVidWdnYWJsZSBpbmZv
cm1hdGlvbiBhbmQgcHVzaCBhbiB1cGRhdGUgdG8KKyAgICAgICAgZGVidWdnZXJzLiBTdGFzaGlu
ZyBhIGNvcHkgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBSZW1vdGVJbnNwZWN0b3IKKyAgICAg
ICAgaXMgYSB0aHJlYWQgc2FmZSB3YXkgdG8gYXZvaWQgd2Fsa2luZyBvdmVyIGFsbCBkZWJ1Z2dh
YmxlcyB0byBnYXRoZXIKKyAgICAgICAgdGhlIGluZm9ybWF0aW9uIHdoZW4gaXQgaXMgbmVlZGVk
LgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c3RhcnQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0b3ApOgorICAgICAgICBSdW50aW1lIEFQ
SSB0byBlbmFibGUgLyBkaXNhYmxlIHRoZSBmZWF0dXJlLgorCisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6bGlzdGluZ0ZvckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nTm93KToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ1Nvb24pOgorICAgICAgICBQdXNoaW5nIGEg
bGlzdGluZyB0byByZW1vdGUgZGVidWdnZXJzLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblJlY2VpdmVkTWVz
c2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlv
bkZhaWxlZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVj
dGlvblVuaGFuZGxlZE1lc3NhZ2UpOgorICAgICAgICBYUEMgc2V0dXAsIHNlbmQsIGFuZCByZWNl
aXZlIGhhbmRsaW5nLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBk
YXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKToKKyAgICAgICAgQXBwbGljYXRpb25zIGJlaW5nIGRl
YnVnZ2VkIG1heSB3YW50IHRvIGtub3cgd2hlbiBhIGRlYnVnCisgICAgICAgIHNlc3Npb24gaXMg
YWN0aXZlLiBUaGlzIHByb3ZpZGVzIHRoYXQgbm90aWZpY2F0aW9uLgorCisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldExpc3RpbmdN
ZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZElu
ZGljYXRlTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVj
ZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UpOgorICAgICAgICBEaXNwYXRjaGluZyBpbmNvbWlu
ZyByZW1vdGUgZGVidWdnaW5nIHByb3RvY29sIG1lc3NhZ2VzLgorICAgICAgICBUaGVzZSBhcmUg
d3JhcHBpbmcgYWJvdmUgdGhlIGluc3BlY3RvciBwcm90b2NvbCBtZXNzYWdlcy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg6IEFkZGVkLgor
ICAgICAgICBQcm90b2NvbCBtZXNzYWdlcyBhbmQgZGljdGlvbmFyeSBrZXlzIGluc2lkZSB0aGUg
bWVzc2FnZXMuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm86OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24ubW06IEFkZGVkLgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVuIHRo
ZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGUuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb246OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246On5SZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbik6CisgICAgICAgIEFsbG93IGZvciBkaXNwYXRjaGlu
ZyBtZXNzYWdlcyBvbiBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzIG9uIGEgZGlzcGF0Y2hfcXVldWUK
KyAgICAgICAgaW5zdGVhZCBvZiB0aGUgbWFpbiBxdWV1ZS4KKworICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGVzdGluYXRpb24pOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y29u
bmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBOZWVkZWQgaW4gdGhlIHJlbW90ZSBkZWJ1Z2dp
bmcgcHJvdG9jb2wgdG8gaWRlbnRpZnkgdGhlIHJlbW90ZSBkZWJ1Z2dlci4KKworICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0Y2hT
eW5jT25EZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXApOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
Y2xvc2VGcm9tRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICBUaGUgY29ubmVjdGlvbiBpcyBhIHRoaW4g
Y2hhbm5lbCBiZXR3ZWVuIHRoZSB0d28gc2lkZXMgdGhhdCBjYW4gYmUgY2xvc2VkCisgICAgICAg
IGZyb20gZWl0aGVyIHNpZGUsIHNvIHRoZXJlIGlzIHNvbWUgbG9naWMgYXJvdW5kIG11bHRpLXRo
cmVhZGVkIGFjY2Vzcy4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbjo6Q2xpZW50Ojp+Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06IEFkZGVkLgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24pOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2Fn
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246Omhh
bmRsZUV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICBUaGlzIGlzIGEgY29ubmVjdGlvbiBiZXR3ZWVu
IHRoZSBSZW1vdGVJbnNwZWN0b3Igc2luZ2xldG9uIGFuZCBhbiBYUEMgc2VydmljZQorICAgICAg
ICBuYW1lZCAiY29tLmFwcGxlLndlYmluc3BlY3RvciIuIFRoaXMgaGFuZGxlcyBzZXJpYWxpemF0
aW9uIG9mIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgIG1lc3NhZ2VzIHRvIGFuZCBmcm9tIHRoZSBz
ZXJ2aWNlLiBUaGUgcmVjZWl2aW5nIGlzIGRvbmUgb24gYSBub24tbWFpbiBxdWV1ZS4KKworICAg
ICAgICAqIEFQSS9KU0NvbnRleHQuaDoKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAg
ICAgICAoLVtKU0NvbnRleHQgbmFtZV0pOgorICAgICAgICAoLVtKU0NvbnRleHQgc2V0TmFtZTpd
KToKKyAgICAgICAgT2JqQyBBUEkgdG8gZW5hYmxlL2Rpc2FibGUgSlNDb250ZXh0IHJlbW90ZSBp
bnNwZWN0aW9uIGFuZCBnaXZlIGEgbmFtZS4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYu
aDoKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTR2xvYmFsQ29u
dGV4dEdldE5hbWUpOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0U2V0TmFtZSk6CisgICAgICAg
IEMgQVBJIHRvIGdpdmUgYSBKU0NvbnRleHQgYSBuYW1lLgorCisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXROYW1l
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpuYW1lKToKKyAgICAgICAgU2hhcmVkIGhhbmRsaW5nIG9mIHRoZSBBUElz
IGFib3ZlLgorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpKU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGU6Om5hbWUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmNvbm5l
Y3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmRpc2Nvbm5lY3Qp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2Fn
ZUZyb21SZW1vdGVGcm9udGVuZCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdERl
YnVnZ2FibGUuaDogQWRkZWQuCisgICAgICAgIFN0dWIgZm9yIHRoZSBhY3R1YWwgcmVtb3RlIGRl
YnVnZ2luZyBpbXBsZW1lbnRhdGlvbi4gV2Ugd2lsbCBwdXNoCisgICAgICAgIGRvd24gdGhlIGFw
cHJvcHJpYXRlIFdlYkNvcmUvaW5zcGVjdG9yIHBlaWNlcyBzdWl0YWJsZSBmb3IgZGVidWdnaW5n
CisgICAgICAgIGp1c3QgYSBKYXZhU2NyaXB0IGNvbnRleHQuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvai5maWx0ZXJzOgorICAgICAgICBVcGRhdGUgYnVpbGQgZmlsZXMuCisKIDIwMTMtMTIt
MDMgIHBlYXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CiAKICAgICAgICAgdGVz
dGFwaSB0ZXN0IGNyYXNoZXMgb24gV2luZG93cyBpbiBXVEY6OlZlY3Rvcjx3Y2hhcl90LDY0LFdU
Rjo6VW5zYWZlVmVjdG9yT3ZlcmZsb3c+OjpzaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5hbQppbmRleCA0MmFhNjQzLi4wODVmY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmFtCkBAIC01OSw2ICs1OSw3IEBAIGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzICs9IFwK
IAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcCBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3RvciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0IFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxMWJkMDk1Li4xODUxNTc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjEwLDYgKzYxMCw3IEBAIGphdmFz
Y3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29k
ZS91dGZfb2xkLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91dHlwZXMu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdS91bmljb2RlL3V2ZXJzaW9uLmggXAorCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCBjMzZhODc5Li4zZWY0MjgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTk5NCw2ICs5OTQsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxoZWFwXFdlYWtTZXRJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXFdyaXRlQmFycmllclN1cHBvcnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFic3RyYWN0UEMuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXENhY2hlZENhbGwuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXENhbGxGcmFtZS5oIiAvPgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDgwMTMy
ZjIuLmIzNDdiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMKQEAgLTI1LDYgKzI1LDkgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9ImhlYXAi
PgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2JkNDllNWNmLTk1ZDYtNDE1MS1iMjg2LTg4Mzdj
Y2QzNDdmYX08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJ
bmNsdWRlPSJpbnNwZWN0b3IiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezA5YWUwOWRhLTEy
MzktMDBlYS04ZGZlLTkwODdhZTEyM2JiZX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0
ZXI+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJpbnRlcnByZXRlciI+CiAgICAgICA8VW5pcXVlSWRl
bnRpZmllcj57MTBkOTdlYTMtMmFmOS00ODljLWE1NGUtZDY5ZWYyZTRjYTBhfTwvVW5pcXVlSWRl
bnRpZmllcj4KICAgICA8L0ZpbHRlcj4KQEAgLTE3MDAsNiArMTcwMyw5IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxoZWFwXFdyaXRlQmFycmllclN1cHBvcnQuaCI+CiAgICAgICA8Rmls
dGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCI+CisgICAgICA8Rmls
dGVyPmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJzdHJhY3RQQy5oIj4KICAgICAgIDxGaWx0ZXI+aW50
ZXJwcmV0ZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNjY1ODU1Zi4uZTgzZmY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTg4Niw2ICs4ODYsMTggQEAKIAkJQTE3MTJCNDExMUM3QjIzNTAwN0E1MzE1IC8qIFJl
Z0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQTAwOUMwMTgzMUEyMkQwMENGODcx
MSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQzE1NkVFRDNCMDA1NjZDQjIgLyogTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0IxNTZFRUQzQjAw
NTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU5NDU1OEYxODI0NUVGRDAwQ0MzODQzIC8qIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU5NDU1OEUxODI0NUVERTAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUuY3BwICovOyB9OworCQlBNTk0NTU5MjE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1OTQ1NTkwMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERl
YnVnZ2FibGUuY3BwICovOyB9OworCQlBNTk0NTU5MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmggKi87IH07CisJCUE1OTQ1NTk1MTgyNDc5RUIwMENDMzg0MyAvKiBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1OTQ1NTk0MTgyNDc5RUIwMENDMzg0MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
NUJBMTVFODE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMTE4MjM0MEIzMDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQTVCQTE1RTkxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3Bl
Y3Rvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gKi87IH07CisJCUE1
QkExNUVBMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUUzMTgyMzQw
QjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNUJBMTVFQjE4MjM0MEI0MDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUU0MTgyMzQwQjMwMEE4MkU2
OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oICovOyB9OworCQlBNUJB
MTVFQzE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJB
MTVFNTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b24ubW0gKi87IH07CisJCUE1QkExNUVEMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUJBMTVFNjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbi5oICovOyB9OworCQlBNUJBMTVFRTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1QkExNUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uLm1tICovOyB9OworCQlBNUJBMTVGMDE4MjM0NUFGMDBBODJFNjkgLyogUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTVCQTE1RUYxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlBNzAwODczOTE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3MzcxN0NC
RTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJQTcwMDg3M0ExN0NC
RTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczODE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29u
c3RydWN0b3IuaCAqLzsgfTsKIAkJQTcwMDg3M0QxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzAwODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTIx
OTYsNiArMjIwOCwxOCBAQAogCQlBMTcxMkIzQTExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2Fj
aGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwQ2FjaGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkIzRTExQzdCMjI4MDA3QTUz
MTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVn
RXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCNDAxMUM3QjIz
NTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWdFeHBLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5NDU1OEUxODI0
NUVERTAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHA7
IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTk0NTU5MDE4MjQ3NDQ3MDBDQzM4NDMgLyog
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE1OTQ1NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERl
YnVnZ2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTQ1NTk0MTgy
NDc5RUIwMENDMzg0MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg7IHBhdGggPSBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1QkExNUUxMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yLmg7IHBhdGgg
PSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9y
Lm1tOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QkExNUUzMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJ
bnNwZWN0b3JDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVt
b3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg7IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3RvckNvbnN0YW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVF
NDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb24uaDsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVC
QTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW07IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNUJBMTVFNjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uLmg7IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1
RTcxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLm1tOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFRjE4MjM0
NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmg7IHBhdGggPSBp
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTcwMDg3MzcxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVj
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcENvbnN0cnVj
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcwMDg3MzgxN0NCRTg1MzAw
QzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hcENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDA4
NzNCMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWFwUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI2OTQsNiArMjcxOCw3IEBACiAJCQkJMDg2N0Q2OUFGRTg0MDI4RkMwMkFB
QzA3IC8qIEZyYW1ld29ya3MgKi8sCiAJCQkJMEZFQTA5RkMxNzA1MTM3RjAwQkI3MjJDIC8qIGZ0
bCAqLywKIAkJCQkxNDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUgLyogaGVhcCAqLywKKwkJCQlBNUJB
MTVERjE4MjM0MDkyMDBBODJFNjkgLyogaW5zcGVjdG9yICovLAogCQkJCTE0MjlENzdBMEVEMjBE
NzMwMEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLywKIAkJCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2
MTkgLyogaml0ICovLAogCQkJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLywK
QEAgLTM0NzcsNiArMzUwMiw4IEBACiAJCQkJMEYyQjY2QzgxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oICovLAogCQkJCTE0REUwRDY4
MEQwMjQzMTQwMEFBQ0NBMiAvKiBKU0dsb2JhbE9iamVjdC5jcHAgKi8sCiAJCQkJQThFODk0MzMw
Q0QwNjAzRjAwMzY3MTc5IC8qIEpTR2xvYmFsT2JqZWN0LmggKi8sCisJCQkJQTU5NDU1OTAxODI0
NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgKi8sCisJCQkJQTU5
NDU1OTExODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oICovLAog
CQkJCUJDNzU2RkM2MEUyMDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHAgKi8sCiAJCQkJQkM3NTZGQzcwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmggKi8sCiAJCQkJMEYyQjY2Q0ExN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MTZBcnJh
eS5oICovLApAQCAtNDE0NSw2ICs0MTcyLDMxIEBACiAJCQlwYXRoID0gYnl0ZWNvZGU7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBNUJBMTVERjE4MjM0MDkyMDBBODJFNjkg
LyogaW5zcGVjdG9yICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQlBNUJBMTVFMDE4MjM0MDlEMDBBODJFNjkgLyogcmVtb3RlICovLAorCQkJCUE1OTQ1NTk0
MTgyNDc5RUIwMENDMzg0MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLywKKwkJCSk7
CisJCQluYW1lID0gaW5zcGVjdG9yOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
KwkJQTVCQTE1RTAxODIzNDA5RDAwQTgyRTY5IC8qIHJlbW90ZSAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTVCQTE1RTExODIzNDBCMzAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3Rvci5oICovLAorCQkJCUE1QkExNUUyMTgyMzQwQjMwMEE4MkU2OSAvKiBS
ZW1vdGVJbnNwZWN0b3IubW0gKi8sCisJCQkJQTVCQTE1RTMxODIzNDBCMzAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3RvckNvbnN0YW50cy5oICovLAorCQkJCUE1QkExNUVGMTgyMzQ1QUYwMEE4MkU2
OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggKi8sCisJCQkJQTU5NDU1OEUxODI0NUVE
RTAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwICovLAorCQkJCUE1QkEx
NUU0MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bi5oICovLAorCQkJCUE1QkExNUU1MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSAqLywKKwkJCQlBNUJBMTVFNjE4MjM0MEIzMDBBODJFNjkg
LyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oICovLAorCQkJCUE1QkExNUU3MTgyMzQw
QjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICovLAorCQkJKTsK
KwkJCW5hbWUgPSByZW1vdGU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyog
RW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLwpAQCAtNDIxNSw2ICs0MjY3LDcgQEAKIAkJCQk4NjY3MzlEMjEzQkZERTcxMDAy
M0Q4N0MgLyogQmlnSW50ZWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4MTZFMUMxNTRDQzU2
QzAwQjgwNTRDIC8qIEJsb2NrQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNF
QzBFMTZGNUNEMDBCMzQ0NjAgLyogQm9vbGVhbk9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTVCQTE1RUExODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTgxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZs
eUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAv
KiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTQyODUsNiArNDMzOCw3
IEBACiAJCQkJMEYxNjAxNUUxNTYxOThDOTAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZp
Y2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDVDM0I0MTY4M0NGOTIwMEJBRjQ1
QiAvKiBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjYzOTQ4NTE1RTQ4MTFCMDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmggaW4gSGVhZGVycyAqLywK
KwkJCQlBNUJBMTVFQjE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDlBMjk1MTdBMEJDNzQwMEVFMjYx
OCAvKiBERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcxNENB
NTE2RUE5MkYyMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY2MjAxNzYxNDNGQ0QzQjAwNjhCNzdDIC8qIERGR0Jhc2ljQmxvY2su
aCBpbiBIZWFkZXJzICovLApAQCAtNDM2MCw2ICs0NDE0LDcgQEAKIAkJCQkwRkQ4QTMyNjE3RDUx
RjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE1QkExNUVEMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQzE2RDAy
RjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDMDk3NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY3MDI1QUExNzE0QjBGQzAwMzgyQzBFIC8qIERGR09TUkV4aXRD
b21waWxlckNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCkBAIC00NDE4LDYgKzQ0NzMsNyBAQAogCQkJ
CTBGRUEwQTA4MTcwNTEzREIwMEJCNzIyQyAvKiBGVExBYmJyZXZpYXRpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVBMEExRDE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExRjE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5NDU1OTMxODI0NzQ0NzAw
Q0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFQTBBMEExNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQTBBMjMxNzA5NjA2OTAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMEMxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENvbXBpbGUu
aCBpbiBIZWFkZXJzICovLApAQCAtNDUxMCw2ICs0NTY2LDcgQEAKIAkJCQk4NkNDRUZERTBGNDEz
Rjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwNzc2QkYxNEZG
MDAyQjAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkFGN0VGRTE2NUJBOTFGMDAwQzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBNUJBMTVGMDE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8q
IEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjE0RTFGMTgxMjRBQ0UwMDlC
NkI0RCAvKiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZD
Qzg1QTEwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
NDY4MSw2ICs0NzM4LDcgQEAKIAkJCQkxNEQyRjNEQjEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2Vk
U3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkQ2RjEyMTM1MzlBNDEwMEIwMkU4NiAvKiBN
YXJrU3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUMyMTEyMkUzMTVERDlBQjMwMDc5MEUzQSAv
KiBNYXJrU3RhY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTk0NTU5NTE4MjQ3OUVC
MDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2QkUgLyogTWF0Y2hSZXN1bHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDNDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MDIxM0UzRTEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC00ODQ5LDYgKzQ5MDcsNyBAQAogCQkJCTE0MkUzMTNDMTM0RkYw
QTYwMEFGQURCNSAvKiBXZWFrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEU4NEY5RjE0RUUxQUND
MDBENkQ1RDQgLyogV2Vha0Jsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEJGQ0U2OTEwQ0RC
MUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUJBMTVFODE4
MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NEY3MjU2NjE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNEU4NEZBMjE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha0ltcGwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0QkU3RDMzMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFrSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC01NDQzLDYgKzU1MDIsNyBAQAogCQkJCUE3QjQ4RjQ5MEVFODkzNkYwMERD
QkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2REI2
NDY0MEY5NUM2RkMwMEQ3RDkyMSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NkExRDUxNTAwMUNGNDAwMjk5MkIxIC8qIEV4ZWN1dGlv
bkNvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU5NDU1OTIxODI0NzQ0NzAwQ0MzODQz
IC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIx
MDU4NTE2NzU0ODBGMDBGOEFCNkUgLyogRXhpdEtpbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZFQTBBMUMxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkVBMEExRTE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU2MDQsNiArNTY2NCw3IEBACiAJCQkJMTQ0
NjlEREUxMDdFQzdFNzAwNjUwNDQ2IC8qIExvb2t1cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNEI3MjNCMjEyRDdEQTQ2MDAzQkQ1RUQgLyogTWFjaGluZVN0YWNrTWFy
a2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUIzRUNG
MTYyMzdGNkMwMEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTcyOTAwOUMxNzk3NkM2MDAwMzE3Mjk4IC8qIE1hY3JvQXNzZW1ibGVy
QVJNdjcuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NzMxLDYgKzU3OTIsOSBAQAogCQkJCUE3Q0Ez
QUU1MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0RTg0RkEwMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGQzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1v
dGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLywKKwkJCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAq
LywKKwkJCQlBNUJBMTVFRTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3RTVBQjNBMTc5OUU0QjIwMEQyODMzRCAv
KiBYODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYzQzZEOUMxNTIxMTEx
QTAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2NzA0Qjg0MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbC5oCnNpbWlsYXJpdHkgaW5kZXggODMlCnJlbmFtZSBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaApyZW5hbWUgdG8g
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwu
aAppbmRleCBiMzIxNGVmLi5mYTBhOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMCwyNSArMTAsMjUgQEAKICAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQogICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCiAgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKICAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgogICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
CiAjaWZuZGVmIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oCiAjZGVmaW5lIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbF9oCiAKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKIHB1YmxpYzoKQEAg
LTM2LDYgKzM2LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi40M2Q0MDNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTAsMCAr
MSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9yX2gK
KyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yX2gKKworI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb24uaCIKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24uaCIKKyNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgor
I2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+
CisKK09CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKKworbmFt
ZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU7Citz
dHJ1Y3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm87CisKK2NsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIFJlbW90ZUluc3BlY3RvciBGSU5BTCA6IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uOjpDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZW1vdGVJbnNwZWN0b3Im
IHNoYXJlZCgpOworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxSZW1vdGVJbnNwZWN0
b3I+OworCisgICAgdm9pZCByZWdpc3RlckRlYnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZSopOworICAgIHZvaWQgdW5yZWdpc3RlckRlYnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZSopOworICAgIHZvaWQgdXBkYXRlRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlKik7CisgICAgdm9pZCBzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQodW5zaWduZWQg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKworICAgIGJvb2wgZW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIGJvb2wgaGFzQWN0aXZlRGVidWdTZXNz
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247IH0KKworICAgIHZv
aWQgc3RhcnQoKTsKKyAgICB2b2lkIHN0b3AoKTsKKworcHJpdmF0ZToKKyAgICBSZW1vdGVJbnNw
ZWN0b3IoKTsKKworICAgIHVuc2lnbmVkIG5leHRBdmFpbGFibGVJZGVudGlmaWVyKCk7CisKKyAg
ICB2b2lkIHNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkKCk7CisKKyAgICBOU0RpY3Rpb25hcnkg
Kmxpc3RpbmdGb3JEZWJ1Z2dhYmxlKGNvbnN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZv
JikgY29uc3Q7CisgICAgdm9pZCBwdXNoTGlzdGluZ05vdygpOworICAgIHZvaWQgcHVzaExpc3Rp
bmdTb29uKCk7CisKKyAgICB2b2lkIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOworCisg
ICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1
c2VySW5mbykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25GYWlsZWQo
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCB4cGNDb25uZWN0aW9uVW5oYW5kbGVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uKiwgeHBjX29iamVjdF90KSBPVkVSUklERTsKKworICAgIHZvaWQgcmVjZWl2ZWRTZXR1cE1l
c3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZERhdGFNZXNz
YWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworICAgIHZvaWQgcmVjZWl2ZWREaWRDbG9zZU1l
c3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZEdldExpc3Rp
bmdNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworICAgIHZvaWQgcmVjZWl2ZWRJbmRp
Y2F0ZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisgICAgdm9pZCByZWNlaXZlZENv
bm5lY3Rpb25EaWVkTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKworICAgIC8vIERl
YnVnZ2FibGVzIGNhbiBiZSByZWdpc3RlcmVkIGZyb20gYW55IHRocmVhZCBhdCBhbnkgdGltZS4K
KyAgICAvLyBBbnkgZGVidWdnYWJsZSBjYW4gc2VuZCBtZXNzYWdlcyBvdmVyIHRoZSBYUEMgY29u
bmVjdGlvbi4KKyAgICAvLyBTbyBsb2NrIGFjY2VzcyB0byBhbGwgbWFwcyBhbmQgc3RhdGUgYXMg
dGhleSBjYW4gY2hhbmdlCisgICAgLy8gZnJvbSBhbnkgdGhyZWFkLgorICAgIE11dGV4IG1fbG9j
azsKKworICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6cGFpcjxSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlKiwgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8+PiBtX2RlYnVnZ2FibGVNYXA7
CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVD
b25uZWN0aW9uPj4gbV9jb25uZWN0aW9uTWFwOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uPiBtX3hwY0Nvbm5lY3Rpb247CisgICAgdW5zaWduZWQgbV9u
ZXh0QXZhaWxhYmxlSWRlbnRpZmllcjsKKyAgICBpbnQgbV9ub3RpZnlUb2tlbjsKKyAgICBib29s
IG1fZW5hYmxlZDsKKyAgICBib29sIG1faGFzQWN0aXZlRGVidWdTZXNzaW9uOworICAgIGJvb2wg
bV9wdXNoU2NoZWR1bGVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRp
ZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2VuZGlmIC8vIFdlYkluc3BlY3RvclNl
cnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3IubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uODc5YjQxZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQpAQCAtMCwwICsxLDQ4OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yLmgiCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKworI2ltcG9ydCAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgorI2ltcG9ydCAiUmVtb3Rl
SW5zcGVjdG9yQ29uc3RhbnRzLmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
LmgiCisjaW1wb3J0IDxub3RpZnkuaD4KKyNpbXBvcnQgPHhwYy94cGMuaD4KKyNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBv
cnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
I2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgPHd0Zi9pb3MvV2ViQ29yZVRocmVhZC5oPgorI2Vu
ZGlmCisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitzdGF0aWMgdm9pZCBkaXNwYXRjaEFzeW5j
T25RdWV1ZVNhZmVGb3JBbnlEZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSkKK3sKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgaWYgKFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQgJiYgV2ViQ29yZVdl
YlRocmVhZElzRW5hYmxlZCgpKSB7CisgICAgICAgIFdlYkNvcmVXZWJUaHJlYWRSdW4oYmxvY2sp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBibG9jayk7Cit9CisKK1JlbW90ZUluc3BlY3RvciYg
UmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZW1vdGVJbnNwZWN0b3I+IHNoYXJlZDsKKworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25j
ZTsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBeeworICAgICAgICBKU0M6OmluaXRpYWxpemVU
aHJlYWRpbmcoKTsKKyAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOworICAgICAg
ICBzaGFyZWQuZ2V0KCkuc3RhcnQoKTsKKyAgICB9KTsKKworICAgIHJldHVybiBzaGFyZWQ7Cit9
CisKK1JlbW90ZUluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yKCkKKyAgICA6IG1fbmV4dEF2YWls
YWJsZUlkZW50aWZpZXIoMSkKKyAgICAsIG1fbm90aWZ5VG9rZW4oMCkKKyAgICAsIG1fZW5hYmxl
ZChmYWxzZSkKKyAgICAsIG1faGFzQWN0aXZlRGVidWdTZXNzaW9uKGZhbHNlKQorICAgICwgbV9w
dXNoU2NoZWR1bGVkKGZhbHNlKQoreworfQorCit1bnNpZ25lZCBSZW1vdGVJbnNwZWN0b3I6Om5l
eHRBdmFpbGFibGVJZGVudGlmaWVyKCkKK3sKKyAgICB1bnNpZ25lZCBuZXh0VmFsaWRJZGVudGlm
aWVyOworICAgIGRvIHsKKyAgICAgICAgbmV4dFZhbGlkSWRlbnRpZmllciA9IG1fbmV4dEF2YWls
YWJsZUlkZW50aWZpZXIrKzsKKyAgICB9IHdoaWxlICghbmV4dFZhbGlkSWRlbnRpZmllciB8fCBu
ZXh0VmFsaWRJZGVudGlmaWVyID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSB8fCBtX2RlYnVnZ2FibGVNYXAuY29udGFpbnMobmV4dFZhbGlkSWRlbnRpZmllcikpOworICAg
IHJldHVybiBuZXh0VmFsaWRJZGVudGlmaWVyOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
cmVnaXN0ZXJEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUp
Cit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICB1bnNpZ25lZCBpZGVu
dGlmaWVyID0gbmV4dEF2YWlsYWJsZUlkZW50aWZpZXIoKTsKKyAgICBkZWJ1Z2dhYmxlLT5zZXRJ
ZGVudGlmaWVyKGlkZW50aWZpZXIpOworCisgICAgYXV0byByZXN1bHQgPSBtX2RlYnVnZ2FibGVN
YXAuc2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV9wYWlyKGRlYnVnZ2FibGUsIGRlYnVnZ2FibGUt
PmluZm8oKSkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7
CisKKyAgICBpZiAoZGVidWdnYWJsZS0+cmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpKQorICAgICAg
ICBwdXNoTGlzdGluZ1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVucmVnaXN0
ZXJEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUpCit7Cisg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVy
ID0gZGVidWdnYWJsZS0+aWRlbnRpZmllcigpOworICAgIGlmICghaWRlbnRpZmllcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYm9vbCB3YXNSZW1vdmVkID0gbV9kZWJ1Z2dhYmxlTWFwLnJlbW92
ZShpZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQp
OworCisgICAgaWYgKFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4g
Y29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC50YWtlKGlkZW50aWZpZXIpKQorICAgICAgICBj
b25uZWN0aW9uLT5jbG9zZUZyb21EZWJ1Z2dhYmxlKCk7CisKKyAgICBpZiAoZGVidWdnYWJsZS0+
cmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpKQorICAgICAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30K
Kwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZURlYnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZSogZGVidWdnYWJsZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2Nr
KTsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBkZWJ1Z2dhYmxlLT5pZGVudGlmaWVyKCk7
CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJlc3Vs
dCA9IG1fZGVidWdnYWJsZU1hcC5zZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3BhaXIoZGVidWdn
YWJsZSwgZGVidWdnYWJsZS0+aW5mbygpKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFy
ZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBpZiAoZGVidWdnYWJsZS0+cmVtb3RlRGVidWdnaW5n
QWxsb3dlZCgpKQorICAgICAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZCh1bnNpZ25lZCBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisKKyAgICBpZiAoIW1feHBjQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
UmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0g
bV9jb25uZWN0aW9uTWFwLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm8gPSBAeworICAgICAg
ICBXSVJSYXdEYXRhS2V5OiBbc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4obWVzc2FnZSkgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLAorICAgICAgICBXSVJDb25uZWN0aW9u
SWRlbnRpZmllcktleTogY29ubmVjdGlvbi0+Y29ubmVjdGlvbklkZW50aWZpZXIoKSwKKyAgICAg
ICAgV0lSRGVzdGluYXRpb25LZXk6IGNvbm5lY3Rpb24tPmRlc3RpbmF0aW9uKCkKKyAgICB9Owor
CisgICAgbV94cGNDb25uZWN0aW9uLT5zZW5kTWVzc2FnZShXSVJSYXdEYXRhTWVzc2FnZSwgdXNl
ckluZm8pOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnQoKQoreworICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYgKG1fZW5hYmxlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9lbmFibGVkID0gdHJ1ZTsKKworICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNw
YXRjaChXSVJTZXJ2aWNlQXZhaWxhYmxlTm90aWZpY2F0aW9uLCAmbV9ub3RpZnlUb2tlbiwgZGlz
cGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAw
KSwgXihpbnQpIHsKKyAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS5zZXR1cFhQQ0Nv
bm5lY3Rpb25JZk5lZWRlZCgpOworICAgIH0pOworCisgICAgbm90aWZ5X3Bvc3QoV0lSU2Vydmlj
ZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9uKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0
b3I6OnN0b3AoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgaWYg
KCFtX2VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZW5hYmxlZCA9IGZhbHNlOwor
CisgICAgbV9wdXNoU2NoZWR1bGVkID0gZmFsc2U7CisKKyAgICBmb3IgKGF1dG8gaXQgPSBtX2Nv
bm5lY3Rpb25NYXAuYmVnaW4oKSwgZW5kID0gbV9jb25uZWN0aW9uTWFwLmVuZCgpOyBpdCAhPSBl
bmQ7ICsraXQpCisgICAgICAgIGl0LT52YWx1ZS0+Y2xvc2UoKTsKKyAgICBtX2Nvbm5lY3Rpb25N
YXAuY2xlYXIoKTsKKworICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOworCisgICAg
aWYgKG1feHBjQ29ubmVjdGlvbikgeworICAgICAgICBtX3hwY0Nvbm5lY3Rpb24tPmNsb3NlKCk7
CisgICAgICAgIG1feHBjQ29ubmVjdGlvbiA9IG51bGxwdHI7CisgICAgfQorCisgICAgbm90aWZ5
X2NhbmNlbChtX25vdGlmeVRva2VuKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVw
WFBDQ29ubmVjdGlvbklmTmVlZGVkKCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2Nr
KTsKKworICAgIGlmIChtX3hwY0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIHhw
Y19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiA9IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3Nl
cnZpY2UoV0lSWFBDTWFjaFBvcnROYW1lLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCAwKTsK
KyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1feHBjQ29ubmVj
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbj4oY29u
bmVjdGlvbiwgdGhpcyk7CisgICAgbV94cGNDb25uZWN0aW9uLT5zZW5kTWVzc2FnZShAInN5biIs
IG5pbCk7IC8vIFNlbmQgYSBzaW1wbGUgbWVzc2FnZSB0byBpbml0aWFsaXplIHRoZSBYUEMgY29u
bmVjdGlvbi4KKyAgICB4cGNfcmVsZWFzZShjb25uZWN0aW9uKTsKKworICAgIHB1c2hMaXN0aW5n
U29vbigpOworfQorCisjcHJhZ21hIG1hcmsgLSBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
OjpDbGllbnQKKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1l
c3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICptZXNzYWdlTmFt
ZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9s
b2NrKTsKKworICAgIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlBlcm1pc3Np
b25EZW5pZWRdKSB7CisgICAgICAgIHN0b3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlNvY2tldERhdGFNZXNzYWdl
XSkKKyAgICAgICAgcmVjZWl2ZWREYXRhTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAo
W21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJTb2NrZXRTZXR1cE1lc3NhZ2VdKQorICAg
ICAgICByZWNlaXZlZFNldHVwTWVzc2FnZSh1c2VySW5mbyk7CisgICAgZWxzZSBpZiAoW21lc3Nh
Z2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJXZWJQYWdlQ2xvc2VNZXNzYWdlXSkKKyAgICAgICAg
cmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYgKFttZXNzYWdl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSQXBwbGljYXRpb25HZXRMaXN0aW5nTWVzc2FnZV0pCisg
ICAgICAgIHJlY2VpdmVkR2V0TGlzdGluZ01lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYg
KFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSSW5kaWNhdGVNZXNzYWdlXSkKKyAgICAg
ICAgcmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYgKFttZXNz
YWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSQ29ubmVjdGlvbkRpZWRNZXNzYWdlXSkKKyAgICAg
ICAgcmVjZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UKKyAg
ICAgICAgTlNMb2coQCJVbnJlY29nbml6ZWQgUmVtb3RlSW5zcGVjdG9yIFhQQyBNZXNzYWdlOiAl
QCIsIG1lc3NhZ2VOYW1lKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rp
b25GYWlsZWQoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiopCit7CisgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICBtX3B1c2hTY2hlZHVsZWQgPSBmYWxzZTsKKworICAg
IGZvciAoYXV0byBpdCA9IG1fY29ubmVjdGlvbk1hcC5iZWdpbigpLCBlbmQgPSBtX2Nvbm5lY3Rp
b25NYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT5jbG9zZSgp
OworICAgIG1fY29ubmVjdGlvbk1hcC5jbGVhcigpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVi
dWdTZXNzaW9uKCk7CisKKyAgICBpZiAobV94cGNDb25uZWN0aW9uKSB7CisgICAgICAgIG1feHBj
Q29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICAgICAgbV94cGNDb25uZWN0aW9uID0gbnVsbHB0cjsK
KyAgICB9Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uVW5oYW5kbGVk
TWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgeHBjX29iamVjdF90KQorewor
ICAgIC8vIEludGVudGlvbmFsbHkgaWdub3JlZC4KK30KKworI3ByYWdtYSBtYXJrIC0gTGlzdGlu
Z3MKKworTlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0b3I6Omxpc3RpbmdGb3JEZWJ1Z2dhYmxl
KGNvbnN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvJiBkZWJ1Z2dhYmxlSW5mbykgY29u
c3QKK3sKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkZWJ1Z2dhYmxlRGV0YWlscyA9IFtOU011
dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOworCisgICAgW2RlYnVnZ2FibGVEZXRhaWxzIHNl
dE9iamVjdDpAKGRlYnVnZ2FibGVJbmZvLmlkZW50aWZpZXIpIGZvcktleTpXSVJQYWdlSWRlbnRp
ZmllcktleV07CisKKyAgICBzd2l0Y2ggKGRlYnVnZ2FibGVJbmZvLnR5cGUpIHsKKyAgICBjYXNl
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkphdmFTY3JpcHQ6IHsKKyAgICAgICAgTlNTdHJp
bmcgKm5hbWUgPSBkZWJ1Z2dhYmxlSW5mby5uYW1lOworICAgICAgICBbZGVidWdnYWJsZURldGFp
bHMgc2V0T2JqZWN0Om5hbWUgZm9yS2V5OldJUlRpdGxlS2V5XTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6V2ViOiB7CisgICAgICAg
IE5TU3RyaW5nICp1cmwgPSBkZWJ1Z2dhYmxlSW5mby51cmw7CisgICAgICAgIE5TU3RyaW5nICp0
aXRsZSA9IGRlYnVnZ2FibGVJbmZvLm5hbWU7CisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBz
ZXRPYmplY3Q6dXJsIGZvcktleTpXSVJVUkxLZXldOworICAgICAgICBbZGVidWdnYWJsZURldGFp
bHMgc2V0T2JqZWN0OnRpdGxlIGZvcktleTpXSVJUaXRsZUtleV07CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQoZGVidWdnYWJs
ZUluZm8uaWRlbnRpZmllcikpCisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbklkZW50aWZpZXIoKSBmb3JLZXk6V0lSQ29ubmVjdGlvbklk
ZW50aWZpZXJLZXldOworCisgICAgaWYgKGRlYnVnZ2FibGVJbmZvLmhhc0xvY2FsRGVidWdnZXIp
CisgICAgICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6V0lSSGFz
TG9jYWxEZWJ1Z2dlcktleV07CisKKyAgICByZXR1cm4gZGVidWdnYWJsZURldGFpbHM7Cit9CisK
K3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ05vdygpCit7CisgICAgQVNTRVJUKG1f
eHBjQ29ubmVjdGlvbik7CisgICAgaWYgKCFtX3hwY0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fcHVzaFNjaGVkdWxlZCA9IGZhbHNlOworCisgICAgUmV0YWluUHRyPE5TTXV0
YWJsZURpY3Rpb25hcnk+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBtX2RlYnVnZ2FibGVNYXAuYmVnaW4o
KSwgZW5kID0gbV9kZWJ1Z2dhYmxlTWFwLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAg
ICAgY29uc3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8mIGRlYnVnZ2FibGVJbmZvID0g
aXQtPnZhbHVlLnNlY29uZDsKKyAgICAgICAgaWYgKGRlYnVnZ2FibGVJbmZvLnJlbW90ZURlYnVn
Z2luZ0FsbG93ZWQpIHsKKyAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZGV0YWlscyA9IGxpc3Rp
bmdGb3JEZWJ1Z2dhYmxlKGRlYnVnZ2FibGVJbmZvKTsKKyAgICAgICAgICAgIFtyZXNwb25zZSBz
ZXRPYmplY3Q6ZGV0YWlscyBmb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIldSIs
IGRlYnVnZ2FibGVJbmZvLmlkZW50aWZpZXJdXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFJl
dGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBvdXRnb2luZyA9IGFkb3B0TlMoW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgW291dGdvaW5nIHNldE9iamVjdDpyZXNw
b25zZS5nZXQoKSBmb3JLZXk6V0lSTGlzdGluZ0tleV07CisKKyAgICBtX3hwY0Nvbm5lY3Rpb24t
PnNlbmRNZXNzYWdlKFdJUkxpc3RpbmdNZXNzYWdlLCBvdXRnb2luZy5nZXQoKSk7Cit9CisKK3Zv
aWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ1Nvb24oKQoreworICAgIGlmICghbV94cGND
b25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9wdXNoU2NoZWR1bGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3B1c2hTY2hlZHVsZWQgPSB0cnVlOworICAgIGRpc3Bh
dGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDAuMDIgKiBOU0VDX1BF
Ul9TRUMpLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZ
X0RFRkFVTFQsIDApLCBeeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICAgICAgaWYgKG1fcHVzaFNjaGVkdWxlZCkKKyAgICAgICAgICAgIHB1c2hMaXN0aW5nTm93KCk7
CisgICAgfSk7Cit9CisKKyNwcmFnbWEgbWFyayAtIEFjdGl2ZSBEZWJ1Z2dlciBTZXNzaW9ucwor
Cit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCkKK3sK
KyAgICBib29sIGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbiA9ICFtX2Nvbm5lY3Rpb25NYXAuaXNF
bXB0eSgpOworICAgIGlmIChoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb24gPT0gbV9oYXNBY3RpdmVE
ZWJ1Z1Nlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1faGFzQWN0aXZlRGVidWdTZXNz
aW9uID0gaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uOworCisgICAgLy8gRklYTUU6IEV4cG9zZSBz
b21lIHdheSB0byBhY2Nlc3MgdGhpcyBzdGF0ZSBpbiBhbiBlbWJlZGRlci4KKyAgICAvLyBMZWdh
Y3kgaU9TIFdlYktpdCAxIGhhZCBhIG5vdGlmaWNhdGlvbi4gVGhpcyB3aWxsIG5lZWQgdG8gYmUg
c21hcnRlciB3aXRoIFdlYktpdDIuCit9CisKKyNwcmFnbWEgbWFyayAtIFJlY2VpdmVkIFhQQyBN
ZXNzYWdlcworCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UoTlNE
aWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBOU051bWJlciAqcGFnZUlkID0gW3VzZXJJbmZv
IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07CisgICAgaWYgKCFwYWdlSWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFt1
c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOworICAgIGlm
ICghY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5n
ICpzZW5kZXIgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlNlbmRlcktleV07CisgICAgaWYg
KCFzZW5kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBb
cGFnZUlkIHVuc2lnbmVkSW50VmFsdWVdOworICAgIGlmIChtX2Nvbm5lY3Rpb25NYXAuY29udGFp
bnMoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaXQgPSBtX2RlYnVn
Z2FibGVNYXAuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXQgPT0gbV9kZWJ1Z2dhYmxlTWFw
LmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBdHRlbXB0IHRvIGNyZWF0ZSBhIGNv
bm5lY3Rpb24uIFRoaXMgbWF5IGZhaWwgaWYgdGhlIHBhZ2UgYWxyZWFkeSBoYXMgYW4gaW5zcGVj
dG9yIG9yIGlmIGl0IGRpc2FsbG93cyBpbnNwZWN0aW9uLgorICAgIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUqIGRlYnVnZ2FibGUgPSBpdC0+dmFsdWUuZmlyc3Q7CisgICAgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUluZm8gZGVidWdnYWJsZUluZm8gPSBpdC0+dmFsdWUuc2Vjb25kOworICAg
IFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9
IGFkb3B0UmVmKG5ldyBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbihkZWJ1Z2dh
YmxlLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc2VuZGVyLCBkZWJ1Z2dhYmxlSW5mby50eXBlKSk7
CisgICAgaWYgKCFjb25uZWN0aW9uLT5zZXR1cCgpKSB7CisgICAgICAgIGNvbm5lY3Rpb24tPmNs
b3NlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Nvbm5lY3Rpb25NYXAuc2V0
KGlkZW50aWZpZXIsIGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKKworICAgIHVwZGF0ZUhhc0FjdGl2
ZURlYnVnU2Vzc2lvbigpOworCisgICAgcHVzaExpc3RpbmdTb29uKCk7Cit9CisKK3ZvaWQgUmVt
b3RlSW5zcGVjdG9yOjpyZWNlaXZlZERhdGFNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8p
Cit7CisgICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSUGFn
ZUlkZW50aWZpZXJLZXldOworICAgIGlmICghcGFnZUlkKQorICAgICAgICByZXR1cm47CisKKyAg
ICB1bnNpZ25lZCBwYWdlSWRlbnRpZmllciA9IFtwYWdlSWQgdW5zaWduZWRJbnRWYWx1ZV07Cisg
ICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9u
ID0gbV9jb25uZWN0aW9uTWFwLmdldChwYWdlSWRlbnRpZmllcik7CisgICAgaWYgKCFjb25uZWN0
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0RhdGEgKmRhdGEgPSBbdXNlckluZm8gb2Jq
ZWN0Rm9yS2V5OldJUlNvY2tldERhdGFLZXldOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gbWVz
c2FnZSA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICBjb25uZWN0aW9uLT5zZW5kTWVzc2FnZVRv
QmFja2VuZChtZXNzYWdlLmdldCgpKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2Vp
dmVkRGlkQ2xvc2VNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTlNOdW1i
ZXIgKnBhZ2VJZCA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXld
OworICAgIGlmICghcGFnZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmluZyAqY29u
bmVjdGlvbklkZW50aWZpZXIgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25J
ZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gW3BhZ2VJZCB1bnNpZ25lZEludFZh
bHVlXTsKKyAgICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNv
bm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghY29u
bmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFbY29ubmVjdGlvbklkZW50aWZp
ZXIgaXNFcXVhbFRvU3RyaW5nOmNvbm5lY3Rpb24tPmNvbm5lY3Rpb25JZGVudGlmaWVyKCldKQor
ICAgICAgICByZXR1cm47CisKKyAgICBjb25uZWN0aW9uLT5jbG9zZSgpOworICAgIG1fY29ubmVj
dGlvbk1hcC5yZW1vdmUoaWRlbnRpZmllcik7CisKKyAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nl
c3Npb24oKTsKKworICAgIHB1c2hMaXN0aW5nU29vbigpOworfQorCit2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6cmVjZWl2ZWRHZXRMaXN0aW5nTWVzc2FnZShOU0RpY3Rpb25hcnkgKikKK3sKKyAgICBw
dXNoTGlzdGluZ05vdygpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRJbmRp
Y2F0ZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBOU051bWJlciAqcGFn
ZUlkID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07CisgICAg
aWYgKCFwYWdlSWQpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIg
PSBbcGFnZUlkIHVuc2lnbmVkSW50VmFsdWVdOworICAgIEJPT0wgaW5kaWNhdGVFbmFibGVkID0g
W1t1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSSW5kaWNhdGVFbmFibGVkS2V5XSBib29sVmFsdWVd
OworCisgICAgZGlzcGF0Y2hBc3luY09uUXVldWVTYWZlRm9yQW55RGVidWdnYWJsZSheeworICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgICAgICBhdXRvIGl0ID0gbV9k
ZWJ1Z2dhYmxlTWFwLmZpbmQoaWRlbnRpZmllcik7CisgICAgICAgIGlmIChpdCA9PSBtX2RlYnVn
Z2FibGVNYXAuZW5kKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZSogZGVidWdnYWJsZSA9IGl0LT52YWx1ZS5maXJzdDsKKyAgICAgICAg
ZGVidWdnYWJsZS0+c2V0SW5kaWNhdGluZyhpbmRpY2F0ZUVuYWJsZWQpOworICAgIH0pOworfQor
Cit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRDb25uZWN0aW9uRGllZE1lc3NhZ2UoTlNE
aWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZp
ZXIgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsK
KyAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIGl0ID0gbV9jb25uZWN0aW9uTWFwLmJlZ2luKCk7CisgICAgYXV0byBlbmQgPSBtX2Nvbm5l
Y3Rpb25NYXAuZW5kKCk7CisgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBp
ZiAoW2Nvbm5lY3Rpb25JZGVudGlmaWVyIGlzRXF1YWxUb1N0cmluZzppdC0+dmFsdWUtPmNvbm5l
Y3Rpb25JZGVudGlmaWVyKCldKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYg
KGl0ID09IGVuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gaXQtPnZhbHVlOworICAgIGNvbm5l
Y3Rpb24tPmNsb3NlKCk7CisgICAgbV9jb25uZWN0aW9uTWFwLnJlbW92ZShpdCk7CisKKyAgICB1
cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVsYXlEZWZp
bml0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yQ29uc3RhbnRzLmgKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gU291
cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmlu
aXRpb25zLmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oCmluZGV4IDFmM2JjMzIuLjU5NTE4NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
UmVsYXlEZWZpbml0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oCkBAIC0yMywxMiArMjMsMTIgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25z
X2gKLSNkZWZpbmUgV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9uc19oCisjaWZuZGVmIFJlbW90
ZUluc3BlY3RvckNvbnN0YW50c19oCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvckNvbnN0YW50c19o
CiAKIC8vIFdJUkNvbnN0YW50cyBhcmUgIldlYiBJbnNwZWN0b3IgUmVsYXkiIGNvbnN0YW50cyBz
aGFyZWQgYmV0d2VlbgotLy8gdGhlIFdlYkluc3BlY3RvciBmcmFtZXdvcmsgb24gdGhlIGRlYnVn
Z2VyIHNpZGUsIHdlYmluc3BlY3RvcmQsCi0vLyBhbmQgV2ViS2l0IG9uIHRoZSBkZWJ1Z2dhYmxl
IGFwcGxpY2F0aW9uIHNpZGUuCisvLyB0aGUgV2ViSW5zcGVjdG9yIGZyYW1ld29yayBvbiB0aGUg
T1MgWCBzaWRlLCB3ZWJpbnNwZWN0b3JkLCBhbmQKKy8vIGlPUyBXZWJLaXQgb24gdGhlIGRldmlj
ZSBzaWRlLgogCiAjZGVmaW5lIFdJUlNpbXVsYXRvclRDUFBvcnROdW1iZXIgICAgICAgICAgICAg
ICAyNzc1MwogI2RlZmluZSBXSVJYUENNYWNoUG9ydE5hbWUgICAgICAgICAgICAgICAgICAgICAg
ImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlLmNwcApzaW1pbGFyaXR5IGluZGV4IDUxJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25u
ZWN0aW9uLmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwCmluZGV4IGM3YTViY2MuLmZkZjFkOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVj
dG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzMgKzIzLDU5IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLUBjbGFzcyBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVs
OwotQGNsYXNzIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlcjsK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
LmgiCiAKLUBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gOiBO
U09iamVjdCB7Ci1AcHJpdmF0ZQotICAgIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKl9jaGFu
bmVsOworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi0gICAgV2ViSW5zcGVjdG9yU2Vy
dmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyICpfY29udHJvbGxlcjsgLy8gd2VhaywgdGhl
IGNvbnRyb2xsZXIgb3ducyB1cy4KLSAgICBOU1N0cmluZyAqX2Nvbm5lY3Rpb25JZGVudGlmaWVy
OwotICAgIE5TU3RyaW5nICpfZGVzdGluYXRpb247Ci0gICAgTlNOdW1iZXIgKl9pZGVudGlmaWVy
OworI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgIlJlbW90
ZUluc3BlY3Rvci5oIgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSgpCisgICAgOiBtX2lkZW50aWZp
ZXIoMCkKKyAgICAsIG1fYWxsb3dlZChmYWxzZSkKK3sKK30KKworUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZTo6flJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUoKQoreworICAgIFJlbW90ZUluc3Bl
Y3Rvcjo6c2hhcmVkKCkudW5yZWdpc3RlckRlYnVnZ2FibGUodGhpcyk7CiB9CiAKLS0gKGlkKWlu
aXRXaXRoQ29udHJvbGxlcjooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250
cm9sbGVyICopY29udHJvbGxlciBjb25uZWN0aW9uSWRlbnRpZmllcjooTlNTdHJpbmcgKiljb25u
ZWN0aW9uSWRlbnRpZmllciBkZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0aW5hdGlvbiBpZGVu
dGlmaWVyOihOU051bWJlciAqKWlkZW50aWZpZXI7Ci0tIChCT09MKXNldHVwQ2hhbm5lbDsKLS0g
KE5TU3RyaW5nICopY29ubmVjdGlvbklkZW50aWZpZXI7Ci0tIChOU051bWJlciAqKWlkZW50aWZp
ZXI7Cit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OmluaXQoKQoreworICAgIFJlbW90
ZUluc3BlY3Rvcjo6c2hhcmVkKCkucmVnaXN0ZXJEZWJ1Z2dhYmxlKHRoaXMpOworfQogCi0vLyBN
ZXNzYWdlcyBmcm9tIHRoZSBJbnNwZWN0b3JTZXJ2ZXIuCi0tICh2b2lkKXJlY2VpdmVkRGF0YToo
TlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeTsKLS0gKHZvaWQpcmVjZWl2ZWREaWRDbG9zZTooTlNE
aWN0aW9uYXJ5ICopZGljdGlvbmFyeTsKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6
dXBkYXRlKCkKK3sKKyAgICBSZW1vdGVJbnNwZWN0b3I6OnNoYXJlZCgpLnVwZGF0ZURlYnVnZ2Fi
bGUodGhpcyk7Cit9CiAKLS8vIE1lc3NhZ2VzIGZyb20gdGhlIENoYW5uZWwuCi0tICh2b2lkKWNs
ZWFyQ2hhbm5lbDsKLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAqKW1l
c3NhZ2U7Cit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OnNldFJlbW90ZURlYnVnZ2lu
Z0FsbG93ZWQoYm9vbCBhbGxvd2VkKQoreworICAgIGlmIChtX2FsbG93ZWQgPT0gYWxsb3dlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9hbGxvd2VkID0gYWxsb3dlZDsKKworICAgIHVwZGF0
ZSgpOworfQorCitSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlOjppbmZvKCkgY29uc3QKK3sKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
SW5mbyBpbmZvOworICAgIGluZm8uaWRlbnRpZmllciA9IGlkZW50aWZpZXIoKTsKKyAgICBpbmZv
LnR5cGUgPSB0eXBlKCk7CisgICAgaW5mby5uYW1lID0gbmFtZSgpOworICAgIGluZm8udXJsID0g
dXJsKCk7CisgICAgaW5mby5oYXNMb2NhbERlYnVnZ2VyID0gaGFzTG9jYWxEZWJ1Z2dlcigpOwor
ICAgIGluZm8ucmVtb3RlRGVidWdnaW5nQWxsb3dlZCA9IHJlbW90ZURlYnVnZ2luZ0FsbG93ZWQo
KTsKKyAgICByZXR1cm4gaW5mbzsKK30KIAotLy8gTWVzc2FnZXMgdG8gdGhlIENoYW5uZWwuCi0t
ICh2b2lkKXNlbmRNZXNzYWdlVG9CYWNrZW5kOihOU1N0cmluZyAqKW1lc3NhZ2U7Cit9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKIAotQGVuZAorI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjkwMjc0YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgK
QEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2lmbmRlZiBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlX2gKKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZV9oCisK
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7
CisKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKK3N0cnVjdCBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlSW5mbzsKKworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZSB7CitwdWJsaWM6CisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSgp
OworICAgIHZpcnR1YWwgflJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUoKTsKKworICAgIHZvaWQg
aW5pdCgpOworICAgIHZvaWQgdXBkYXRlKCk7CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRJZGVudGlmaWVyKHVu
c2lnbmVkIGlkZW50aWZpZXIpIHsgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQorCisgICAg
Ym9vbCByZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkOyB9
CisgICAgdm9pZCBzZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKGJvb2wpOworCisgICAgUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZUluZm8gaW5mbygpIGNvbnN0OworCisgICAgZW51bSBEZWJ1Z2dh
YmxlVHlwZSB7IEphdmFTY3JpcHQsIFdlYiB9OworICAgIHZpcnR1YWwgRGVidWdnYWJsZVR5cGUg
dHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1
cm4gU3RyaW5nKCk7IH0gLy8gSmF2YVNjcmlwdCBhbmQgV2ViCisgICAgdmlydHVhbCBTdHJpbmcg
dXJsKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gV2ViCisgICAgdmlydHVhbCBib29s
IGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVj
dChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nv
bm5lY3QoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVG
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
SW5kaWNhdGluZyhib29sKSB7IH0gLy8gRGVmYXVsdCBpcyB0byBkbyBub3RoaW5nLgorCitwcml2
YXRlOgorICAgIHVuc2lnbmVkIG1faWRlbnRpZmllcjsKKyAgICBib29sIG1fYWxsb3dlZDsKK307
CisKK3N0cnVjdCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyB7CisgICAgUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUluZm8oKQorICAgICAgICA6IGlkZW50aWZpZXIoMCkKKyAgICAgICAg
LCB0eXBlKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkphdmFTY3JpcHQpCisgICAgICAgICwg
aGFzTG9jYWxEZWJ1Z2dlcihmYWxzZSkKKyAgICAgICAgLCByZW1vdGVEZWJ1Z2dpbmdBbGxvd2Vk
KGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyOworICAgIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkRlYnVnZ2FibGVUeXBlIHR5cGU7CisgICAgU3RyaW5n
IG5hbWU7CisgICAgU3RyaW5nIHVybDsKKyAgICBib29sIGhhc0xvY2FsRGVidWdnZXI7CisgICAg
Ym9vbCByZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCisKKyNlbmRpZiAvLyBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlX2gKKworI2VuZGlmIC8v
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYzI0ZDg4MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgKQEAgLTAs
MCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2lmbmRlZiBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlQ29ubmVjdGlvbl9oCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVD
b25uZWN0aW9uX2gKKworI2ltcG9ydCAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW1w
b3J0ICJSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgiCisjaW1wb3J0IDxkaXNwYXRjaC9kaXNw
YXRjaC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1RocmVhZGlu
Zy5oPgorI2ltcG9ydCA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK09CSkNfQ0xBU1Mg
TlNTdHJpbmc7CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbiBGSU5BTCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4sIHB1YmxpYyBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwgeworcHVibGljOgorICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVD
b25uZWN0aW9uKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqLCBOU1N0cmluZyAqY29ubmVjdGlv
bklkZW50aWZpZXIsIE5TU3RyaW5nICpkZXN0aW5hdGlvbiwgUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZTo6RGVidWdnYWJsZVR5cGUpOworICAgIHZpcnR1YWwgflJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uKCk7CisKKyAgICBOU1N0cmluZyAqZGVzdGluYXRpb24oKSBjb25zdDsK
KyAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKKyAgICB1bnNpZ25l
ZCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICBib29s
IHNldHVwKCk7CisKKyAgICB2b2lkIGNsb3NlKCk7CisgICAgdm9pZCBjbG9zZUZyb21EZWJ1Z2dh
YmxlKCk7CisKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKE5TU3RyaW5nICopOworICAg
IHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikgT1ZFUlJJ
REU7CisKK3ByaXZhdGU6CisgICAgdm9pZCBkaXNwYXRjaFN5bmNPbkRlYnVnZ2FibGUodm9pZCAo
XmJsb2NrKSgpKTsKKyAgICB2b2lkIGRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUodm9pZCAoXmJs
b2NrKSgpKTsKKworICAgIC8vIFRoaXMgY29ubmVjdGlvbiBmcm9tIHRoZSBSZW1vdGVJbnNwZWN0
b3Igc2luZ2xldG9uIHRvIHRoZSBEZWJ1Z2dhYmxlCisgICAgLy8gY2FuIGJlIHVzZWQgb24gbXVs
dGlwbGUgdGhyZWFkcy4gU28gYW55IGFjY2VzcyB0byB0aGUgZGVidWdnYWJsZQorICAgIC8vIGl0
c2VsZiBtdXN0IHRha2UgdGhpcyBsb2NrIHRvIGVuc3VyZSBtX2RlYnVnZ2FibGUgaXMgdmFsaWQu
CisgICAgTXV0ZXggbV9kZWJ1Z2dhYmxlTG9jazsKKworICAgIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUqIG1fZGVidWdnYWJsZTsKKyAgICBkaXNwYXRjaF9xdWV1ZV90IG1fcXVldWVGb3JEZWJ1
Z2dhYmxlOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9jb25uZWN0aW9uSWRlbnRpZmllcjsK
KyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZGVzdGluYXRpb247CisgICAgdW5zaWduZWQgbV9p
ZGVudGlmaWVyOworICAgIGJvb2wgbV9jb25uZWN0ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJ
bnNwZWN0b3IKKworI2VuZGlmIC8vIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
X2gKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi41ZmZmZWE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb24ubW0KQEAgLTAsMCArMSwxNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKworI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yLmgiCisKKyNpZiBQTEFURk9STShJT1Mp
CisjaW1wb3J0IDx3dGYvaW9zL1dlYkNvcmVUaHJlYWQuaD4KKyNlbmRpZgorCituYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKKworUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OlJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUq
IGRlYnVnZ2FibGUsIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciwgTlNTdHJpbmcgKmRl
c3RpbmF0aW9uLCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpEZWJ1Z2dhYmxlVHlwZSB0eXBl
KQorICAgIDogbV9kZWJ1Z2dhYmxlKGRlYnVnZ2FibGUpCisgICAgLCBtX3F1ZXVlRm9yRGVidWdn
YWJsZShOVUxMKQorICAgICwgbV9jb25uZWN0aW9uSWRlbnRpZmllcihjb25uZWN0aW9uSWRlbnRp
ZmllcikKKyAgICAsIG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCisgICAgLCBtX2lkZW50aWZp
ZXIoZGVidWdnYWJsZS0+aWRlbnRpZmllcigpKQorICAgICwgbV9jb25uZWN0ZWQoZmFsc2UpCit7
CisgICAgLy8gV2ViIGRlYnVnZ2FibGVzIG11c3QgYmUgYWNjZXNzZWQgb24gdGhlIG1haW4gcXVl
dWUgKG9yIHRoZSBXZWJUaHJlYWQgb24gaU9TKS4gU2lnbmFsIHRoYXQgd2l0aCBhIE5VTEwgbV9x
dWV1ZUZvckRlYnVnZ2FibGUuCisgICAgLy8gSG93ZXZlciwgSmF2YVNjcmlwdCBkZWJ1Z2dhYmxl
cyBjYW4gYmUgYWNjZXNzZWQgZnJvbSBhbnkgdGhyZWFkL3F1ZXVlLCBzbyB3ZSBjcmVhdGUgYSBx
dWV1ZSBmb3IgZWFjaCBKYXZhU2NyaXB0IGRlYnVnZ2FibGUuCisgICAgaWYgKHR5cGUgPT0gUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6SmF2YVNjcmlwdCkKKyAgICAgICAgbV9xdWV1ZUZvckRl
YnVnZ2FibGUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5KYXZhU2NyaXB0Q29y
ZS5yZW1vdGUtaW5zcGVjdG9yLXhwYy1jb25uZWN0aW9uIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFM
KTsKK30KKworUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246On5SZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbigpCit7CisgICAgaWYgKG1fcXVldWVGb3JEZWJ1Z2dh
YmxlKSB7CisgICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9xdWV1ZUZvckRlYnVnZ2FibGUpOwor
ICAgICAgICBtX3F1ZXVlRm9yRGVidWdnYWJsZSA9IE5VTEw7CisgICAgfQorfQorCitOU1N0cmlu
ZyAqUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRlc3RpbmF0aW9uKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gW1ttX2Rlc3RpbmF0aW9uIGNvcHldIGF1dG9yZWxlYXNlXTsKK30K
KworTlNTdHJpbmcgKlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjb25uZWN0
aW9uSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtbbV9jb25uZWN0aW9uSWRlbnRp
ZmllciBjb3B5XSBhdXRvcmVsZWFzZV07Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoU3luY09uRGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkp
Cit7CisgICAgaWYgKG1fcXVldWVGb3JEZWJ1Z2dhYmxlKQorICAgICAgICBkaXNwYXRjaF9zeW5j
KG1fcXVldWVGb3JEZWJ1Z2dhYmxlLCBibG9jayk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGVs
c2UgaWYgKFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQgJiYgV2ViQ29yZVdlYlRocmVhZElzRW5h
YmxlZCgpKQorICAgICAgICBXZWJDb3JlV2ViVGhyZWFkUnVuU3luYyhibG9jayk7CisjZW5kaWYK
KyAgICBlbHNlCisgICAgICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgYmxvY2spOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
OjpkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSkKK3sKKyAgICBpZiAo
bV9xdWV1ZUZvckRlYnVnZ2FibGUpCisgICAgICAgIGRpc3BhdGNoX2FzeW5jKG1fcXVldWVGb3JE
ZWJ1Z2dhYmxlLCBibG9jayk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGVsc2UgaWYgKFdlYkNv
cmVXZWJUaHJlYWRJc0VuYWJsZWQgJiYgV2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCgpKQorICAg
ICAgICBXZWJDb3JlV2ViVGhyZWFkUnVuKGJsb2NrKTsKKyNlbmRpZgorICAgIGVsc2UKKyAgICAg
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgYmxvY2spOworfQor
Citib29sIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZXR1cCgpCit7Cisg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGVidWdnYWJsZUxvY2spOworCisgICAgaWYgKCFtX2Rl
YnVnZ2FibGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGRpc3BhdGNoU3luY09uRGVi
dWdnYWJsZSheeworICAgICAgICBpZiAoIW1fZGVidWdnYWJsZS0+cmVtb3RlRGVidWdnaW5nQWxs
b3dlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChtX2RlYnVnZ2FibGUt
Pmhhc0xvY2FsRGVidWdnZXIoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2Rl
YnVnZ2FibGUtPmNvbm5lY3QodGhpcyk7CisgICAgICAgIG1fY29ubmVjdGVkID0gdHJ1ZTsKKyAg
ICB9KTsKKworICAgIHJldHVybiBtX2Nvbm5lY3RlZDsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y2xvc2VGcm9tRGVidWdnYWJsZSgpCit7CisgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fZGVidWdnYWJsZUxvY2spOworCisgICAgbV9kZWJ1Z2dhYmxlID0g
bnVsbHB0cjsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
Y2xvc2UoKQoreworICAgIHJlZigpOworICAgIGRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUoXnsK
KyAgICAgICAgeworICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGVidWdnYWJsZUxv
Y2spOworCisgICAgICAgICAgICBpZiAobV9kZWJ1Z2dhYmxlKSB7CisgICAgICAgICAgICAgICAg
aWYgKG1fY29ubmVjdGVkKQorICAgICAgICAgICAgICAgICAgICBtX2RlYnVnZ2FibGUtPmRpc2Nv
bm5lY3QoKTsKKworICAgICAgICAgICAgICAgIG1fZGVidWdnYWJsZSA9IG51bGxwdHI7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZGVyZWYoKTsKKyAgICB9KTsKK30KKwordm9p
ZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2VUb0JhY2tl
bmQoTlNTdHJpbmcgKm1lc3NhZ2UpCit7CisgICAgcmVmKCk7CisgICAgZGlzcGF0Y2hBc3luY09u
RGVidWdnYWJsZSheeworICAgICAgICB7CisgICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9kZWJ1Z2dhYmxlTG9jayk7CisKKyAgICAgICAgICAgIGlmIChtX2RlYnVnZ2FibGUpCisgICAg
ICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlLT5kaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRl
bmQobWVzc2FnZSk7CisgICAgICAgIH0KKyAgICAgICAgZGVyZWYoKTsKKyAgICB9KTsKK30KKwor
Ym9vbCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBSZW1vdGVJbnNwZWN0b3I6OnNo
YXJlZCgpLnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChpZGVudGlmaWVyKCksIG1lc3NhZ2Up
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisj
ZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24uaApzaW1pbGFyaXR5IGluZGV4IDUwJQpjb3B5IGZyb20gU291cmNlL1dlYktpdC9t
YWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLmgKY29weSB0byBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLmgKaW5kZXggM2Y5NDRlYy4uMGJmMzZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMywzMiArMjMsNDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2ltcG9y
dCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CisKKyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbl9oCisjZGVmaW5lIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25faAorCisjaW1wb3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5o
PgorI2ltcG9ydCA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW1wb3J0IDx4cGMveHBjLmg+CiAKLUBj
bGFzcyBXZWJJbnNwZWN0b3JYUENXcmFwcGVyOwotCi1AcHJvdG9jb2wgV2ViSW5zcGVjdG9yWFBD
V3JhcHBlckRlbGVnYXRlIDxOU09iamVjdD4KLS0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5z
cGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb24gcmVjZWl2ZWRNZXNzYWdlOihOU1N0cmluZyAq
KW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKLS0gKHZvaWQp
eHBjQ29ubmVjdGlvbkZhaWxlZDooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb247
Ci1Ab3B0aW9uYWwKLS0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ciAqKWNvbm5lY3Rpb24gdW5oYW5kbGVkTWVzc2FnZTooeHBjX29iamVjdF90KW1lc3NhZ2U7Ci1A
ZW5kCi0KLUBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yWFBDV3JhcHBlciA6IE5TT2JqZWN0Ci17Ci0g
ICAgaWQgPFdlYkluc3BlY3RvclhQQ1dyYXBwZXJEZWxlZ2F0ZT4gX2RlbGVnYXRlOwotICAgIHhw
Y19jb25uZWN0aW9uX3QgX2Nvbm5lY3Rpb247Ci0gICAgTlNTdHJpbmcgKl90YWc7Ci19Ci0KLS0g
KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKilpbml0V2l0aENvbm5lY3Rpb246KHhwY19jb25uZWN0
aW9uX3QpY29ubmVjdGlvbjsKLS0gKHZvaWQpY2xvc2U7Ci0tICh2b2lkKXNlbmRNZXNzYWdlOihO
U1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsK
LQotQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaWQgPFdlYkluc3BlY3RvclhQQ1dyYXBw
ZXJEZWxlZ2F0ZT4gZGVsZWdhdGU7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIHhw
Y19jb25uZWN0aW9uX3QgY29ubmVjdGlvbjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgQk9PTCBhdmFpbGFibGU7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcg
KnRhZzsKLQotQGVuZAorT0JKQ19DTEFTUyBOU1N0cmluZzsKK09CSkNfQ0xBU1MgTlNEaWN0aW9u
YXJ5OworCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbik7CisKK3B1YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoK
KyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB4cGND
b25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCBO
U1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25GYWlsZWQoUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbiopID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25VbmhhbmRs
ZWRNZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3QpID0g
MDsKKyAgICB9OworCisgICAgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbih4cGNfY29ubmVj
dGlvbl90LCBDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uKCk7CisKKyAgICB2b2lkIGNsb3NlKCk7CisgICAgdm9pZCBzZW5kTWVzc2FnZShOU1N0cmlu
ZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworCitwcml2YXRlOgorICAg
IE5TRGljdGlvbmFyeSAqZGVzZXJpYWxpemVNZXNzYWdlKHhwY19vYmplY3RfdCk7CisgICAgdm9p
ZCBoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3QpOworCisgICAgeHBjX2Nvbm5lY3Rpb25fdCBtX2Nv
bm5lY3Rpb247CisgICAgZGlzcGF0Y2hfcXVldWVfdCBtX3F1ZXVlOworICAgIENsaWVudCogbV9j
bGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25faAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDE2OTk4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5tbQpAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKworI2lmIF9faGFzX2luY2x1ZGUoPENvcmVGb3VuZGF0aW9uL0NGWFBDQnJpZGdl
Lmg+KQorI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ0ZYUENCcmlkZ2UuaD4KKyNlbHNlCitleHRl
cm4gIkMiIHhwY19vYmplY3RfdCBfQ0ZYUENDcmVhdGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KENG
VHlwZVJlZik7CitleHRlcm4gIkMiIENGVHlwZVJlZiBfQ0ZYUENDcmVhdGVDRk9iamVjdEZyb21Y
UENNZXNzYWdlKHhwY19vYmplY3RfdCk7CisjZW5kaWYKKworbmFtZXNwYWNlIEluc3BlY3RvciB7
CisKKy8vIENvbnN0YW50cyBwcml2YXRlIHRvIHRoaXMgZmlsZSBmb3IgbWVzc2FnZSBzZXJpYWxp
emF0aW9uIG9uIGJvdGggZW5kcy4KKyNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bk1lc3NhZ2VOYW1lS2V5IEAibWVzc2FnZU5hbWUiCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb25Vc2VySW5mb0tleSBAInVzZXJJbmZvIgorI2RlZmluZSBSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VLZXkgIm1zZ0RhdGEiCisKK1JlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb246OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oeHBjX2Nv
bm5lY3Rpb25fdCBjb25uZWN0aW9uLCBDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY29ubmVjdGlv
bihjb25uZWN0aW9uKQorICAgICwgbV9xdWV1ZShkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5h
cHBsZS5KYXZhU2NyaXB0Q29yZS5yZW1vdGUtaW5zcGVjdG9yLXhwYy1jb25uZWN0aW9uIiwgRElT
UEFUQ0hfUVVFVUVfU0VSSUFMKSkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKK3sKKyAgICB4cGNf
cmV0YWluKG1fY29ubmVjdGlvbik7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1
ZShtX2Nvbm5lY3Rpb24sIG1fcXVldWUpOworICAgIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24qIHdlYWtUaGlzID0gdGhpczsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxl
cihtX2Nvbm5lY3Rpb24sIF4oeHBjX29iamVjdF90IG9iamVjdCkgeworICAgICAgICB3ZWFrVGhp
cy0+aGFuZGxlRXZlbnQob2JqZWN0KTsKKyAgICB9KTsKKyAgICB4cGNfY29ubmVjdGlvbl9yZXN1
bWUobV9jb25uZWN0aW9uKTsKK30KKworUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6flJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oKQoreworICAgIEFTU0VSVCghbV9jbGllbnQpOwor
ICAgIEFTU0VSVCghbV9jb25uZWN0aW9uKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uOjpjbG9zZSgpCit7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisgICAgICAgIHJl
dHVybjsKKworICAgIHhwY19jb25uZWN0aW9uX2NhbmNlbChtX2Nvbm5lY3Rpb24pOworICAgIHhw
Y19yZWxlYXNlKG1fY29ubmVjdGlvbik7CisgICAgbV9jb25uZWN0aW9uID0gTlVMTDsKKworICAg
IGRpc3BhdGNoX3JlbGVhc2UobV9xdWV1ZSk7CisgICAgbV9xdWV1ZSA9IE5VTEw7CisKKyAgICBt
X2NsaWVudCA9IG51bGxwdHI7Cit9CisKK05TRGljdGlvbmFyeSAqUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6ZGVzZXJpYWxpemVNZXNzYWdlKHhwY19vYmplY3RfdCBvYmplY3QpCit7Cisg
ICAgaWYgKHhwY19nZXRfdHlwZShvYmplY3QpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICB4cGNfb2JqZWN0X3QgeHBjRGljdGlvbmFyeSA9IHhwY19k
aWN0aW9uYXJ5X2dldF92YWx1ZShvYmplY3QsIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25T
ZXJpYWxpemVkTWVzc2FnZUtleSk7CisgICAgaWYgKCF4cGNEaWN0aW9uYXJ5IHx8IHhwY19nZXRf
dHlwZSh4cGNEaWN0aW9uYXJ5KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKSB7CisgICAgICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgICAgIG1fY2xpZW50LT54cGNDb25uZWN0aW9uVW5oYW5kbGVk
TWVzc2FnZSh0aGlzLCBvYmplY3QpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAg
IE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PE5TRGljdGlvbmFyeSAqPihf
Q0ZYUENDcmVhdGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpKTsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGRpY3Rpb25hcnksICJVbmFibGUgdG8gZGVzZXJpYWxpemUgeHBj
IG1lc3NhZ2UiKTsKKyAgICByZXR1cm4gW2RpY3Rpb25hcnkgYXV0b3JlbGVhc2VdOworfQorCit2
b2lkIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmhhbmRsZUV2ZW50KHhwY19vYmplY3Rf
dCBvYmplY3QpCit7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICh4cGNfZ2V0X3R5cGUob2JqZWN0KSA9PSBYUENfVFlQRV9FUlJPUikgeworICAgICAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+eHBjQ29ubmVjdGlvbkZhaWxl
ZCh0aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TRGljdGlvbmFyeSAqZGF0
YURpY3Rpb25hcnkgPSBkZXNlcmlhbGl6ZU1lc3NhZ2Uob2JqZWN0KTsKKyAgICBpZiAoIWRhdGFE
aWN0aW9uYXJ5KQorICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmluZyAqbWVzc2FnZSA9IFtk
YXRhRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1l
c3NhZ2VOYW1lS2V5XTsKKyAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gW2RhdGFEaWN0aW9u
YXJ5IG9iamVjdEZvcktleTpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uVXNlckluZm9LZXld
OworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnhwY0Nvbm5lY3Rpb25SZWNl
aXZlZE1lc3NhZ2UodGhpcywgbWVzc2FnZSwgdXNlckluZm8pOworfQorCit2b2lkIFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb246OnNlbmRNZXNzYWdlKE5TU3RyaW5nICptZXNzYWdlTmFtZSwg
TlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKK3sKKyAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtOU011
dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om1lc3NhZ2VOYW1lIGZvcktleTpS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uTWVzc2FnZU5hbWVLZXldOworICAgIGlmICh1c2Vy
SW5mbykKKyAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OnVzZXJJbmZvIGZvcktleTpSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uVXNlckluZm9LZXldOworCisgICAgeHBjX29iamVjdF90
IHhwY0RpY3Rpb25hcnkgPSBfQ0ZYUENDcmVhdGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KChDRkRp
Y3Rpb25hcnlSZWYpZGljdGlvbmFyeSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0
aW9uYXJ5ICYmIHhwY19nZXRfdHlwZSh4cGNEaWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNUSU9O
QVJZLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIpOworICAgIGlmICgheHBjRGlj
dGlvbmFyeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgeHBjX29iamVjdF90IG1zZyA9IHhwY19k
aWN0aW9uYXJ5X2NyZWF0ZShOVUxMLCBOVUxMLCAwKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRf
dmFsdWUobXNnLCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uU2VyaWFsaXplZE1lc3NhZ2VL
ZXksIHhwY0RpY3Rpb25hcnkpOworICAgIHhwY19yZWxlYXNlKHhwY0RpY3Rpb25hcnkpOworCisg
ICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbiwgbXNnKTsKKworICAg
IHhwY19yZWxlYXNlKG1zZyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5k
aWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYmEzZDQyMi4uYjMzN2E3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApA
QCAtMTI1LDYgKzEyNSwxMSBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBl
LmgiCiAjZW5kaWYgLy8gRU5BQkxFKFBST01JU0VTKQogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgiCisjaW5jbHVkZSAi
UmVtb3RlSW5zcGVjdG9yLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmx1
dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTE4Nyw2ICsxOTIsMTIgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6aW5pdChKU09iamVjdCogdGhpc1ZhbHVlKQogCiAgICAgbV9kZWJ1Z2dlciA9IDA7
CiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBtX2luc3BlY3RvckRlYnVnZ2Fi
bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZT4oKnRoaXMpOwor
ICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+aW5pdCgpOworICAgIG1faW5zcGVjdG9yRGVidWdn
YWJsZS0+c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCh0cnVlKTsKKyNlbmRpZgorCiAgICAgcmVz
ZXQocHJvdG90eXBlKCkpOwogfQogCkBAIC03NjAsNCArNzcxLDMxIEBAIFVubGlua2VkRXZhbENv
ZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsCiAgICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrOwogfQogCit2b2lkIEpTR2xv
YmFsT2JqZWN0OjpzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnNl
dFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoZW5hYmxlZCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShlbmFibGVkKTsKKyNlbmRpZgorfQorCitib29sIEpTR2xvYmFsT2JqZWN0OjpyZW1vdGVEZWJ1
Z2dpbmdFbmFibGVkKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAg
ICByZXR1cm4gbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5yZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCk7
CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIEpTR2xvYmFsT2Jq
ZWN0OjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBtX25hbWUgPSBuYW1lOwor
CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxl
LT51cGRhdGUoKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDRiZDc0NDYuLjQ0
YzkwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaApAQCAtNTgsNiArNTgsNyBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBG
dW5jdGlvblByb3RvdHlwZTsKIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEdsb2JhbENvZGVC
bG9jazsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTsKIGNsYXNzIEpTUHJvbWlzZVBy
b3RvdHlwZTsKIGNsYXNzIEpTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlOwogY2xhc3MgSlNTdGFj
azsKQEAgLTIyOSw4ICsyMzAsMTQgQEAgcHJvdGVjdGVkOgogICAgICAgICAKICAgICB2b2lkKiBt
X3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpUYWJsZVNpemVdOyAvLyBTcGVjaWFsIHBvaW50ZXJz
IHVzZWQgYnkgdGhlIExMSW50IGFuZCBKSVQuCiAKKyAgICBTdHJpbmcgbV9uYW1lOworCiAgICAg
RGVidWdnZXIqIG1fZGVidWdnZXI7CiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlPiBtX2luc3BlY3RvckRl
YnVnZ2FibGU7CisjZW5kaWYKKwogICAgIFJlZlB0cjxXYXRjaHBvaW50U2V0PiBtX21hc3F1ZXJh
ZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50OwogICAgIFJlZlB0cjxXYXRjaHBvaW50U2V0PiBtX2hh
dmluZ0FCYWRUaW1lV2F0Y2hwb2ludDsKICAgICBSZWZQdHI8V2F0Y2hwb2ludFNldD4gbV92YXJJ
bmplY3Rpb25XYXRjaHBvaW50OwpAQCAtNDIwLDYgKzQyNywxMiBAQCBwdWJsaWM6CiAgICAgU3Ry
dWN0dXJlKiBwcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9taXNlV3JhcHBlckNhbGxiYWNrU3RydWN0dXJlLmdldCgpOyB9CiAjZW5kaWYgLy8gRU5B
QkxFKFBST01JU0VTKQogCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRSZW1vdGVEZWJ1
Z2dpbmdFbmFibGVkKGJvb2wpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcmVtb3RlRGVi
dWdnaW5nRW5hYmxlZCgpIGNvbnN0OworCisgICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYp
OworICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCiAg
ICAgSlNBcnJheUJ1ZmZlclByb3RvdHlwZSogYXJyYXlCdWZmZXJQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX2FycmF5QnVmZmVyUHJvdG90eXBlLmdldCgpOyB9CiAKICNkZWZpbmUgREVGSU5F
X0FDQ0VTU09SU19GT1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVy
TmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcApzaW1p
bGFyaXR5IGluZGV4IDUzJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0
b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaApyZW5hbWUgdG8gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcAppbmRleCAzZjk0
NGVjLi5iMjhmMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
cmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzMiArMjMsNDkgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0jaW1w
b3J0IDx4cGMveHBjLmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmgiCiAKLUBjbGFzcyBXZWJJbnNwZWN0b3JYUENXcmFwcGVyOworI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi1AcHJvdG9jb2wgV2ViSW5zcGVjdG9yWFBDV3Jh
cHBlckRlbGVnYXRlIDxOU09iamVjdD4KLS0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVj
dG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb24gcmVjZWl2ZWRNZXNzYWdlOihOU1N0cmluZyAqKW1l
c3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKLS0gKHZvaWQpeHBj
Q29ubmVjdGlvbkZhaWxlZDooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb247Ci1A
b3B0aW9uYWwKLS0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAq
KWNvbm5lY3Rpb24gdW5oYW5kbGVkTWVzc2FnZTooeHBjX29iamVjdF90KW1lc3NhZ2U7Ci1AZW5k
CisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3IuaCIKIAotQGludGVyZmFjZSBX
ZWJJbnNwZWN0b3JYUENXcmFwcGVyIDogTlNPYmplY3QKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CisKK25hbWVzcGFjZSBKU0MgeworCitKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OkpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZShKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorICAgIDog
bV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogewotICAgIGlkIDxXZWJJbnNwZWN0b3JYUENX
cmFwcGVyRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKLSAgICB4cGNfY29ubmVjdGlvbl90IF9jb25uZWN0
aW9uOwotICAgIE5TU3RyaW5nICpfdGFnOwogfQogCi0tIChXZWJJbnNwZWN0b3JYUENXcmFwcGVy
ICopaW5pdFdpdGhDb25uZWN0aW9uOih4cGNfY29ubmVjdGlvbl90KWNvbm5lY3Rpb247Ci0tICh2
b2lkKWNsb3NlOwotLSAodm9pZClzZW5kTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1
c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87CitTdHJpbmcgSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlOjpuYW1lKCkgY29uc3QKK3sKKyAgICBTdHJpbmcgbmFtZSA9IG1fZ2xvYmFsT2Jq
ZWN0Lm5hbWUoKTsKKyAgICByZXR1cm4gbmFtZS5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIkpT
Q29udGV4dCIpIDogbmFtZTsKK30KKwordm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmNv
bm5lY3QoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50LgorICAgIC8vIENyZWF0ZSBhbiBJbnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JGcm9u
dGVuZCwgSW5zcGVjdG9yQmFja2VuZCwgYW5kIEFnZW50cy4KKyAgICAvLyAiSW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kIi4KK30KKwordm9pZCBKU0dsb2JhbE9iamVjdERlYnVn
Z2FibGU6OmRpc2Nvbm5lY3QoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgLy8g
Ikluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCIuCit9CisKK3ZvaWQgSlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIC8vICJJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQiCit9CiAKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdh
dGU+IGRlbGVnYXRlOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSB4cGNfY29ubmVj
dGlvbl90IGNvbm5lY3Rpb247Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wg
YXZhaWxhYmxlOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICp0YWc7Cit9
IC8vIG5hbWVzcGFjZSBKU0MKIAotQGVuZAorI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9X
ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgKc2ltaWxhcml0eSBpbmRleCA1MyUKcmVuYW1l
IGZyb20gU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JD
bGllbnRSZWdpc3RyeS5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaAppbmRleCBlYTViMmUzLi42ZjJkOWVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNs
aWVudFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDI5ICsyMywzOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2lmbmRlZiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGVf
aAorI2RlZmluZSBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGVfaAogCi1jbGFzcyBXZWJJbnNwZWN0
b3JDbGllbnQ7CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAKLUBwcm90b2NvbCBXZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeURlbGVnYXRlCi0tICh2b2lkKWRpZFJlZ2lzdGVyQ2xpZW50
OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudDsKLS0gKHZvaWQpZGlkVW5yZWdpc3RlckNsaWVu
dDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQ7Ci1AZW5kCisjaW5jbHVkZSAiUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi1AaW50
ZXJmYWNlIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IDogTlNPYmplY3QgewotQHByaXZhdGUK
LSAgICB1bnNpZ25lZCBfbmV4dEF2YWlsYWJsZVBhZ2VJZDsKLSAgICBIYXNoTWFwPHVuc2lnbmVk
LCBXZWJJbnNwZWN0b3JDbGllbnQqPiBfcGFnZUNsaWVudE1hcDsKLSAgICBpZCA8V2ViSW5zcGVj
dG9yQ2xpZW50UmVnaXN0cnlEZWxlZ2F0ZT4gX2RlbGVnYXRlOwotfQorbmFtZXNwYWNlIEpTQyB7
CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGlkIDxXZWJJbnNwZWN0b3JDbGllbnRS
ZWdpc3RyeURlbGVnYXRlPiBkZWxlZ2F0ZTsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OwogCi0rIChX
ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSAqKXNoYXJlZFJlZ2lzdHJ5OworY2xhc3MgSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlIEZJTkFMIDogcHVibGljIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlKTsKK3B1YmxpYzoKKyAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUoSlNHbG9i
YWxPYmplY3QmKTsKKyAgICB+SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlKCkgeyB9CiAKLS0gKHZv
aWQpcmVnaXN0ZXJDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVudCopY2xpZW50OwotLSAodm9pZCl1
bnJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudDsKLS0gKFdlYkluc3Bl
Y3RvckNsaWVudCopY2xpZW50Rm9yUGFnZUlkOih1bnNpZ25lZClwYWdlSWQ7Ci0tIChOU0RpY3Rp
b25hcnkgKilpbnNwZWN0YWJsZVdlYlZpZXdzOworICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpEZWJ1Z2dhYmxlVHlwZSB0eXBlKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpKYXZhU2Ny
aXB0OyB9CiAKLUBlbmQKKyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29u
bmVjdCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVt
b3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsKKworcHJpdmF0ZToK
KyAgICBKU0dsb2JhbE9iamVjdCYgbV9nbG9iYWxPYmplY3Q7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjZW5kaWYgLy8g
IWRlZmluZWQoSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFkNDg0MGIuLmRkYzFm
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMTItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJ
bnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9pb3MvV2ViQ29yZVRocmVhZC5jcHA6CisgICAgICAgICogd3RmL2lvcy9XZWJDb3JlVGhyZWFk
Lmg6CisgICAgICAgIEV4cG9zZSBXZWJUaHJlYWRSdW4vV2ViVGhyZWFkUnVuU3luYyBpT1MgbWV0
aG9kcyBkZWZpbmVkIGluIFdlYkNvcmUgdGhyb3VnaAorICAgICAgICBXVEYgc28gdGhhdCBKYXZh
U2NyaXB0Q29yZSBjYW4gdXNlIGl0LiBBbm90aGVyIHN1Y2ggbWV0aG9kIGFscmVhZHkgZXhpc3Rl
ZC4KKwogMjAxMy0xMi0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQnVpbGQgZmFpbHVyZSB3aGVuIGRpc2FibGluZyBKSVQsIFlBUlJfSklULCBhbmQgQVNTRU1C
TEVSLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvaW9zL1dlYkNvcmVUaHJlYWQuY3BwIGIv
U291cmNlL1dURi93dGYvaW9zL1dlYkNvcmVUaHJlYWQuY3BwCmluZGV4IDQyNzQ0NjYuLmYwN2Rj
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5jcHAKQEAgLTI4LDQgKzI4LDcgQEAK
IAogI2lmIFVTRShXRUJfVEhSRUFEKQogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgKCpXZWJDb3Jl
V2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKSh2b2lkKTsKK1dURl9FWFBPUlRfUFJJVkFURSBi
b29sICgqV2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCkodm9pZCk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCAoKldlYkNvcmVXZWJUaHJlYWRSdW4pKHZvaWQgKF5ibG9jaykoKSk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCAoKldlYkNvcmVXZWJUaHJlYWRSdW5TeW5jKSh2b2lkICheYmxvY2sp
KCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVh
ZC5oIGIvU291cmNlL1dURi93dGYvaW9zL1dlYkNvcmVUaHJlYWQuaAppbmRleCAxMGUyNmE3Li44
MTljZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmgKQEAgLTMzLDYgKzMzLDkgQEAg
ZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogZXh0ZXJuIGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFkSXNM
b2NrZWRPckRpc2FibGVkKSh2b2lkKTsKK2V4dGVybiBib29sICgqV2ViQ29yZVdlYlRocmVhZElz
RW5hYmxlZCkodm9pZCk7CitleHRlcm4gdm9pZCAoKldlYkNvcmVXZWJUaHJlYWRSdW4pKHZvaWQg
KF5ibG9jaykoKSk7CitleHRlcm4gdm9pZCAoKldlYkNvcmVXZWJUaHJlYWRSdW5TeW5jKSh2b2lk
ICheYmxvY2spKCkpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5N2Q4
NGFjLi5mNmNjMTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTMtMTItMDMgIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVu
dCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNYWtlIGEgV2ViQ29yZTo6UGFnZSBhICJXZWIiIFJlbW90ZSBEZWJ1Z2dh
YmxlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICBEaXNhYmxlIEphdmFTY3JpcHQgY29udGV4dCBpbnNwZWN0aW9uIG9uIEpTR2xvYmFsT2Jq
ZWN0cyBpbnNpZGUgV2ViQ29yZTo6UGFnZSdzLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
cmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UmVt
b3RlSW5zcGVjdGlvbkFsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVtb3RlSW5z
cGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAg
ICAgICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1Z2dh
YmxlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6UGFnZURl
YnVnZ2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6Om5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlRGVidWdnYWJsZTo6aGFzTG9jYWxEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
RGVidWdnYWJsZTo6Y29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6
ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6ZGlzcGF0Y2hN
ZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dh
YmxlOjpzZXRJbmRpY2F0aW5nKToKKyAgICAgICAgTWFrZSBhIHBhZ2UgYSAiV2ViIiBkZWJ1Z2dh
YmxlLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3Jl
LmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIE1pc2MuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnQ6OmluZGljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNs
aWVudDo6aGlkZUluZGljYXRlKToKKyAgICAgICAgRm9yd2FyZCBpbmRpY2F0ZSBtZXRob2RzIHRv
IFdlYktpdCBjbGllbnRzLgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKyAgICAgICAgUHVz
aCB1cGRhdGVzIHdoZW4gcmVtb3RlIGRlYnVnZ2FibGUgaW5mb3JtYXRpb24gbGlrZSB0aGUgUGFn
ZSdzCisgICAgICAgIFVSTCBvciB0aXRsZSBjaGFuZ2UuCisKKyAgICAgICAgKiBGb3J3YXJkaW5n
SGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaDoKKyAgICAgICAgUmUtZXhwb3J0IEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIGFzIFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbAorICAgICAgICB0byBhdm9pZCBuZWVkbGVzc2x5IHVwZGF0aW5nIGNvZGUgYWxs
IG92ZXIgdGhlIHBsYWNlLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNw
ZWN0b3JTdHJpbmdzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgVXBkYXRlIGluY2x1
ZGUgbmFtZXMuCisKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKToKKyAgICAg
ICAgTWFrZSB0aGUgIkluc3BlY3QgRWxlbWVudCIgY29udGV4dCBtZW51IHdvcmsgY29ycmVjdGx5
IHdoZW4gdGhlcmUgaXMgYQorICAgICAgICByZW1vdGUgaW5zcGVjdG9yIGluc3RlYWQgb2YgYSBs
b2NhbCBpbnNwZWN0b3IuCisKIDIwMTMtMTItMDMgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRv
YmUuY29tPgogCiAgICAgICAgIFRoZSBvdmVyZmxvdyBib3JkZXIgb2YgYSByZWxhdGl2ZWx5IHBv
c2l0aW9uZWQgZWxlbWVudCBpbnNpZGUgYSByZWdpb24gaXMgbm90IHBhaW50ZWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iYTNhZTI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCkBAIC0w
LDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWxf
aAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA4NGVlOTUwLi42MWUzNmVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM4MTAsNyArMzgxMCw3IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBc
CiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMmI4YTU0OC4uOTE2ZTA2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTI4MDYsNiArMjgwNiw3IEBAIF9fWk43V2ViQ29yZTMzUUxQcmV2
aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0RXYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCitfX1pON1dlYkNvcmU0UGFnZTI2c2V0UmVtb3RlSW5zcGVjdGlvbkFsbG93
ZWRFYgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjdkaXNwYXRjaE1lc3NhZ2VG
cm9tRnJvbnRlbmRFUktOM1dURjZTdHJpbmdFCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggZjgyYjg4Ny4uN2U3MjNkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBA
IC0yMDk0Myw3ICsyMDk0Myw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3JcSW5zcGVjdG9yRE9NQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgiIC8+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRm9y
d2FyZGluZy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kSG9zdC5oIiAvPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCmluZGV4IDM3NzUyYzcuLmQ4NDY0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTI2NSw2ICsyNjUs
OSBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iRm9yd2FyZGluZ0hlYWRlcnNcaGVhcCI+CiAgICAg
ICA8VW5pcXVlSWRlbnRpZmllcj57ODJiYTliYjQtZWFhMC00OTczLTliYjMtYTI3NjY3YTFjMTY3
fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9
IkZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvciI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57
MTMyYmFkZTItMGFhYi02Mjc0LTBhZGZmLWFlOGFlZDVhZWQ0fTwvVW5pcXVlSWRlbnRpZmllcj4K
KyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9Imhpc3RvcnkiPgogICAgICAgPFVu
aXF1ZUlkZW50aWZpZXI+ezZmMzlkZWRmLTJkM2EtNDE0ZS04M2ZlLTdiZjY0ZjkxMWNmYn08L1Vu
aXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0xMjIyNSw2ICsxMjIyOCw5IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xoZWFwXFN0cm9uZy5o
Ij4KICAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaGVhcDwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNc
aW5zcGVjdG9yXEluc3BlY3RvckZvcndhcmRpbmcuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRp
bmdIZWFkZXJzXGluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caGlzdG9yeVxCYWNrRm9yd2FyZENsaWVudC5oIj4KICAgICAgIDxG
aWx0ZXI+aGlzdG9yeTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTI0MjksNyArMTI0
MzUsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXEluc3BlY3RvckZvcndhcmRpbmcuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXEluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY3YWI3NjcuLmZlOGUwYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTg4NSw3ICs4ODUsNyBAQAogCQkyMDlCNDU2QjE2Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlw
dG9DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjA5QjQ1NkExNjc5NkE3RTAwRTU0RTRFIC8qIEpTQ3J5cHRvQ3VzdG9tLmNwcCAqLzsgfTsK
IAkJMjBENjI5MjYxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMEQ2Mjky
NDEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCAqLzsgfTsK
IAkJMjBENjI5MjcxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjBENjI5MjUx
MjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oICovOyB9OwotCQky
Mjc3Nzc2MDEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjc3Nzc1RjEzNDVE
RUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMjI3Nzc3NjAxMzQ1REVBOTAwOEVB
NDU1IC8qIEluc3BlY3RvckZvcndhcmRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JG
b3J3YXJkaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMjI4QzI4NDUxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI4QzI4NDQxMEQ4MjUw
MDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTIyOTJCMjdDMTM1NjY2OTQwMENGMTFFRiAvKiBJbWFn
ZUJ1ZmZlckRhdGFDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyMjkyQjI3QjEzNTY2Njk0MDBDRjExRUYgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuY3Bw
ICovOyB9OwogCQkyMkJEOUY3RjEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMkJEOUY3RDEz
NTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi87IH07CkBAIC0zNTIzLDYgKzM1
MjMsOCBAQAogCQlBNTU2QzI4OTE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1
NkMyODcxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTczMkIwQTEzNkEx
NjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVD
b21wb25lbnRzLmNwcCAqLzsgfTsKIAkJQTU3MzJCMEIxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVD
b21wb25lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLzsgfTsKKwkJ
QTVBMkFGMEIxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjA5MTgyOTczNDMwMERF
MTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgKi87IH07CisJCUE1QTJBRjBDMTgyOTczNDMwMERF
MTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxl
LmggKi87IH07CiAJCUE1QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRv
clBvb2xJQ1UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAq
LzsgfTsKIAkJQTVBQzRBRUYxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5j
cHAgKi87IH07CiAJCUE1QUM0QUYwMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTVBQzRBRUUxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc1
MDYsNyArNzUwOCw3IEBACiAJCTIwOUI0NTZBMTY3OTZBN0UwMEU1NEU0RSAvKiBKU0NyeXB0b0N1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NyeXB0b0N1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwRDYyOTI0MTI1MzY5MEIw
MDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjBENjI5MjUxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MjI3Nzc3NUYxMzQ1REVBOTAwOEVBNDU1IC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjI3Nzc3NUYxMzQ1REVBOTAwOEVBNDU1
IC8qIEluc3BlY3RvckZvcndhcmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yRm9yd2FyZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
MjhDMjg0NDEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFdyYXBwYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyMjkyQjI3QjEzNTY2Njk0MDBDRjExRUYgLyogSW1hZ2VCdWZmZXJEYXRh
Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJE
YXRhQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMkJEOUY3RDEzNTM2MjVD
MDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEltYWdlQnVmZmVyRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTAzMjksNiArMTAzMzEsOCBAQAogCQlBNTU2QzI4NzE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NzMy
QjA4MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRlQ29tcG9uZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1NzMyQjA5MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRlQ29tcG9uZW50cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUEyQUYwOTE4Mjk3MzQzMDBERTE3MjkgLyog
UGFnZURlYnVnZ2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGFnZURlYnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUEyQUYw
QTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGFnZURlYnVnZ2FibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTVBQkI3ODYxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElD
VS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lQnJlYWtJdGVyYXRvclBv
b2xJQ1UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBQzRBRUQxODMzNjk3NTAw
NzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBQzRBRUUxODMzNjk3NTAwNzExNEUwIC8qIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNDQ5Myw3ICsxNDQ5Nyw3IEBACiAJCQkJNTA0QUFDQ0MxODM0NDU1OTAwRTNEOUJD
IC8qIEluc3BlY3Rvck5vZGVGaW5kZXIuaCAqLywKIAkJCQk3QTc0RUNCODEwMTgzOUE1MDBCRjkz
OUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCAqLywKIAkJCQk3QTc0RUNCOTEwMTgz
OUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggKi8sCi0JCQkJMjI3Nzc3
NUYxMzQ1REVBOTAwOEVBNDU1IC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovLAorCQkJ
CTIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGb3J3YXJkaW5nLmggKi8sCiAJ
CQkJRjM0NEM3MTIxMTI1QjgyQzAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50Lmgg
Ki8sCiAJCQkJRjM0NEM3NTcxMTI5NEZGNjAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuY3BwICovLAogCQkJCUYzNDRDNzUyMTEyOTREOUQwMEYyNkVFRSAvKiBJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsLmggKi8sCkBAIC0xNTY5OSw2ICsxNTcwMyw4IEBACiAJCQkJ
Q0QwODI4NUIxNzU3MjUwODAwRUM1RkI3IC8qIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgg
Ki8sCiAJCQkJREFBQ0IzRDkxNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25zb2xlLmNwcCAqLywK
IAkJCQlEQUFDQjNEQTE2RjI0MTY0MDA2NjYxMzUgLyogUGFnZUNvbnNvbGUuaCAqLywKKwkJCQlB
NUEyQUYwOTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwICovLAorCQkJCUE1
QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICovLAogCQkJCTkzMDJC
MEJDMEQ3OUY4MjkwMEM3RUU4MyAvKiBQYWdlR3JvdXAuY3BwICovLAogCQkJCTkzMDJCMEJFMEQ3
OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCAqLywKIAkJCQk3QTY3NEJEOTBGOUVCRjRFMDA2
Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCAqLywKQEAgLTIzMDU2LDYgKzIzMDYy
LDcgQEAKIAkJCQlEMDAwRUJBMzExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1h
Y2hpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDU4RUJCMTdCOEYxMjgwMENCRENBOCAvKiBF
bGVtZW50VHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0I3N0EzODBBREQ3OTI1MDBF
QTRCODEgLyogRnJhbWVMb2FkZXJUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVBMkFGMEMx
ODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NTg0MzY4NjBBRTAxQjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjI4RDIxNEUxMjEzMUVGNDAwNTVEQ0ZDIC8qIEZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzJBRjcwMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlw
dG9LZXlVc2FnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzM0NCw3ICsyMzM1MSw3IEBACiAJCQkJ
N0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDcwNTg1MzQxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFj
a0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzhEQTIwRTE1MjBFQjhDMDA2MTQx
QzEgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTIyNzc3NzYwMTM0
NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICov
LAorCQkJCTIyNzc3NzYwMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGb3J3YXJkaW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGMzQ0QzcxNDExMjVCODJDMDBGMjZFRUUgLyogSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNDRDNzUzMTEyOTREOUQwMEYy
NkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QTBFNzcwRjEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4g
SGVhZGVycyAqLywKQEAgLTI3NzkyLDYgKzI3Nzk5LDcgQEAKIAkJCQlCMkFGRkM3RjBEMDBBNUMx
MDAzMDA3NEQgLyogU2ltcGxlRm9udERhdGFNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNUEx
RUE3QzE1MkJDRjA0MDA0RDAwQjYgLyogU2ltcGxpZnlNYXJrdXBDb21tYW5kLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZEMDBEN0E0MTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1wbGVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUE1QTJBRjBCMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVi
dWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTMyN0Q2MTExQTMzQTJCMDA0RjlENjUg
LyogU2lua0RvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUNDMEVGODZENDcw
MDlEMENBRiAvKiBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQxNTBGOUYyMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHAKaW5kZXggMmNjOTViMS4uMjdiZDc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNTYsMTIgKzU2LDIwIEBAIHZv
aWQgSlNET01HbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworCisj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgc2V0UmVtb3RlRGVidWdnaW5nRW5hYmxl
ZChmYWxzZSk7CisjZW5kaWYKIH0KIAogdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU09iamVjdCogdGhpc1ZhbHVlKQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCB0aGlzVmFsdWUpOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKwor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHNldFJlbW90ZURlYnVnZ2luZ0VuYWJs
ZWQoZmFsc2UpOworI2VuZGlmCiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTRE9NR2xv
YmFsT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5w
eQppbmRleCBiZDE4YmYyLi40MWUzMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5CkBAIC0xNzksNyAr
MTc5LDcgQEAgYmFja2VuZF9jcHAgPSAoCiAKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAg
LTIwMCw3ICsyMDAsNyBAQCBmcm9udGVuZF9jcHAgPSAoCiAKICNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZC5oIgogCi0jaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKaW5kZXgg
YTgzZjI0Mi4uYmZhNGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
clZhbHVlcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuaAppbmRleCA3MGExOWM5Li40NGU3ZWExNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTUyLDYgKzUyLDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBoaWdobGlnaHQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQo
KSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5kaWNhdGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgaGlkZUluZGljYXRpb24oKSB7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBjYW5DbGVhckJyb3dz
ZXJDYWNoZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQnJvd3Nl
ckNhY2hlKCkgeyB9CiAgICAgdmlydHVhbCBib29sIGNhbkNsZWFyQnJvd3NlckNvb2tpZXMoKSB7
IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCmluZGV4IGJkYjhlMTcuLmUyM2ZlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTg0LDYgKzg0LDkg
QEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJ
bnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9p
bnNwZWN0b3JDbGllbnQoaW5zcGVjdG9yQ2xpZW50KQogICAgICwgbV9pc1VuZGVyVGVzdChmYWxz
ZSkKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICAsIG1faGFzUmVtb3RlRnJvbnRl
bmQoZmFsc2UpCisjZW5kaWYKIHsKICAgICBPd25QdHI8SW5zcGVjdG9yQWdlbnQ+IGluc3BlY3Rv
ckFnZW50UHRyKEluc3BlY3RvckFnZW50OjpjcmVhdGUocGFnZSwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIuZ2V0KCksIG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpOwogICAgIG1faW5zcGVj
dG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudFB0ci5nZXQoKTsKQEAgLTE0OCw3ICsxNTEsNiBAQCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3Bl
Y3RvckNsaWVudCogaW5zcGVjdG9yQwogICAgIG1fYWdlbnRzLmFwcGVuZChwcm9maWxlckFnZW50
UHRyLnJlbGVhc2UoKSk7CiAKICAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9ySGVhcFByb2Zp
bGVyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmdldCgpKSk7Ci0KICNlbmRpZgogCiAgICAgbV9hZ2VudHMuYXBwZW5kKElu
c3BlY3RvcldvcmtlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKSk7
CkBAIC0yMDMsNiArMjA1LDI0IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQoUGFzc093blB0cjxJbnNwZWN0b3JGcm9udGVuCiAgICAgbV9pbnNw
ZWN0b3JGcm9udGVuZENsaWVudCA9IGluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogfQogCitib29s
IEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdAoreworI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHJldHVybiBoYXNGcm9udGVuZCgpICYmICFtX2hh
c1JlbW90ZUZyb250ZW5kOworI2Vsc2UKKyAgICByZXR1cm4gaGFzRnJvbnRlbmQoKTsKKyNlbmRp
ZgorfQorCitib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc1JlbW90ZUZyb250ZW5kKCkgY29u
c3QKK3sKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICByZXR1cm4gbV9oYXNSZW1v
dGVGcm9udGVuZDsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIGJvb2wg
SW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdAog
ewogICAgIHJldHVybiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwpAQCAtMjMzLDYgKzI1Mywx
MSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbgogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5kQ3JlYXRlZCgpOwor
CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgaWYgKCFtX2hhc1JlbW90ZUZyb250
ZW5kKQorICAgICAgICBtX3BhZ2UtPnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdl
KCk7CisjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJv
bnRlbmQoKQpAQCAtMjUwLDEwICsyNzUsMTcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpk
aXNjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fb3ZlcmxheS0+ZnJlZVBhZ2UoKTsKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5kRGVsZXRlZCgpOwogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6dW5yZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVtZW50
aW5nQWdlbnRzLmdldCgpKTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlm
ICghbV9oYXNSZW1vdGVGcm9udGVuZCkKKyAgICAgICAgbV9wYWdlLT5yZW1vdGVJbnNwZWN0b3JJ
bmZvcm1hdGlvbkRpZENoYW5nZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6c2hvdygpCiB7CisgICAgQVNTRVJUKCFoYXNSZW1vdGVGcm9udGVuZCgpKTsKKwogICAg
IGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTMxMCw3ICszNDIsOCBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3QoTm9kZSogbm9kZSkKICAgICBpZiAoIWVu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2hvdygpOworICAgIGlmICghaGFzUmVt
b3RlRnJvbnRlbmQoKSkKKyAgICAgICAgc2hvdygpOwogCiAgICAgbV9kb21BZ2VudC0+aW5zcGVj
dChub2RlKTsKIH0KQEAgLTM0Nyw2ICszODAsMTUgQEAgTm9kZSogSW5zcGVjdG9yQ29udHJvbGxl
cjo6aGlnaGxpZ2h0ZWROb2RlKCkgY29uc3QKICAgICByZXR1cm4gbV9vdmVybGF5LT5oaWdobGln
aHRlZE5vZGUoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbmRpY2F0aW5n
KGJvb2wgaW5kaWNhdGluZykKK3sKKyAgICAvLyBGSVhNRTogRm9yIG5vbi1pT1MgY2xpZW50cywg
d2Ugc2hvdWxkIGhhdmUgSW5zcGVjdG9yT3ZlcmxheSBkbyBzb21ldGhpbmcgaGVyZS4KKyAgICBp
ZiAoaW5kaWNhdGluZykKKyAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmluZGljYXRlKCk7Cisg
ICAgZWxzZQorICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+aGlkZUluZGljYXRpb24oKTsKK30K
KwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogYm9vbCBJbnNwZWN0b3JDb250cm9s
bGVyOjpwcm9maWxlckVuYWJsZWQoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZGMwOTlmZi4uYTZlMmQ3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC05MSwx
NiArOTEsMjYgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAorICAgIGJvb2wgaGFzRnJvbnRlbmQoKSBjb25z
dCB7IHJldHVybiAhIW1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOyB9CisgICAgYm9vbCBoYXNM
b2NhbEZyb250ZW5kKCkgY29uc3Q7CisgICAgYm9vbCBoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0
OworCiAgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7
CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoKTsKICAgICB2b2lkIHNldFByb2Nlc3NJZChs
b25nKTsKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHZvaWQgc2V0SGFzUmVt
b3RlRnJvbnRlbmQoYm9vbCBoYXNSZW1vdGUpIHsgbV9oYXNSZW1vdGVGcm9udGVuZCA9IGhhc1Jl
bW90ZTsgfQorI2VuZGlmCisKICAgICB2b2lkIGluc3BlY3QoTm9kZSopOwogICAgIHZvaWQgZHJh
d0hpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKICAgICB2b2lkIGdldEhpZ2hsaWdo
dChIaWdobGlnaHQqKSBjb25zdDsKICAgICB2b2lkIGhpZGVIaWdobGlnaHQoKTsKICAgICBOb2Rl
KiBoaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0SW5kaWNhdGluZyhib29s
KTsKKwogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckhpZ2hs
aWdodGVkTm9kZSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc1VuZGVyVGVzdCgpOwpAQCAtMTUxLDYg
KzE2MSwxMCBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGll
bnQ7CiAgICAgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBib29sIG1faXNV
bmRlclRlc3Q7CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBib29sIG1faGFz
UmVtb3RlRnJvbnRlbmQ7CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaApzaW1pbGFyaXR5
IGluZGV4IDYyJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVt
b3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaAppbmRleCBjMzIwZmRlLi5mNjA2NTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclJlbW90ZUNoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRm9yd2FyZGluZy5oCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMCwxMCArMTEsMTAgQEAKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCiAgKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCiAgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKICAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgpAQCAtMjMsMjAgKzI0LDEzIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWNsYXNz
IFdlYkluc3BlY3RvckNsaWVudDsKLUBjbGFzcyBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbjsKKyNpZm5kZWYgSW5zcGVjdG9yRm9yd2FyZGluZ19oCisjZGVmaW5lIEluc3BlY3Rv
ckZvcndhcmRpbmdfaAogCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgOiBO
U09iamVjdCB7Ci1AcHJpdmF0ZQotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uICpfcmVtb3RlOwotICAgIFdlYkluc3BlY3RvckNsaWVudCogX2xvY2FsOworI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIDogcHVibGljIEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsgfTsKIH0KIAotKyAoV2ViSW5zcGVjdG9yUmVtb3Rl
Q2hhbm5lbCAqKWNyZWF0ZUNoYW5uZWxGb3JQYWdlSWQ6KHVuc2lnbmVkKXBhZ2VJZCBjb25uZWN0
aW9uOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb247Ci0K
LS0gKHZvaWQpY2xvc2VGcm9tTG9jYWxTaWRlOwotLSAodm9pZCljbG9zZUZyb21SZW1vdGVTaWRl
OwotLSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKLS0g
KHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKLQotQGVuZAor
I2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckZvcndhcmRpbmdfaCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDY4Y2FkYWIu
LjMyODAxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldv
cmtlckFnZW50LmNwcApAQCAtMzQsOCArMzQsOCBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yV29y
a2VyQWdlbnQuaCIKIAorI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRp
bmdBZ2VudHMuaCIKICNpbmNsdWRlICJVUkwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjMjk0ZmU0Li5l
ZjIzMDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0zOSw4ICszOSw4IEBACiAjaW5jbHVkZSAiSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRm9y
d2FyZGluZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySGVhcFByb2ZpbGVy
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKaW5kZXggYWZlNjYzZS4uYWIxYWYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0zMzE5LDYgKzMzMTksMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdl
VGl0bGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgbV9jbGllbnQuc2V0TWFpbkZy
YW1lRG9jdW1lbnRSZWFkeSh0cnVlKTsgLy8gdXBkYXRlIG9ic2VydmVycyB3aXRoIG5ldyBET01E
b2N1bWVudAogICAgICAgICBtX2NsaWVudC5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZShsb2FkZXIt
PnRpdGxlKCkpOwogICAgIH0KKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlm
IChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpCisgICAgICAgIG1fZnJhbWUucGFnZSgpLT5yZW1vdGVJ
bnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgRnJhbWVM
b2FkZXI6OmRpZENoYW5nZUljb25zKEljb25UeXBlIHR5cGUpCkBAIC0zMzQwLDkgKzMzNDUsMTIg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIAogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZCgmbV9mcmFtZSwgbV9kb2N1bWVudExv
YWRlci5nZXQoKSk7CiAKLSAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQorICAgIGlmICht
X2ZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgbV9mcmFtZS5wYWdlKCktPmZlYXR1cmVP
YnNlcnZlcigpLT5kaWRDb21taXRMb2FkKCk7Ci0KKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKKyAgICAgICAgbV9mcmFtZS5wYWdlKCktPnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlk
Q2hhbmdlKCk7CisjZW5kaWYKKyAgICB9CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnRlbGxDbGll
bnRBYm91dFBhc3RNZW1vcnlDYWNoZUxvYWRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBjN2EzY2QyLi5hNWVhMTgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC04OTIsNyArODky
LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICNlbmRpZiAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICAgICAgICAgICAgICBpZiAoIShmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5wYWdlKCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIShmcmFtZS0+cGFnZSgpICYmIChmcmFtZS0+cGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgfHwgZnJhbWUt
PnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5oYXNSZW1vdGVGcm9udGVuZCgpKSkpIHsK
ICNlbmRpZgogCiAgICAgICAgICAgICAgICAgLy8gSW4gR1RLKyB1bmF2YWlsYWJsZSBpdGVtcyBh
cmUgbm90IGhpZGRlbiBidXQgaW5zZW5zaXRpdmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA4ZDky
OTk3Li5hZTcyMDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNs
dWRlICJQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oIgogI2luY2x1ZGUgIlBhZ2VDYWNoZS5o
IgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlLmgiCisjaW5jbHVkZSAiUGFnZURlYnVnZ2FibGUuaCIK
ICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCiAjaW5j
bHVkZSAiUGx1Z0luQ2xpZW50LmgiCkBAIC0xODYsNiArMTg3LDkgQEAgUGFnZTo6UGFnZShQYWdl
Q2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRl
ZChmYWxzZSkKICAgICAsIG1fcGFnZVRocm90dGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VUaHJv
dHRsZXI+KCp0aGlzKSkKICAgICAsIG1fY29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb25z
b2xlPigqdGhpcykpCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgLCBtX2luc3Bl
Y3RvckRlYnVnZ2FibGUoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQor
I2VuZGlmCiAgICAgLCBtX2xhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZXNDb3VudCgwKSAv
LyBOT1RFOiBPbmx5IGNhbGxlZCBmcm9tIEludGVybmFscyBmb3IgU3BhdGlhbCBOYXZpZ2F0aW9u
IHRlc3RpbmcuCiAgICAgLCBtX2ZyYW1lc0hhbmRsaW5nQmVmb3JlVW5sb2FkRXZlbnQoMCkKIHsK
QEAgLTIwMyw2ICsyMDcsMTAgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMp
CiAjaWZuZGVmIE5ERUJVRwogICAgIHBhZ2VDb3VudGVyLmluY3JlbWVudCgpOwogI2VuZGlmCisK
KyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUt
PmluaXQoKTsKKyNlbmRpZgogfQogCiBQYWdlOjp+UGFnZSgpCkBAIC0xMjkxLDYgKzEyOTksMjMg
QEAgdm9pZCBQYWdlOjphZGRGb290ZXJXaXRoSGVpZ2h0KGludCBmb290ZXJIZWlnaHQpCiB9CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorYm9vbCBQYWdlOjpyZW1vdGVJ
bnNwZWN0aW9uQWxsb3dlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yRGVidWdn
YWJsZS0+cmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpOworfQorCit2b2lkIFBhZ2U6OnNldFJlbW90
ZUluc3BlY3Rpb25BbGxvd2VkKGJvb2wgYWxsb3dlZCkKK3sKKyAgICBtX2luc3BlY3RvckRlYnVn
Z2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoYWxsb3dlZCk7Cit9CisKK3ZvaWQgUGFn
ZTo6cmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKSBjb25zdAoreworICAgIG1f
aW5zcGVjdG9yRGVidWdnYWJsZS0+dXBkYXRlKCk7Cit9CisjZW5kaWYKKwogdm9pZCBQYWdlOjph
ZGRMYXlvdXRNaWxlc3RvbmVzKExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKIHsKICAgICAv
LyBJbiB0aGUgZnV0dXJlLCB3ZSBtYXkgd2FudCBhIGZ1bmN0aW9uIHRoYXQgcmVwbGFjZXMgbV9s
YXlvdXRNaWxlc3RvbmVzIGluc3RlYWQgb2YganVzdCBhZGRpbmcgdG8gaXQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CmluZGV4IGI2NzgzODguLjcyMzQzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC04MCw2ICs4MCw3IEBA
IGNsYXNzIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcjsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlbjsKIGNsYXNzIFBhZ2VDb25zb2xlOworY2xhc3MgUGFnZURlYnVn
Z2FibGU7CiBjbGFzcyBQYWdlR3JvdXA7CiBjbGFzcyBQYWdlVGhyb3R0bGVyOwogY2xhc3MgUGx1
Z0luQ2xpZW50OwpAQCAtMTc4LDYgKzE3OSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNyZW1l
bnRTdWJmcmFtZUNvdW50KCkgeyBBU1NFUlQobV9zdWJmcmFtZUNvdW50KTsgLS1tX3N1YmZyYW1l
Q291bnQ7IH0KICAgICBpbnQgc3ViZnJhbWVDb3VudCgpIGNvbnN0IHsgY2hlY2tTdWJmcmFtZUNv
dW50Q29uc2lzdGVuY3koKTsgcmV0dXJuIG1fc3ViZnJhbWVDb3VudDsgfQogCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisgICAgYm9vbCByZW1vdGVJbnNwZWN0aW9uQWxsb3dlZCgpIGNv
bnN0OworICAgIHZvaWQgc2V0UmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQoYm9vbCk7CisgICAgdm9p
ZCByZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpIGNvbnN0OworI2VuZGlmCisK
ICAgICBDaHJvbWUmIGNocm9tZSgpIGNvbnN0IHsgcmV0dXJuICptX2Nocm9tZTsgfQogICAgIERy
YWdDYXJldENvbnRyb2xsZXImIGRyYWdDYXJldENvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAq
bV9kcmFnQ2FyZXRDb250cm9sbGVyOyB9CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTUz
Miw2ICs1MzksMTAgQEAgcHJpdmF0ZToKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZVRo
cm90dGxlcj4gbV9wYWdlVGhyb3R0bGVyOwogICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxQYWdl
Q29uc29sZT4gbV9jb25zb2xlOwogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAg
Y29uc3Qgc3RkOjp1bmlxdWVfcHRyPFBhZ2VEZWJ1Z2dhYmxlPiBtX2luc3BlY3RvckRlYnVnZ2Fi
bGU7CisjZW5kaWYKKwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NlZW5QbHVnaW5zOwogICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX3NlZW5NZWRpYUVuZ2luZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
RGVidWdnYWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjViNjll
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUu
Y3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFnZURlYnVnZ2FibGUu
aCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
Rm9yd2FyZGluZy5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIK
KwordXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQ
YWdlRGVidWdnYWJsZTo6UGFnZURlYnVnZ2FibGUoUGFnZSYgcGFnZSkKKyAgICA6IG1fcGFnZShw
YWdlKQoreworfQorCitTdHJpbmcgUGFnZURlYnVnZ2FibGU6Om5hbWUoKSBjb25zdAoreworICAg
IGlmICghbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKworICAgIHJldHVybiBtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+dGl0bGUo
KTsKK30KKworU3RyaW5nIFBhZ2VEZWJ1Z2dhYmxlOjp1cmwoKSBjb25zdAoreworICAgIGlmICgh
bV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KworICAgIFN0cmluZyB1cmwgPSBtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+dXJsKCku
c3RyaW5nKCk7CisgICAgcmV0dXJuIHVybC5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoImFib3V0
OmJsYW5rIikgOiB1cmw7Cit9CisKK2Jvb2wgUGFnZURlYnVnZ2FibGU6Omhhc0xvY2FsRGVidWdn
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLT5o
YXNMb2NhbEZyb250ZW5kKCk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2FibGU6OmNvbm5lY3QoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGNoYW5uZWwpCit7CisgICAgSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250
cm9sbGVyKCk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+c2V0SGFzUmVtb3RlRnJvbnRlbmQo
dHJ1ZSk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+Y29ubmVjdEZyb250ZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKj4oY2hhbm5lbCkpOwor
fQorCit2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KCkKK3sKKyAgICBJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xs
ZXIoKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5kaXNjb25uZWN0RnJvbnRlbmQoKTsKKyAg
ICBpbnNwZWN0b3JDb250cm9sbGVyLT5zZXRIYXNSZW1vdGVGcm9udGVuZChmYWxzZSk7Cit9CisK
K3ZvaWQgUGFnZURlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOworfQorCit2b2lkIFBhZ2VE
ZWJ1Z2dhYmxlOjpzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykKK3sKKyAgICBtX3BhZ2Uu
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbmRpY2F0aW5nKGluZGljYXRpbmcpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKc2ltaWxhcml0eSBpbmRleCA1NCUKcmVuYW1lIGZy
b20gU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlRGVidWdnYWJsZS5oCmluZGV4IGY4YmY1ZTguLjNkOGVjYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlRGVidWdnYWJsZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMywyNiArMjMsNDEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotQGNsYXNz
IFdlYkluc3BlY3RvclNlcnZlcjsKLUBjbGFzcyBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbjsKLUBjbGFzcyBXZWJJbnNwZWN0b3JYUENXcmFwcGVyOworI2lmbmRlZiBQYWdlRGVi
dWdnYWJsZV9oCisjZGVmaW5lIFBhZ2VEZWJ1Z2dhYmxlX2gKIAotQGludGVyZmFjZSBXZWJJbnNw
ZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgOiBOU09iamVjdCB7Ci1AcHJp
dmF0ZQotICAgIFdlYkluc3BlY3RvclNlcnZlciAqX3NlcnZlcjsgLy8gd2VhaywgdGhlIHNlcnZl
ciBzaG91bGQgbmV2ZXIgZGVhbGxvY2F0ZS4KLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpfb3Bl
bkNvbm5lY3Rpb25zOwotICAgIEJPT0wgX2hhc1NjaGVkdWxlZFB1c2g7Ci19CisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiAKLS0gKGlkKWluaXRXaXRoU2VydmVyOihXZWJJbnNwZWN0b3JT
ZXJ2ZXIgKilzZXJ2ZXI7CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi0tICh2b2lkKWNs
b3NlQWxsQ29ubmVjdGlvbnM7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS0gKHZvaWQpcHVzaExp
c3Rpbmc7Ci0tICh2b2lkKXJlY2VpdmVkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1
c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87CitjbGFzcyBQYWdlOwogCi0tICh2b2lk
KWNvbm5lY3Rpb25DbG9zaW5nOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAq
KWNvbm5lY3Rpb247CitjbGFzcyBQYWdlRGVidWdnYWJsZSBGSU5BTCA6IHB1YmxpYyBJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBhZ2VEZWJ1Z2dhYmxlKTsKK3B1YmxpYzoKKyAgICBQYWdlRGVidWdnYWJsZShQYWdlJik7Cisg
ICAgflBhZ2VEZWJ1Z2dhYmxlKCkgeyB9CiAKLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0Zyb250ZW5k
OihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5m
bzsKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6RGVi
dWdnYWJsZVR5cGUgdHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6V2ViOyB9CiAKLUBlbmQKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBuYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgdXJsKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCBPVkVS
UklERTsKKworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dEluZGljYXRpbmcoYm9vbCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgUGFnZSYgbV9wYWdl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChQYWdlRGVidWdnYWJsZV9oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGNhOTk2OWQuLmM3ZWJjOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAKICNpbmNsdWRl
ICJJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ291bnRlcnMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggMGU1OGMzNS4uZTJhYjc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0x
Mi0wMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBt
YW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMTMtMTItMDIgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEF0dGVtcHRlZCBidWlsZCBmaXguIEkgdGhpbmsgdGhpcyBpcyBubyBsb25nZXIgbmVlZGVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
Y2Q3ZjVmMi4uOTQyNWMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zNzgsMjQgKzM3OCwxMSBAQAogCQlBMTBDMUQ4RDE4MjAzMDVF
MDAzNjg4M0EgLyogV2ViUERGVmlld1BsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTBDMUQ4ODE4MjAzMDVFMDAzNjg4M0EgLyogV2Vi
UERGVmlld1BsYWNlaG9sZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTEwQzFEOEUxODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZpZXdQbGFj
ZWhvbGRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExMEMxRDg5MTgyMDMwNUUwMDM2ODgzQSAvKiBXZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gKi87
IH07CiAJCUExN0ExMUIxMTgwREM4NDgwMEU1NDk4QyAvKiBXZWJQbHVnaW5QYWNrYWdlUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3QTEx
QjAxODBEQzg0ODAwRTU0OThDIC8qIFdlYlBsdWdpblBhY2thZ2VQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTUyMTRGQzcxM0I5NzVD
ODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MjE0RkMxMTNCOTc1QzgwMDAwMTVFRiAv
KiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmggKi87IH07Ci0JCUE1MjE0RkM4MTNCOTc1Qzgw
MDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUyMTRGQzIxM0I5NzVDODAwMDAxNUVGIC8q
IFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gKi87IH07Ci0JCUE1MjIwOUY4MTNDNTNFNzUw
MDRCQTdCMSAvKiBXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTIyMDlGNzEzQzUzRTc1MDA0QkE3QjEg
LyogV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1NUUyMEZGMTRENzI2NEMwMDMxNTQ5RSAvKiBX
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NUUyMEZEMTRENzI2NEMwMDMx
NTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCAq
LzsgfTsKLQkJQTU1RTIxMDAxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1NUUyMEZFMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0
b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gKi87IH07CiAJCUE1NjA5NDY2
MTREOEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRpY2F0ZUxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTYwOTQ2NDE0RDhBRDI2MDA3OTlBOEEgLyog
V2ViSW5kaWNhdGVMYXllci5oICovOyB9OwogCQlBNTYwOTQ2NzE0RDhBRDI2MDA3OTlBOEEgLyog
V2ViSW5kaWNhdGVMYXllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1NjA5NDY1MTREOEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRpY2F0ZUxheWVyLm1t
ICovOyB9OwogCQlBNTY4N0JEQTEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTY4N0JE
ODEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLmggKi87IH07CiAJCUE1Njg3
QkRCMTM1Qjc5MUEwMDc0Q0JDQiAvKiBXZWJOb2RlSGlnaGxpZ2h0ZXIubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTY4N0JEOTEzNUI3OTFBMDA3NENC
Q0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLm1tICovOyB9OwotCQlBNTdDMjhBNzEzQkFBNUFEMDA3
MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0MyOEExMTNCQUE1QUQwMDcw
QUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oICovOyB9OwotCQlB
NTdDMjhBODEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTdDMjhBMjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb24ubW0gKi87IH07Ci0JCUE1N0MyOEE5MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0
b3JTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1N0MyOEEzMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCAqLzsgfTsK
LQkJQTU3QzI4QUExM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlci5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0MyOEE0MTNCQUE1
QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gKi87IH07Ci0JCUE1N0MyOEFCMTNC
QUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhBNTEzQkFBNUFEMDA3MEFDQUIg
LyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCUE1N0MyOEFDMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNw
ZWN0b3JYUENXcmFwcGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTdDMjhBNjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ci5tICovOyB9OwogCQlBNTdFMkYyNDEyMDc0OUU2MDAwNDhERjMgLyogV2ViUXVvdGFNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdFMkYy
MjEyMDc0OUU2MDAwNDhERjMgLyogV2ViUXVvdGFNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTU3RUI3OEYxM0I5N0E0RTAwOEQ2OTFE
IC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdFQjc4RDEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5z
cGVjdG9yQ2xpZW50UmVnaXN0cnkuaCAqLzsgfTsKLQkJQTU3RUI3OTAxM0I5N0E0RTAwOEQ2OTFE
IC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RUI3OEUxM0I5N0E0RTAwOEQ2OTFEIC8qIFdlYklu
c3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tICovOyB9OwogCQlBNThBNTc5OTE0M0U3MjcwMDAxMjVG
NTAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OEE1Nzk3MTQzRTcyNzAwMDEyNUY1MCAvKiBXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oICovOyB9OwogCQlBNThBNTc5QTE0M0U3MjcwMDAxMjVG
NTAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNThBNTc5ODE0M0U3MjcwMDAxMjVGNTAgLyogV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0gKi87IH07CiAJCUE1REVGQzBBMTFENTMzMUMwMDg4
NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVGQzA3MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0
eU9yaWdpbi5tbSAqLzsgfTsKQEAgLTc3OCwyNCArNzY1LDExIEBACiAJCUExMEMxRDg5MTgyMDMw
NUUwMDM2ODgzQSAvKiBXZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJQREZWaWV3UGxhY2Vob2xkZXIubW07IHBhdGggPSBp
b3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJQTEwQzFEOEYxODIwMzA3RDAwMzY4ODNBIC8qIFdlYktpdC5pT1MuZXhwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5leHBvcnRzOyBuYW1lID0gV2ViS2l0LmlPUy5leHA7IHBhdGgg
PSBpb3MvV2ViS2l0LmlPUy5leHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0Ex
MUIwMTgwREM4NDgwMEU1NDk4QyAvKiBXZWJQbHVnaW5QYWNrYWdlUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQbHVnaW5QYWNrYWdlUHJpdmF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTIxNEZDMTEzQjk3NUM4MDAwMDE1RUYgLyogV2Vi
SW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmg7IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9y
UmVtb3RlQ2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTIxNEZDMjEz
Qjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwu
bW07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUyMjA5RjcxM0M1M0U3NTAwNEJBN0IxIC8qIFdlYkluc3Bl
Y3RvclJlbGF5RGVmaW5pdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3Rv
clJlbGF5RGVmaW5pdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU1RTIw
RkQxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0
b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaDsgcGF0aCA9IHJlbW90ZS9XZWJJ
bnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQTU1RTIwRkUxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3Rv
clNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
Q29udHJvbGxlci5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NjA5
NDY0MTREOEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRpY2F0ZUxheWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluZGljYXRlTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTU2MDk0NjUxNEQ4QUQyNjAwNzk5QThBIC8qIFdlYkluZGljYXRlTGF5ZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbmRpY2F0ZUxh
eWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTY4N0JEODEzNUI3OTFBMDA3
NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYk5vZGVIaWdobGlnaHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNTY4N0JEOTEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTm9kZUhpZ2hsaWdodGVyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdDMjhBMTEzQkFBNUFEMDA3MEFDQUIg
LyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaDsg
cGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdDMjhBMjEzQkFBNUFEMDA3MEFDQUIgLyogV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5t
bTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTMxM0JBQTVBRDAwNzBBQ0FCIC8q
IFdlYkluc3BlY3RvclNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJJbnNwZWN0b3JTZXJ2ZXIuaDsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTQxM0JBQTVBRDAwNzBBQ0FCIC8q
IFdlYkluc3BlY3RvclNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFdlYkluc3BlY3RvclNlcnZlci5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JT
ZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0MyOEE1MTNCQUE1QUQw
MDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclhQQ1dyYXBwZXIuaDsgcGF0aCA9IHJlbW90ZS9XZWJJ
bnNwZWN0b3JYUENXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0My
OEE2MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMub2JqYzsgbmFtZSA9IFdlYkluc3BlY3RvclhQQ1dyYXBwZXIubTsgcGF0
aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1N0UyRjIyMTIwNzQ5RTYwMDA0OERGMyAvKiBXZWJRdW90YU1hbmFnZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUXVvdGFNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0VCNzhEMTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3Rv
ckNsaWVudFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0VCNzhF
MTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3RvckNsaWVudFJlZ2lz
dHJ5Lm1tOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNThBNTc5NzE0M0U3MjcwMDAxMjVGNTAgLyogV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTU4QTU3OTgxNDNFNzI3MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1REVG
QzA3MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbi5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNlY3VyaXR5T3JpZ2luLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1Miw3ICsxMDI2LDYgQEAKIAkJMUM2OEY2M0YwOTVC
NUY5QzAwQzI5ODRFIC8qIFdlYkluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCi0JCQkJQTUyMTRGQkYxM0I5NzU5NjAwMDAxNUVGIC8qIHJlbW90ZSAq
LywKIAkJCQk1RDdCRjgxMjBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLmggKi8sCiAJ
CQkJNUQ3QkY4MTMwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5tbSAqLywKIAkJCQlC
ODA0MTc2RDEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQuaCAqLywKQEAg
LTE1MDksMjYgKzE0ODIsNiBAQAogCQkJbmFtZSA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CiAJCX07Ci0JCUE1MjE0RkJGMTNCOTc1OTYwMDAwMTVFRiAvKiByZW1vdGUgKi8gPSB7
Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUE1N0VCNzhEMTNCOTdB
NEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oICovLAotCQkJCUE1N0VC
NzhFMTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSAqLywK
LQkJCQlBNTIyMDlGNzEzQzUzRTc1MDA0QkE3QjEgLyogV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0
aW9ucy5oICovLAotCQkJCUE1MjE0RkMxMTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JS
ZW1vdGVDaGFubmVsLmggKi8sCi0JCQkJQTUyMTRGQzIxM0I5NzVDODAwMDAxNUVGIC8qIFdlYklu
c3BlY3RvclJlbW90ZUNoYW5uZWwubW0gKi8sCi0JCQkJQTU3QzI4QTMxM0JBQTVBRDAwNzBBQ0FC
IC8qIFdlYkluc3BlY3RvclNlcnZlci5oICovLAotCQkJCUE1N0MyOEE0MTNCQUE1QUQwMDcwQUNB
QiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gKi8sCi0JCQkJQTU3QzI4QTExM0JBQTVBRDAwNzBB
Q0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmggKi8sCi0JCQkJQTU3
QzI4QTIxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uLm1tICovLAotCQkJCUE1NUUyMEZEMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JT
ZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCAqLywKLQkJCQlBNTVFMjBGRTE0RDcy
NjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9s
bGVyLm1tICovLAotCQkJCUE1N0MyOEE1MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JY
UENXcmFwcGVyLmggKi8sCi0JCQkJQTU3QzI4QTYxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3Bl
Y3RvclhQQ1dyYXBwZXIubSAqLywKLQkJCSk7Ci0JCQluYW1lID0gcmVtb3RlOwotCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJRjUyQ0E2QkQwMkRGOUQwRjAxODYzNUNBIC8qIEhU
TUwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTgyNSwx
NSArMTc3OCw4IEBACiAJCQkJQTEwQzFENjQxODIwMzAwRTAwMzY4ODNBIC8qIFdlYkNocm9tZUNs
aWVudElPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ3QkY4MTQwQzJBMUQ5MDAwOENFMDZEIC8q
IFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDY2OTNEREMwQkZCQTg1MjAwMjE2
MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU3RUI3OEYx
M0I5N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCODA0MTc2RjEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRl
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBOEZGMEQxMTA3NTAyNEEwMEE4MEEwOCAvKiBXZWJJ
bnNwZWN0b3JQcml2YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTIyMDlGODEzQzUzRTc1MDA0
QkE3QjEgLyogV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQTUyMTRGQzcxM0I5NzVDODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwu
aCBpbiBIZWFkZXJzICovLAotCQkJCUE1N0MyOEE5MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNw
ZWN0b3JTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1N0MyOEE3MTNCQUE1QUQwMDcwQUNB
QiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQTU1RTIwRkYxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU3QzI4QUIxM0JB
QTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzOTgxMDQyMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFu
ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RDFEQ0E4MTA2NTkyOEMwMDY4RjdFRiAvKiBXZWJK
U1BERkRvYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwODUwODI0QkYwMTAwOERGMDM4IC8q
IFdlYktleUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjc2LDEzICsyMjIyLDcgQEAK
IAkJCQk1RDdCRjgxNTBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDY2OTNEREQwQkZCQTg1MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVu
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDN0IwQzY2MEVCMjQ2NEQwMEEyODUwMiAvKiBXZWJJ
bnNwZWN0b3JDbGllbnRDRi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNTdFQjc5MDEzQjk3QTRF
MDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCODA0MTc3MDEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQubW0g
aW4gU291cmNlcyAqLywKLQkJCQlBNTIxNEZDODEzQjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVj
dG9yUmVtb3RlQ2hhbm5lbC5tbSBpbiBTb3VyY2VzICovLAotCQkJCUE1N0MyOEFBMTNCQUE1QUQw
MDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNTdD
MjhBODEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24ubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNTVFMjEwMDE0RDcyNjRDMDAzMTU0OUUgLyogV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQTU3QzI4QUMxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQQ1dyYXBw
ZXIubSBpbiBTb3VyY2VzICovLAogCQkJCUExMEMxRDE5MTgyMDJGOUMwMDM2ODgzQSAvKiBXZWJE
ZWZhdWx0Rm9ybURlbGVnYXRlLm0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBFNDA4MjRCRjAx
MDA4REYwMzggLyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm0gaW4gU291cmNlcyAqLywK
IAkJCQlBMTBDMUQ4QjE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld0lPUy5tbSBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggZWQ2NTllYS4uMjEyYTli
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMt
MTItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24g
bWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEJs
YWNrQmVycnkuaDoKKwogMjAxMy0xMS0xNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBWVGFibGVTcGVjdHJ1bQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEJs
YWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRCbGFja0JlcnJ5LmgKaW5kZXggZjJmNjVmYy4uY2QxY2M2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEJsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeS5oCkBAIC0yMSw3ICsyMSw3IEBACiAjZGVmaW5l
IEluc3BlY3RvckNsaWVudEJsYWNrQmVycnlfaAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50
LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JPdmVybGF5QmxhY2tCZXJyeS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2YvQ2hhbmdlTG9nCmluZGV4IDU1MmU3NmIuLmU3ZmIzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTMtMTItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3Ig
ZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVu
dDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKwogMjAxMy0xMC0yNSAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFVwc3RyZWFtIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKSBhbmQgZW5hYmxlIG9uIGlPUyBhbmQgTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4
IGNhMjJmZGUuLjEyMGUxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2YvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC05MSwxMiArOTEsMTAgQEAg
c3RhdGljIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IHNldHRpbmcpCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGNyZWF0ZUtleUZvclByZWZl
cmVuY2VzKGtleSkuZ2V0KCksIHNldHRpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGUHJl
ZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwogfQogCi0jaWYgIUVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJuIGRvRGlzcGF0Y2hNZXNzYWdlT25G
cm9udGVuZFBhZ2UobV9mcm9udGVuZFBhZ2UsIG1lc3NhZ2UpOwogfQotI2VuZGlmCiAKIGJvb2wg
V2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCgpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKaW5kZXggZGQ3ZmNhNC4uZWM4M2UwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2lu
ZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRFZmwuaDoKKwogMjAxMy0xMS0yMyAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIg
IDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIFJlbW92ZSAwLjEw
IGNvZGVwYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEVmbC5oCmluZGV4IDhiZmViMmQuLjg2YmU4M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oCkBA
IC0zNSw3ICszNSw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkluc3Bl
Y3RvckNsaWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmgiCiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNjI3MGNjYS4uMTY2ZDM4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVj
dG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaDoKKwogMjAxMy0xMi0wMiAgR3VzdGF2byBOb3Jv
bmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jb20+CiAKICAgICAgICAgW0dU
S10gR1RLMiBwYWludCBjb2RlIHBhdGggZG9lcyBub3QgcmVuZGVyIEFDIGxheWVycwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3Rr
LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsu
aAppbmRleCAzMWZkZTgwNS4uYzVkYWZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKQEAgLTMwLDcgKzMwLDcgQEAK
ICNkZWZpbmUgSW5zcGVjdG9yQ2xpZW50R3RrX2gKIAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVu
dC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmgiCiAjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAid2Via2l0
d2Vidmlldy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IGFiNDM2MzUuLmYwMWM0MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0xMi0wMyAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3Rl
IEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlw
dENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViSW5z
cGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Q2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQpOgorCiAyMDEzLTExLTE4ICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTU5NDU1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCmluZGV4IDVhY2MyZWUuLmNhNzVkMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnRJT1MubW0KQEAgLTQyLDExICs0Miw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVUaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+CiAKLSNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKLSNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lmgi
Ci0jaW1wb3J0ICJXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmgiCi0jZW5kaWYKLQogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xp
ZW50KFdlYlZpZXcgKndlYlZpZXcpCkBAIC01NCwyMyArNDksMTEgQEAgV2ViSW5zcGVjdG9yQ2xp
ZW50OjpXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqd2ViVmlldykKICAgICAsIG1faGlnaGxp
Z2h0ZXIoQWRvcHROUywgW1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVj
dGVkV2ViVmlldzp3ZWJWaWV3XSkKICAgICAsIG1fZnJvbnRlbmRQYWdlKDApCiAgICAgLCBtX2Zy
b250ZW5kQ2xpZW50KDApCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX3Jl
bW90ZUNoYW5uZWwoMCkKLSAgICAsIG1fcGFnZUlkKDApCi0jZW5kaWYKIHsKLSNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKLSAgICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJl
ZFJlZ2lzdHJ5XSByZWdpc3RlckNsaWVudDp0aGlzXTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYklu
c3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKIHsKLSNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKLSAgICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lz
dHJ5XSB1bnJlZ2lzdGVyQ2xpZW50OnRoaXNdOwotICAgIHRlYXJkb3duUmVtb3RlQ29ubmVjdGlv
bih0cnVlKTsKLSNlbmRpZgotCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKQEAgLTExNiw5NCArOTks
NiBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29s
IGVuYWJsZWQpCiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0g
cG9zdE5vdGlmaWNhdGlvbk9uTWFpblRocmVhZFdpdGhOYW1lOldlYkluc3BlY3RvckRpZFN0b3BT
ZWFyY2hpbmdGb3JOb2RlIG9iamVjdDppbnNwZWN0b3JdOwogfQogCi0jcHJhZ21hIG1hcmsgLQot
I3ByYWdtYSBtYXJrIFJlbW90ZSBXZWIgSW5zcGVjdG9yIEltcGxlbWVudGF0aW9uCi0KLSNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVz
c2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIGlmIChtX3JlbW90
ZUNoYW5uZWwpIHsKLSAgICAgICAgW21fcmVtb3RlQ2hhbm5lbCBzZW5kTWVzc2FnZVRvRnJvbnRl
bmQ6bWVzc2FnZV07Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIGlPUyBk
b2VzIG5vdCBoYXZlIGEgbG9jYWwgaW5zcGVjdG9yLiBUaGVyZSBzaG91bGQgYmUgbm8gd2F5IHRv
IHJlYWNoIHRoaXMuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLQotICAgIHJldHVybiBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKG1fZnJv
bnRlbmRQYWdlLCBtZXNzYWdlKTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRN
ZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBBU1NFUlQobV9y
ZW1vdGVDaGFubmVsKTsKLQotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmlldyk7Ci0gICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQo
bWVzc2FnZSk7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXR1cFJlbW90ZUNvbm5l
Y3Rpb24oV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqcmVtb3RlQ2hhbm5lbCkKLXsKLSAgICAv
LyBUaGVyZSBpcyBhbHJlYWR5IGEgbG9jYWwgc2Vzc2lvbiwgZG8gbm90IGFsbG93IGEgcmVtb3Rl
IHNlc3Npb24uCi0gICAgaWYgKGhhc0xvY2FsU2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgcmVtb3RlIHNlc3Npb24sIGRvIG5vdCBh
bGxvdyBhIG5ldyByZW1vdGUgc2Vzc2lvbi4KLSAgICBpZiAobV9yZW1vdGVDaGFubmVsKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX3JlbW90ZUNoYW5uZWwgPSByZW1vdGVDaGFubmVs
OwotCi0gICAgUGFnZSogcGFnZSA9IGNvcmUobV93ZWJWaWV3KTsKLSAgICBwYWdlLT5pbnNwZWN0
b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVuZCh0aGlzKTsKLQotICAgIC8vIEZvcmNlIGRl
dmVsb3BlciBleHRyYXMgdG8gYmUgZW5hYmxlZCBpbiBXZWJDb3JlIHdoZW4gYSByZW1vdGUgY29u
bmVjdGlvbiBzdGFydHMuCi0gICAgaWYgKHBhZ2UtPnNldHRpbmdzKCkpCi0gICAgICAgIHBhZ2Ut
PnNldHRpbmdzKCktPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnRlYXJkb3duUmVtb3RlQ29u
bmVjdGlvbihib29sIGZyb21Mb2NhbFNpZGUpCi17Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzTG9j
a2VkT3JEaXNhYmxlZCgpKTsKLSAgICBpZiAoIW1fcmVtb3RlQ2hhbm5lbCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKGZyb21Mb2NhbFNpZGUpCi0gICAgICAgIFttX3JlbW90ZUNoYW5uZWwg
Y2xvc2VGcm9tTG9jYWxTaWRlXTsKLQotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmlldyk7
Ci0gICAgaWYgKHBhZ2UpIHsKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5k
aXNjb25uZWN0RnJvbnRlbmQoKTsKLQotICAgICAgICAvLyBSZXN0b3JlIGRldmVsb3BlciBleHRy
YXMgc2V0dGluZyBpbiBXZWJDb3JlLgotICAgICAgICBpZiAocGFnZSAmJiBwYWdlLT5zZXR0aW5n
cygpKQotICAgICAgICAgICAgcGFnZS0+c2V0dGluZ3MoKS0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZChbW21fd2ViVmlldyBwcmVmZXJlbmNlc10gZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZF0pOwot
ICAgIH0KLQotICAgIGlmIChmcm9tTG9jYWxTaWRlKQotICAgICAgICBbbV9yZW1vdGVDaGFubmVs
IHJlbGVhc2VdOwotCi0gICAgbV9yZW1vdGVDaGFubmVsID0gMDsKLX0KLQotYm9vbCBXZWJJbnNw
ZWN0b3JDbGllbnQ6Omhhc0xvY2FsU2Vzc2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnJv
bnRlbmRQYWdlICE9IDA7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpjYW5CZVJlbW90
ZWx5SW5zcGVjdGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21fd2ViVmlldyBjYW5CZVJlbW90
ZWx5SW5zcGVjdGVkXTsKLX0KLQotV2ViVmlldyAqV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0
ZWRXZWJWaWV3KCkKLXsKLSAgICByZXR1cm4gbV93ZWJWaWV3OwotfQotI2VuZGlmCi0KIAogI3By
YWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCBJbXBs
ZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDMzMWI2ZDMuLjI2M2IwN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMy0xMi0wMyAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3Rl
IEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlw
dENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bW92ZSB0aGUgb2xkIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSBjb25uZWN0aW9uIG1hbmFnZW1l
bnQgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
bW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmluZGljYXRlKToKKyAgICAgICAgKFdl
Ykluc3BlY3RvckNsaWVudDo6aGlkZUluZGljYXRlKToKKyAgICAgICAgSG9vayB1cCBXZWJWaWV3
IGluZGljYXRpb24gdGhyb3VnaCB0aGlzIG5ldyBwYXRoLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9y
Q2xpZW50KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVk
KToKKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lz
dHJ5Lmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0
b3JDbGllbnRSZWdpc3RyeS5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVt
b3RlL1dlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwu
bW06IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JT
ZXJ2ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclNlcnZlci5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dl
Ykluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICog
V2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNl
cnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFdl
Ykluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250
cm9sbGVyLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5z
cGVjdG9yWFBDV3JhcHBlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1v
dGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdC5l
eHA6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAo
K1tXZWJWaWV3IF9lbmFibGVSZW1vdGVJbnNwZWN0b3JdKToKKyAgICAgICAgKCtbV2ViVmlldyBf
ZGlzYWJsZVJlbW90ZUluc3BlY3Rvcl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9kaXNhYmxlQXV0
b1N0YXJ0UmVtb3RlSW5zcGVjdG9yXSk6CisgICAgICAgICgrW1dlYlZpZXcgX2lzUmVtb3RlSW5z
cGVjdG9yRW5hYmxlZF0pOgorICAgICAgICAoK1tXZWJWaWV3IF9oYXNSZW1vdGVJbnNwZWN0b3JT
ZXNzaW9uXSk6CisgICAgICAgICgtW1dlYlZpZXcgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IHNldEFsbG93c1JlbW90ZUluc3BlY3Rpb246XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgc2V0SW5kaWNhdGluZ0ZvclJlbW90ZUluc3BlY3RvcjpdKToKKyAgICAgICAg
KC1bV2ViVmlldyBzZXRIb3N0QXBwbGljYXRpb25CdW5kbGVJZDpuYW1lOl0pOgorICAgICAgICAo
LVtXZWJWaWV3IF9kaWRDb21taXRMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3RGF0YS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06CisgICAgICAg
ICgtW1dlYlZpZXdQcml2YXRlIGluaXRdKToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgZGVh
bGxvY10pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICBSZW1vdmUgb2xkIFJFTU9URV9JTlNQ
RUNUT1IuCisKIDIwMTMtMTItMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNv
bT4KIAogICAgICAgICBBWDogQ3Jhc2ggaW4gYWNjZXNzaWJpbGl0eVJvb3Qgd2hlbiBEb2N1bWVu
dCBnb2VzIGF3YXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggMTg3NWFjMC4uNmU3OGExYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KQEAgLTEzOCwxMCArMTM4LDYgQEAKICNpbXBvcnQgIldlYkhvc3RlZE5ldHNj
YXBlUGx1Z2luVmlldy5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
LSNpbXBvcnQgIldlYkluc3BlY3RvclNlcnZlci5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIApAQCAtNjIxLDEyICs2MTcs
NiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aQogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRp
ZFJlY2VpdmVUaXRsZUZvckZyYW1lRnVuYykKICAgICAgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rp
b24gb2YgdGl0bGUuCiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlv
bnMtPmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZp
ZXc6ZGlkUmVjZWl2ZVRpdGxlOmZvckZyYW1lOiksIChOU1N0cmluZyAqKXRpdGxlLnN0cmluZygp
LCBtX3dlYkZyYW1lLmdldCgpKTsKLQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAg
IEJPT0wgaXNNYWluRnJhbWUgPSBbd2ViVmlldyBtYWluRnJhbWVdID09IG1fd2ViRnJhbWUuZ2V0
KCk7Ci0gICAgaWYgKGlzTWFpbkZyYW1lKQotICAgICAgICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5z
cGVjdG9yU2VydmVyXSBwdXNoTGlzdGluZ107Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKaW5kZXggNTUxYWY3Zi4uMWU3YTA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTI3LDcgKzI3LDcg
QEAKICAqLwogCiAjaW1wb3J0IDxXZWJDb3JlL0luc3BlY3RvckNsaWVudC5oPgotI2ltcG9ydCA8
V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSW5z
cGVjdG9yRm9yd2FyZGluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmg+CiAKICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CkBAIC03Myw2ICs3Myw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKSBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgdm9pZCBp
bmRpY2F0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBoaWRlSW5kaWNhdGlvbigpIE9W
RVJSSURFOworCiAgICAgdmlydHVhbCB2b2lkIGRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCkg
T1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0
IFN0cmluZyYpIE9WRVJSSURFOwpAQCAtODUsMjIgKzg4LDYgQEAgcHVibGljOgogCiAgICAgdm9p
ZCByZWxlYXNlRnJvbnRlbmQoKTsKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAg
IHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBib29sIHNl
dHVwUmVtb3RlQ29ubmVjdGlvbihXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICpyZW1vdGVDaGFu
bmVsKTsKLSAgICB2b2lkIHRlYXJkb3duUmVtb3RlQ29ubmVjdGlvbihib29sIGZyb21Mb2NhbFNp
ZGUpOwotCi0gICAgdW5zaWduZWQgcGFnZUlkKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWQ7IH0K
LSAgICB2b2lkIHNldFBhZ2VJZCh1bnNpZ25lZCBwYWdlSWQpIHsgbV9wYWdlSWQgPSBwYWdlSWQ7
IH0KLQotICAgIGJvb2wgaGFzTG9jYWxTZXNzaW9uKCkgY29uc3Q7Ci0KLSAgICBib29sIGNhbkJl
UmVtb3RlbHlJbnNwZWN0ZWQoKSBjb25zdDsKLQotICAgIFdlYlZpZXcgKmluc3BlY3RlZFdlYlZp
ZXcoKTsKLSNlbmRpZgotCiBwcml2YXRlOgogICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IGNyZWF0ZUZyb250ZW5kU2V0dGluZ3Mo
KTsKIApAQCAtMTA4LDExICs5NSw2IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdlYk5vZGVI
aWdobGlnaHRlcj4gbV9oaWdobGlnaHRlcjsKICAgICBXZWJDb3JlOjpQYWdlKiBtX2Zyb250ZW5k
UGFnZTsKICAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9mcm9udGVuZENsaWVudDsK
LQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIFdlYkluc3BlY3RvclJlbW90ZUNo
YW5uZWwgKm1fcmVtb3RlQ2hhbm5lbDsKLSAgICB1bnNpZ25lZCBtX3BhZ2VJZDsKLSNlbmRpZgog
fTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0KaW5kZXggZTQzOGM2ZC4uZTI1ZWJlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpA
QCAtNTUsMTEgKzU1LDYgQEAKICNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9CYXNlNjQuaD4KIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotI2ltcG9y
dCAiV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclJl
bW90ZUNoYW5uZWwuaCIKLSNlbmRpZgotCiBTT0ZUX0xJTktfU1RBR0VEX0ZSQU1FV09SSyhXZWJJ
bnNwZWN0b3JVSSwgUHJpdmF0ZUZyYW1ld29ya3MsIEEpCiAKIC8vIFRoZSBtYXJnaW4gZnJvbSB0
aGUgdG9wIGFuZCByaWdodCBvZiB0aGUgZG9jayBidXR0b24gKHNhbWUgYXMgdGhlIGZ1bGwgc2Ny
ZWVuIGJ1dHRvbikuCkBAIC0xMzUsMjMgKzEzMCwxMSBAQCBXZWJJbnNwZWN0b3JDbGllbnQ6Oldl
Ykluc3BlY3RvckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQogICAgICwgbV9oaWdobGlnaHRlcihh
ZG9wdE5TKFtbV2ViTm9kZUhpZ2hsaWdodGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZp
ZXc6d2ViVmlld10pKQogICAgICwgbV9mcm9udGVuZFBhZ2UoMCkKICAgICAsIG1fZnJvbnRlbmRD
bGllbnQoMCkKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAsIG1fcmVtb3RlQ2hh
bm5lbCgwKQotICAgICwgbV9wYWdlSWQoMCkKLSNlbmRpZgogewotI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQotICAgIFtbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0
cnldIHJlZ2lzdGVyQ2xpZW50OnRoaXNdOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9y
Q2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQoKQogewotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQotICAgIFtbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIHVu
cmVnaXN0ZXJDbGllbnQ6dGhpc107Ci0gICAgdGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKHRydWUp
OwotI2VuZGlmCi0KICAgICBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiAgICAgZGVsZXRlIHRo
aXM7CiB9CkBAIC0xOTcsNiArMTgwLDE2IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWRl
SGlnaGxpZ2h0KCkKICAgICBbbV9oaWdobGlnaHRlci5nZXQoKSBoaWRlSGlnaGxpZ2h0XTsKIH0K
IAordm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmluZGljYXRlKCkKK3sKKyAgICBbbV93ZWJWaWV3
IHNldEluZGljYXRpbmdGb3JSZW1vdGVJbnNwZWN0b3I6WUVTXTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JDbGllbnQ6OmhpZGVJbmRpY2F0aW9uKCkKK3sKKyAgICBbbV93ZWJWaWV3IHNldEluZGlj
YXRpbmdGb3JSZW1vdGVJbnNwZWN0b3I6Tk9dOworfQorCiB2b2lkIFdlYkluc3BlY3RvckNsaWVu
dDo6ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpCiB7CiAgICAgV2ViSW5zcGVj
dG9yICppbnNwZWN0b3IgPSBbbV93ZWJWaWV3IGluc3BlY3Rvcl07CkBAIC0yMTUsNzggKzIwOCw2
IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpyZWxlYXNlRnJvbnRlbmQoKQogICAgIG1fZnJv
bnRlbmRQYWdlID0gMDsKIH0KIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotYm9vbCBX
ZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCi17Ci0gICAgaWYgKG1fcmVtb3RlQ2hhbm5lbCkgewotICAgICAgICBbbV9yZW1vdGVD
aGFubmVsIHNlbmRNZXNzYWdlVG9Gcm9udGVuZDptZXNzYWdlXTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2Uo
bV9mcm9udGVuZFBhZ2UsIG1lc3NhZ2UpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckNsaWVudDo6
c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIEFTU0VS
VChtX3JlbW90ZUNoYW5uZWwpOwotCi0gICAgUGFnZSogcGFnZSA9IGNvcmUobV93ZWJWaWV3KTsK
LSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9u
dGVuZChtZXNzYWdlKTsKLX0KLQotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNldHVwUmVtb3Rl
Q29ubmVjdGlvbihXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICpyZW1vdGVDaGFubmVsKQotewot
ICAgIC8vIFRoZXJlIGlzIGFscmVhZHkgYSBsb2NhbCBzZXNzaW9uLCBkbyBub3QgYWxsb3cgYSBy
ZW1vdGUgc2Vzc2lvbi4KLSAgICBpZiAoaGFzTG9jYWxTZXNzaW9uKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIC8vIFRoZXJlIGlzIGFscmVhZHkgYSByZW1vdGUgc2Vzc2lvbiwgZG8g
bm90IGFsbG93IGEgbmV3IHJlbW90ZSBzZXNzaW9uLgotICAgIGlmIChtX3JlbW90ZUNoYW5uZWwp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEFTU0VSVChbW21fd2ViVmlldyBwcmVmZXJl
bmNlc10gZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZF0pOwotCi0gICAgbV9yZW1vdGVDaGFubmVsID0g
cmVtb3RlQ2hhbm5lbDsKLQotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmlldyk7Ci0gICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25uZWN0RnJvbnRlbmQodGhpcyk7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnRlYXJkb3duUmVt
b3RlQ29ubmVjdGlvbihib29sIGZyb21Mb2NhbFNpZGUpCi17Ci0gICAgaWYgKCFtX3JlbW90ZUNo
YW5uZWwpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChmcm9tTG9jYWxTaWRlKQotICAgICAg
ICBbbV9yZW1vdGVDaGFubmVsIGNsb3NlRnJvbUxvY2FsU2lkZV07Ci0KLSAgICBpZiAoUGFnZSog
cGFnZSA9IGNvcmUobV93ZWJWaWV3KSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5kaXNjb25uZWN0RnJvbnRlbmQoKTsKLQotICAgIGlmIChmcm9tTG9jYWxTaWRlKQotICAg
ICAgICBbbV9yZW1vdGVDaGFubmVsIHJlbGVhc2VdOwotCi0gICAgbV9yZW1vdGVDaGFubmVsID0g
MDsKLX0KLQotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6Omhhc0xvY2FsU2Vzc2lvbigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlICE9IDA7Ci19Ci0KLWJvb2wgV2ViSW5zcGVj
dG9yQ2xpZW50OjpjYW5CZVJlbW90ZWx5SW5zcGVjdGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
W21fd2ViVmlldyBjYW5CZVJlbW90ZWx5SW5zcGVjdGVkXTsKLX0KLQotV2ViVmlldyAqV2ViSW5z
cGVjdG9yQ2xpZW50OjppbnNwZWN0ZWRXZWJWaWV3KCkKLXsKLSAgICByZXR1cm4gbV93ZWJWaWV3
OwotfQotI2VuZGlmCi0KIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3Rvcldp
bmRvd0NvbnRyb2xsZXIqIHdpbmRvd0NvbnRyb2xsZXIsIEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIsIFBhZ2UqIGZyb250ZW5kUGFnZSwgV1RGOjpQYXNzT3duUHRyPFNl
dHRpbmdzPiBzZXR0aW5ncykKICAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoaW5z
cGVjdG9yQ29udHJvbGxlciwgIGZyb250ZW5kUGFnZSwgc2V0dGluZ3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJl
Z2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNw
ZWN0b3JDbGllbnRSZWdpc3RyeS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA5
NDhkNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3Rl
L1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVudFJl
Z2lzdHJ5LmgiCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVudC5oIgotI2ltcG9ydCAiV2Vi
Vmlld1ByaXZhdGUuaCIKLQotQGltcGxlbWVudGF0aW9uIFdlYkluc3BlY3RvckNsaWVudFJlZ2lz
dHJ5Ci0KLUBzeW50aGVzaXplIGRlbGVnYXRlID0gX2RlbGVnYXRlOwotCi0rIChXZWJJbnNwZWN0
b3JDbGllbnRSZWdpc3RyeSAqKXNoYXJlZFJlZ2lzdHJ5Ci17Ci0gICAgc3RhdGljIFdlYkluc3Bl
Y3RvckNsaWVudFJlZ2lzdHJ5ICpzaGFyZWRSZWdpc3RyeSA9IFtbV2ViSW5zcGVjdG9yQ2xpZW50
UmVnaXN0cnkgYWxsb2NdIGluaXRdOwotICAgIHJldHVybiBzaGFyZWRSZWdpc3RyeTsKLX0KLQot
LSAoaWQpaW5pdAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQot
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX25leHRBdmFpbGFibGVQYWdlSWQgPSAxOwotCi0g
ICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHVuc2lnbmVkKV9nZXROZXh0QXZhaWxhYmxlUGFnZUlk
Ci17Ci0gICAgLy8gQm91bmRhcnkgdmFsdWVzLCAwIGFuZCBVSU5UX01BWCwgYXJlIGludmFsaWQg
SGFzaE1hcCBrZXlzLgotICAgIHVuc2lnbmVkIG5leHRWYWxpZFBhZ2VJZDsKLSAgICBkbyB7Ci0g
ICAgICAgIG5leHRWYWxpZFBhZ2VJZCA9IF9uZXh0QXZhaWxhYmxlUGFnZUlkKys7Ci0gICAgfSB3
aGlsZSAoIW5leHRWYWxpZFBhZ2VJZCB8fCBuZXh0VmFsaWRQYWdlSWQgPT0gVUlOVF9NQVggfHwg
X3BhZ2VDbGllbnRNYXAuY29udGFpbnMobmV4dFZhbGlkUGFnZUlkKSk7Ci0gICAgcmV0dXJuIG5l
eHRWYWxpZFBhZ2VJZDsKLX0KLQotLSAodm9pZClyZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9y
Q2xpZW50KiljbGllbnQKLXsKLSAgICB1bnNpZ25lZCBwYWdlSWQgPSBbc2VsZiBfZ2V0TmV4dEF2
YWlsYWJsZVBhZ2VJZF07Ci0gICAgX3BhZ2VDbGllbnRNYXAuc2V0KHBhZ2VJZCwgY2xpZW50KTsK
LSAgICBjbGllbnQtPnNldFBhZ2VJZChwYWdlSWQpOwotICAgIFtfZGVsZWdhdGUgZGlkUmVnaXN0
ZXJDbGllbnQ6Y2xpZW50XTsKLX0KLQotLSAodm9pZCl1bnJlZ2lzdGVyQ2xpZW50OihXZWJJbnNw
ZWN0b3JDbGllbnQqKWNsaWVudAotewotICAgIHVuc2lnbmVkIHBhZ2VJZCA9IGNsaWVudC0+cGFn
ZUlkKCk7Ci0gICAgX3BhZ2VDbGllbnRNYXAucmVtb3ZlKHBhZ2VJZCk7Ci0gICAgW19kZWxlZ2F0
ZSBkaWRVbnJlZ2lzdGVyQ2xpZW50OmNsaWVudF07Ci19Ci0KLS0gKFdlYkluc3BlY3RvckNsaWVu
dCopY2xpZW50Rm9yUGFnZUlkOih1bnNpZ25lZClwYWdlSWQKLXsKLSAgICByZXR1cm4gX3BhZ2VD
bGllbnRNYXAuZ2V0KHBhZ2VJZCk7Ci19Ci0KLS0gKE5TRGljdGlvbmFyeSAqKWluc3BlY3RhYmxl
V2ViVmlld3MKLXsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TTXV0
YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhDYXBhY2l0eTpfcGFnZUNsaWVudE1hcC5zaXpl
KCldOwotCi0gICAgSGFzaE1hcDx1bnNpZ25lZCwgV2ViSW5zcGVjdG9yQ2xpZW50Kj46Oml0ZXJh
dG9yIGVuZCA9IF9wYWdlQ2xpZW50TWFwLmVuZCgpOwotICAgIGZvciAoSGFzaE1hcDx1bnNpZ25l
ZCwgV2ViSW5zcGVjdG9yQ2xpZW50Kj46Oml0ZXJhdG9yIGl0ID0gX3BhZ2VDbGllbnRNYXAuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBpdC0+
dmFsdWUtPmluc3BlY3RlZFdlYlZpZXcoKTsKLSAgICAgICAgaWYgKCFbd2ViVmlldyBjYW5CZVJl
bW90ZWx5SW5zcGVjdGVkXSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIE5TTnVt
YmVyICpwYWdlSWQgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50Oml0LT5rZXldOwot
ICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6d2ViVmlldyBmb3JLZXk6cGFnZUlkXTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gZGljdGlvbmFyeTsKLX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
UmVtb3RlQ2hhbm5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUv
V2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzhmZmNkNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
cmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwx
MDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVt
b3RlQ2hhbm5lbC5oIgotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKLSNpbXBvcnQg
IldlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbi5oIgotI2ltcG9ydCAiV2ViS2l0TG9nZ2luZy5oIgotI2ltcG9y
dCA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclJlbW90ZUNo
YW5uZWwgKCkKLS0gKGlkKWluaXRXaXRoUmVtb3RlOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbiAqKXJlbW90ZSBsb2NhbDooV2ViSW5zcGVjdG9yQ2xpZW50Kilsb2NhbDsKLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwKLQotKyAoV2Vi
SW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqKWNyZWF0ZUNoYW5uZWxGb3JQYWdlSWQ6KHVuc2lnbmVk
KXBhZ2VJZCBjb25uZWN0aW9uOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAq
KWNvbm5lY3Rpb24KLXsKLSAgICAvLyBHZXQgdGhlIEluc3BlY3RvciBjbGllbnQuIEl0cyBwb3Nz
aWJsZSB0aGUgcGFnZSBjbG9zZWQgYmVmb3JlIHRoZSByZW1vdGUgY2xpZW50IHJlcXVlc3RlZCBp
dC4KLSAgICBXZWJJbnNwZWN0b3JDbGllbnQgKmluc3BlY3RvckNsaWVudCA9IFtbV2ViSW5zcGVj
dG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIGNsaWVudEZvclBhZ2VJZDpwYWdlSWRd
OwotICAgIGlmICghaW5zcGVjdG9yQ2xpZW50KSB7Ci0gICAgICAgIExPRyhSZW1vdGVJbnNwZWN0
b3IsICJXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsOiBQYWdlIHJlcXVlc3RlZCBubyBsb25nZXIg
ZXhpc3RzOiAoJXUpIiwgcGFnZUlkKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAg
ICAvLyBUaGUgV2ViVmlldyBkb2VzIG5vdCBhbGxvdyByZW1vdGUgaW5zcGVjdGlvbi4KLSAgICBp
ZiAoIWluc3BlY3RvckNsaWVudC0+Y2FuQmVSZW1vdGVseUluc3BlY3RlZCgpKSB7Ci0gICAgICAg
IExPRyhSZW1vdGVJbnNwZWN0b3IsICJXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsOiBXZWJWaWV3
IGZvciBQYWdlICgldSkgZG9lcyBub3QgYWxsb3cgcmVtb3RlIGluc3BlY3Rpb24uIiwgcGFnZUlk
KTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICAvLyBUaGUgY2hhbm5lbCBpcyBy
ZWxlYXNlZCBieSB3aGljaGV2ZXIgc2lkZSBjbG9zZXMgdGhlIGNoYW5uZWwuIFRoZSBjaGFubmVs
IGNvdWxkIGJlIGNsb3NlZAotICAgIC8vIHJlbW90ZWx5IGJ5IHRoZSBzb2NrZXQgY2xvc2luZyAo
dGhlIHVzZXIgbmF2aWdhdGluZyBhd2F5IGZyb20gdGhlIHJlbW90ZSBpbnNwZWN0b3IgcGFnZSku
Ci0gICAgLy8gSXQgY291bGQgYmUgY2xvc2VkIGxvY2FsbHkgYnkgdGhlIFBhZ2UgYmVpbmcgZGVz
dHJveWVkLCBsaWtlIHRoZSBicm93c2VyIG9yIHRhYiBiZWluZyBjbG9zZWQuCi0gICAgLy8gU2V0
dGluZyB1cCB0aGUgY29ubmVjdGlvbiBjYW4gZmFpbCBpZiB0aGVyZSBpcyBhbHJlYWR5IGFuIGV4
aXN0aW5nIHNlc3Npb24uCi0gICAgV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqY2hhbm5lbCA9
IFtbV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCBhbGxvY10gaW5pdFdpdGhSZW1vdGU6Y29ubmVj
dGlvbiBsb2NhbDppbnNwZWN0b3JDbGllbnRdOwotICAgIGlmICghaW5zcGVjdG9yQ2xpZW50LT5z
ZXR1cFJlbW90ZUNvbm5lY3Rpb24oY2hhbm5lbCkpIHsKLSAgICAgICAgTE9HKFJlbW90ZUluc3Bl
Y3RvciwgIldlYkluc3BlY3RvclJlbW90ZUNoYW5uZWw6IFNldHRpbmcgdXAgYSByZW1vdGUgc2Vz
c2lvbiBmYWlsZWQuIFByb2JhYmx5IGFscmVhZHkgYSBsb2NhbCBzZXNzaW9uLiIpOwotICAgICAg
ICBbY2hhbm5lbCByZWxlYXNlXTsKLSAgICAgICAgY2hhbm5lbCA9IG5pbDsKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICB9Ci0KLSAgICByZXR1cm4gY2hhbm5lbDsKLX0KLQotLSAoaWQpaW5pdFdp
dGhSZW1vdGU6KFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uICopcmVtb3RlIGxv
Y2FsOihXZWJJbnNwZWN0b3JDbGllbnQqKWxvY2FsCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0
XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfcmVtb3RlID0g
cmVtb3RlOwotICAgIF9sb2NhbCA9IGxvY2FsOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0g
KHZvaWQpY2xvc2VGcm9tTG9jYWxTaWRlCi17Ci0gICAgLy8gTG9jYWwgc2lkZSB3aWxsIHJlbGVh
c2UuIE1ha2Ugc3VyZSB0aGUgcmVtb3RlIHNpZGUgY2xlYXJzIGl0cyByZWZlcmVuY2UgdG8gdGhl
IGNoYW5uZWwuCi0gICAgW19yZW1vdGUgY2xlYXJDaGFubmVsXTsKLX0KLQotLSAodm9pZCljbG9z
ZUZyb21SZW1vdGVTaWRlCi17Ci0gICAgLy8gUmVtb3RlIHNpZGUgd2lsbCByZWxlYXNlLiBNYWtl
IHN1cmUgdGhlIGxvY2FsIHNpZGUgY2xlYXJzIGl0cyByZWZlcmVuY2UgdG8gdGhlIGNoYW5uZWwu
Ci0gICAgX2xvY2FsLT50ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24oZmFsc2UpOwotfQotCi0tICh2
b2lkKXNlbmRNZXNzYWdlVG9Gcm9udGVuZDooTlNTdHJpbmcgKiltZXNzYWdlCi17Ci0gICAgW19y
ZW1vdGUgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOm1lc3NhZ2VdOwotfQotCi0tICh2b2lkKXNlbmRN
ZXNzYWdlVG9CYWNrZW5kOihOU1N0cmluZyAqKW1lc3NhZ2UKLXsKLSAgICBfbG9jYWwtPnNlbmRN
ZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UpOwotfQotCi1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
U2VydmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmNjc5MGYuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JT
ZXJ2ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnRS
ZWdpc3RyeS5oIgotCi1AY2xhc3MgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25D
b250cm9sbGVyOwotQGNsYXNzIFdlYkluc3BlY3RvclhQQ1dyYXBwZXI7Ci0KLUBpbnRlcmZhY2Ug
V2ViSW5zcGVjdG9yU2VydmVyIDogTlNPYmplY3QgPFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5
RGVsZWdhdGU+IHsKLUBwcml2YXRlCi0gICAgQk9PTCBfaXNFbmFibGVkOwotICAgIEJPT0wgX2hh
c0FjdGl2ZURlYnVnU2Vzc2lvbjsKLSAgICBpbnQgX25vdGlmeVRva2VuOwotICAgIFdlYkluc3Bl
Y3RvclhQQ1dyYXBwZXIgKl94cGNDb25uZWN0aW9uOwotICAgIFdlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciAqX2Nvbm5lY3Rpb25Db250cm9sbGVyOwotfQotCi0t
ICh2b2lkKXN0YXJ0OwotLSAodm9pZClzdG9wOwotLSAoQk9PTClpc0VuYWJsZWQ7Ci0tICh2b2lk
KXB1c2hMaXN0aW5nOwotCi0tIChCT09MKWhhc0FjdGl2ZURlYnVnU2Vzc2lvbjsKLS0gKHZvaWQp
c2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOihCT09MKWhhc1Nlc3Npb247Ci0KLS0gKFdlYkluc3Bl
Y3RvclhQQ1dyYXBwZXIgKil4cGNDb25uZWN0aW9uOwotCi1AZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVy
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzlhNzNhLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVy
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjA0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0K
LSNpbXBvcnQgIldlYkluc3BlY3RvclNlcnZlci5oIgotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JD
bGllbnQuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCIKLSNpbXBv
cnQgIldlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oIgotI2lt
cG9ydCAiV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIgotI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUu
aCIKLSNpbXBvcnQgPG5vdGlmeS5oPgotI2ltcG9ydCA8eHBjL3hwYy5oPgotCi0KLSNwcmFnbWEg
bWFyayAtCi0jcHJhZ21hIG1hcmsgUHJpdmF0ZSBDbGFzcyBEZXRhaWxzCi0KLUBpbnRlcmZhY2Ug
V2ViSW5zcGVjdG9yU2VydmVyICgpIDxXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGU+Ci0t
ICh2b2lkKXNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkOwotLSAodm9pZCl4cGNDb25uZWN0aW9u
OihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopY29ubmVjdGlvbiByZWNlaXZlZE1lc3NhZ2U6KE5T
U3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOwot
LSAodm9pZCl4cGNDb25uZWN0aW9uRmFpbGVkOihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopY29u
bmVjdGlvbjsKLUBlbmQKLQotCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIFNlcnZlciBJ
bXBsZW1lbnRhdGlvbgotCi1AaW1wbGVtZW50YXRpb24gV2ViSW5zcGVjdG9yU2VydmVyCi0KLS0g
KGlkKWluaXQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9jb25uZWN0aW9uQ29udHJvbGxlciA9IFtbV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFNl
cnZlcjpzZWxmXTsKLQotICAgIFtbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVn
aXN0cnldIHNldERlbGVnYXRlOnNlbGZdOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZv
aWQpZGVhbGxvYwotewotICAgIC8vIFNpbmdsZXRvbiBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgcmVs
ZWFzZWQuCi0KLSAgICBbc2VsZiBzdG9wXTsKLQotICAgIEFTU0VSVCghX3hwY0Nvbm5lY3Rpb24p
OwotICAgIFtfY29ubmVjdGlvbkNvbnRyb2xsZXIgcmVsZWFzZV07Ci0KLSAgICBbW1dlYkluc3Bl
Y3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XSBzZXREZWxlZ2F0ZTpuaWxdOwotCi0g
ICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKXN0YXJ0Ci17Ci0gICAgaWYgKF9pc0Vu
YWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIF9pc0VuYWJsZWQgPSBZRVM7Ci0KLSAgICBu
b3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goV0lSU2VydmljZUF2YWlsYWJsZU5vdGlmaWNhdGlvbiwg
Jl9ub3RpZnlUb2tlbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihpbnQgdG9rZW4pIHsK
LSAgICAgICAgW3NlbGYgc2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWRdOwotICAgIH0pOwotCi0g
ICAgbm90aWZ5X3Bvc3QoV0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9uKTsK
LX0KLQotLSAodm9pZClzdG9wCi17Ci0gICAgaWYgKCFfaXNFbmFibGVkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBfaXNFbmFibGVkID0gTk87Ci0KLSAgICBbX2Nvbm5lY3Rpb25Db250cm9sbGVy
IGNsb3NlQWxsQ29ubmVjdGlvbnNdOwotCi0gICAgaWYgKF94cGNDb25uZWN0aW9uKSB7Ci0gICAg
ICAgIFtfeHBjQ29ubmVjdGlvbiBjbG9zZV07Ci0gICAgICAgIF94cGNDb25uZWN0aW9uLmRlbGVn
YXRlID0gbmlsOwotICAgICAgICBbX3hwY0Nvbm5lY3Rpb24gcmVsZWFzZV07Ci0gICAgICAgIF94
cGNDb25uZWN0aW9uID0gbmlsOwotICAgIH0KLQotICAgIG5vdGlmeV9jYW5jZWwoX25vdGlmeVRv
a2VuKTsKLX0KLQotLSAoQk9PTClpc0VuYWJsZWQKLXsKLSAgICByZXR1cm4gX2lzRW5hYmxlZDsK
LX0KLQotLSAoV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKXhwY0Nvbm5lY3Rpb24KLXsKLSAgICBy
ZXR1cm4gX3hwY0Nvbm5lY3Rpb247Ci19Ci0KLS0gKHZvaWQpc2V0dXBYUENDb25uZWN0aW9uSWZO
ZWVkZWQKLXsKLSAgICBpZiAoX3hwY0Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAg
IHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiA9IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9tYWNo
X3NlcnZpY2UoV0lSWFBDTWFjaFBvcnROYW1lLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCAw
KTsKLSAgICBpZiAoY29ubmVjdGlvbikgewotICAgICAgICBfeHBjQ29ubmVjdGlvbiA9IFtbV2Vi
SW5zcGVjdG9yWFBDV3JhcHBlciBhbGxvY10gaW5pdFdpdGhDb25uZWN0aW9uOmNvbm5lY3Rpb25d
OwotICAgICAgICBfeHBjQ29ubmVjdGlvbi5kZWxlZ2F0ZSA9IHNlbGY7Ci0gICAgICAgIFtfeHBj
Q29ubmVjdGlvbiBzZW5kTWVzc2FnZTpAInN5biIgdXNlckluZm86bmlsXTsKLSAgICAgICAgeHBj
X3JlbGVhc2UoY29ubmVjdGlvbik7Ci0gICAgfQotfQotCi0tICh2b2lkKXB1c2hMaXN0aW5nCi17
Ci0gICAgaWYgKCFfaXNFbmFibGVkIHx8ICFfeHBjQ29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgW19jb25uZWN0aW9uQ29udHJvbGxlciBwdXNoTGlzdGluZ107Ci19Ci0KLS0gKEJP
T0wpaGFzQWN0aXZlRGVidWdTZXNzaW9uCi17Ci0gICAgcmV0dXJuIF9oYXNBY3RpdmVEZWJ1Z1Nl
c3Npb247Ci19Ci0KLS0gKHZvaWQpc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOihCT09MKWhhc1Nl
c3Npb24KLXsKLSAgICBpZiAoX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbiA9PSBoYXNTZXNzaW9uKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBfaGFzQWN0aXZlRGVidWdTZXNzaW9uID0gaGFzU2Vzc2lv
bjsKLQotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlm
aWNhdGlvbk5hbWU6X1dlYlZpZXdSZW1vdGVJbnNwZWN0b3JIYXNTZXNzaW9uQ2hhbmdlZE5vdGlm
aWNhdGlvbiBvYmplY3Q6bmlsXTsKLX0KLQotCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJr
IFdlYkluc3BlY3RvclhQQ1dyYXBwZXJEZWxlZ2F0ZSBJbXBsZW1lbnRhdGlvbgotCi0tICh2b2lk
KXhwY0Nvbm5lY3Rpb246KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKil4cGNDb25uZWN0aW9uIHJl
Y2VpdmVkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9u
YXJ5ICopdXNlckluZm8KLXsKLSAgICBBU1NFUlQoeHBjQ29ubmVjdGlvbiA9PSBfeHBjQ29ubmVj
dGlvbik7Ci0KLSAgICBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJQZXJtaXNz
aW9uRGVuaWVkXSkKLSAgICAgICAgW3NlbGYgc3RvcF07Ci0gICAgZWxzZQotICAgICAgICBbX2Nv
bm5lY3Rpb25Db250cm9sbGVyIHJlY2VpdmVkTWVzc2FnZTptZXNzYWdlTmFtZSB1c2VySW5mbzp1
c2VySW5mb107Ci19Ci0KLS0gKHZvaWQpeHBjQ29ubmVjdGlvbkZhaWxlZDooV2ViSW5zcGVjdG9y
WFBDV3JhcHBlciAqKWNvbm5lY3Rpb24KLXsKLSAgICBbX2Nvbm5lY3Rpb25Db250cm9sbGVyIGNs
b3NlQWxsQ29ubmVjdGlvbnNdOwotCi0gICAgaWYgKF94cGNDb25uZWN0aW9uKSB7Ci0gICAgICAg
IF94cGNDb25uZWN0aW9uLmRlbGVnYXRlID0gbmlsOwotICAgICAgICBbX3hwY0Nvbm5lY3Rpb24g
cmVsZWFzZV07Ci0gICAgICAgIF94cGNDb25uZWN0aW9uID0gbmlsOwotICAgIH0KLX0KLQotCi0j
cHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5RGVs
ZWdhdGUgaW1wbGVtZW50YXRpb24KLQotLSAodm9pZClkaWRSZWdpc3RlckNsaWVudDooV2ViSW5z
cGVjdG9yQ2xpZW50KiljbGllbnQKLXsKLSAgICAvLyBXaGVuIGEgV2ViVmlldyBpcyByZWdpc3Rl
cmVkIGl0IGhhcyBubyBjb250ZW50LiBCdXQgc29tZSBXZWJWaWV3cwotICAgIC8vIG5ldmVyIGxv
YWQgY29udGVudCBmcm9tIGEgVVJMLCBzdWNoIGFzIFVJVGV4dEZpZWxkcyBvbiBpT1MuCi0gICAg
W3NlbGYgcHVzaExpc3RpbmddOwotfQotCi0tICh2b2lkKWRpZFVucmVnaXN0ZXJDbGllbnQ6KFdl
Ykluc3BlY3RvckNsaWVudCopY2xpZW50Ci17Ci0gICAgW3NlbGYgcHVzaExpc3RpbmddOwotfQot
Ci1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVj
dG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb24ubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxYWVkODEuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNw
ZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEzNSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJX
ZWJWaWV3Q29ubmVjdGlvbi5oIgotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKLSNp
bXBvcnQgIldlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCIKLSNpbXBvcnQgIldlYkluc3Bl
Y3RvclJlbW90ZUNoYW5uZWwuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclNlcnZlci5oIgotI2lt
cG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmgiCi0j
aW1wb3J0ICJXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmgiCi0jaW1wb3J0ICJXZWJLaXRMb2dnaW5n
LmgiCi0jaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLUBpbXBsZW1lbnRhdGlvbiBXZWJJ
bnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbgotCi0tIChpZClpbml0V2l0aENvbnRyb2xs
ZXI6KFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciAqKWNvbnRy
b2xsZXIgY29ubmVjdGlvbklkZW50aWZpZXI6KE5TU3RyaW5nICopY29ubmVjdGlvbklkZW50aWZp
ZXIgZGVzdGluYXRpb246KE5TU3RyaW5nICopZGVzdGluYXRpb24gaWRlbnRpZmllcjooTlNOdW1i
ZXIgKilpZGVudGlmaWVyCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNl
bGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfY29udHJvbGxlciA9IGNvbnRyb2xsZXI7
Ci0gICAgX2Nvbm5lY3Rpb25JZGVudGlmaWVyID0gW2Nvbm5lY3Rpb25JZGVudGlmaWVyIGNvcHld
OwotICAgIF9kZXN0aW5hdGlvbiA9IFtkZXN0aW5hdGlvbiBjb3B5XTsKLSAgICBfaWRlbnRpZmll
ciA9IFtpZGVudGlmaWVyIGNvcHldOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKEJPT0wp
c2V0dXBDaGFubmVsCi17Ci0gICAgQVNTRVJUKCFfY2hhbm5lbCk7Ci0gICAgdW5zaWduZWQgcGFn
ZUlkID0gW19pZGVudGlmaWVyIHVuc2lnbmVkSW50VmFsdWVdOwotICAgIF9jaGFubmVsID0gW1dl
Ykluc3BlY3RvclJlbW90ZUNoYW5uZWwgY3JlYXRlQ2hhbm5lbEZvclBhZ2VJZDpwYWdlSWQgY29u
bmVjdGlvbjpzZWxmXTsKLSAgICByZXR1cm4gX2NoYW5uZWwgIT0gbmlsOwotfQotCi0tICh2b2lk
KWRlYWxsb2MKLXsKLSAgICBBU1NFUlQoIV9jaGFubmVsKTsKLSAgICBbX2Nvbm5lY3Rpb25JZGVu
dGlmaWVyIHJlbGVhc2VdOwotICAgIFtfZGVzdGluYXRpb24gcmVsZWFzZV07Ci0gICAgW19pZGVu
dGlmaWVyIHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAoTlNTdHJpbmcg
Kiljb25uZWN0aW9uSWRlbnRpZmllcgotewotICAgIHJldHVybiBbW19jb25uZWN0aW9uSWRlbnRp
ZmllciBjb3B5XSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKE5TTnVtYmVyICopaWRlbnRpZmllcgot
ewotICAgIHJldHVybiBbW19pZGVudGlmaWVyIGNvcHldIGF1dG9yZWxlYXNlXTsKLX0KLQotCi0j
cHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIEludGVyYWN0aW9uIHdpdGggdGhlIGNoYW5uZWwg
dG8gdGhlIGxvY2FsIGluc3BlY3RvciBiYWNrZW5kCi0KLS0gKHZvaWQpY2xlYXJDaGFubmVsCi17
Ci0gICAgX2NoYW5uZWwgPSBuaWw7Ci0gICAgW19jb250cm9sbGVyIGNvbm5lY3Rpb25DbG9zaW5n
OnNlbGZdOwotfQotCi0tICh2b2lkKXNlbmRNZXNzYWdlVG9Gcm9udGVuZDooTlNTdHJpbmcgKilt
ZXNzYWdlCi17Ci0gICAgTlNEYXRhICpkYXRhID0gW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgIE5TRGljdGlvbmFyeSAqb3V0Z29pbmcgPSBbTlNE
aWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgIGRhdGEsIFdJ
UlJhd0RhdGFLZXksCi0gICAgICAgIF9jb25uZWN0aW9uSWRlbnRpZmllciwgV0lSQ29ubmVjdGlv
bklkZW50aWZpZXJLZXksCi0gICAgICAgIF9kZXN0aW5hdGlvbiwgV0lSRGVzdGluYXRpb25LZXks
Ci0gICAgICAgIG5pbF07Ci0KLSAgICBbX2NvbnRyb2xsZXIgc2VuZE1lc3NhZ2VUb0Zyb250ZW5k
OldJUlJhd0RhdGFNZXNzYWdlIHVzZXJJbmZvOm91dGdvaW5nXTsKLX0KLQotLSAodm9pZClzZW5k
TWVzc2FnZVRvQmFja2VuZDooTlNTdHJpbmcgKiltZXNzYWdlCi17Ci0gICAgQVNTRVJUKF9jaGFu
bmVsKTsKLSAgICBMT0coUmVtb3RlSW5zcGVjdG9yLCAiV2ViSW5zcGVjdG9yU2VydmVyQ29ubmVj
dGlvbjogUmVjZWl2ZWQ6IHwlc3wiLCBTdHJpbmcobWVzc2FnZSkudXRmOCgpLmRhdGEoKSk7Ci0K
LSAgICBbX2NoYW5uZWwgc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6bWVzc2FnZV07Ci19Ci0KLQotI3By
YWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBJbnRlcmFjdGlvbiB3aXRoIHRoZSBzZXJ2ZXIgdG8g
dGhlIHJlbW90ZSBpbnNwZWN0b3IgZnJvbnRlbmQKLQotLSAodm9pZClyZWNlaXZlZERhdGE6KE5T
RGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAgICBOU0RhdGEgKmRhdGEgPSBbZGljdGlvbmFy
eSBvYmplY3RGb3JLZXk6V0lSU29ja2V0RGF0YUtleV07Ci0gICAgTlNTdHJpbmcgKm1lc3NhZ2Ug
PSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ107Ci0gICAgW3NlbGYgc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6bWVzc2FnZV07Ci0g
ICAgW21lc3NhZ2UgcmVsZWFzZV07Ci19Ci0KLS0gKHZvaWQpcmVjZWl2ZWREaWRDbG9zZTooTlNE
aWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIGlmIChfY2hhbm5lbCkgewotICAgICAgICBb
X2NoYW5uZWwgY2xvc2VGcm9tUmVtb3RlU2lkZV07Ci0gICAgICAgIFtfY2hhbm5lbCByZWxlYXNl
XTsKLSAgICAgICAgX2NoYW5uZWwgPSBuaWw7Ci0gICAgfQotfQotCi1AZW5kCi0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNw
ZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uQ29udHJvbGxlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VjMjEzNi4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDM4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotCi0jaW1wb3J0ICJXZWJJbnNw
ZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCIKLQotI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yQ2xpZW50LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5o
IgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIgotI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yU2VydmVyLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbi5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIgotI2ltcG9ydCAi
V2ViVmlldy5oIgotI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKLQotI2lmIFBMQVRGT1JNKElP
UykKLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9X
ZWJDb3JlVGhyZWFkUnVuLmg+Ci0jZW5kaWYKLQotCi1AaW1wbGVtZW50YXRpb24gV2ViSW5zcGVj
dG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyCi0KLS0gKGlkKWluaXRXaXRoU2Vy
dmVyOihXZWJJbnNwZWN0b3JTZXJ2ZXIgKilzZXJ2ZXIKLXsKLSAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9zZXJ2ZXIg
PSBzZXJ2ZXI7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0g
ICAgQVNTRVJUKCFbX29wZW5Db25uZWN0aW9ucyBjb3VudF0pOwotICAgIFtfb3BlbkNvbm5lY3Rp
b25zIHJlbGVhc2VdOwotCi0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWNsb3Nl
QWxsQ29ubmVjdGlvbnMKLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgV2ViVGhyZWFkUnVuKF57
Ci0jZW5kaWYKLQotICAgIGZvciAoTlNOdW1iZXIgKmtleSBpbiBfb3BlbkNvbm5lY3Rpb25zKSB7
Ci0gICAgICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uICpjb25uZWN0aW9u
ID0gW19vcGVuQ29ubmVjdGlvbnMgb2JqZWN0Rm9yS2V5OmtleV07Ci0gICAgICAgIFtjb25uZWN0
aW9uIHJlY2VpdmVkRGlkQ2xvc2U6bmlsXTsKLSAgICB9Ci0gICAgW19vcGVuQ29ubmVjdGlvbnMg
cmVtb3ZlQWxsT2JqZWN0c107Ci0KLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBeewotICAgICAgICBbX3NlcnZlciBzZXRIYXNBY3RpdmVEZWJ1Z1Nlc3Npb246
Tk9dOwotICAgIH0pOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIH0pOwotI2VuZGlmCi19Ci0K
LS0gKE5TRGljdGlvbmFyeSAqKV9saXN0aW5nRm9yV2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcg
cGFnZUlkOihOU051bWJlciAqKXBhZ2VJZCByZWdpc3RyeTooV2ViSW5zcGVjdG9yQ2xpZW50UmVn
aXN0cnkgKilyZWdpc3RyeQotewotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKndlYlZpZXdEZXRh
aWxzID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07Ci0KLSAgICAvLyBQYWdlIElE
LgotICAgIFt3ZWJWaWV3RGV0YWlscyBzZXRPYmplY3Q6cGFnZUlkIGZvcktleTpXSVJQYWdlSWRl
bnRpZmllcktleV07Ci0KLSAgICAvLyBVUkwuCi0gICAgTlNTdHJpbmcgKnVybCA9IFt3ZWJWaWV3
IG1haW5GcmFtZVVSTF07Ci0gICAgaWYgKCF1cmwpCi0gICAgICAgIHVybCA9IEAiYWJvdXQ6Ymxh
bmsiOwotICAgIFt3ZWJWaWV3RGV0YWlscyBzZXRPYmplY3Q6dXJsIGZvcktleTpXSVJVUkxLZXld
OwotCi0gICAgLy8gVGl0bGUuCi0gICAgTlNTdHJpbmcgKnRpdGxlID0gW3dlYlZpZXcgbWFpbkZy
YW1lVGl0bGVdOwotICAgIFt3ZWJWaWV3RGV0YWlscyBzZXRPYmplY3Q6dGl0bGUgZm9yS2V5OldJ
UlRpdGxlS2V5XTsKLQotICAgIC8vIFtPcHRpb25hbF0gQ29ubmVjdGlvbiBJZGVudGlmaWVyIChS
ZW1vdGUgRGVidWdnZXIgVVVJRCkuCi0gICAgLy8gW09wdGlvbmFsXSBIYXMgTG9jYWwgRGVidWdn
ZXIgU2Vzc2lvbi4KLSAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqY29u
bmVjdGlvbiA9IFtfb3BlbkNvbm5lY3Rpb25zIG9iamVjdEZvcktleTpwYWdlSWRdOwotICAgIGlm
IChjb25uZWN0aW9uKQotICAgICAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OmNvbm5lY3Rp
b24uY29ubmVjdGlvbklkZW50aWZpZXIgZm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5
XTsKLSAgICBlbHNlIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGll
bnQgPSBbcmVnaXN0cnkgY2xpZW50Rm9yUGFnZUlkOltwYWdlSWQgdW5zaWduZWRJbnRWYWx1ZV1d
OwotICAgICAgICBpZiAoaW5zcGVjdG9yQ2xpZW50LT5oYXNMb2NhbFNlc3Npb24oKSkKLSAgICAg
ICAgICAgIFt3ZWJWaWV3RGV0YWlscyBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29s
OllFU10gZm9yS2V5OldJUkhhc0xvY2FsRGVidWdnZXJLZXldOwotICAgIH0KLQotI2lmIFBMQVRG
T1JNKElPUykKLSAgICAvLyBbT3B0aW9uYWxdIEhvc3QgQXBwbGljYXRpb24gSUQuCi0gICAgTlNT
dHJpbmcgKmhvc3RBcHBsaWNhdGlvbklkID0gW3dlYlZpZXcgaG9zdEFwcGxpY2F0aW9uQnVuZGxl
SWRdOwotICAgIGlmIChob3N0QXBwbGljYXRpb25JZCkKLSAgICAgICAgW3dlYlZpZXdEZXRhaWxz
IHNldE9iamVjdDpob3N0QXBwbGljYXRpb25JZCBmb3JLZXk6V0lSSG9zdEFwcGxpY2F0aW9uSWRl
bnRpZmllcktleV07Ci0KLSAgICAvLyBbT3B0aW9uYWxdIEhvc3QgQXBwbGljYXRpb24gTmFtZS4K
LSAgICBOU1N0cmluZyAqaG9zdEFwcGxpY2F0aW9uTmFtZSA9IFt3ZWJWaWV3IGhvc3RBcHBsaWNh
dGlvbk5hbWVdOwotICAgIGlmIChob3N0QXBwbGljYXRpb25OYW1lKQotICAgICAgICBbd2ViVmll
d0RldGFpbHMgc2V0T2JqZWN0Omhvc3RBcHBsaWNhdGlvbk5hbWUgZm9yS2V5OldJUkhvc3RBcHBs
aWNhdGlvbk5hbWVLZXldOwotI2VuZGlmCi0KLSAgICAvLyBbT3B0aW9uYWxdIFJlbW90ZSBJbnNw
ZWN0b3IgV2ViVmlldyBVc2VyIEluZm8gRGljdGlvbmFyeS4KLSAgICBOU0RpY3Rpb25hcnkgKnJl
bW90ZUluc3BlY3RvclVzZXJJbmZvID0gW3dlYlZpZXcgcmVtb3RlSW5zcGVjdG9yVXNlckluZm9d
OwotICAgIGlmIChyZW1vdGVJbnNwZWN0b3JVc2VySW5mbykKLSAgICAgICAgW3dlYlZpZXdEZXRh
aWxzIHNldE9iamVjdDpyZW1vdGVJbnNwZWN0b3JVc2VySW5mbyBmb3JLZXk6V0lSVXNlckluZm9L
ZXldOwotCi0gICAgcmV0dXJuIHdlYlZpZXdEZXRhaWxzOwotfQotCi0tICh2b2lkKV9wdXNoTGlz
dGluZzooTlNTdHJpbmcgKilvcHRpb25hbENvbm5lY3Rpb25JZGVudGlmaWVyCi17Ci0jaWYgUExB
VEZPUk0oSU9TKQotICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0jZW5kaWYKLQot
ICAgIF9oYXNTY2hlZHVsZWRQdXNoID0gTk87Ci0KLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpy
ZXNwb25zZSA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgV2ViSW5z
cGVjdG9yQ2xpZW50UmVnaXN0cnkgKndlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ID0gW1dlYklu
c3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XTsKLSAgICBOU0RpY3Rpb25hcnkg
KnJlZ2lzdGVyZWRWaWV3cyA9IFt3ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBpbnNwZWN0YWJs
ZVdlYlZpZXdzXTsKLSAgICBmb3IgKE5TTnVtYmVyICpwYWdlSWQgaW4gcmVnaXN0ZXJlZFZpZXdz
KSB7Ci0gICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbcmVnaXN0ZXJlZFZpZXdzIG9iamVjdEZv
cktleTpwYWdlSWRdOwotICAgICAgICBOU0RpY3Rpb25hcnkgKndlYlZpZXdEZXRhaWxzID0gW3Nl
bGYgX2xpc3RpbmdGb3JXZWJWaWV3OndlYlZpZXcgcGFnZUlkOnBhZ2VJZCByZWdpc3RyeTp3ZWJJ
bnNwZWN0b3JDbGllbnRSZWdpc3RyeV07Ci0gICAgICAgIFtyZXNwb25zZSBzZXRPYmplY3Q6d2Vi
Vmlld0RldGFpbHMgZm9yS2V5OltwYWdlSWQgc3RyaW5nVmFsdWVdXTsKLSAgICB9Ci0KLSAgICBO
U011dGFibGVEaWN0aW9uYXJ5ICpvdXRnb2luZyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxv
Y10gaW5pdF07Ci0gICAgW291dGdvaW5nIHNldE9iamVjdDpyZXNwb25zZSBmb3JLZXk6V0lSTGlz
dGluZ0tleV07Ci0gICAgaWYgKG9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAg
IFtvdXRnb2luZyBzZXRPYmplY3Q6b3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllciBmb3JLZXk6
V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOwotCi0gICAgW3NlbGYgc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kOldJUkxpc3RpbmdNZXNzYWdlIHVzZXJJbmZvOm91dGdvaW5nXTsKLQotICAgIFtvdXRn
b2luZyByZWxlYXNlXTsKLSAgICBbcmVzcG9uc2UgcmVsZWFzZV07Ci19Ci0KLS0gKHZvaWQpcHVz
aExpc3Rpbmc6KE5TU3RyaW5nICopb3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcgotewotI2lm
IFBMQVRGT1JNKElPUykKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotI2VuZGlm
Ci0KLSAgICBpZiAoX2hhc1NjaGVkdWxlZFB1c2gpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChvcHRpb25hbENvbm5lY3Rpb25JZGVudGlmaWVyKSB7Ci0gICAgICAgIFtzZWxmIF9wdXNoTGlz
dGluZzpvcHRpb25hbENvbm5lY3Rpb25JZGVudGlmaWVyXTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1l
KERJU1BBVENIX1RJTUVfTk9XLCAwLjIgKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9nZXRfZ2xv
YmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeewotICAgICAg
ICBXZWJUaHJlYWRSdW4oXnsKLSAgICAgICAgICAgIFtzZWxmIF9wdXNoTGlzdGluZzpuaWxdOwot
ICAgICAgICB9KTsKLSAgICB9KTsKLSNlbHNlCi0gICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBz
ZWxlY3RvcihfcHVzaExpc3Rpbmc6KSB3aXRoT2JqZWN0Om5pbCBhZnRlckRlbGF5OjAuMl07Ci0j
ZW5kaWYKLQotICAgIF9oYXNTY2hlZHVsZWRQdXNoID0gWUVTOwotfQotCi0tICh2b2lkKXB1c2hM
aXN0aW5nCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFdlYlRocmVhZFJ1biheewotI2VuZGlm
Ci0KLSAgICBbc2VsZiBwdXNoTGlzdGluZzpuaWxdOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAg
IH0pOwotI2VuZGlmCi19Ci0KLS0gKHZvaWQpX3JlY2VpdmVkU2V0dXA6KE5TRGljdGlvbmFyeSAq
KWRpY3Rpb25hcnkKLXsKLSAgICBOU051bWJlciAqcGFnZUlkID0gW2RpY3Rpb25hcnkgb2JqZWN0
Rm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsKLSAgICBpZiAoIXBhZ2VJZCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyID0gW2RpY3Rpb25h
cnkgb2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKLSAgICBpZiAoIWNv
bm5lY3Rpb25JZGVudGlmaWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU1N0cmluZyAqc2Vu
ZGVyID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldJUlNlbmRlcktleV07Ci0gICAgaWYgKCFz
ZW5kZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghX29wZW5Db25uZWN0aW9ucykKLSAg
ICAgICAgX29wZW5Db25uZWN0aW9ucyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF07Ci0KLSAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqY29ubmVjdGlv
biA9IFtbV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gYWxsb2NdIGluaXRXaXRo
Q29udHJvbGxlcjpzZWxmIGNvbm5lY3Rpb25JZGVudGlmaWVyOmNvbm5lY3Rpb25JZGVudGlmaWVy
IGRlc3RpbmF0aW9uOnNlbmRlciBpZGVudGlmaWVyOnBhZ2VJZF07Ci0gICAgaWYgKFtjb25uZWN0
aW9uIHNldHVwQ2hhbm5lbF0pCi0gICAgICAgIFtfb3BlbkNvbm5lY3Rpb25zIHNldE9iamVjdDpj
b25uZWN0aW9uIGZvcktleTpwYWdlSWRdOwotICAgIFtjb25uZWN0aW9uIHJlbGVhc2VdOwotCi0g
ICAgaWYgKFtfb3BlbkNvbm5lY3Rpb25zIGNvdW50XSA9PSAxKSB7Ci0gICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgICAgICBbX3NlcnZl
ciBzZXRIYXNBY3RpdmVEZWJ1Z1Nlc3Npb246WUVTXTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0g
ICAgW3NlbGYgcHVzaExpc3RpbmddOwotfQotCi0tICh2b2lkKV9yZWNlaXZlZERhdGE6KE5TRGlj
dGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAgICBOU051bWJlciAqcGFnZUlkID0gW2RpY3Rpb25h
cnkgb2JqZWN0Rm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsKLSAgICBpZiAoIXBhZ2VJZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24gKmNvbm5lY3Rpb24gPSBbX29wZW5Db25uZWN0aW9ucyBvYmplY3RGb3JLZXk6cGFnZUlkXTsK
LSAgICBBU1NFUlQoIWNvbm5lY3Rpb24gfHwgW2Nvbm5lY3Rpb24gaXNLaW5kT2ZDbGFzczpbV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gY2xhc3NdXSk7Ci0gICAgaWYgKCFjb25u
ZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbY29ubmVjdGlvbiByZWNlaXZlZERhdGE6
ZGljdGlvbmFyeV07Ci19Ci0KLS0gKHZvaWQpX3JlY2VpdmVkRGlkQ2xvc2U6KE5TRGljdGlvbmFy
eSAqKWRpY3Rpb25hcnkKLXsKLSAgICBOU051bWJlciAqcGFnZUlkID0gW2RpY3Rpb25hcnkgb2Jq
ZWN0Rm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsKLSAgICBpZiAoIXBhZ2VJZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyID0gW2RpY3Rp
b25hcnkgb2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKLSAgICBpZiAo
IWNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJJbnNwZWN0
b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqY29ubmVjdGlvbiA9IFtfb3BlbkNvbm5lY3Rpb25z
IG9iamVjdEZvcktleTpwYWdlSWRdOwotICAgIEFTU0VSVCghY29ubmVjdGlvbiB8fCBbY29ubmVj
dGlvbiBpc0tpbmRPZkNsYXNzOltXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiBj
bGFzc11dKTsKLSAgICBpZiAoIWNvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
ICghW2Nvbm5lY3Rpb25JZGVudGlmaWVyIGlzRXF1YWxUb1N0cmluZzpjb25uZWN0aW9uLmNvbm5l
Y3Rpb25JZGVudGlmaWVyXSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW2Nvbm5lY3Rpb24gcmVj
ZWl2ZWREaWRDbG9zZTpkaWN0aW9uYXJ5XTsKLSAgICBbX29wZW5Db25uZWN0aW9ucyByZW1vdmVP
YmplY3RGb3JLZXk6cGFnZUlkXTsKLQotICAgIGlmICghW19vcGVuQ29ubmVjdGlvbnMgY291bnRd
KSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57
Ci0gICAgICAgICAgICBbX3NlcnZlciBzZXRIYXNBY3RpdmVEZWJ1Z1Nlc3Npb246Tk9dOwotICAg
ICAgICB9KTsKLSAgICB9Ci0KLSAgICBbc2VsZiBwdXNoTGlzdGluZ107Ci19Ci0KLS0gKHZvaWQp
X3JlY2VpdmVkR2V0TGlzdGluZzooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIFtz
ZWxmIHB1c2hMaXN0aW5nOltkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRl
bnRpZmllcktleV1dOwotfQotCi0tICh2b2lkKV9yZWNlaXZlZEluZGljYXRlOihOU0RpY3Rpb25h
cnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0aW9uYXJ5IG9i
amVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFwYWdlSWQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbW1tXZWJJbnNwZWN0b3JDbGll
bnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gaW5zcGVjdGFibGVXZWJWaWV3c10gb2JqZWN0Rm9y
S2V5OnBhZ2VJZF07Ci0gICAgaWYgKCF3ZWJWaWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICBC
T09MIGluZGljYXRlRW5hYmxlZCA9IFtbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSSW5kaWNh
dGVFbmFibGVkS2V5XSBib29sVmFsdWVdOwotICAgIFt3ZWJWaWV3IHNldEluZGljYXRpbmdGb3JS
ZW1vdGVJbnNwZWN0b3I6aW5kaWNhdGVFbmFibGVkXTsKLX0KLQotLSAodm9pZClfcmVjZWl2ZWRD
b25uZWN0aW9uRGllZDooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIE5TU3RyaW5n
ICpjb25uZWN0aW9uSWRlbnRpZmllciA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25u
ZWN0aW9uSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgTlNEaWN0aW9uYXJ5ICpjb25uZWN0aW9uc0NvcHkgPSBbW19v
cGVuQ29ubmVjdGlvbnMgY29weV0gYXV0b3JlbGVhc2VdOwotICAgIGZvciAoTlNOdW1iZXIgKmtl
eSBpbiBjb25uZWN0aW9uc0NvcHkpIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24gPSBbY29ubmVjdGlvbnNDb3B5IG9iamVjdEZvcktleTpr
ZXldOwotICAgICAgICBpZiAoW2Nvbm5lY3Rpb24uY29ubmVjdGlvbklkZW50aWZpZXIgaXNFcXVh
bFRvU3RyaW5nOmNvbm5lY3Rpb25JZGVudGlmaWVyXSkgewotICAgICAgICAgICAgW2Nvbm5lY3Rp
b24gcmVjZWl2ZWREaWRDbG9zZTpuaWxdOwotICAgICAgICAgICAgW19vcGVuQ29ubmVjdGlvbnMg
cmVtb3ZlT2JqZWN0Rm9yS2V5OmtleV07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIVtf
b3BlbkNvbm5lY3Rpb25zIGNvdW50XSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZl
RGVidWdTZXNzaW9uOk5PXTsKLSAgICAgICAgfSk7Ci0gICAgfQotfQotCi0tICh2b2lkKXJlY2Vp
dmVkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5
ICopdXNlckluZm8KLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgV2ViVGhyZWFkUnVuKF57Ci0j
ZW5kaWYKLQotICAgIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlNvY2tldFNl
dHVwTWVzc2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZFNldHVwOnVzZXJJbmZvXTsKLSAg
ICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlNvY2tldERhdGFNZXNz
YWdlXSkKLSAgICAgICAgW3NlbGYgX3JlY2VpdmVkRGF0YTp1c2VySW5mb107Ci0gICAgZWxzZSBp
ZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJXZWJQYWdlQ2xvc2VNZXNzYWdlXSkK
LSAgICAgICAgW3NlbGYgX3JlY2VpdmVkRGlkQ2xvc2U6dXNlckluZm9dOwotICAgIGVsc2UgaWYg
KFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSQXBwbGljYXRpb25HZXRMaXN0aW5nTWVz
c2FnZV0pCi0gICAgICAgIFtzZWxmIF9yZWNlaXZlZEdldExpc3Rpbmc6dXNlckluZm9dOwotICAg
IGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSSW5kaWNhdGVNZXNzYWdl
XSkKLSAgICAgICAgW3NlbGYgX3JlY2VpdmVkSW5kaWNhdGU6dXNlckluZm9dOwotICAgIGVsc2Ug
aWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSQ29ubmVjdGlvbkRpZWRNZXNzYWdl
XSkKLSAgICAgICAgW3NlbGYgX3JlY2VpdmVkQ29ubmVjdGlvbkRpZWQ6dXNlckluZm9dOwotICAg
IGVsc2UKLSAgICAgICAgTlNMb2coQCJVbnJlY29nbml6ZWQgTWVzc2FnZTogJUAiLCBtZXNzYWdl
TmFtZSk7Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgfSk7Ci0jZW5kaWYKLX0KLQotCi0jcHJh
Z21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uIGludGVyZmFjZQotCi0tICh2b2lkKWNvbm5lY3Rpb25DbG9zaW5nOihXZWJJbnNwZWN0b3JT
ZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KLXsKLSNpZiBQTEFURk9STShJT1Mp
Ci0gICAgV2ViVGhyZWFkUnVuKF57Ci0jZW5kaWYKLQotICAgIFtfb3BlbkNvbm5lY3Rpb25zIHJl
bW92ZU9iamVjdEZvcktleTpbY29ubmVjdGlvbiBpZGVudGlmaWVyXV07Ci0KLSAgICBpZiAoIVtf
b3BlbkNvbm5lY3Rpb25zIGNvdW50XSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZl
RGVidWdTZXNzaW9uOk5PXTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oSU9T
KQotICAgIH0pOwotI2VuZGlmCi19Ci0KLQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBU
aHJlYWQgU2FmZSBzZW5kIG1lc3NhZ2UgdG8gZnJvbnRlbmQKLQotLSAodm9pZClzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGljdGlvbmFy
eSAqKXVzZXJJbmZvCi17Ci0gICAgLy8gVGhpcyBtYXkgYmUgY2FsbGVkIGZyb20gZWl0aGVyIHRo
ZSBXZWJUaHJlYWQgb3IgdGhlIE1haW5UaHJlYWQuIFRoaXMKLSAgICAvLyByZXF1aXJlcyBhY2Nl
c3MgdG8gdGhlIFdlYkluc3BlY3RvclNlcnZlcidzIFhQQyBDb25uZWN0aW9uLCB3aGljaAotICAg
IC8vIGlzIG1hbmFnZWQgb24gdGhlIG1haW4gdGhyZWFkLiBTbywgZGlzcGF0Y2ggdG8gdGhlIG1h
aW4gdGhyZWFkIHRvCi0gICAgLy8gc2FmZWx5IHVzZSB0aGUgeHBjIGNvbm5lY3Rpb24uCi0gICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgW1tf
c2VydmVyIHhwY0Nvbm5lY3Rpb25dIHNlbmRNZXNzYWdlOm1lc3NhZ2VOYW1lIHVzZXJJbmZvOnVz
ZXJJbmZvXTsKLSAgICB9KTsKLX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JYUENX
cmFwcGVyLm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmYjFlMDIuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JY
UENXcmFwcGVyLm0KKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIgotCi0jaW1wb3J0IDx3
dGYvQXNzZXJ0aW9ucy5oPgotCi0jaWYgX19oYXNfaW5jbHVkZSg8Q29yZUZvdW5kYXRpb24vQ0ZY
UENCcmlkZ2UuaD4pCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZYUENCcmlkZ2UuaD4KLSNl
bHNlCi1leHRlcm4geHBjX29iamVjdF90IF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VXaXRoQ0ZPYmpl
Y3QoQ0ZUeXBlUmVmKTsKLWV4dGVybiBDRlR5cGVSZWYgX0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9t
WFBDTWVzc2FnZSh4cGNfb2JqZWN0X3QpOwotI2VuZGlmCi0KLS8vIENvbnN0YW50cyBwcml2YXRl
IHRvIHRoaXMgZmlsZSBmb3IgbWVzc2FnZSBzZXJpYWxpemF0aW9uIG9uIGJvdGggZW5kcy4KLSNk
ZWZpbmUgV2ViSW5zcGVjdG9yWFBDV3JhcHBlck1lc3NhZ2VOYW1lS2V5IEAibWVzc2FnZU5hbWUi
Ci0jZGVmaW5lIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJVc2VySW5mb0tleSBAInVzZXJJbmZvIgot
I2RlZmluZSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyU2VyaWFsaXplZE1lc3NhZ2VLZXkgIm1zZ0Rh
dGEiCi0KLUBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAoKQotLSAodm9pZClfaGFu
ZGxlRXZlbnQ6KHhwY19vYmplY3RfdClvYmplY3Q7Ci1AZW5kCi0KLQotQGltcGxlbWVudGF0aW9u
IFdlYkluc3BlY3RvclhQQ1dyYXBwZXIKLQotQGR5bmFtaWMgYXZhaWxhYmxlOwotCi1Ac3ludGhl
c2l6ZSBkZWxlZ2F0ZSA9IF9kZWxlZ2F0ZTsKLUBzeW50aGVzaXplIGNvbm5lY3Rpb24gPSBfY29u
bmVjdGlvbjsKLUBzeW50aGVzaXplIHRhZyA9IF90YWc7Ci0KLS0gKFdlYkluc3BlY3RvclhQQ1dy
YXBwZXIgKilpbml0V2l0aENvbm5lY3Rpb246KHhwY19jb25uZWN0aW9uX3QpY29ubmVjdGlvbgot
ewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1
cm4gbmlsOwotCi0gICAgX2Nvbm5lY3Rpb24gPSB4cGNfcmV0YWluKGNvbm5lY3Rpb24pOwotICAg
IHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVldWUoX2Nvbm5lY3Rpb24sIGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCkpOwotICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKF9j
b25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsgW3NlbGYgX2hhbmRsZUV2ZW50Om9i
amVjdF07IH0pOwotICAgIHhwY19jb25uZWN0aW9uX3Jlc3VtZShfY29ubmVjdGlvbik7Ci0KLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZCljbG9zZQotewotICAgIGlmIChfY29ubmVjdGlv
bikgewotICAgICAgICB4cGNfY29ubmVjdGlvbl9jYW5jZWwoX2Nvbm5lY3Rpb24pOwotICAgICAg
ICB4cGNfcmVsZWFzZShfY29ubmVjdGlvbik7Ci0gICAgICAgIF9jb25uZWN0aW9uID0gTlVMTDsK
LSAgICB9Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtzZWxmIGNsb3NlXTsKLSAgICBb
X3RhZyByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKE5TRGljdGlvbmFy
eSAqKV9kZXNlcmlhbGl6ZU1lc3NhZ2U6KHhwY19vYmplY3RfdClvYmplY3QKLXsKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKHhwY19nZXRfdHlwZShvYmplY3QpID09IFhQQ19UWVBFX0RJQ1RJT05B
UlksICJHb3QgdW5leHBlY3RlZCBvYmplY3QgZnJvbSBhbiB4cGMgY29ubmVjdGlvbiIpOwotICAg
IGlmICh4cGNfZ2V0X3R5cGUob2JqZWN0KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgeHBjX29iamVjdF90IHhwY0RpY3Rpb25hcnkgPSB4cGNfZGlj
dGlvbmFyeV9nZXRfdmFsdWUob2JqZWN0LCBXZWJJbnNwZWN0b3JYUENXcmFwcGVyU2VyaWFsaXpl
ZE1lc3NhZ2VLZXkpOwotICAgIGlmICgheHBjRGljdGlvbmFyeSB8fCB4cGNfZ2V0X3R5cGUoeHBj
RGljdGlvbmFyeSkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkgewotICAgICAgICAvLyBUaGlzIGlz
bid0IGEgbWVzc2FnZSB0eXBlIHRoYXQgd2Uga25vdyBob3cgdG8gZGVzZXJpYWxpemUsIHNvIHdl
IGxldCBvdXIgZGVsZWdhdGUgd29ycnkgYWJvdXQgaXQuCi0gICAgICAgIGlmIChbX2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoeHBjQ29ubmVjdGlvbjp1bmhhbmRsZWRNZXNz
YWdlOildKQotICAgICAgICAgICAgW19kZWxlZ2F0ZSB4cGNDb25uZWN0aW9uOnNlbGYgdW5oYW5k
bGVkTWVzc2FnZTpvYmplY3RdOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIE5T
RGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3Nh
Z2UoeHBjRGljdGlvbmFyeSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkaWN0aW9uYXJ5LCAi
VW5hYmxlIHRvIGRlc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7Ci0gICAgaWYgKCFkaWN0aW9uYXJ5
KQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIFtkaWN0aW9uYXJ5IGF1dG9yZWxl
YXNlXTsKLX0KLQotLSAodm9pZClfaGFuZGxlRXZlbnQ6KHhwY19vYmplY3RfdClvYmplY3QKLXsK
LSAgICBpZiAoIV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoeHBjX2dl
dF90eXBlKG9iamVjdCkgPT0gWFBDX1RZUEVfRVJST1IpIHsKLSAgICAgICAgW19kZWxlZ2F0ZSB4
cGNDb25uZWN0aW9uRmFpbGVkOnNlbGZdOwotICAgICAgICBbc2VsZiBjbG9zZV07Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIV9kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgTlNEaWN0aW9uYXJ5ICpkYXRhRGljdGlvbmFyeSA9IFtzZWxmIF9kZXNlcmlhbGl6ZU1l
c3NhZ2U6b2JqZWN0XTsKLSAgICBpZiAoIWRhdGFEaWN0aW9uYXJ5KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBOU1N0cmluZyAqbWVzc2FnZSA9IFtkYXRhRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
V2ViSW5zcGVjdG9yWFBDV3JhcHBlck1lc3NhZ2VOYW1lS2V5XTsKLSAgICBOU0RpY3Rpb25hcnkg
KnVzZXJJbmZvID0gW2RhdGFEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXZWJJbnNwZWN0b3JYUENX
cmFwcGVyVXNlckluZm9LZXldOwotICAgIFtfZGVsZWdhdGUgeHBjQ29ubmVjdGlvbjpzZWxmIHJl
Y2VpdmVkTWVzc2FnZTptZXNzYWdlIHVzZXJJbmZvOnVzZXJJbmZvXTsKLX0KLQotLSAodm9pZClz
ZW5kTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5
ICopdXNlckluZm8KLXsKLSAgICBpZiAoIV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25h
cnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bWVzc2FnZU5hbWUgZm9yS2V5OldlYkluc3BlY3RvclhQ
Q1dyYXBwZXJNZXNzYWdlTmFtZUtleV07Ci0gICAgaWYgKHVzZXJJbmZvKQotICAgICAgICBbZGlj
dGlvbmFyeSBzZXRPYmplY3Q6dXNlckluZm8gZm9yS2V5OldlYkluc3BlY3RvclhQQ1dyYXBwZXJV
c2VySW5mb0tleV07Ci0KLSAgICB4cGNfb2JqZWN0X3QgeHBjRGljdGlvbmFyeSA9IF9DRlhQQ0Ny
ZWF0ZVhQQ01lc3NhZ2VXaXRoQ0ZPYmplY3QoKENGRGljdGlvbmFyeVJlZilkaWN0aW9uYXJ5KTsK
LSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHhwY0RpY3Rpb25hcnkgJiYgeHBjX2dldF90eXBlKHhw
Y0RpY3Rpb25hcnkpID09IFhQQ19UWVBFX0RJQ1RJT05BUlksICJVbmFibGUgdG8gc2VyaWFsaXpl
IHhwYyBtZXNzYWdlIik7Ci0gICAgaWYgKCF4cGNEaWN0aW9uYXJ5KQotICAgICAgICByZXR1cm47
Ci0KLSAgICB4cGNfb2JqZWN0X3QgbXNnID0geHBjX2RpY3Rpb25hcnlfY3JlYXRlKE5VTEwsIE5V
TEwsIDApOwotICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtc2csIFdlYkluc3BlY3RvclhQ
Q1dyYXBwZXJTZXJpYWxpemVkTWVzc2FnZUtleSwgeHBjRGljdGlvbmFyeSk7Ci0gICAgeHBjX3Jl
bGVhc2UoeHBjRGljdGlvbmFyeSk7Ci0KLSAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Uo
X2Nvbm5lY3Rpb24sIG1zZyk7Ci0KLSAgICB4cGNfcmVsZWFzZShtc2cpOwotfQotCi0tIChCT09M
KWF2YWlsYWJsZQotewotICAgIHJldHVybiBfY29ubmVjdGlvbiAhPSBOVUxMOwotfQotCi1AZW5k
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0LmV4cCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYktpdC5leHAKaW5kZXggZjNmZDJmNC4uNTZmODE2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0LmV4cAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJLaXQuZXhwCkBAIC0yMiw3ICsyMiw2IEBACiAub2JqY19jbGFzc19uYW1lX1dlYkhpc3Rv
cnlJdGVtCiAub2JqY19jbGFzc19uYW1lX1dlYkljb25EYXRhYmFzZQogLm9iamNfY2xhc3NfbmFt
ZV9XZWJJbnNwZWN0b3IKLS5vYmpjX2NsYXNzX25hbWVfV2ViSW5zcGVjdG9yWFBDV3JhcHBlcgog
Lm9iamNfY2xhc3NfbmFtZV9XZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwKIC5vYmpjX2NsYXNz
X25hbWVfV2ViS2V5R2VuZXJhdG9yCiAub2JqY19jbGFzc19uYW1lX1dlYktpdFN0YXRpc3RpY3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBmNWQzODM1Li4xODVhZGU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yMTIsNyArMjEyLDYgQEAKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0jaW1wb3J0ICJXZWJJbnNwZWN0
b3JTZXJ2ZXIuaCIKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJXZWJJbmRpY2F0ZUxheWVy
LmgiCiAjZW5kaWYKQEAgLTM5MSwxMCArMzkwLDYgQEAgc3RhdGljIFdlYkNhY2hlTW9kZWwgc19j
YWNoZU1vZGVsID0gV2ViQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOwogc3RhdGljIGNvbnN0IGNo
YXIgd2ViVmlld0lzT3BlbltdID0gIkF0IGxlYXN0IG9uZSBXZWJWaWV3IGlzIHN0aWxsIG9wZW4u
IjsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi1zdGF0aWMgQk9PTCBh
dXRvU3RhcnRSZW1vdGVJbnNwZWN0b3IgPSBZRVM7Ci0jZW5kaWYKLQogQGludGVyZmFjZSBOU09i
amVjdCAoV2ViVmFsaWRhdGVXaXRob3V0RGVsZWdhdGUpCiAtIChCT09MKXZhbGlkYXRlVXNlcklu
dGVyZmFjZUl0ZW1XaXRob3V0RGVsZWdhdGU6KGlkIDxOU1ZhbGlkYXRlZFVzZXJJbnRlcmZhY2VJ
dGVtPilpdGVtOwogQGVuZApAQCAtNTI1LDYgKzUyMCw3IEBAIE5TU3RyaW5nICpfV2ViVmlld0Rp
ZFN0YXJ0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ05vdGlmaWNhdGlvbiA9IEAiX1dlYlZpZXdEaWRT
dGFyCiBOU1N0cmluZyAqIGNvbnN0IFdlYlZpZXdXaWxsQ2xvc2VOb3RpZmljYXRpb24gPSBAIldl
YlZpZXdXaWxsQ2xvc2VOb3RpZmljYXRpb24iOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCisvLyBGSVhNRTogTGVnYWN5LCByZW1vdmUgdGhpcywgc3dpdGNoIHRvIHNvbWV0aGluZyBm
cm9tIEphdmFTY3JpcHRDb3JlIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyLgogTlNT
dHJpbmcgKl9XZWJWaWV3UmVtb3RlSW5zcGVjdG9ySGFzU2Vzc2lvbkNoYW5nZWROb3RpZmljYXRp
b24gPSBAIl9XZWJWaWV3UmVtb3RlSW5zcGVjdG9ySGFzU2Vzc2lvbkNoYW5nZWROb3RpZmljYXRp
b24iOwogI2VuZGlmCiAKQEAgLTc2NiwxMSArNzYyLDYgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNl
TGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpCiAgICAgICAgIAogICAgICAg
ICBTZXR0aW5nczo6c2V0U2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJz
KHNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycygpKTsKIAotI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICAgICBpZiAoYXV0b1N0YXJ0UmVtb3RlSW5zcGVj
dG9yKQotICAgICAgICAgICAgW1dlYlZpZXcgX2VuYWJsZVJlbW90ZUluc3BlY3Rvcl07Ci0jZW5k
aWYKLQogICAgICAgICBkaWRPbmVUaW1lSW5pdGlhbGl6YXRpb24gPSB0cnVlOwogICAgIH0KIApA
QCAtNzk4LDYgKzc4OSwxMCBAQCBzdGF0aWMgYm9vbCBzaG91bGRVc2VMZWdhY3lCYWNrZ3JvdW5k
U2l6ZVNob3J0aGFuZEJlaGF2aW9yKCkKICAgICBXZWJDb3JlOjpwcm92aWRlVXNlck1lZGlhVG8o
X3ByaXZhdGUtPnBhZ2UsIG5ldyBXZWJVc2VyTWVkaWFDbGllbnQoc2VsZikpOwogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0UmVt
b3RlSW5zcGVjdGlvbkFsbG93ZWQodHJ1ZSk7CisjZW5kaWYKKwogICAgIF9wcml2YXRlLT5wYWdl
LT5zZXRDYW5TdGFydE1lZGlhKFtzZWxmIHdpbmRvd10pOwogICAgIF9wcml2YXRlLT5wYWdlLT5z
ZXR0aW5ncygpLnNldExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aChbW3NlbGYgcHJlZmVyZW5jZXNd
IF9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhdKTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGlu
Z3MoKS5zZXRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKHNob3VsZFVz
ZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IoKSk7CkBAIC0xMjY3LDYwICsx
MjYyLDQyIEBAIHN0YXRpYyBib29sIGZhc3REb2N1bWVudFRlYXJkb3duRW5hYmxlZCgpCiB9CiAK
ICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSsgKFdlYkluc3BlY3RvclNlcnZlciAqKXNo
YXJlZFdlYkluc3BlY3RvclNlcnZlcgotewotICAgIHN0YXRpYyBXZWJJbnNwZWN0b3JTZXJ2ZXIg
KnNoYXJlZFNlcnZlciA9IFtbV2ViSW5zcGVjdG9yU2VydmVyIGFsbG9jXSBpbml0XTsKLSAgICBy
ZXR1cm4gc2hhcmVkU2VydmVyOwotfQotCiArICh2b2lkKV9lbmFibGVSZW1vdGVJbnNwZWN0b3IK
IHsKLSAgICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBzdGFydF07CisgICAg
Ly8gRklYTUU6IE1vdmUgdGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNl
cnZlciBpbnRlcmZhY2Ugb3IgcmVtb3ZlIGl0LgogfQogCiArICh2b2lkKV9kaXNhYmxlUmVtb3Rl
SW5zcGVjdG9yCiB7Ci0gICAgW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gc3Rv
cF07CisgICAgLy8gRklYTUU6IE1vdmUgdGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUlu
c3BlY3RvclNlcnZlciBpbnRlcmZhY2Ugb3IgcmVtb3ZlIGl0LgogfQogCiArICh2b2lkKV9kaXNh
YmxlQXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yCiB7Ci0gICAgYXV0b1N0YXJ0UmVtb3RlSW5zcGVj
dG9yID0gTk87CisgICAgLy8gRklYTUU6IE1vdmUgdGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvclNlcnZlciBpbnRlcmZhY2Ugb3IgcmVtb3ZlIGl0LgogfQogCiArIChCT09M
KV9pc1JlbW90ZUluc3BlY3RvckVuYWJsZWQKIHsKLSAgICByZXR1cm4gW1tXZWJWaWV3IHNoYXJl
ZFdlYkluc3BlY3RvclNlcnZlcl0gaXNFbmFibGVkXTsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlz
IHRvIGEgbmV3IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyIGludGVyZmFjZSBvciBy
ZW1vdmUgaXQuCisgICAgcmV0dXJuIE5POwogfQogCiArIChCT09MKV9oYXNSZW1vdGVJbnNwZWN0
b3JTZXNzaW9uCiB7Ci0gICAgcmV0dXJuIFtbV2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2
ZXJdIGhhc0FjdGl2ZURlYnVnU2Vzc2lvbl07Ci19Ci0KLS0gKEJPT0wpY2FuQmVSZW1vdGVseUlu
c3BlY3RlZAotewotI2lmICFQTEFURk9STShJT1MpCi0gICAgaWYgKCFbW3NlbGYgcHJlZmVyZW5j
ZXNdIGRldmVsb3BlckV4dHJhc0VuYWJsZWRdKQotICAgICAgICByZXR1cm4gTk87Ci0jZW5kaWYK
LQotICAgIHJldHVybiBbc2VsZiBhbGxvd3NSZW1vdGVJbnNwZWN0aW9uXTsKKyAgICAvLyBGSVhN
RTogTW92ZSB0aGlzIHRvIGEgbmV3IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyIGlu
dGVyZmFjZSBvciByZW1vdmUgaXQuCisgICAgcmV0dXJuIE5POwogfQogCiAtIChCT09MKWFsbG93
c1JlbW90ZUluc3BlY3Rpb24KIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmFsbG93c1JlbW90ZUlu
c3BlY3Rpb247CisgICAgLy8gRklYTUU6IE1vdmUgdGhpcyB0byBhIG5ldyBBUEkuCisgICAgcmV0
dXJuIE5POwogfQogCiAtICh2b2lkKXNldEFsbG93c1JlbW90ZUluc3BlY3Rpb246KEJPT0wpYWxs
b3cKIHsKLSAgICBpZiAoX3ByaXZhdGUtPmFsbG93c1JlbW90ZUluc3BlY3Rpb24gPT0gYWxsb3cp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIF9wcml2YXRlLT5hbGxvd3NSZW1vdGVJbnNwZWN0aW9u
ID0gYWxsb3c7Ci0KLSAgICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBwdXNo
TGlzdGluZ107CisgICAgLy8gRklYTUU6IE1vdmUgdGhpcyB0byBhIG5ldyBBUEkuCiB9CiAKIC0g
KHZvaWQpc2V0SW5kaWNhdGluZ0ZvclJlbW90ZUluc3BlY3RvcjooQk9PTCllbmFibGVkCkBAIC0x
MzQwLDI5ICsxMzE3LDE1IEBAIHN0YXRpYyBib29sIGZhc3REb2N1bWVudFRlYXJkb3duRW5hYmxl
ZCgpCiAgICAgICAgIF9wcml2YXRlLT5pbmRpY2F0ZUxheWVyID0gbmlsOwogICAgIH0KICNlbHNl
Ci0gICAgLy8gRklYTUU6IE5lZWRzIGltcGxlbWVudGF0aW9uLgorICAgIC8vIEZJWE1FOiBOZWVk
cyBpbXBsZW1lbnRhdGlvbiBvciBwdXQgYW4gaW1wbGVtZW50YXRpb24gaW4gV2ViQ29yZTo6SW5z
cGVjdG9yT3ZlcmxheS4KICNlbmRpZgogfQogCi0tICh2b2lkKXNldFJlbW90ZUluc3BlY3RvclVz
ZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbwotewotICAgIGlmIChbX3ByaXZhdGUtPnJl
bW90ZUluc3BlY3RvclVzZXJJbmZvIGlzRXF1YWxUb0RpY3Rpb25hcnk6dXNlckluZm9dKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBbX3ByaXZhdGUtPnJlbW90ZUluc3BlY3RvclVzZXJJbmZvIHJl
bGVhc2VdOwotICAgIF9wcml2YXRlLT5yZW1vdGVJbnNwZWN0b3JVc2VySW5mbyA9IFt1c2VySW5m
byBjb3B5XTsKLQotICAgIFtbV2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIHB1c2hM
aXN0aW5nXTsKLX0KLQotLSAoTlNEaWN0aW9uYXJ5ICopcmVtb3RlSW5zcGVjdG9yVXNlckluZm8K
LXsKLSAgICByZXR1cm4gX3ByaXZhdGUtPnJlbW90ZUluc3BlY3RvclVzZXJJbmZvOwotfQotCiAj
aWYgUExBVEZPUk0oSU9TKQogLSAodm9pZClzZXRIb3N0QXBwbGljYXRpb25CdW5kbGVJZDooTlNT
dHJpbmcgKilidW5kbGVJZCBuYW1lOihOU1N0cmluZyAqKW5hbWUKIHsKKyAgICAvLyBGSVhNRTog
VGhpcyBoYXMgbm90IHlldCBiZWVuIHBvcnRlZCB0byBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
clNlcnZlci4KKwogICAgIGlmICghW19wcml2YXRlLT5ob3N0QXBwbGljYXRpb25CdW5kbGVJZCBp
c0VxdWFsVG9TdHJpbmc6YnVuZGxlSWRdKSB7CiAgICAgICAgIFtfcHJpdmF0ZS0+aG9zdEFwcGxp
Y2F0aW9uQnVuZGxlSWQgcmVsZWFzZV07CiAgICAgICAgIF9wcml2YXRlLT5ob3N0QXBwbGljYXRp
b25CdW5kbGVJZCA9IFtidW5kbGVJZCBjb3B5XTsKQEAgLTIxMTgsOSArMjA4MSw2IEBAIHN0YXRp
YyBpbmxpbmUgSU1QIGdldE1ldGhvZChpZCBvLCBTRUwgcykKICAgICBpZiAoZnJhbWUgPT0gW3Nl
bGYgbWFpbkZyYW1lXSkKICAgICAgICAgW3NlbGYgX2RpZENoYW5nZVZhbHVlRm9yS2V5OiBfV2Vi
TWFpbkZyYW1lVVJMS2V5XTsKICAgICBbTlNBcHAgc2V0V2luZG93c05lZWRVcGRhdGU6WUVTXTsK
LSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5z
cGVjdG9yU2VydmVyXSBwdXNoTGlzdGluZ107Ci0jZW5kaWYKIH0KIAogLSAodm9pZClfZGlkRmlu
aXNoTG9hZEZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLmgKaW5kZXggMjQ1NDE1OC4uNGMyNjcyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAtMjA4LDggKzIwOCw2IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIEJPT0wgYWxsb3dzUmVtb3Rl
SW5zcGVjdGlvbjsKLSAgICBOU0RpY3Rpb25hcnkgKnJlbW90ZUluc3BlY3RvclVzZXJJbmZvOwog
I2lmIFBMQVRGT1JNKElPUykKICAgICBXZWJJbmRpY2F0ZUxheWVyICppbmRpY2F0ZUxheWVyOwog
ICAgIE5TU3RyaW5nICpob3N0QXBwbGljYXRpb25CdW5kbGVJZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdEYXRhLm1tCmluZGV4IDAzNDNhOWMuLmViMGJjYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQpAQCAtOTksMTAgKzk5LDYgQEAgV2ViVmll
d0xheWVyRmx1c2hTY2hlZHVsZXI6OldlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyKExheWVyRmx1
c2hDb250cm9sbGVyKiBmbHUKICAgICBkYXNoYm9hcmRCZWhhdmlvckFsbG93V2hlZWxTY3JvbGxp
bmcgPSBZRVM7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIGFs
bG93c1JlbW90ZUluc3BlY3Rpb24gPSBZRVM7Ci0jZW5kaWYKLQogICAgIHNob3VsZENsb3NlV2l0
aFdpbmRvdyA9IG9iamNfY29sbGVjdGluZ0VuYWJsZWQoKTsKIAogICAgIHBsdWdpbkRhdGFiYXNl
Q2xpZW50Q291bnQrKzsKQEAgLTEzNSw3ICsxMzEsNiBAQCBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVk
dWxlcjo6V2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXIoTGF5ZXJGbHVzaENvbnRyb2xsZXIqIGZs
dQogICAgIFttZWRpYVN0eWxlIHJlbGVhc2VdOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi0gICAgW3JlbW90ZUluc3BlY3RvclVzZXJJbmZvIHJlbGVhc2VdOwogI2lmIFBMQVRGT1JN
KElPUykKICAgICBbaW5kaWNhdGVMYXllciByZWxlYXNlXTsKICAgICBbaG9zdEFwcGxpY2F0aW9u
QnVuZGxlSWQgcmVsZWFzZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50
ZXJuYWwuaAppbmRleCAyNmM4OTg2Li5jZDU0ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0ludGVybmFsLmgKQEAgLTYxLDkgKzYxLDYgQEAgc3RydWN0IERpY3RhdGlv
bkFsdGVybmF0aXZlOwogQGNsYXNzIFdlYkJhc2VQbHVnaW5QYWNrYWdlOwogQGNsYXNzIFdlYkRv
d25sb2FkOwogQGNsYXNzIFdlYk5vZGVIaWdobGlnaHQ7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCi1AY2xhc3MgV2ViSW5zcGVjdG9yU2VydmVyOwotI2VuZGlmCiAKICNpZmRlZiBfX2Nw
bHVzcGx1cwogCkBAIC0yMTcsMTAgKzIxNCw2IEBAIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRp
dmVzOwogLSAodm9pZClfZnVsbFNjcmVlblJlbmRlcmVyQ2hhbmdlZDooV2ViQ29yZTo6UmVuZGVy
Qm94KilyZW5kZXJlcjsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0r
IChXZWJJbnNwZWN0b3JTZXJ2ZXIgKilzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXI7Ci0jZW5kaWYK
LQogLy8gQ29udmVyc2lvbiBmdW5jdGlvbnMgYmV0d2VlbiBXZWJDb3JlIHJvb3QgdmlldyBjb29y
ZGluYXRlcyBhbmQgd2ViIHZpZXcgY29vcmRpbmF0ZXMuCiAtIChOU1BvaW50KV9jb252ZXJ0UG9p
bnRGcm9tUm9vdFZpZXc6KE5TUG9pbnQpcG9pbnQ7CiAtIChOU1JlY3QpX2NvbnZlcnRSZWN0RnJv
bVJvb3RWaWV3OihOU1JlY3QpcmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d1ByaXZhdGUuaAppbmRleCAyZGRmZGVkLi41MDFmOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBAIC03Nyw2ICs3Nyw3IEBAIGV4dGVybiBOU1N0cmlu
ZyAqV2ViRWxlbWVudElzSW5TY3JvbGxCYXJLZXk7CiBleHRlcm4gTlNTdHJpbmcgKl9XZWJWaWV3
RGlkU3RhcnRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTm90aWZpY2F0aW9uOwogCiAjaWYgRU5BQkxF
X1JFTU9URV9JTlNQRUNUT1IKKy8vIEZJWE1FOiBMZWdhY3ksIHJlbW92ZSB0aGlzLCBzd2l0Y2gg
dG8gc29tZXRoaW5nIGZyb20gSmF2YVNjcmlwdENvcmUgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JTZXJ2ZXIuCiAvLyBOb3RpZmljYXRpb24gd2hlbiB0aGUgbnVtYmVyIG9mIGluc3BlY3RvciBz
ZXNzaW9ucyBiZWNvbWVzIG5vbi16ZXJvIG9yIHJldHVybnMgdG8gMC4KIC8vIENoZWNrIHRoZSBj
dXJyZW50IHN0YXRlIHZpYSAtW1dlYlZpZXcgX2hhc1JlbW90ZUluc3BlY3RvclNlc3Npb25dLgog
ZXh0ZXJuIE5TU3RyaW5nICpfV2ViVmlld1JlbW90ZUluc3BlY3Rvckhhc1Nlc3Npb25DaGFuZ2Vk
Tm90aWZpY2F0aW9uOwpAQCAtMjYzLDE1ICsyNjQsNiBAQCB0eXBlZGVmIGVudW0gewogKyAoQk9P
TClfaGFzUmVtb3RlSW5zcGVjdG9yU2Vzc2lvbjsKIAogLyohCi0gICAgQG1ldGhvZCBjYW5CZVJl
bW90ZWx5SW5zcGVjdGVkCi0gICAgQHJlc3VsdCBMb29rcyBhdCBhbGwgdGhlIGZhY3RvcnMgb2Yg
dGhpcyBXZWJWaWV3IGFuZCByZXR1cm5zIHdoZXRoZXIgb3Igbm90Ci0gICAgdGhpcyBXZWJWaWV3
IHNob3VsZCBhbGxvdyBhIFJlbW90ZSBXZWIgSW5zcGVjdG9yIHRvIGF0dGFjaCB0byBpdC4gVGhp
cyB0YWtlcwotICAgIGludG8gYWNjb3VudCAtYWxsb3dzUmVtb3RlSW5zcGVjdGlvbiwgUHJpdmF0
ZSBCcm93c2luZywgYW5kIHBvdGVudGlhbGx5IG90aGVyCi0gICAgZmFjdG9ycy4KLSovCi0tIChC
T09MKWNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQ7Ci0KLS8qIQogICAgIEBtZXRob2QgYWxsb3dzUmVt
b3RlSW5zcGVjdGlvbgogICAgIEByZXN1bHQgUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGlzIFdl
YlZpZXcgd2lsbCBhbGxvdyBhIFJlbW90ZSBXZWIgSW5zcGVjdG9yCiAgICAgdG8gYXR0YWNoIHRv
IGl0LgpAQCAtMjkyLDIxICsyODQsNiBAQCB0eXBlZGVmIGVudW0gewogICAgIEBhYnN0cmFjdCBp
bmRpY2F0ZSB0aGlzIFdlYlZpZXcgb24gc2NyZWVuIGZvciBhIHJlbW90ZSBpbnNwZWN0b3IuCiAq
LwogLSAodm9pZClzZXRJbmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOihCT09MKWVuYWJsZWQ7
Ci0KLS8qCi0gICAgQG1ldGhvZCBzZXRSZW1vdGVJbnNwZWN0b3JVc2VySW5mbwotICAgIEBwYXJh
bSB0YWcgVGhlIGRpY3Rpb25hcnkgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBXZWJWaWV3Lgot
ICAgIEBhYnN0cmFjdCBEZXZlbG9wZXIgc3BlY2lmaWVkIGRpY3Rpb25hcnkgZm9yIHRoZSBXZWJW
aWV3IHRoYXQgd2lsbCBiZQotICAgIHNlbnQgdG8gdGhlIFJlbW90ZSBEZWJ1Z2dlci4gVGhlIGRp
Y3Rpb25hcnkgbXVzdCBjb250YWluIHByb3BlcnR5Ci0gICAgbGlzdCBzZXJpYWxpemFibGUgdmFs
dWVzLgotKi8KLS0gKHZvaWQpc2V0UmVtb3RlSW5zcGVjdG9yVXNlckluZm86KE5TRGljdGlvbmFy
eSAqKXVzZXJJbmZvOwotCi0vKiEKLSAgICBAbWV0aG9kIHJlbW90ZUluc3BlY3RvclVzZXJJbmZv
Ci0gICAgQHJlc3VsdCBSZXR1cm5zIHRoZSBkaWN0aW9uYXJ5IGFzc29jaWF0ZWQgd2l0aCB0aGlz
IFdlYlZpZXcuCi0qLwotLSAoTlNEaWN0aW9uYXJ5ICopcmVtb3RlSW5zcGVjdG9yVXNlckluZm87
CiAjZW5kaWYKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNjY3ZjNlYi4uZDhjOTJhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1v
dGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2Ny
aXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKwogMjAxMy0xMS0yNSAgcGVh
dm9Ab3V0bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNvbT4KIAogICAgICAgICBbV2luXSBXZWJL
aXQgdmVyc2lvbiBpbiB1c2VyIGFnZW50IHN0cmluZyBpcyBpbmNvcnJlY3QuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmlu
ZGV4IGU1ZGNiN2EuLjE5MGUwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0zMSw3ICszMSw3IEBACiAKICNp
bmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ2xp
ZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRv
d01lc3NhZ2VMaXN0ZW5lci5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VM
b2cKaW5kZXggZDQ1NGMyMy4uYTNkYWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5j
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMy0xMi0wMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dp
bmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYxMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50V2luQ0UuaDoKKwogMjAxMy0xMS0wNCAgWmh1YW5nIFpoaWdhbmcgIDx6aHVh
bmd6Z0Bjbi5mdWppdHN1LmNvbT4KIAogICAgICAgICBDaGFuZ2Ugc3RydWN0dXJlIG9mIGZyYW1l
IHRyZWUgaW4gV0lOQ0UgcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2Vi
Q29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2luQ0UuaCBiL1NvdXJjZS9XZWJLaXQvd2luY2Uv
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2luQ0UuaAppbmRleCAyYWYyNmM4Li5lZGRj
ZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudFdpbkNFLmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRXaW5DRS5oCkBAIC0yNiw3ICsyNiw3IEBACiAjZGVmaW5lIEluc3Bl
Y3RvckNsaWVudFdpbkNFX2gKIAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgotI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZvcndh
cmRpbmcuaCIKIAogY2xhc3MgV2ViVmlldzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDEyMTJjN2UuLjI3MjZh
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0xMi0wMyAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2gg
UmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2
YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9j
ZXNzLnNiLmluOgorICAgICAgICBBbGxvdyB0aGUgV2ViUHJvY2VzcyB0byBhY2Nlc3MgdGhlICJj
b20uYXBwbGUud2ViaW5zcGVjdG9yIiBuYW1lZAorICAgICAgICBYUEMgc2VydmljZSB0byBleHBv
c2UgaXRzIFdlYkNvcmU6OlBhZ2UncyB0byByZW1vdGUgZGVidWdnZXJzLgorCiAyMDEzLTEyLTAz
ICBMYXN6bG8gVmlkYWNzICA8bGFjQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBGaXggRUZM
IGJ1aWxkIGVycm9yIGluIFdLMiAoMTU5OTY1KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDI5ZjFlYTMuLmIxNjY4Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM0NSw2ICszNDUs
MTAgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgV2ViQ29yZTo6cHJvdmlkZURldmljZVBy
b3hpbWl0eVRvKG1fcGFnZS5nZXQoKSwgbmV3IFdlYkRldmljZVByb3hpbWl0eUNsaWVudCh0aGlz
KSk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIG1fcGFnZS0+
c2V0UmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQodHJ1ZSk7CisjZW5kaWYKKwogICAgIG1fcGFnZS0+
c2V0Q2FuU3RhcnRNZWRpYShmYWxzZSk7CiAgICAgbV9tYXlTdGFydE1lZGlhV2hlbkluV2luZG93
ID0gcGFyYW1ldGVycy5tYXlTdGFydE1lZGlhV2hlbkluV2luZG93OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgppbmRleCA5
MGJiMGU2Li5jNDcyYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Nv
bS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Y29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KQEAgLTEzOSw2ICsxMzksMTAgQEAKIAogI2VuZGlm
CiAKKzs7IFJlbW90ZSBXZWIgSW5zcGVjdG9yCisoYWxsb3cgbWFjaC1sb29rdXAKKyAgICAgICAo
Z2xvYmFsLW5hbWUgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiKSkKKwogOzsgVmFyaW91cyBzZXJ2
aWNlcyByZXF1aXJlZCBieSBBcHBLaXQgYW5kIG90aGVyIGZyYW1ld29ya3MKIChhbGxvdyBtYWNo
LWxvb2t1cAogICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLkRpc2tBcmJpdHJhdGlvbi5k
aXNrYXJiaXRyYXRpb25kIikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218324</attachid>
            <date>2013-12-03 12:14:59 -0800</date>
            <delta_ts>2013-12-03 13:00:32 -0800</delta_ts>
            <desc>[PATCH] Combined For Bots 7</desc>
            <filename>for-bots-7.patch</filename>
            <type>text/plain</type>
            <size>216764</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5oCmluZGV4IDEyNjdiN2EuLmY5ZDdjZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaApAQCAtMTY0LDYgKzE2NCwxMiBA
QCBPQkpDX1ZJU0lCTEUKICovCiBAcHJvcGVydHkocmVhZG9ubHksIHJldGFpbikgSlNWaXJ0dWFs
TWFjaGluZSAqdmlydHVhbE1hY2hpbmU7CiAKKy8qIQorQHByb3BlcnR5CitAZGlzY3Vzc2lvbiBO
YW1lIG9mIHRoZSBKU0NvbnRleHQuIEV4cG9zZWQgd2hlbiByZW1vdGUgZGVidWdnaW5nIHRoZSBj
b250ZXh0LgorKi8KK0Bwcm9wZXJ0eShjb3B5KSBOU1N0cmluZyAqbmFtZTsKKwogQGVuZAogCiAv
KiEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggYmM4ZmMxYS4uNDdk
Y2IwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTE2Niw2ICsx
NjYsMjIgQEAKICAgICByZXR1cm4gbV92aXJ0dWFsTWFjaGluZTsKIH0KIAorLSAoTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTR2xvYmFsQ29udGV4dENvcHlOYW1l
KG1fY29udGV4dCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
cmV0dXJuIFsoTlNTdHJpbmcgKilKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBuYW1lKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZUpTID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZT
dHJpbmcoKENGU3RyaW5nUmVmKVtuYW1lIGNvcHldKTsKKyAgICBKU0dsb2JhbENvbnRleHRTZXRO
YW1lKG1fY29udGV4dCwgbmFtZUpTKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UobmFtZUpTKTsKK30K
KwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gSlNDb250ZXh0KFN1YnNjcmlwdFN1cHBvcnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggZjBhNDM1Yy4u
ODFiNjFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApA
QCAtMjEzLDYgKzIxMywzNyBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFs
Q29udGV4dChKU0NvbnRleHRSZWYgY3R4KQogICAgIHJldHVybiB0b0dsb2JhbFJlZihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSk7CiB9CiAKK0pTU3RyaW5nUmVmIEpT
R2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCit7CisgICAgaWYg
KCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBBUElFbnRy
eVNoaW0gZW50cnlTaGltKGV4ZWMpOworCisgICAgU3RyaW5nIG5hbWUgPSBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCktPm5hbWUoKTsKKyAgICBpZiAobmFtZS5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKS5sZWFr
UmVmKCk7Cit9CisKK3ZvaWQgSlNHbG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRS
ZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7
CisKKyAgICBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnNldE5hbWUobmFtZSA/IG5hbWUt
PnN0cmluZygpIDogU3RyaW5nKCkpOworfQorCisKIGNsYXNzIEJhY2t0cmFjZUZ1bmN0b3Igewog
cHVibGljOgogICAgIEJhY2t0cmFjZUZ1bmN0b3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5z
aWduZWQgcmVtYWluaW5nQ2FwYWNpdHlGb3JGcmFtZUNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuaAppbmRleCA3NzA1OTU1Li5lYWI3YTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgKQEAgLTEzMyw2ICsxMzMsMjQgQEAgSlNf
RVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBj
dHgpIEFWQUlMQUJMRV9JTl9XRUIKICovCiBKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpT
Q29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEw
XzcsIDRfMCk7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyBhIGNvcHkgb2YgdGhl
IG5hbWUgb2YgYSBjb250ZXh0LgorQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHdob3Nl
IG5hbWUgeW91IHdhbnQgdG8gZ2V0LgorQHJlc3VsdCBUaGUgbmFtZSBmb3IgY3R4LgorQGRpc2N1
c3Npb24gQSBKU0dsb2JhbENvbnRleHQncyBuYW1lIGlzIGV4cG9zZWQgZm9yIHJlbW90ZSBkZWJ1
Z2dpbmcgdG8gbWFrZSBpdAorZWFzaWVyIHRvIGlkZW50aWZ5IHRoZSBjb250ZXh0IHlvdSB3b3Vs
ZCBsaWtlIHRvIGF0dGFjaCB0by4KKyovCitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNHbG9iYWxD
b250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCk7CisKKy8qIQorQGZ1bmN0aW9u
CitAYWJzdHJhY3QgU2V0cyB0aGUgcmVtb3RlIGRlYnVnZ2luZyBuYW1lIGZvciBhIGNvbnRleHQu
CitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBuYW1lLgor
QHBhcmFtIG5hbWUgVGhlIHJlbW90ZSBkZWJ1Z2dpbmcgbmFtZSB0byBzZXQgb24gY3R4LgorKi8K
K0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldE5hbWUoSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgbmFtZSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWIyY2RmZS4uNDQ5ZmFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEsNiArMTEsNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vZnRsIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaGVhcCIKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5z
cGVjdG9yIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGlu
dCIKQEAgLTU4Myw2ICs1ODQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFE
RVJTX0RJUkVDVE9SSUVTCiAgICAgY29sbGVjdG9yL2hhbmRsZXMKICAgICBkZWJ1Z2dlcgogICAg
IGhlYXAKKyAgICBpbnNwZWN0b3IKICAgICBpbnRlcnByZXRlcgogICAgIGppdAogICAgIGxsaW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiMDc1N2IzLi5hZTMzYTk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNjkgQEAKKzIwMTMtMTItMDMgIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNo
IFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEph
dmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAg
ICAgICAgTW92ZSB0aGUgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpIHJlbW90ZSBkZWJ1Z2dlciBj
b25uZWN0aW9uIG1hbmFnZW1lbnQKKyAgICAgICAgaW50byBKYXZhU2NyaXB0Q29yZSAob3JpZ2lu
YWxseSBmcm9tIFdlYktpdC9tYWMpLiBJbmNsdWRlIGVuaGFuY2VtZW50czoKKworICAgICAgICAg
ICogYWxsb3cgZm9yIGRpZmZlcmVudCB0eXBlcyBvZiByZW1vdGUgZGVidWdnYWJsZSB0YXJnZXRz
LAorICAgICAgICAgICAgZXZlbnR1YWxseSBhdCBsZWFzdCBhIEpTQ29udGV4dCwgV2ViVmlldywg
V0tWaWV3LgorICAgICAgICAgICogYWxsb3cgZGVidWdnYWJsZXMgdG8gYmUgcmVnaXN0ZXJlZCBh
bmQgZGVidWdnZWQgb24gYW55IHRocmVhZC4gVW5saWtlCisgICAgICAgICAgICBXZWJWaWV3cywg
SlNDb250ZXh0cyBtYXkgYmUgcnVuIGVudGlyZWx5IG9mZiBvZiB0aGUgbWFpbiB0aHJlYWQuCisg
ICAgICAgICAgKiBtb3ZlIHRoZSByZW1vdGUgY29ubmVjdGlvbiAoWFBDIGNvbm5lY3Rpb24pIGl0
c2VsZiBvZmYgb2YgdGhlIG1haW4gdGhyZWFkLAorICAgICAgICAgICAgaXQgZG9lc24ndCBuZWVk
IHRvIGJlIG9uIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICBNYWtlIEpTQ29udGV4dCBAY2xh
c3MgYW5kIEphdmFTY3JpcHRDb3JlOjpKU0NvbnRleHRSZWYKKyAgICAgICAgIkphdmFTY3JpcHQi
IFJlbW90ZSBEZWJ1Z2dhYmxlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZS5oOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6On5SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6aW5pdCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGU6OnVwZGF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGU6OnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjppbmZvKToKKyAgICAgICAgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZSBkZWZpbmVzIGEgZGVidWdnYWJsZSB0YXJnZXQuIEFzIGxvbmcgYXMKKyAg
ICAgICAgc29tZXRoaW5nIGNyZWF0ZXMgYSBkZWJ1Z2dhYmxlIGFuZCBpcyBzZXQgdG8gYWxsb3cg
cmVtb3RlIGluc3BlY3Rpb24KKyAgICAgICAgaXQgd2lsbCBiZSBsaXN0ZWQgaW4gcmVtb3RlIGRl
YnVnZ2Vycy4gRm9yIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2YKKyAgICAgICAgZGVidWdnYWJsZXMg
KEphdmFTY3JpcHQgYW5kIFdlYikgdGhlcmUgaXMgZGlmZmVyZW50IGJhc2ljIGluZm9ybWF0aW9u
CisgICAgICAgIHRoYXQgbWF5IGJlIGxpc3RlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaDogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbDo6fkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCk6CisgICAgICAg
IFRoZSBvbmx5IHRoaW5nIGEgZGVidWdnYWJsZSBuZWVkcyBmb3IgcmVtb3RlIGRlYnVnZ2luZyBp
cyBhbgorICAgICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgYSB3YXkgdG8gc2VuZCBtZXNz
YWdlcyB0byBhIHJlbW90ZSBmcm9udGVuZC4KKyAgICAgICAgVGhpcyBjbGFzcyBwcm92aWRlcyB0
aGF0IG1ldGhvZCwgYW5kIGlzIHZlbmRlZCB0byB0aGUKKyAgICAgICAgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZSB3aGVuIGEgcmVtb3RlIGNvbm5lY3Rpb24gaXMgc2V0dXAuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbTogQWRkZWQuCisgICAgICAgIFNpbmds
ZXRvbiwgY3JlYXRlZCBhdCBsZWFzdCB3aGVuIHRoZSBmaXJzdCBEZWJ1Z2dhYmxlIGlzIGNyZWF0
ZWQuCisgICAgICAgIFRoaXMgY2xhc3MgbWFuYWdlcyB0aGUgbGlzdCBvZiBkZWJ1Z2dhYmxlcywg
YW55IGNvbm5lY3Rpb24gdG8gYQorICAgICAgICByZW1vdGUgZGVidWdnZXIgcHJveHkgKFhQQyBz
ZXJ2aWNlICJjb20uYXBwbGUud2ViaW5zcGVjdG9yIikuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6
ZGlzcGF0Y2hBc3luY09uUXVldWVTYWZlRm9yQW55RGVidWdnYWJsZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3IpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6Om5leHRBdmFpbGFibGVJZGVudGlmaWVyKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpyZWdpc3RlckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVucmVnaXN0ZXJEZWJ1Z2dhYmxlKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVEZWJ1Z2dhYmxlKToKKyAgICAgICAgRGVi
dWdnYWJsZSBtYW5hZ2VtZW50LiBXaGVuIGRlYnVnZ2FibGVzIGFyZSBhZGRlZCwgcmVtb3ZlZCwg
b3IgdXBkYXRlZAorICAgICAgICB3ZSBzdGFzaCBhIGNvcHkgb2YgdGhlIGRlYnVnZ2FibGUgaW5m
b3JtYXRpb24gYW5kIHB1c2ggYW4gdXBkYXRlIHRvCisgICAgICAgIGRlYnVnZ2Vycy4gU3Rhc2hp
bmcgYSBjb3B5IG9mIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgUmVtb3RlSW5zcGVjdG9yCisgICAg
ICAgIGlzIGEgdGhyZWFkIHNhZmUgd2F5IHRvIGF2b2lkIHdhbGtpbmcgb3ZlciBhbGwgZGVidWdn
YWJsZXMgdG8gZ2F0aGVyCisgICAgICAgIHRoZSBpbmZvcm1hdGlvbiB3aGVuIGl0IGlzIG5lZWRl
ZC4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzdG9wKToKKyAgICAgICAgUnVudGltZSBB
UEkgdG8gZW5hYmxlIC8gZGlzYWJsZSB0aGUgZmVhdHVyZS4KKworICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3I6Omxpc3RpbmdGb3JEZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ05vdyk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdTb29uKToKKyAgICAgICAgUHVzaGluZyBh
IGxpc3RpbmcgdG8gcmVtb3RlIGRlYnVnZ2Vycy4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1l
c3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rp
b25GYWlsZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5l
Y3Rpb25VbmhhbmRsZWRNZXNzYWdlKToKKyAgICAgICAgWFBDIHNldHVwLCBzZW5kLCBhbmQgcmVj
ZWl2ZSBoYW5kbGluZy4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVw
ZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbik6CisgICAgICAgIEFwcGxpY2F0aW9ucyBiZWluZyBk
ZWJ1Z2dlZCBtYXkgd2FudCB0byBrbm93IHdoZW4gYSBkZWJ1ZworICAgICAgICBzZXNzaW9uIGlz
IGFjdGl2ZS4gVGhpcyBwcm92aWRlcyB0aGF0IG5vdGlmaWNhdGlvbi4KKworICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERhdGFNZXNzYWdlKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERpZENsb3NlTWVzc2FnZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRHZXRMaXN0aW5n
TWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRJ
bmRpY2F0ZU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJl
Y2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKToKKyAgICAgICAgRGlzcGF0Y2hpbmcgaW5jb21p
bmcgcmVtb3RlIGRlYnVnZ2luZyBwcm90b2NvbCBtZXNzYWdlcy4KKyAgICAgICAgVGhlc2UgYXJl
IHdyYXBwaW5nIGFib3ZlIHRoZSBpbnNwZWN0b3IgcHJvdG9jb2wgbWVzc2FnZXMuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oOiBBZGRlZC4K
KyAgICAgICAgUHJvdG9jb2wgbWVzc2FnZXMgYW5kIGRpY3Rpb25hcnkga2V5cyBpbnNpZGUgdGhl
IG1lc3NhZ2VzLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVJbmZvOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyk6CisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgVGhpcyBpcyBhIGNvbm5lY3Rpb24gYmV0d2VlbiB0
aGUgUmVtb3RlSW5zcGVjdG9yIHNpbmdsZXRvbiBhbmQgYSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbik6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjp+UmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24pOgorICAgICAgICBBbGxvdyBmb3IgZGlzcGF0Y2hp
bmcgbWVzc2FnZXMgb24gSmF2YVNjcmlwdCBkZWJ1Z2dhYmxlcyBvbiBhIGRpc3BhdGNoX3F1ZXVl
CisgICAgICAgIGluc3RlYWQgb2YgdGhlIG1haW4gcXVldWUuCisKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRlc3RpbmF0aW9uKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmNv
bm5lY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgTmVlZGVkIGluIHRoZSByZW1vdGUgZGVidWdn
aW5nIHByb3RvY29sIHRvIGlkZW50aWZ5IHRoZSByZW1vdGUgZGVidWdnZXIuCisKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNo
U3luY09uRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uOjpkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNldHVwKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246
OmNsb3NlRnJvbURlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y2xvc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaXMgYSB0aGlu
IGNoYW5uZWwgYmV0d2VlbiB0aGUgdHdvIHNpZGVzIHRoYXQgY2FuIGJlIGNsb3NlZAorICAgICAg
ICBmcm9tIGVpdGhlciBzaWRlLCBzbyB0aGVyZSBpcyBzb21lIGxvZ2ljIGFyb3VuZCBtdWx0aS10
aHJlYWRlZCBhY2Nlc3MuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb246OkNsaWVudDo6fkNsaWVudCk6CisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOiBBZGRlZC4KKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6UmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb246On5SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2UpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1lc3Nh
Z2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpo
YW5kbGVFdmVudCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgVGhpcyBpcyBhIGNvbm5lY3Rpb24gYmV0d2Vl
biB0aGUgUmVtb3RlSW5zcGVjdG9yIHNpbmdsZXRvbiBhbmQgYW4gWFBDIHNlcnZpY2UKKyAgICAg
ICAgbmFtZWQgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiLiBUaGlzIGhhbmRsZXMgc2VyaWFsaXph
dGlvbiBvZiB0aGUgZGljdGlvbmFyeQorICAgICAgICBtZXNzYWdlcyB0byBhbmQgZnJvbSB0aGUg
c2VydmljZS4gVGhlIHJlY2VpdmluZyBpcyBkb25lIG9uIGEgbm9uLW1haW4gcXVldWUuCisKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAg
ICAgICAgKC1bSlNDb250ZXh0IG5hbWVdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IHNldE5hbWU6
XSk6CisgICAgICAgIE9iakMgQVBJIHRvIGVuYWJsZS9kaXNhYmxlIEpTQ29udGV4dCByZW1vdGUg
aW5zcGVjdGlvbiBhbmQgZ2l2ZSBhIG5hbWUuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVm
Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0dsb2JhbENv
bnRleHRHZXROYW1lKToKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dFNldE5hbWUpOgorICAgICAg
ICBDIEFQSSB0byBnaXZlIGEgSlNDb250ZXh0IGEgbmFtZS4KKworICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c2V0TmFt
ZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bmFtZSk6CisgICAgICAgIFNoYXJlZCBoYW5kbGluZyBvZiB0aGUgQVBJ
cyBhYm92ZS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6SlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlOjpuYW1lKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpjb25u
ZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNjb25uZWN0
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNwYXRjaE1lc3Nh
Z2VGcm9tUmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmg6IEFkZGVkLgorICAgICAgICBTdHViIGZvciB0aGUgYWN0dWFsIHJlbW90ZSBk
ZWJ1Z2dpbmcgaW1wbGVtZW50YXRpb24uIFdlIHdpbGwgcHVzaAorICAgICAgICBkb3duIHRoZSBh
cHByb3ByaWF0ZSBXZWJDb3JlL2luc3BlY3RvciBwZWljZXMgc3VpdGFibGUgZm9yIGRlYnVnZ2lu
ZworICAgICAgICBqdXN0IGEgSmF2YVNjcmlwdCBjb250ZXh0LgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgVXBkYXRlIGJ1aWxkIGZpbGVzLgorCiAyMDEzLTEy
LTAzICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIHRl
c3RhcGkgdGVzdCBjcmFzaGVzIG9uIFdpbmRvd3MgaW4gV1RGOjpWZWN0b3I8d2NoYXJfdCw2NCxX
VEY6OlVuc2FmZVZlY3Rvck92ZXJmbG93Pjo6c2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUuYW0KaW5kZXggNDJhYTY0My4uMDg1ZmNhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtNTksNiArNTksNyBAQCBqYXZhc2NyaXB0Y29yZV9jcHBmbGFncyArPSBc
CiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlciBcCiAJLUkk
KHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bCBcCiAJLUkkKHNyY2RpcikvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMTFiZDA5NS4uMTg1MTU3NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTYxMCw2ICs2MTAsNyBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNv
ZGUvdXRmX29sZC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdXR5cGVz
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91dmVyc2lvbi5oIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggYzM2YTg3OS4uM2VmNDI4MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC05OTQsNiArOTk0LDcgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vha1NldC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0SW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxBYnN0cmFjdFBDLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWNoZWRDYWxsLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWxsRnJhbWUuaCIgLz4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4MDEz
MmYyLi5iMzQ3YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzCkBAIC0yNSw2ICsyNSw5IEBACiAgICAgPEZpbHRlciBJbmNsdWRlPSJoZWFw
Ij4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntiZDQ5ZTVjZi05NWQ2LTQxNTEtYjI4Ni04ODM3
Y2NkMzQ3ZmF9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIg
SW5jbHVkZT0iaW5zcGVjdG9yIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswOWFlMDlkYS0x
MjM5LTAwZWEtOGRmZS05MDg3YWUxMjNiYmV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmls
dGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iaW50ZXJwcmV0ZXIiPgogICAgICAgPFVuaXF1ZUlk
ZW50aWZpZXI+ezEwZDk3ZWEzLTJhZjktNDg5Yy1hNTRlLWQ2OWVmMmU0Y2EwYX08L1VuaXF1ZUlk
ZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0xNzAwLDYgKzE3MDMsOSBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0LmgiPgogICAgICAgPEZp
bHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiPgorICAgICAgPEZp
bHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFic3RyYWN0UEMuaCI+CiAgICAgICA8RmlsdGVyPmlu
dGVycHJldGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDY2NTg1NWYuLmU4M2ZmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04ODYsNiArODg2LDE4IEBACiAJCUExNzEyQjQxMTFDN0IyMzUwMDdBNTMxNSAvKiBS
ZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3
MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0MxNTZFRUQzQjAwNTY2Q0IyIC8qIE1hY3JvQXNzZW1i
bGVyQVJNNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5MjNCMTU2RUVEM0Iw
MDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKKwkJQTU5NDU1OTIxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTk0NTU5MDE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKKwkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU5NDU1OTExODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZS5oICovOyB9OworCQlBNTk0NTU5NTE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTExODIzNDBCMzAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNw
ZWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tICovOyB9OworCQlB
NUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMzE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVCQTE1RUIxODIzNDBCNDAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNDE4MjM0MEIzMDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCAqLzsgfTsKKwkJQTVC
QTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVC
QTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uLm1tICovOyB9OworCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24uaCAqLzsgfTsKKwkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNUJBMTVFNzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5tbSAqLzsgfTsKKwkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1QkExNUVGMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTcwMDg3MzkxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzM3MTdD
QkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCUE3MDA4NzNBMTdD
QkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENv
bnN0cnVjdG9yLmggKi87IH07CiAJCUE3MDA4NzNEMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi87IH07CkBAIC0y
MTk2LDYgKzIyMDgsMTggQEAKIAkJQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENh
Y2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cENhY2hl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCM0UxMUM3QjIyODAwN0E1
MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
Z0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjQwMTFDN0Iy
MzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTQ1NThFMTgy
NDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3Bw
OyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5NDU1OTAxODI0NzQ0NzAwQ0MzODQzIC8q
IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTk0NTU5NDE4
MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOyBwYXRoID0g
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3Rvci5oOyBwYXRo
ID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTVCQTE1RTIxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3Rv
ci5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFMzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3Rl
SW5zcGVjdG9yQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJl
bW90ZUluc3BlY3RvckNvbnN0YW50cy5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3JDb25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1
RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uLmg7IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1
QkExNUU1MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QkEx
NUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RUYxODIz
NDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oOyBwYXRoID0g
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1
Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXBDb25zdHJ1
Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDA4NzM4MTdDQkU4NTMw
MEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYXBDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzAw
ODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yNjk0LDYgKzI3MTgsNyBAQAogCQkJCTA4NjdENjlBRkU4NDAyOEZDMDJB
QUMwNyAvKiBGcmFtZXdvcmtzICovLAogCQkJCTBGRUEwOUZDMTcwNTEzN0YwMEJCNzIyQyAvKiBm
dGwgKi8sCiAJCQkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8qIGhlYXAgKi8sCisJCQkJQTVC
QTE1REYxODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAqLywKIAkJCQkxNDI5RDc3QTBFRDIw
RDczMDBCODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8sCiAJCQkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5
NjE5IC8qIGppdCAqLywKIAkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8s
CkBAIC0zNDc3LDYgKzM1MDIsOCBAQAogCQkJCTBGMkI2NkM4MTdCNkI1QUIwMEE3QUUzRiAvKiBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCAqLywKIAkJCQkxNERFMEQ2
ODBEMDI0MzE0MDBBQUNDQTIgLyogSlNHbG9iYWxPYmplY3QuY3BwICovLAogCQkJCUE4RTg5NDMz
MENEMDYwM0YwMDM2NzE3OSAvKiBKU0dsb2JhbE9iamVjdC5oICovLAorCQkJCUE1OTQ1NTkwMTgy
NDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwICovLAorCQkJCUE1
OTQ1NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCAqLywK
IAkJCQlCQzc1NkZDNjBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
Y3BwICovLAogCQkJCUJDNzU2RkM3MEUyMDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5oICovLAogCQkJCTBGMkI2NkNBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2QXJy
YXkuaCAqLywKQEAgLTQxNDUsNiArNDE3MiwzMSBAQAogCQkJcGF0aCA9IGJ5dGVjb2RlOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTVCQTE1REYxODIzNDA5MjAwQTgyRTY5
IC8qIGluc3BlY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJQTVCQTE1RTAxODIzNDA5RDAwQTgyRTY5IC8qIHJlbW90ZSAqLywKKwkJCQlBNTk0NTU5
NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi8sCisJCQkp
OworCQkJbmFtZSA9IGluc3BlY3RvcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CisJCUE1QkExNUUwMTgyMzQwOUQwMEE4MkU2OSAvKiByZW1vdGUgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1QkExNUUxMTgyMzQwQjMwMEE4MkU2OSAv
KiBSZW1vdGVJbnNwZWN0b3IuaCAqLywKKwkJCQlBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yLm1tICovLAorCQkJCUE1QkExNUUzMTgyMzQwQjMwMEE4MkU2OSAvKiBS
ZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCAqLywKKwkJCQlBNUJBMTVFRjE4MjM0NUFGMDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oICovLAorCQkJCUE1OTQ1NThFMTgyNDVF
REUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLywKKwkJCQlBNUJB
MTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b24uaCAqLywKKwkJCQlBNUJBMTVFNTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gKi8sCisJCQkJQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5
IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLywKKwkJCQlBNUJBMTVFNzE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLywKKwkJCSk7
CisJCQluYW1lID0gcmVtb3RlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8q
IEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KQEAgLTQyMTUsNiArNDI2Nyw3IEBACiAJCQkJODY2NzM5RDIxM0JGREU3MTAw
MjNEODdDIC8qIEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0ODE2RTFDMTU0Q0M1
NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMz
RUMwRTE2RjVDRDAwQjM0NDYwIC8qIEJvb2xlYW5PYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE1QkExNUVBMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk3MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk4MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJm
bHlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIg
LyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC00Mjg1LDYgKzQzMzgs
NyBAQAogCQkJCTBGMTYwMTVFMTU2MTk4QzkwMEMyNTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlm
aWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA1QzNCNDE2ODNDRjkyMDBCQUY0
NUIgLyogREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY2Mzk0ODUxNUU0ODExQjAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTVCQTE1RUIxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5QTI5NTE3QTBCQzc0MDBFRTI2
MTggLyogREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MTRD
QTUxNkVBOTJGMjAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNjIwMTc2MTQzRkNEM0IwMDY4Qjc3QyAvKiBERkdCYXNpY0Jsb2Nr
LmggaW4gSGVhZGVycyAqLywKQEAgLTQzNjAsNiArNDQxNCw3IEBACiAJCQkJMEZEOEEzMjYxN0Q1
MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQw
MkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtNDQxOCw2ICs0NDczLDcgQEAKIAkJ
CQkwRkVBMEEwODE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTQ1NTkzMTgyNDc0NDcw
MENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUEwQTBBMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBDMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxl
LmggaW4gSGVhZGVycyAqLywKQEAgLTQ1MTAsNiArNDU2Niw3IEBACiAJCQkJODZDQ0VGREUwRjQx
M0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDc3NkJGMTRG
RjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERpc2Fzc2VtYmxlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUxRjE4MTI0QUNFMDA5
QjZCNEQgLyogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAg
LTQ2ODEsNiArNDczOCw3IEBACiAJCQkJMTREMkYzREIxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtl
ZFNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJENkYxMjEzNTM5QTQxMDBCMDJFODYgLyog
TWFya1N0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjExMjJFMzE1REQ5QUIzMDA3OTBFM0Eg
LyogTWFya1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5NDU1OTUxODI0NzlF
QjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODYxMkU0Q0QxNTIzODlFQzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQzQzBFMTZGNUNEMDBCMzQ0NjAgLyogTWF0aE9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3Mu
aCBpbiBIZWFkZXJzICovLApAQCAtNDg0OSw2ICs0OTA3LDcgQEAKIAkJCQkxNDJFMzEzQzEzNEZG
MEE2MDBBRkFEQjUgLyogV2Vhay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRFODRGOUYxNEVFMUFD
QzAwRDZENUQ0IC8qIFdlYWtCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCRkNFNjkxMENE
QjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RTgx
ODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTRGNzI1NjYxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVPd25lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTRFODRGQTIxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtJbXBsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNEJFN0QzMzE3MTM1Q0Y0MDBEMTgwN0EgLyogV2Vha0lubGluZXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtNTQ0Myw2ICs1NTAyLDcgQEAKIAkJCQlBN0I0OEY0OTBFRTg5MzZGMDBE
Q0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkRC
NjQ2NDBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTZBMUQ1MTUwMDFDRjQwMDI5OTJCMSAvKiBFeGVjdXRp
b25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1OTQ1NTkyMTgyNDc0NDcwMENDMzg0
MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZC
MTA1ODUxNjc1NDgwRjAwRjhBQjZFIC8qIEV4aXRLaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRUEwQTFDMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQTBBMUUxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NjA0LDYgKzU2NjQsNyBAQAogCQkJCTE0
NDY5RERFMTA3RUM3RTcwMDY1MDQ0NiAvKiBMb29rdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTRCNzIzQjIxMkQ3REE0NjAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01h
cmtlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTk0NTU4RjE4MjQ1RUZEMDBDQzM4NDMgLyog
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVCM0VD
RjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fzc2VtYmxl
ckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTczMSw2ICs1NzkyLDkgQEAKIAkJCQlBN0NB
M0FFNTE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNEU4NEZBMDE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9y
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUJBMTVFOTE4MjM0MEIzMDBBODJFNjkgLyogUmVt
b3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTVCQTE1RUMxODIzNDBCNDAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlBN0U1QUIzQTE3OTlFNEIyMDBEMjgzM0Qg
LyogWDg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2M0M2RDlDMTUyMTEx
MUEwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaApzaW1pbGFyaXR5IGluZGV4IDgzJQpyZW5hbWUgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKcmVuYW1lIHRv
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LmgKaW5kZXggYjMyMTRlZi4uZmEwYThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAsMjUgKzEwLDI1IEBACiAg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKICAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgogICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCiAgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKICAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAogI2lmbmRlZiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAogI2RlZmluZSBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWxfaAogCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6CkBA
IC0zNiw2ICszNiw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogfTsKIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNDNkNDAzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCkBAIC0wLDAg
KzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaWZuZGVmIFJlbW90ZUluc3BlY3Rvcl9o
CisjZGVmaW5lIFJlbW90ZUluc3BlY3Rvcl9oCisKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uLmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLmgiCisjaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4K
KyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1RocmVhZGluZy5o
PgorCitPQkpDX0NMQVNTIE5TU3RyaW5nOworT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CisKK25h
bWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOwor
c3RydWN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvOworCitjbGFzcyBKU19FWFBPUlRf
UFJJVkFURSBSZW1vdGVJbnNwZWN0b3IgRklOQUwgOiBwdWJsaWMgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVtb3RlSW5zcGVjdG9y
JiBzaGFyZWQoKTsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5zcGVj
dG9yPjsKKworICAgIHZvaWQgcmVnaXN0ZXJEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUqKTsKKyAgICB2b2lkIHVwZGF0ZURlYnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZSopOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKHVuc2lnbmVk
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisKKyAgICBib29sIGVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAgICBib29sIGhhc0FjdGl2ZURlYnVnU2Vz
c2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlRGVidWdTZXNzaW9uOyB9CisKKyAgICB2
b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CisKK3ByaXZhdGU6CisgICAgUmVtb3RlSW5z
cGVjdG9yKCk7CisKKyAgICB1bnNpZ25lZCBuZXh0QXZhaWxhYmxlSWRlbnRpZmllcigpOworCisg
ICAgdm9pZCBzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCgpOworCisgICAgTlNEaWN0aW9uYXJ5
ICpsaXN0aW5nRm9yRGVidWdnYWJsZShjb25zdCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5m
byYpIGNvbnN0OworICAgIHZvaWQgcHVzaExpc3RpbmdOb3coKTsKKyAgICB2b2lkIHB1c2hMaXN0
aW5nU29vbigpOworCisgICAgdm9pZCB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24qLCBOU1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmFyeSAq
dXNlckluZm8pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uRmFpbGVk
KFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgeHBjQ29ubmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbiosIHhwY19vYmplY3RfdCkgT1ZFUlJJREU7CisKKyAgICB2b2lkIHJlY2VpdmVkU2V0dXBN
ZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworICAgIHZvaWQgcmVjZWl2ZWREYXRhTWVz
c2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkRGlkQ2xvc2VN
ZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworICAgIHZvaWQgcmVjZWl2ZWRHZXRMaXN0
aW5nTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkSW5k
aWNhdGVNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworICAgIHZvaWQgcmVjZWl2ZWRD
b25uZWN0aW9uRGllZE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisKKyAgICAvLyBE
ZWJ1Z2dhYmxlcyBjYW4gYmUgcmVnaXN0ZXJlZCBmcm9tIGFueSB0aHJlYWQgYXQgYW55IHRpbWUu
CisgICAgLy8gQW55IGRlYnVnZ2FibGUgY2FuIHNlbmQgbWVzc2FnZXMgb3ZlciB0aGUgWFBDIGNv
bm5lY3Rpb24uCisgICAgLy8gU28gbG9jayBhY2Nlc3MgdG8gYWxsIG1hcHMgYW5kIHN0YXRlIGFz
IHRoZXkgY2FuIGNoYW5nZQorICAgIC8vIGZyb20gYW55IHRocmVhZC4KKyAgICBNdXRleCBtX2xv
Y2s7CisKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnBhaXI8UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZSosIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvPj4gbV9kZWJ1Z2dhYmxlTWFw
OworICAgIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbk1hcDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbj4gbV94cGNDb25uZWN0aW9uOworICAgIHVuc2lnbmVkIG1f
bmV4dEF2YWlsYWJsZUlkZW50aWZpZXI7CisgICAgaW50IG1fbm90aWZ5VG9rZW47CisgICAgYm9v
bCBtX2VuYWJsZWQ7CisgICAgYm9vbCBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbjsKKyAgICBib29s
IG1fcHVzaFNjaGVkdWxlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5k
aWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNlbmRpZiAvLyBXZWJJbnNwZWN0b3JT
ZXJ2ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjg3OWI0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KQEAgLTAsMCArMSw0ODggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3Rvci5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCisKKyNpbXBvcnQgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKKyNpbXBvcnQgIlJlbW90
ZUluc3BlY3RvckNvbnN0YW50cy5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZS5oIgorI2ltcG9ydCA8bm90aWZ5Lmg+CisjaW1wb3J0IDx4cGMveHBjLmg+CisjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1w
b3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
KyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0IDx3dGYvaW9zL1dlYkNvcmVUaHJlYWQuaD4KKyNl
bmRpZgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworc3RhdGljIHZvaWQgZGlzcGF0Y2hBc3lu
Y09uUXVldWVTYWZlRm9yQW55RGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpCit7CisjaWYgUExB
VEZPUk0oSU9TKQorICAgIGlmIChXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkICYmIFdlYkNvcmVX
ZWJUaHJlYWRJc0VuYWJsZWQoKSkgeworICAgICAgICBXZWJDb3JlV2ViVGhyZWFkUnVuKGJsb2Nr
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgYmxvY2spOworfQorCitSZW1vdGVJbnNwZWN0b3Im
IFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmVtb3RlSW5zcGVjdG9yPiBzaGFyZWQ7CisKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9u
Y2U7CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKKyAgICAgICAgSlNDOjppbml0aWFsaXpl
VGhyZWFkaW5nKCk7CisgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKyAgICAg
ICAgc2hhcmVkLmdldCgpLnN0YXJ0KCk7CisgICAgfSk7CisKKyAgICByZXR1cm4gc2hhcmVkOwor
fQorCitSZW1vdGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvcigpCisgICAgOiBtX25leHRBdmFp
bGFibGVJZGVudGlmaWVyKDEpCisgICAgLCBtX25vdGlmeVRva2VuKDApCisgICAgLCBtX2VuYWJs
ZWQoZmFsc2UpCisgICAgLCBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbihmYWxzZSkKKyAgICAsIG1f
cHVzaFNjaGVkdWxlZChmYWxzZSkKK3sKK30KKwordW5zaWduZWQgUmVtb3RlSW5zcGVjdG9yOjpu
ZXh0QXZhaWxhYmxlSWRlbnRpZmllcigpCit7CisgICAgdW5zaWduZWQgbmV4dFZhbGlkSWRlbnRp
ZmllcjsKKyAgICBkbyB7CisgICAgICAgIG5leHRWYWxpZElkZW50aWZpZXIgPSBtX25leHRBdmFp
bGFibGVJZGVudGlmaWVyKys7CisgICAgfSB3aGlsZSAoIW5leHRWYWxpZElkZW50aWZpZXIgfHwg
bmV4dFZhbGlkSWRlbnRpZmllciA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkgfHwgbV9kZWJ1Z2dhYmxlTWFwLmNvbnRhaW5zKG5leHRWYWxpZElkZW50aWZpZXIpKTsKKyAg
ICByZXR1cm4gbmV4dFZhbGlkSWRlbnRpZmllcjsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnJlZ2lzdGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxl
KQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgdW5zaWduZWQgaWRl
bnRpZmllciA9IG5leHRBdmFpbGFibGVJZGVudGlmaWVyKCk7CisgICAgZGVidWdnYWJsZS0+c2V0
SWRlbnRpZmllcihpZGVudGlmaWVyKTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9kZWJ1Z2dhYmxl
TWFwLnNldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfcGFpcihkZWJ1Z2dhYmxlLCBkZWJ1Z2dhYmxl
LT5pbmZvKCkpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkp
OworCisgICAgaWYgKGRlYnVnZ2FibGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKSkKKyAgICAg
ICAgcHVzaExpc3RpbmdTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1bnJlZ2lz
dGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlKQorewor
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgdW5zaWduZWQgaWRlbnRpZmll
ciA9IGRlYnVnZ2FibGUtPmlkZW50aWZpZXIoKTsKKyAgICBpZiAoIWlkZW50aWZpZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fZGVidWdnYWJsZU1hcC5yZW1v
dmUoaWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVk
KTsKKworICAgIGlmIChSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+
IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAudGFrZShpZGVudGlmaWVyKSkKKyAgICAgICAg
Y29ubmVjdGlvbi0+Y2xvc2VGcm9tRGVidWdnYWJsZSgpOworCisgICAgaWYgKGRlYnVnZ2FibGUt
PnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKSkKKyAgICAgICAgcHVzaExpc3RpbmdTb29uKCk7Cit9
CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gZGVidWdnYWJsZS0+aWRlbnRpZmllcigp
OworICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByZXN1
bHQgPSBtX2RlYnVnZ2FibGVNYXAuc2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV9wYWlyKGRlYnVn
Z2FibGUsIGRlYnVnZ2FibGUtPmluZm8oKSkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCAh
cmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgaWYgKGRlYnVnZ2FibGUtPnJlbW90ZURlYnVnZ2lu
Z0FsbG93ZWQoKSkKKyAgICAgICAgcHVzaExpc3RpbmdTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQodW5zaWduZWQgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xv
Y2spOworCisgICAgaWYgKCFtX3hwY0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAg
IFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9
IG1fY29ubmVjdGlvbk1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFjb25uZWN0aW9uKQor
ICAgICAgICByZXR1cm47CisKKyAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gQHsKKyAgICAg
ICAgV0lSUmF3RGF0YUtleTogW3N0YXRpY19jYXN0PE5TU3RyaW5nICo+KG1lc3NhZ2UpIGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwKKyAgICAgICAgV0lSQ29ubmVjdGlv
bklkZW50aWZpZXJLZXk6IGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25JZGVudGlmaWVyKCksCisgICAg
ICAgIFdJUkRlc3RpbmF0aW9uS2V5OiBjb25uZWN0aW9uLT5kZXN0aW5hdGlvbigpCisgICAgfTsK
KworICAgIG1feHBjQ29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lSUmF3RGF0YU1lc3NhZ2UsIHVz
ZXJJbmZvKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkKK3sKKyAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmIChtX2VuYWJsZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fZW5hYmxlZCA9IHRydWU7CisKKyAgICBub3RpZnlfcmVnaXN0ZXJfZGlz
cGF0Y2goV0lSU2VydmljZUF2YWlsYWJsZU5vdGlmaWNhdGlvbiwgJm1fbm90aWZ5VG9rZW4sIGRp
c3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwg
MCksIF4oaW50KSB7CisgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkuc2V0dXBYUEND
b25uZWN0aW9uSWZOZWVkZWQoKTsKKyAgICB9KTsKKworICAgIG5vdGlmeV9wb3N0KFdJUlNlcnZp
Y2VBdmFpbGFiaWxpdHlDaGVja05vdGlmaWNhdGlvbik7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpzdG9wKCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlm
ICghbV9lbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2VuYWJsZWQgPSBmYWxzZTsK
KworICAgIG1fcHVzaFNjaGVkdWxlZCA9IGZhbHNlOworCisgICAgZm9yIChhdXRvIGl0ID0gbV9j
b25uZWN0aW9uTWFwLmJlZ2luKCksIGVuZCA9IG1fY29ubmVjdGlvbk1hcC5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPmNsb3NlKCk7CisgICAgbV9jb25uZWN0aW9u
TWFwLmNsZWFyKCk7CisKKyAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKKworICAg
IGlmIChtX3hwY0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgbV94cGNDb25uZWN0aW9uLT5jbG9zZSgp
OworICAgICAgICBtX3hwY0Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgIH0KKworICAgIG5vdGlm
eV9jYW5jZWwobV9ub3RpZnlUb2tlbik7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1
cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCgpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisKKyAgICBpZiAobV94cGNDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICB4
cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9z
ZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgMCk7
CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3hwY0Nvbm5l
Y3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24+KGNv
bm5lY3Rpb24sIHRoaXMpOworICAgIG1feHBjQ29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoQCJzeW4i
LCBuaWwpOyAvLyBTZW5kIGEgc2ltcGxlIG1lc3NhZ2UgdG8gaW5pdGlhbGl6ZSB0aGUgWFBDIGNv
bm5lY3Rpb24uCisgICAgeHBjX3JlbGVhc2UoY29ubmVjdGlvbik7CisKKyAgICBwdXNoTGlzdGlu
Z1Nvb24oKTsKK30KKworI3ByYWdtYSBtYXJrIC0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bjo6Q2xpZW50CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uUmVjZWl2ZWRN
ZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCBOU1N0cmluZyAqbWVzc2FnZU5h
bWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
bG9jayk7CisKKyAgICBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJQZXJtaXNz
aW9uRGVuaWVkXSkgeworICAgICAgICBzdG9wKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJTb2NrZXREYXRhTWVzc2Fn
ZV0pCisgICAgICAgIHJlY2VpdmVkRGF0YU1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYg
KFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSU29ja2V0U2V0dXBNZXNzYWdlXSkKKyAg
ICAgICAgcmVjZWl2ZWRTZXR1cE1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYgKFttZXNz
YWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSV2ViUGFnZUNsb3NlTWVzc2FnZV0pCisgICAgICAg
IHJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlIGlmIChbbWVzc2Fn
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkFwcGxpY2F0aW9uR2V0TGlzdGluZ01lc3NhZ2VdKQor
ICAgICAgICByZWNlaXZlZEdldExpc3RpbmdNZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlIGlm
IChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkluZGljYXRlTWVzc2FnZV0pCisgICAg
ICAgIHJlY2VpdmVkSW5kaWNhdGVNZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlIGlmIChbbWVz
c2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkNvbm5lY3Rpb25EaWVkTWVzc2FnZV0pCisgICAg
ICAgIHJlY2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlCisg
ICAgICAgIE5TTG9nKEAiVW5yZWNvZ25pemVkIFJlbW90ZUluc3BlY3RvciBYUEMgTWVzc2FnZTog
JUAiLCBtZXNzYWdlTmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0
aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qKQoreworICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2xvY2spOworCisgICAgbV9wdXNoU2NoZWR1bGVkID0gZmFsc2U7CisKKyAg
ICBmb3IgKGF1dG8gaXQgPSBtX2Nvbm5lY3Rpb25NYXAuYmVnaW4oKSwgZW5kID0gbV9jb25uZWN0
aW9uTWFwLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGl0LT52YWx1ZS0+Y2xvc2Uo
KTsKKyAgICBtX2Nvbm5lY3Rpb25NYXAuY2xlYXIoKTsKKworICAgIHVwZGF0ZUhhc0FjdGl2ZURl
YnVnU2Vzc2lvbigpOworCisgICAgaWYgKG1feHBjQ29ubmVjdGlvbikgeworICAgICAgICBtX3hw
Y0Nvbm5lY3Rpb24tPmNsb3NlKCk7CisgICAgICAgIG1feHBjQ29ubmVjdGlvbiA9IG51bGxwdHI7
CisgICAgfQorfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblVuaGFuZGxl
ZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIHhwY19vYmplY3RfdCkKK3sK
KyAgICAvLyBJbnRlbnRpb25hbGx5IGlnbm9yZWQuCit9CisKKyNwcmFnbWEgbWFyayAtIExpc3Rp
bmdzCisKK05TRGljdGlvbmFyeSAqUmVtb3RlSW5zcGVjdG9yOjpsaXN0aW5nRm9yRGVidWdnYWJs
ZShjb25zdCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyYgZGVidWdnYWJsZUluZm8pIGNv
bnN0Cit7CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGVidWdnYWJsZURldGFpbHMgPSBbTlNN
dXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKworICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBz
ZXRPYmplY3Q6QChkZWJ1Z2dhYmxlSW5mby5pZGVudGlmaWVyKSBmb3JLZXk6V0lSUGFnZUlkZW50
aWZpZXJLZXldOworCisgICAgc3dpdGNoIChkZWJ1Z2dhYmxlSW5mby50eXBlKSB7CisgICAgY2Fz
ZSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpKYXZhU2NyaXB0OiB7CisgICAgICAgIE5TU3Ry
aW5nICpuYW1lID0gZGVidWdnYWJsZUluZm8ubmFtZTsKKyAgICAgICAgW2RlYnVnZ2FibGVEZXRh
aWxzIHNldE9iamVjdDpuYW1lIGZvcktleTpXSVJUaXRsZUtleV07CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OldlYjogeworICAgICAg
ICBOU1N0cmluZyAqdXJsID0gZGVidWdnYWJsZUluZm8udXJsOworICAgICAgICBOU1N0cmluZyAq
dGl0bGUgPSBkZWJ1Z2dhYmxlSW5mby5uYW1lOworICAgICAgICBbZGVidWdnYWJsZURldGFpbHMg
c2V0T2JqZWN0OnVybCBmb3JLZXk6V0lSVVJMS2V5XTsKKyAgICAgICAgW2RlYnVnZ2FibGVEZXRh
aWxzIHNldE9iamVjdDp0aXRsZSBmb3JLZXk6V0lSVGl0bGVLZXldOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KGRlYnVnZ2Fi
bGVJbmZvLmlkZW50aWZpZXIpKQorICAgICAgICBbZGVidWdnYWJsZURldGFpbHMgc2V0T2JqZWN0
OmNvbm5lY3Rpb24tPmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgZm9yS2V5OldJUkNvbm5lY3Rpb25J
ZGVudGlmaWVyS2V5XTsKKworICAgIGlmIChkZWJ1Z2dhYmxlSW5mby5oYXNMb2NhbERlYnVnZ2Vy
KQorICAgICAgICBbZGVidWdnYWJsZURldGFpbHMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OldJUkhh
c0xvY2FsRGVidWdnZXJLZXldOworCisgICAgcmV0dXJuIGRlYnVnZ2FibGVEZXRhaWxzOworfQor
Cit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdOb3coKQoreworICAgIEFTU0VSVCht
X3hwY0Nvbm5lY3Rpb24pOworICAgIGlmICghbV94cGNDb25uZWN0aW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3B1c2hTY2hlZHVsZWQgPSBmYWxzZTsKKworICAgIFJldGFpblB0cjxOU011
dGFibGVEaWN0aW9uYXJ5PiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0XSk7CisgICAgZm9yIChhdXRvIGl0ID0gbV9kZWJ1Z2dhYmxlTWFwLmJlZ2lu
KCksIGVuZCA9IG1fZGVidWdnYWJsZU1hcC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgIGNvbnN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvJiBkZWJ1Z2dhYmxlSW5mbyA9
IGl0LT52YWx1ZS5zZWNvbmQ7CisgICAgICAgIGlmIChkZWJ1Z2dhYmxlSW5mby5yZW1vdGVEZWJ1
Z2dpbmdBbGxvd2VkKSB7CisgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmRldGFpbHMgPSBsaXN0
aW5nRm9yRGVidWdnYWJsZShkZWJ1Z2dhYmxlSW5mbyk7CisgICAgICAgICAgICBbcmVzcG9uc2Ug
c2V0T2JqZWN0OmRldGFpbHMgZm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXUi
LCBkZWJ1Z2dhYmxlSW5mby5pZGVudGlmaWVyXV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gb3V0Z29pbmcgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIFtvdXRnb2luZyBzZXRPYmplY3Q6cmVz
cG9uc2UuZ2V0KCkgZm9yS2V5OldJUkxpc3RpbmdLZXldOworCisgICAgbV94cGNDb25uZWN0aW9u
LT5zZW5kTWVzc2FnZShXSVJMaXN0aW5nTWVzc2FnZSwgb3V0Z29pbmcuZ2V0KCkpOworfQorCit2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdTb29uKCkKK3sKKyAgICBpZiAoIW1feHBj
Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fcHVzaFNjaGVkdWxlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9wdXNoU2NoZWR1bGVkID0gdHJ1ZTsKKyAgICBkaXNw
YXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCAwLjAyICogTlNFQ19Q
RVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklU
WV9ERUZBVUxULCAwKSwgXnsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgICAgIGlmIChtX3B1c2hTY2hlZHVsZWQpCisgICAgICAgICAgICBwdXNoTGlzdGluZ05vdygp
OworICAgIH0pOworfQorCisjcHJhZ21hIG1hcmsgLSBBY3RpdmUgRGVidWdnZXIgU2Vzc2lvbnMK
Kwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpCit7
CisgICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb24gPSAhbV9jb25uZWN0aW9uTWFwLmlz
RW1wdHkoKTsKKyAgICBpZiAoaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uID09IG1faGFzQWN0aXZl
RGVidWdTZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hhc0FjdGl2ZURlYnVnU2Vz
c2lvbiA9IGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbjsKKworICAgIC8vIEZJWE1FOiBFeHBvc2Ug
c29tZSB3YXkgdG8gYWNjZXNzIHRoaXMgc3RhdGUgaW4gYW4gZW1iZWRkZXIuCisgICAgLy8gTGVn
YWN5IGlPUyBXZWJLaXQgMSBoYWQgYSBub3RpZmljYXRpb24uIFRoaXMgd2lsbCBuZWVkIHRvIGJl
IHNtYXJ0ZXIgd2l0aCBXZWJLaXQyLgorfQorCisjcHJhZ21hIG1hcmsgLSBSZWNlaXZlZCBYUEMg
TWVzc2FnZXMKKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKE5T
RGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFt1c2VySW5m
byBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOworICAgIGlmICghcGFnZUlkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBb
dXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKKyAgICBp
ZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmlu
ZyAqc2VuZGVyID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJTZW5kZXJLZXldOworICAgIGlm
ICghc2VuZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0g
W3BhZ2VJZCB1bnNpZ25lZEludFZhbHVlXTsKKyAgICBpZiAobV9jb25uZWN0aW9uTWFwLmNvbnRh
aW5zKGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGl0ID0gbV9kZWJ1
Z2dhYmxlTWFwLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ID09IG1fZGVidWdnYWJsZU1h
cC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQXR0ZW1wdCB0byBjcmVhdGUgYSBj
b25uZWN0aW9uLiBUaGlzIG1heSBmYWlsIGlmIHRoZSBwYWdlIGFscmVhZHkgaGFzIGFuIGluc3Bl
Y3RvciBvciBpZiBpdCBkaXNhbGxvd3MgaW5zcGVjdGlvbi4KKyAgICBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlID0gaXQtPnZhbHVlLmZpcnN0OworICAgIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVJbmZvIGRlYnVnZ2FibGVJbmZvID0gaXQtPnZhbHVlLnNlY29uZDsKKyAg
ICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24g
PSBhZG9wdFJlZihuZXcgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oZGVidWdn
YWJsZSwgY29ubmVjdGlvbklkZW50aWZpZXIsIHNlbmRlciwgZGVidWdnYWJsZUluZm8udHlwZSkp
OworICAgIGlmICghY29ubmVjdGlvbi0+c2V0dXAoKSkgeworICAgICAgICBjb25uZWN0aW9uLT5j
bG9zZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb25uZWN0aW9uTWFwLnNl
dChpZGVudGlmaWVyLCBjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisKKyAgICB1cGRhdGVIYXNBY3Rp
dmVEZWJ1Z1Nlc3Npb24oKTsKKworICAgIHB1c2hMaXN0aW5nU29vbigpOworfQorCit2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWREYXRhTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZv
KQoreworICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlBh
Z2VJZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIXBhZ2VJZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgdW5zaWduZWQgcGFnZUlkZW50aWZpZXIgPSBbcGFnZUlkIHVuc2lnbmVkSW50VmFsdWVdOwor
ICAgIFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlv
biA9IG1fY29ubmVjdGlvbk1hcC5nZXQocGFnZUlkZW50aWZpZXIpOworICAgIGlmICghY29ubmVj
dGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNEYXRhICpkYXRhID0gW3VzZXJJbmZvIG9i
amVjdEZvcktleTpXSVJTb2NrZXREYXRhS2V5XTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1l
c3NhZ2UgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIGVuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2VU
b0JhY2tlbmQobWVzc2FnZS5nZXQoKSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNl
aXZlZERpZENsb3NlTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAgIE5TTnVt
YmVyICpwYWdlSWQgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5
XTsKKyAgICBpZiAoIXBhZ2VJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNTdHJpbmcgKmNv
bm5lY3Rpb25JZGVudGlmaWVyID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9u
SWRlbnRpZmllcktleV07CisgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IFtwYWdlSWQgdW5zaWduZWRJbnRW
YWx1ZV07CisgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBj
b25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIWNv
bm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghW2Nvbm5lY3Rpb25JZGVudGlm
aWVyIGlzRXF1YWxUb1N0cmluZzpjb25uZWN0aW9uLT5jb25uZWN0aW9uSWRlbnRpZmllcigpXSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgY29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICBtX2Nvbm5l
Y3Rpb25NYXAucmVtb3ZlKGlkZW50aWZpZXIpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdT
ZXNzaW9uKCk7CisKKyAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OnJlY2VpdmVkR2V0TGlzdGluZ01lc3NhZ2UoTlNEaWN0aW9uYXJ5ICopCit7CisgICAg
cHVzaExpc3RpbmdOb3coKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkSW5k
aWNhdGVNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTlNOdW1iZXIgKnBh
Z2VJZCA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOworICAg
IGlmICghcGFnZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVy
ID0gW3BhZ2VJZCB1bnNpZ25lZEludFZhbHVlXTsKKyAgICBCT09MIGluZGljYXRlRW5hYmxlZCA9
IFtbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUkluZGljYXRlRW5hYmxlZEtleV0gYm9vbFZhbHVl
XTsKKworICAgIGRpc3BhdGNoQXN5bmNPblF1ZXVlU2FmZUZvckFueURlYnVnZ2FibGUoXnsKKyAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICAgICAgYXV0byBpdCA9IG1f
ZGVidWdnYWJsZU1hcC5maW5kKGlkZW50aWZpZXIpOworICAgICAgICBpZiAoaXQgPT0gbV9kZWJ1
Z2dhYmxlTWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUgPSBpdC0+dmFsdWUuZmlyc3Q7CisgICAgICAg
IGRlYnVnZ2FibGUtPnNldEluZGljYXRpbmcoaW5kaWNhdGVFbmFibGVkKTsKKyAgICB9KTsKK30K
Kwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKE5T
RGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlm
aWVyID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07
CisgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBpdCA9IG1fY29ubmVjdGlvbk1hcC5iZWdpbigpOworICAgIGF1dG8gZW5kID0gbV9jb25u
ZWN0aW9uTWFwLmVuZCgpOworICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
aWYgKFtjb25uZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6aXQtPnZhbHVlLT5jb25u
ZWN0aW9uSWRlbnRpZmllcigpXSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlm
IChpdCA9PSBlbmQpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IGl0LT52YWx1ZTsKKyAgICBjb25u
ZWN0aW9uLT5jbG9zZSgpOworICAgIG1fY29ubmVjdGlvbk1hcC5yZW1vdmUoaXQpOworCisgICAg
dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbGF5RGVm
aW5pdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3RvckNvbnN0YW50cy5oCnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVsYXlEZWZp
bml0aW9ucy5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaAppbmRleCAxZjNiYzMyLi41OTUxODU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3Rv
clJlbGF5RGVmaW5pdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaApAQCAtMjMsMTIgKzIzLDEyIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9u
c19oCi0jZGVmaW5lIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnNfaAorI2lmbmRlZiBSZW1v
dGVJbnNwZWN0b3JDb25zdGFudHNfaAorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHNf
aAogCiAvLyBXSVJDb25zdGFudHMgYXJlICJXZWIgSW5zcGVjdG9yIFJlbGF5IiBjb25zdGFudHMg
c2hhcmVkIGJldHdlZW4KLS8vIHRoZSBXZWJJbnNwZWN0b3IgZnJhbWV3b3JrIG9uIHRoZSBkZWJ1
Z2dlciBzaWRlLCB3ZWJpbnNwZWN0b3JkLAotLy8gYW5kIFdlYktpdCBvbiB0aGUgZGVidWdnYWJs
ZSBhcHBsaWNhdGlvbiBzaWRlLgorLy8gdGhlIFdlYkluc3BlY3RvciBmcmFtZXdvcmsgb24gdGhl
IE9TIFggc2lkZSwgd2ViaW5zcGVjdG9yZCwgYW5kCisvLyBpT1MgV2ViS2l0IG9uIHRoZSBkZXZp
Y2Ugc2lkZS4KIAogI2RlZmluZSBXSVJTaW11bGF0b3JUQ1BQb3J0TnVtYmVyICAgICAgICAgICAg
ICAgMjc3NTMKICNkZWZpbmUgV0lSWFBDTWFjaFBvcnROYW1lICAgICAgICAgICAgICAgICAgICAg
ICJjb20uYXBwbGUud2ViaW5zcGVjdG9yIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZS5jcHAKc2ltaWxhcml0eSBpbmRleCA1MSUKcmVuYW1lIGZyb20gU291cmNlL1dl
YktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbi5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcAppbmRleCBjN2E1YmNjLi5mZGYxZDk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDMzICsyMyw1OSBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1AY2xhc3MgV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5l
bDsKLUBjbGFzcyBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXI7
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZS5oIgogCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIDog
TlNPYmplY3QgewotQHByaXZhdGUKLSAgICBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICpfY2hh
bm5lbDsKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotICAgIFdlYkluc3BlY3RvclNl
cnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciAqX2NvbnRyb2xsZXI7IC8vIHdlYWssIHRo
ZSBjb250cm9sbGVyIG93bnMgdXMuCi0gICAgTlNTdHJpbmcgKl9jb25uZWN0aW9uSWRlbnRpZmll
cjsKLSAgICBOU1N0cmluZyAqX2Rlc3RpbmF0aW9uOwotICAgIE5TTnVtYmVyICpfaWRlbnRpZmll
cjsKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJSZW1v
dGVJbnNwZWN0b3IuaCIKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGU6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUoKQorICAgIDogbV9pZGVudGlm
aWVyKDApCisgICAgLCBtX2FsbG93ZWQoZmFsc2UpCit7Cit9CisKK1JlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGU6On5SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCkKK3sKKyAgICBSZW1vdGVJbnNw
ZWN0b3I6OnNoYXJlZCgpLnVucmVnaXN0ZXJEZWJ1Z2dhYmxlKHRoaXMpOwogfQogCi0tIChpZClp
bml0V2l0aENvbnRyb2xsZXI6KFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29u
dHJvbGxlciAqKWNvbnRyb2xsZXIgY29ubmVjdGlvbklkZW50aWZpZXI6KE5TU3RyaW5nICopY29u
bmVjdGlvbklkZW50aWZpZXIgZGVzdGluYXRpb246KE5TU3RyaW5nICopZGVzdGluYXRpb24gaWRl
bnRpZmllcjooTlNOdW1iZXIgKilpZGVudGlmaWVyOwotLSAoQk9PTClzZXR1cENoYW5uZWw7Ci0t
IChOU1N0cmluZyAqKWNvbm5lY3Rpb25JZGVudGlmaWVyOwotLSAoTlNOdW1iZXIgKilpZGVudGlm
aWVyOwordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjppbml0KCkKK3sKKyAgICBSZW1v
dGVJbnNwZWN0b3I6OnNoYXJlZCgpLnJlZ2lzdGVyRGVidWdnYWJsZSh0aGlzKTsKK30KIAotLy8g
TWVzc2FnZXMgZnJvbSB0aGUgSW5zcGVjdG9yU2VydmVyLgotLSAodm9pZClyZWNlaXZlZERhdGE6
KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnk7Ci0tICh2b2lkKXJlY2VpdmVkRGlkQ2xvc2U6KE5T
RGljdGlvbmFyeSAqKWRpY3Rpb25hcnk7Cit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6
OnVwZGF0ZSgpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS51cGRhdGVEZWJ1Z2dh
YmxlKHRoaXMpOworfQogCi0vLyBNZXNzYWdlcyBmcm9tIHRoZSBDaGFubmVsLgotLSAodm9pZClj
bGVhckNoYW5uZWw7Ci0tICh2b2lkKXNlbmRNZXNzYWdlVG9Gcm9udGVuZDooTlNTdHJpbmcgKilt
ZXNzYWdlOwordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpzZXRSZW1vdGVEZWJ1Z2dp
bmdBbGxvd2VkKGJvb2wgYWxsb3dlZCkKK3sKKyAgICBpZiAobV9hbGxvd2VkID09IGFsbG93ZWQp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fYWxsb3dlZCA9IGFsbG93ZWQ7CisKKyAgICB1cGRh
dGUoKTsKK30KKworUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6aW5mbygpIGNvbnN0Cit7CisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm8gaW5mbzsKKyAgICBpbmZvLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyKCk7CisgICAgaW5m
by50eXBlID0gdHlwZSgpOworICAgIGluZm8ubmFtZSA9IG5hbWUoKTsKKyAgICBpbmZvLnVybCA9
IHVybCgpOworICAgIGluZm8uaGFzTG9jYWxEZWJ1Z2dlciA9IGhhc0xvY2FsRGVidWdnZXIoKTsK
KyAgICBpbmZvLnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQgPSByZW1vdGVEZWJ1Z2dpbmdBbGxvd2Vk
KCk7CisgICAgcmV0dXJuIGluZm87Cit9CiAKLS8vIE1lc3NhZ2VzIHRvIHRoZSBDaGFubmVsLgot
LSAodm9pZClzZW5kTWVzc2FnZVRvQmFja2VuZDooTlNTdHJpbmcgKiltZXNzYWdlOworfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCiAKLUBlbmQKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45MDI3NGFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5o
CkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpZm5kZWYgUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZV9oCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVfaAor
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworCitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CitzdHJ1Y3QgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUluZm87CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUgeworcHVibGljOgorICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUo
KTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCk7CisKKyAgICB2b2lk
IGluaXQoKTsKKyAgICB2b2lkIHVwZGF0ZSgpOworCisgICAgdW5zaWduZWQgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0SWRlbnRpZmllcih1
bnNpZ25lZCBpZGVudGlmaWVyKSB7IG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KKworICAg
IGJvb2wgcmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZDsg
fQorICAgIHZvaWQgc2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChib29sKTsKKworICAgIFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIGluZm8oKSBjb25zdDsKKworICAgIGVudW0gRGVidWdn
YWJsZVR5cGUgeyBKYXZhU2NyaXB0LCBXZWIgfTsKKyAgICB2aXJ0dWFsIERlYnVnZ2FibGVUeXBl
IHR5cGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIFN0cmluZygpOyB9IC8vIEphdmFTY3JpcHQgYW5kIFdlYgorICAgIHZpcnR1YWwgU3RyaW5n
IHVybCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8vIFdlYgorICAgIHZpcnR1YWwgYm9v
bCBoYXNMb2NhbERlYnVnZ2VyKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGNvbm5l
Y3QoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNj
b25uZWN0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dEluZGljYXRpbmcoYm9vbCkgeyB9IC8vIERlZmF1bHQgaXMgdG8gZG8gbm90aGluZy4KKworcHJp
dmF0ZToKKyAgICB1bnNpZ25lZCBtX2lkZW50aWZpZXI7CisgICAgYm9vbCBtX2FsbG93ZWQ7Cit9
OworCitzdHJ1Y3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8geworICAgIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVJbmZvKCkKKyAgICAgICAgOiBpZGVudGlmaWVyKDApCisgICAgICAg
ICwgdHlwZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpKYXZhU2NyaXB0KQorICAgICAgICAs
IGhhc0xvY2FsRGVidWdnZXIoZmFsc2UpCisgICAgICAgICwgcmVtb3RlRGVidWdnaW5nQWxsb3dl
ZChmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgdW5zaWduZWQgaWRlbnRpZmllcjsKKyAgICBS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpEZWJ1Z2dhYmxlVHlwZSB0eXBlOworICAgIFN0cmlu
ZyBuYW1lOworICAgIFN0cmluZyB1cmw7CisgICAgYm9vbCBoYXNMb2NhbERlYnVnZ2VyOworICAg
IGJvb2wgcmVtb3RlRGVidWdnaW5nQWxsb3dlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgorCisjZW5kaWYgLy8gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZV9oCisKKyNlbmRpZiAv
LyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmMyNGQ4ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCkBAIC0w
LDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb25faAorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbl9oCisKKyNpbXBvcnQgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2lt
cG9ydCAiUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oIgorI2ltcG9ydCA8ZGlzcGF0Y2gvZGlz
cGF0Y2guaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9UaHJlYWRp
bmcuaD4KKyNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCitPQkpDX0NMQVNT
IE5TU3RyaW5nOworCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24gRklOQUwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+LCBwdWJsaWMgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbihSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiwgTlNTdHJpbmcgKmNvbm5lY3Rp
b25JZGVudGlmaWVyLCBOU1N0cmluZyAqZGVzdGluYXRpb24sIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGU6OkRlYnVnZ2FibGVUeXBlKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlQ29ubmVjdGlvbigpOworCisgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKCkgY29uc3Q7
CisgICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CisgICAgdW5zaWdu
ZWQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgYm9v
bCBzZXR1cCgpOworCisgICAgdm9pZCBjbG9zZSgpOworICAgIHZvaWQgY2xvc2VGcm9tRGVidWdn
YWJsZSgpOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChOU1N0cmluZyAqKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIE9WRVJS
SURFOworCitwcml2YXRlOgorICAgIHZvaWQgZGlzcGF0Y2hTeW5jT25EZWJ1Z2dhYmxlKHZvaWQg
KF5ibG9jaykoKSk7CisgICAgdm9pZCBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5i
bG9jaykoKSk7CisKKyAgICAvLyBUaGlzIGNvbm5lY3Rpb24gZnJvbSB0aGUgUmVtb3RlSW5zcGVj
dG9yIHNpbmdsZXRvbiB0byB0aGUgRGVidWdnYWJsZQorICAgIC8vIGNhbiBiZSB1c2VkIG9uIG11
bHRpcGxlIHRocmVhZHMuIFNvIGFueSBhY2Nlc3MgdG8gdGhlIGRlYnVnZ2FibGUKKyAgICAvLyBp
dHNlbGYgbXVzdCB0YWtlIHRoaXMgbG9jayB0byBlbnN1cmUgbV9kZWJ1Z2dhYmxlIGlzIHZhbGlk
LgorICAgIE11dGV4IG1fZGVidWdnYWJsZUxvY2s7CisKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlKiBtX2RlYnVnZ2FibGU7CisgICAgZGlzcGF0Y2hfcXVldWVfdCBtX3F1ZXVlRm9yRGVi
dWdnYWJsZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fY29ubmVjdGlvbklkZW50aWZpZXI7
CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2Rlc3RpbmF0aW9uOworICAgIHVuc2lnbmVkIG1f
aWRlbnRpZmllcjsKKyAgICBib29sIG1fY29ubmVjdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCisKKyNlbmRpZiAvLyBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bl9oCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNWZmZmVhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVD
b25uZWN0aW9uLm1tCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCisKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3Rvci5oIgorCisjaWYgUExBVEZPUk0oSU9T
KQorI2ltcG9ydCA8d3RmL2lvcy9XZWJDb3JlVGhyZWFkLmg+CisjZW5kaWYKKworbmFtZXNwYWNl
IEluc3BlY3RvciB7CisKK1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbihSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
KiBkZWJ1Z2dhYmxlLCBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIsIE5TU3RyaW5nICpk
ZXN0aW5hdGlvbiwgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUgdHlw
ZSkKKyAgICA6IG1fZGVidWdnYWJsZShkZWJ1Z2dhYmxlKQorICAgICwgbV9xdWV1ZUZvckRlYnVn
Z2FibGUoTlVMTCkKKyAgICAsIG1fY29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvbklkZW50
aWZpZXIpCisgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgICwgbV9pZGVudGlm
aWVyKGRlYnVnZ2FibGUtPmlkZW50aWZpZXIoKSkKKyAgICAsIG1fY29ubmVjdGVkKGZhbHNlKQor
eworICAgIC8vIFdlYiBkZWJ1Z2dhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIG9uIHRoZSBtYWluIHF1
ZXVlIChvciB0aGUgV2ViVGhyZWFkIG9uIGlPUykuIFNpZ25hbCB0aGF0IHdpdGggYSBOVUxMIG1f
cXVldWVGb3JEZWJ1Z2dhYmxlLgorICAgIC8vIEhvd2V2ZXIsIEphdmFTY3JpcHQgZGVidWdnYWJs
ZXMgY2FuIGJlIGFjY2Vzc2VkIGZyb20gYW55IHRocmVhZC9xdWV1ZSwgc28gd2UgY3JlYXRlIGEg
cXVldWUgZm9yIGVhY2ggSmF2YVNjcmlwdCBkZWJ1Z2dhYmxlLgorICAgIGlmICh0eXBlID09IFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkphdmFTY3JpcHQpCisgICAgICAgIG1fcXVldWVGb3JE
ZWJ1Z2dhYmxlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuSmF2YVNjcmlwdENv
cmUucmVtb3RlLWluc3BlY3Rvci14cGMtY29ubmVjdGlvbiIsIERJU1BBVENIX1FVRVVFX1NFUklB
TCk7Cit9CisKK1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjp+UmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oKQoreworICAgIGlmIChtX3F1ZXVlRm9yRGVidWdn
YWJsZSkgeworICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fcXVldWVGb3JEZWJ1Z2dhYmxlKTsK
KyAgICAgICAgbV9xdWV1ZUZvckRlYnVnZ2FibGUgPSBOVUxMOworICAgIH0KK30KKworTlNTdHJp
bmcgKlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpkZXN0aW5hdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFtbbV9kZXN0aW5hdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07Cit9
CisKK05TU3RyaW5nICpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y29ubmVj
dGlvbklkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBbW21fY29ubmVjdGlvbklkZW50
aWZpZXIgY29weV0gYXV0b3JlbGVhc2VdOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNPbkRlYnVnZ2FibGUodm9pZCAoXmJsb2NrKSgp
KQoreworICAgIGlmIChtX3F1ZXVlRm9yRGVidWdnYWJsZSkKKyAgICAgICAgZGlzcGF0Y2hfc3lu
YyhtX3F1ZXVlRm9yRGVidWdnYWJsZSwgYmxvY2spOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBl
bHNlIGlmIChXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJc0Vu
YWJsZWQoKSkKKyAgICAgICAgV2ViQ29yZVdlYlRocmVhZFJ1blN5bmMoYmxvY2spOworI2VuZGlm
CisgICAgZWxzZQorICAgICAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIGJsb2NrKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hBc3luY09uRGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpCit7CisgICAgaWYg
KG1fcXVldWVGb3JEZWJ1Z2dhYmxlKQorICAgICAgICBkaXNwYXRjaF9hc3luYyhtX3F1ZXVlRm9y
RGVidWdnYWJsZSwgYmxvY2spOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBlbHNlIGlmIChXZWJD
b3JlV2ViVGhyZWFkSXNFbmFibGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQoKSkKKyAg
ICAgICAgV2ViQ29yZVdlYlRocmVhZFJ1bihibG9jayk7CisjZW5kaWYKKyAgICBlbHNlCisgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKK30K
KworYm9vbCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXAoKQorewor
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2FibGVMb2NrKTsKKworICAgIGlmICghbV9k
ZWJ1Z2dhYmxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkaXNwYXRjaFN5bmNPbkRl
YnVnZ2FibGUoXnsKKyAgICAgICAgaWYgKCFtX2RlYnVnZ2FibGUtPnJlbW90ZURlYnVnZ2luZ0Fs
bG93ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobV9kZWJ1Z2dhYmxl
LT5oYXNMb2NhbERlYnVnZ2VyKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9k
ZWJ1Z2dhYmxlLT5jb25uZWN0KHRoaXMpOworICAgICAgICBtX2Nvbm5lY3RlZCA9IHRydWU7Cisg
ICAgfSk7CisKKyAgICByZXR1cm4gbV9jb25uZWN0ZWQ7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmNsb3NlRnJvbURlYnVnZ2FibGUoKQoreworICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2FibGVMb2NrKTsKKworICAgIG1fZGVidWdnYWJsZSA9
IG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246
OmNsb3NlKCkKK3sKKyAgICByZWYoKTsKKyAgICBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKF57
CisgICAgICAgIHsKKyAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2FibGVM
b2NrKTsKKworICAgICAgICAgICAgaWYgKG1fZGVidWdnYWJsZSkgeworICAgICAgICAgICAgICAg
IGlmIChtX2Nvbm5lY3RlZCkKKyAgICAgICAgICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlLT5kaXNj
b25uZWN0KCk7CisKKyAgICAgICAgICAgICAgICBtX2RlYnVnZ2FibGUgPSBudWxscHRyOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGRlcmVmKCk7CisgICAgfSk7Cit9CisKK3Zv
aWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNlbmRNZXNzYWdlVG9CYWNr
ZW5kKE5TU3RyaW5nICptZXNzYWdlKQoreworICAgIHJlZigpOworICAgIGRpc3BhdGNoQXN5bmNP
bkRlYnVnZ2FibGUoXnsKKyAgICAgICAgeworICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fZGVidWdnYWJsZUxvY2spOworCisgICAgICAgICAgICBpZiAobV9kZWJ1Z2dhYmxlKQorICAg
ICAgICAgICAgICAgIG1fZGVidWdnYWJsZS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250
ZW5kKG1lc3NhZ2UpOworICAgICAgICB9CisgICAgICAgIGRlcmVmKCk7CisgICAgfSk7Cit9CisK
K2Jvb2wgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNlbmRNZXNzYWdlVG9G
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpz
aGFyZWQoKS5zZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoaWRlbnRpZmllcigpLCBtZXNzYWdl
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKwor
I2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLmgKc2ltaWxhcml0eSBpbmRleCA1MCUKY29weSBmcm9tIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oCmNvcHkgdG8g
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5oCmluZGV4IDNmOTQ0ZWMuLjBiZjM2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsMzIgKzIzLDQ5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQorCisjaWZuZGVmIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25faAorI2RlZmluZSBSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uX2gKKworI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2gu
aD4KKyNpbXBvcnQgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2ltcG9ydCA8eHBjL3hwYy5oPgogCi1A
Y2xhc3MgV2ViSW5zcGVjdG9yWFBDV3JhcHBlcjsKLQotQHByb3RvY29sIFdlYkluc3BlY3RvclhQ
Q1dyYXBwZXJEZWxlZ2F0ZSA8TlNPYmplY3Q+Ci0tICh2b2lkKXhwY0Nvbm5lY3Rpb246KFdlYklu
c3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uIHJlY2VpdmVkTWVzc2FnZTooTlNTdHJpbmcg
KiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87Ci0tICh2b2lk
KXhwY0Nvbm5lY3Rpb25GYWlsZWQ6KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9u
OwotQG9wdGlvbmFsCi0tICh2b2lkKXhwY0Nvbm5lY3Rpb246KFdlYkluc3BlY3RvclhQQ1dyYXBw
ZXIgKiljb25uZWN0aW9uIHVuaGFuZGxlZE1lc3NhZ2U6KHhwY19vYmplY3RfdCltZXNzYWdlOwot
QGVuZAotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgOiBOU09iamVjdAotewot
ICAgIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKLSAgICB4
cGNfY29ubmVjdGlvbl90IF9jb25uZWN0aW9uOwotICAgIE5TU3RyaW5nICpfdGFnOwotfQotCi0t
IChXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopaW5pdFdpdGhDb25uZWN0aW9uOih4cGNfY29ubmVj
dGlvbl90KWNvbm5lY3Rpb247Ci0tICh2b2lkKWNsb3NlOwotLSAodm9pZClzZW5kTWVzc2FnZToo
TlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87
Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFw
cGVyRGVsZWdhdGU+IGRlbGVnYXRlOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSB4
cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb247Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEJPT0wgYXZhaWxhYmxlOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5n
ICp0YWc7Ci0KLUBlbmQKK09CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpDX0NMQVNTIE5TRGljdGlv
bmFyeTsKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24pOworCitwdWJsaWM6CisgICAgY2xhc3MgQ2xpZW50IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgeHBj
Q29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwg
TlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24qKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uVW5oYW5k
bGVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgeHBjX29iamVjdF90KSA9
IDA7CisgICAgfTsKKworICAgIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oeHBjX2Nvbm5l
Y3Rpb25fdCwgQ2xpZW50Kik7CisgICAgdmlydHVhbCB+UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbigpOworCisgICAgdm9pZCBjbG9zZSgpOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoTlNTdHJp
bmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKworcHJpdmF0ZToKKyAg
ICBOU0RpY3Rpb25hcnkgKmRlc2VyaWFsaXplTWVzc2FnZSh4cGNfb2JqZWN0X3QpOworICAgIHZv
aWQgaGFuZGxlRXZlbnQoeHBjX29iamVjdF90KTsKKworICAgIHhwY19jb25uZWN0aW9uX3QgbV9j
b25uZWN0aW9uOworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9xdWV1ZTsKKyAgICBDbGllbnQqIG1f
Y2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uX2gKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQxNjk5OAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0KQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisKKyNpZiBfX2hhc19pbmNsdWRlKDxDb3JlRm91bmRhdGlvbi9DRlhQQ0JyaWRn
ZS5oPikKKyNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGWFBDQnJpZGdlLmg+CisjZWxzZQorZXh0
ZXJuICJDIiB4cGNfb2JqZWN0X3QgX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdChD
RlR5cGVSZWYpOworZXh0ZXJuICJDIiBDRlR5cGVSZWYgX0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9t
WFBDTWVzc2FnZSh4cGNfb2JqZWN0X3QpOworI2VuZGlmCisKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworCisvLyBDb25zdGFudHMgcHJpdmF0ZSB0byB0aGlzIGZpbGUgZm9yIG1lc3NhZ2Ugc2VyaWFs
aXphdGlvbiBvbiBib3RoIGVuZHMuCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b25NZXNzYWdlTmFtZUtleSBAIm1lc3NhZ2VOYW1lIgorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uVXNlckluZm9LZXkgQCJ1c2VySW5mbyIKKyNkZWZpbmUgUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5ICJtc2dEYXRhIgorCitSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKHhwY19j
b25uZWN0aW9uX3QgY29ubmVjdGlvbiwgQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2Nvbm5lY3Rp
b24oY29ubmVjdGlvbikKKyAgICAsIG1fcXVldWUoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20u
YXBwbGUuSmF2YVNjcmlwdENvcmUucmVtb3RlLWluc3BlY3Rvci14cGMtY29ubmVjdGlvbiIsIERJ
U1BBVENIX1FVRVVFX1NFUklBTCkpCisgICAgLCBtX2NsaWVudChjbGllbnQpCit7CisgICAgeHBj
X3JldGFpbihtX2Nvbm5lY3Rpb24pOworICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVl
dWUobV9jb25uZWN0aW9uLCBtX3F1ZXVlKTsKKyAgICBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uKiB3ZWFrVGhpcyA9IHRoaXM7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRs
ZXIobV9jb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKKyAgICAgICAgd2Vha1Ro
aXMtPmhhbmRsZUV2ZW50KG9iamVjdCk7CisgICAgfSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fcmVz
dW1lKG1fY29ubmVjdGlvbik7Cit9CisKK1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246On5S
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50KTsK
KyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB4cGNfY29ubmVjdGlvbl9jYW5jZWwobV9jb25uZWN0aW9uKTsKKyAgICB4
cGNfcmVsZWFzZShtX2Nvbm5lY3Rpb24pOworICAgIG1fY29ubmVjdGlvbiA9IE5VTEw7CisKKyAg
ICBkaXNwYXRjaF9yZWxlYXNlKG1fcXVldWUpOworICAgIG1fcXVldWUgPSBOVUxMOworCisgICAg
bV9jbGllbnQgPSBudWxscHRyOworfQorCitOU0RpY3Rpb25hcnkgKlJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSh4cGNfb2JqZWN0X3Qgb2JqZWN0KQorewor
ICAgIGlmICh4cGNfZ2V0X3R5cGUob2JqZWN0KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgeHBjX29iamVjdF90IHhwY0RpY3Rpb25hcnkgPSB4cGNf
ZGljdGlvbmFyeV9nZXRfdmFsdWUob2JqZWN0LCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
U2VyaWFsaXplZE1lc3NhZ2VLZXkpOworICAgIGlmICgheHBjRGljdGlvbmFyeSB8fCB4cGNfZ2V0
X3R5cGUoeHBjRGljdGlvbmFyeSkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkgeworICAgICAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+eHBjQ29ubmVjdGlvblVuaGFuZGxl
ZE1lc3NhZ2UodGhpcywgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAg
ICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxOU0RpY3Rpb25hcnkgKj4o
X0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4cGNEaWN0aW9uYXJ5KSk7CisgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShkaWN0aW9uYXJ5LCAiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHhw
YyBtZXNzYWdlIik7CisgICAgcmV0dXJuIFtkaWN0aW9uYXJ5IGF1dG9yZWxlYXNlXTsKK30KKwor
dm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0
X3Qgb2JqZWN0KQoreworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoeHBjX2dldF90eXBlKG9iamVjdCkgPT0gWFBDX1RZUEVfRVJST1IpIHsKKyAgICAg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPnhwY0Nvbm5lY3Rpb25GYWls
ZWQodGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBOU0RpY3Rpb25hcnkgKmRh
dGFEaWN0aW9uYXJ5ID0gZGVzZXJpYWxpemVNZXNzYWdlKG9iamVjdCk7CisgICAgaWYgKCFkYXRh
RGljdGlvbmFyeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBb
ZGF0YURpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25N
ZXNzYWdlTmFtZUtleV07CisgICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtkYXRhRGljdGlv
bmFyeSBvYmplY3RGb3JLZXk6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5
XTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT54cGNDb25uZWN0aW9uUmVj
ZWl2ZWRNZXNzYWdlKHRoaXMsIG1lc3NhZ2UsIHVzZXJJbmZvKTsKK30KKwordm9pZCBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShOU1N0cmluZyAqbWVzc2FnZU5hbWUs
IE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbTlNN
dXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptZXNzYWdlTmFtZSBmb3JLZXk6
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1lc3NhZ2VOYW1lS2V5XTsKKyAgICBpZiAodXNl
ckluZm8pCisgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp1c2VySW5mbyBmb3JLZXk6UmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5XTsKKworICAgIHhwY19vYmplY3Rf
dCB4cGNEaWN0aW9uYXJ5ID0gX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoQ0ZE
aWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoeHBjRGlj
dGlvbmFyeSAmJiB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgPT0gWFBDX1RZUEVfRElDVElP
TkFSWSwgIlVuYWJsZSB0byBzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKKyAgICBpZiAoIXhwY0Rp
Y3Rpb25hcnkpCisgICAgICAgIHJldHVybjsKKworICAgIHhwY19vYmplY3RfdCBtc2cgPSB4cGNf
ZGljdGlvbmFyeV9jcmVhdGUoTlVMTCwgTlVMTCwgMCk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0
X3ZhbHVlKG1zZywgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdl
S2V5LCB4cGNEaWN0aW9uYXJ5KTsKKyAgICB4cGNfcmVsZWFzZSh4cGNEaWN0aW9uYXJ5KTsKKwor
ICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShtX2Nvbm5lY3Rpb24sIG1zZyk7CisKKyAg
ICB4cGNfcmVsZWFzZShtc2cpOworfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2Vu
ZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGJhM2Q0MjIuLmIzMzdhN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTEyNSw2ICsxMjUsMTEgQEAKICNpbmNsdWRlICJKU1Byb21pc2VSZXNvbHZlclByb3RvdHlw
ZS5oIgogI2VuZGlmIC8vIEVOQUJMRShQUk9NSVNFUykKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIgorI2luY2x1ZGUg
IlJlbW90ZUluc3BlY3Rvci5oIgorI2VuZGlmCisKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5s
dXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xODcsNiArMTkyLDEyIEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OmluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSkKIAogICAgIG1fZGVidWdnZXIgPSAw
OwogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dh
YmxlID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsK
KyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPmluaXQoKTsKKyAgICBtX2luc3BlY3RvckRlYnVn
Z2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQodHJ1ZSk7CisjZW5kaWYKKwogICAgIHJl
c2V0KHByb3RvdHlwZSgpKTsKIH0KIApAQCAtNzYwLDQgKzc3MSwzMSBAQCBVbmxpbmtlZEV2YWxD
b2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSog
Y2FsbEZyYW1lLAogICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsKIH0KIAordm9pZCBKU0ds
b2JhbE9iamVjdDo6c2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit7Cisj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5z
ZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKGVuYWJsZWQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oZW5hYmxlZCk7CisjZW5kaWYKK30KKworYm9vbCBKU0dsb2JhbE9iamVjdDo6cmVtb3RlRGVi
dWdnaW5nRW5hYmxlZCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisg
ICAgcmV0dXJuIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+cmVtb3RlRGVidWdnaW5nQWxsb3dlZCgp
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBKU0dsb2JhbE9i
amVjdDo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgbV9uYW1lID0gbmFtZTsK
KworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIG1faW5zcGVjdG9yRGVidWdnYWJs
ZS0+dXBkYXRlKCk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA0YmQ3NDQ2Li40
NGM5MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKQEAgLTU4LDYgKzU4LDcgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3Mg
RnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBHbG9iYWxDb2Rl
QmxvY2s7CitjbGFzcyBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU7CiBjbGFzcyBKU1Byb21pc2VQ
cm90b3R5cGU7CiBjbGFzcyBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZTsKIGNsYXNzIEpTU3Rh
Y2s7CkBAIC0yMjksOCArMjMwLDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAgCiAgICAgdm9pZCog
bV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6VGFibGVTaXplXTsgLy8gU3BlY2lhbCBwb2ludGVy
cyB1c2VkIGJ5IHRoZSBMTEludCBhbmQgSklULgogCisgICAgU3RyaW5nIG1fbmFtZTsKKwogICAg
IERlYnVnZ2VyKiBtX2RlYnVnZ2VyOwogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisg
ICAgc3RkOjp1bmlxdWVfcHRyPEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZT4gbV9pbnNwZWN0b3JE
ZWJ1Z2dhYmxlOworI2VuZGlmCisKICAgICBSZWZQdHI8V2F0Y2hwb2ludFNldD4gbV9tYXNxdWVy
YWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludDsKICAgICBSZWZQdHI8V2F0Y2hwb2ludFNldD4gbV9o
YXZpbmdBQmFkVGltZVdhdGNocG9pbnQ7CiAgICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fdmFy
SW5qZWN0aW9uV2F0Y2hwb2ludDsKQEAgLTQyMCw2ICs0MjcsMTIgQEAgcHVibGljOgogICAgIFN0
cnVjdHVyZSogcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZS5nZXQoKTsgfQogI2VuZGlmIC8vIEVO
QUJMRShQUk9NSVNFUykKIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UmVtb3RlRGVi
dWdnaW5nRW5hYmxlZChib29sKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHJlbW90ZURl
YnVnZ2luZ0VuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcm
KTsKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKwog
ICAgIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUqIGFycmF5QnVmZmVyUHJvdG90eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9hcnJheUJ1ZmZlclByb3RvdHlwZS5nZXQoKTsgfQogCiAjZGVmaW5lIERFRklO
RV9BQ0NFU1NPUlNfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Bl
ck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKc2lt
aWxhcml0eSBpbmRleCA1MyUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVj
dG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKaW5kZXggM2Y5
NDRlYy4uYjI4ZjMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L3JlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzIgKzIzLDQ5IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2lt
cG9ydCA8eHBjL3hwYy5oPgorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZS5oIgogCi1AY2xhc3MgV2ViSW5zcGVjdG9yWFBDV3JhcHBlcjsKKyNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotQHByb3RvY29sIFdlYkluc3BlY3RvclhQQ1dy
YXBwZXJEZWxlZ2F0ZSA8TlNPYmplY3Q+Ci0tICh2b2lkKXhwY0Nvbm5lY3Rpb246KFdlYkluc3Bl
Y3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uIHJlY2VpdmVkTWVzc2FnZTooTlNTdHJpbmcgKilt
ZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87Ci0tICh2b2lkKXhw
Y0Nvbm5lY3Rpb25GYWlsZWQ6KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uOwot
QG9wdGlvbmFsCi0tICh2b2lkKXhwY0Nvbm5lY3Rpb246KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIg
Kiljb25uZWN0aW9uIHVuaGFuZGxlZE1lc3NhZ2U6KHhwY19vYmplY3RfdCltZXNzYWdlOwotQGVu
ZAorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9yLmgiCiAKLUBpbnRlcmZhY2Ug
V2ViSW5zcGVjdG9yWFBDV3JhcHBlciA6IE5TT2JqZWN0Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCituYW1lc3BhY2UgSlNDIHsKKworSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpKU0ds
b2JhbE9iamVjdERlYnVnZ2FibGUoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKKyAgICA6
IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKIHsKLSAgICBpZCA8V2ViSW5zcGVjdG9yWFBD
V3JhcHBlckRlbGVnYXRlPiBfZGVsZWdhdGU7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fdCBfY29ubmVj
dGlvbjsKLSAgICBOU1N0cmluZyAqX3RhZzsKIH0KIAotLSAoV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ciAqKWluaXRXaXRoQ29ubmVjdGlvbjooeHBjX2Nvbm5lY3Rpb25fdCljb25uZWN0aW9uOwotLSAo
dm9pZCljbG9zZTsKLS0gKHZvaWQpc2VuZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUg
dXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOworU3RyaW5nIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgU3RyaW5nIG5hbWUgPSBtX2dsb2JhbE9i
amVjdC5uYW1lKCk7CisgICAgcmV0dXJuIG5hbWUuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJK
U0NvbnRleHQiKSA6IG5hbWU7Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpj
b25uZWN0KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopCit7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudC4KKyAgICAvLyBDcmVhdGUgYW4gSW5zcGVjdG9yQ29udHJvbGxlciwgSW5zcGVjdG9yRnJv
bnRlbmQsIEluc3BlY3RvckJhY2tlbmQsIGFuZCBBZ2VudHMuCisgICAgLy8gIkluc3BlY3RvckNv
bnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCIuCit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlOjpkaXNjb25uZWN0KCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIC8v
ICJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQiLgorfQorCit2b2lkIEpT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5k
KGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICAvLyAiSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kIgorfQogCi1AcHJv
cGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpZCA8V2ViSW5zcGVjdG9yWFBDV3JhcHBlckRlbGVn
YXRlPiBkZWxlZ2F0ZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgeHBjX2Nvbm5l
Y3Rpb25fdCBjb25uZWN0aW9uOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09M
IGF2YWlsYWJsZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqdGFnOwor
fSAvLyBuYW1lc3BhY2UgSlNDCiAKLUBlbmQKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUv
V2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oCnNpbWlsYXJpdHkgaW5kZXggNTMlCnJlbmFt
ZSBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
Q2xpZW50UmVnaXN0cnkuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgKaW5kZXggZWE1YjJlMy4uNmYyZDllZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JD
bGllbnRSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMywyOSArMjMsMzkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpZm5kZWYgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
X2gKKyNkZWZpbmUgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlX2gKIAotY2xhc3MgV2ViSW5zcGVj
dG9yQ2xpZW50OworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi1AcHJvdG9jb2wgV2Vi
SW5zcGVjdG9yQ2xpZW50UmVnaXN0cnlEZWxlZ2F0ZQotLSAodm9pZClkaWRSZWdpc3RlckNsaWVu
dDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQ7Ci0tICh2b2lkKWRpZFVucmVnaXN0ZXJDbGll
bnQ6KFdlYkluc3BlY3RvckNsaWVudCopY2xpZW50OwotQGVuZAorI2luY2x1ZGUgIlJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAotQGlu
dGVyZmFjZSBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSA6IE5TT2JqZWN0IHsKLUBwcml2YXRl
Ci0gICAgdW5zaWduZWQgX25leHRBdmFpbGFibGVQYWdlSWQ7Ci0gICAgSGFzaE1hcDx1bnNpZ25l
ZCwgV2ViSW5zcGVjdG9yQ2xpZW50Kj4gX3BhZ2VDbGllbnRNYXA7Ci0gICAgaWQgPFdlYkluc3Bl
Y3RvckNsaWVudFJlZ2lzdHJ5RGVsZWdhdGU+IF9kZWxlZ2F0ZTsKLX0KK25hbWVzcGFjZSBKU0Mg
ewogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpZCA8V2ViSW5zcGVjdG9yQ2xpZW50
UmVnaXN0cnlEZWxlZ2F0ZT4gZGVsZWdhdGU7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKIAotKyAo
V2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgKilzaGFyZWRSZWdpc3RyeTsKK2NsYXNzIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZSBGSU5BTCA6IHB1YmxpYyBJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZSk7CitwdWJsaWM6CisgICAgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlKEpTR2xv
YmFsT2JqZWN0Jik7CisgICAgfkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZSgpIHsgfQogCi0tICh2
b2lkKXJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudDsKLS0gKHZvaWQp
dW5yZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQ7Ci0tIChXZWJJbnNw
ZWN0b3JDbGllbnQqKWNsaWVudEZvclBhZ2VJZDoodW5zaWduZWQpcGFnZUlkOwotLSAoTlNEaWN0
aW9uYXJ5ICopaW5zcGVjdGFibGVXZWJWaWV3czsKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUgdHlwZSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6SmF2YVNj
cmlwdDsgfQogCi1AZW5kCisgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCBoYXNMb2NhbERlYnVnZ2VyKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nv
bm5lY3QoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJl
bW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7CisKK3ByaXZhdGU6
CisgICAgSlNHbG9iYWxPYmplY3QmIG1fZ2xvYmFsT2JqZWN0OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2VuZGlmIC8v
ICFkZWZpbmVkKEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAxZDQ4NDBiLi44ZTA3
MWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUg
SW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0
Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0
NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgICog
d3RmL2lvcy9XZWJDb3JlVGhyZWFkLmNwcDoKKyAgICAgICAgKiB3dGYvaW9zL1dlYkNvcmVUaHJl
YWQuaDoKKyAgICAgICAgRXhwb3NlIFdlYlRocmVhZFJ1bi9XZWJUaHJlYWRSdW5TeW5jIGlPUyBt
ZXRob2RzIGRlZmluZWQgaW4gV2ViQ29yZSB0aHJvdWdoCisgICAgICAgIFdURiBzbyB0aGF0IEph
dmFTY3JpcHRDb3JlIGNhbiB1c2UgaXQuIEFub3RoZXIgc3VjaCBtZXRob2QgYWxyZWFkeSBleGlz
dGVkLgorCiAyMDEzLTEyLTAyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBCdWlsZCBmYWlsdXJlIHdoZW4gZGlzYWJsaW5nIEpJVCwgWUFSUl9KSVQsIGFuZCBBU1NF
TUJMRVIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5jcHAKaW5kZXggNDI3NDQ2Ni4uZjA3
ZGMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvaW9zL1dlYkNvcmVUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmNwcApAQCAtMjgsNCArMjgsNyBA
QAogCiAjaWYgVVNFKFdFQl9USFJFQUQpCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCAoKldlYkNv
cmVXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQpKHZvaWQpOworV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKSh2b2lkKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSB2b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1bikodm9pZCAoXmJsb2NrKSgpKTsKK1dURl9F
WFBPUlRfUFJJVkFURSB2b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1blN5bmMpKHZvaWQgKF5ibG9j
aykoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhy
ZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5oCmluZGV4IDEwZTI2YTcu
LjgxOWNlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmgK
KysrIGIvU291cmNlL1dURi93dGYvaW9zL1dlYkNvcmVUaHJlYWQuaApAQCAtMzMsNiArMzMsOSBA
QCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiBleHRlcm4gYm9vbCAoKldlYkNvcmVXZWJUaHJlYWRJ
c0xvY2tlZE9yRGlzYWJsZWQpKHZvaWQpOworZXh0ZXJuIGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFk
SXNFbmFibGVkKSh2b2lkKTsKK2V4dGVybiB2b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1bikodm9p
ZCAoXmJsb2NrKSgpKTsKK2V4dGVybiB2b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1blN5bmMpKHZv
aWQgKF5ibG9jaykoKSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU1
NzdmMTEuLmFhNDQ4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2OSBAQAogMjAxMy0xMi0wMyAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2Vt
ZW50IGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0
Y2hlci4KKworICAgICAgICBNYWtlIGEgV2ViQ29yZTo6UGFnZSBhICJXZWIiIFJlbW90ZSBEZWJ1
Z2dhYmxlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICBEaXNhYmxlIEphdmFTY3JpcHQgY29udGV4dCBpbnNwZWN0aW9uIG9uIEpTR2xvYmFs
T2JqZWN0cyBpbnNpZGUgV2ViQ29yZTo6UGFnZSdzLgorCisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6cmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0
UmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVtb3Rl
SW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgor
ICAgICAgICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1
Z2dhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6UGFn
ZURlYnVnZ2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6Om5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OnVybCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlRGVidWdnYWJsZTo6aGFzTG9jYWxEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlRGVidWdnYWJsZTo6Y29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJs
ZTo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6ZGlzcGF0
Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1
Z2dhYmxlOjpzZXRJbmRpY2F0aW5nKToKKyAgICAgICAgTWFrZSBhIHBhZ2UgYSAiV2ViIiBkZWJ1
Z2dhYmxlLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIE1pc2MuCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnQ6OmluZGljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudDo6aGlkZUluZGljYXRlKToKKyAgICAgICAgRm9yd2FyZCBpbmRpY2F0ZSBtZXRob2Rz
IHRvIFdlYktpdCBjbGllbnRzLgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKyAgICAgICAg
UHVzaCB1cGRhdGVzIHdoZW4gcmVtb3RlIGRlYnVnZ2FibGUgaW5mb3JtYXRpb24gbGlrZSB0aGUg
UGFnZSdzCisgICAgICAgIFVSTCBvciB0aXRsZSBjaGFuZ2UuCisKKyAgICAgICAgKiBGb3J3YXJk
aW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaDoKKyAgICAgICAgUmUtZXhwb3J0IElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIGFzIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbAorICAgICAgICB0byBhdm9pZCBuZWVkbGVzc2x5IHVwZGF0aW5nIGNvZGUg
YWxsIG92ZXIgdGhlIHBsYWNlLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3JTdHJpbmdzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJB
Z2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgVXBkYXRlIGlu
Y2x1ZGUgbmFtZXMuCisKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKToKKyAg
ICAgICAgTWFrZSB0aGUgIkluc3BlY3QgRWxlbWVudCIgY29udGV4dCBtZW51IHdvcmsgY29ycmVj
dGx5IHdoZW4gdGhlcmUgaXMgYQorICAgICAgICByZW1vdGUgaW5zcGVjdG9yIGluc3RlYWQgb2Yg
YSBsb2NhbCBpbnNwZWN0b3IuCisKKzIwMTMtMTItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgbWlzc2luZyBmb2xk
ZXJzIGFuZCBmaWxlcyB0byBYY29kZSBwcm9qZWN0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ4MDIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
IGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhM2Fl
MjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKQEAgLTAsMCArMSw0IEBACisjaWZu
ZGVmIFdlYkNvcmVfRldEX0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oCisjZGVmaW5lIFdlYkNv
cmVfRldEX0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbF9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IDg0ZWU5NTAuLjYxZTM2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtMzgxMCw3ICszODEwLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggXAorCVNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5nLmggXAogCVNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCAyYjhhNTQ4Li45MTZlMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpA
QCAtMjgwNiw2ICsyODA2LDcgQEAgX19aTjdXZWJDb3JlMzNRTFByZXZpZXdHZXRTdXBwb3J0ZWRN
SU1FVHlwZXNTZXRFdgogI2VuZGlmCiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKK19f
Wk43V2ViQ29yZTRQYWdlMjZzZXRSZW1vdGVJbnNwZWN0aW9uQWxsb3dlZEViCiBfX1pON1dlYkNv
cmUxOUluc3BlY3RvckNvbnRyb2xsZXIyN2Rpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZEVSS04z
V1RGNlN0cmluZ0UKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagppbmRleCBmODJiODg3Li43ZTcyM2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTIwOTQzLDcgKzIwOTQz
LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JET01B
Z2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGb3J3YXJkaW5nLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggMzc3NTJj
Ny4uZDg0NjRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjY1LDYgKzI2NSw5IEBACiAgICAgPEZpbHRl
ciBJbmNsdWRlPSJGb3J3YXJkaW5nSGVhZGVyc1xoZWFwIj4KICAgICAgIDxVbmlxdWVJZGVudGlm
aWVyPns4MmJhOWJiNC1lYWEwLTQ5NzMtOWJiMy1hMjc2NjdhMWMxNjd9PC9VbmlxdWVJZGVudGlm
aWVyPgogICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iRm9yd2FyZGluZ0hlYWRl
cnNcaW5zcGVjdG9yIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsxMzJiYWRlMi0wYWFiLTYy
NzQtMGFkZmYtYWU4YWVkNWFlZDR9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgog
ICAgIDxGaWx0ZXIgSW5jbHVkZT0iaGlzdG9yeSI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57
NmYzOWRlZGYtMmQzYS00MTRlLTgzZmUtN2JmNjRmOTExY2ZifTwvVW5pcXVlSWRlbnRpZmllcj4K
ICAgICA8L0ZpbHRlcj4KQEAgLTEyMjI1LDYgKzEyMjI4LDkgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGhlYXBcU3Ryb25nLmgiPgogICAgICAgPEZpbHRl
cj5Gb3J3YXJkaW5nSGVhZGVyc1xoZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVj
dG9yRm9yd2FyZGluZy5oIj4KKyAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVj
dG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxoaXN0b3J5XEJhY2tGb3J3YXJkQ2xpZW50LmgiPgogICAgICAgPEZpbHRlcj5oaXN0b3J5PC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMjQyOSw3ICsxMjQzNSw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmgi
PgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRm9y
d2FyZGluZy5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQuaCI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggY2EyY2VmYi4uODExNjRlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODg1LDcgKzg4NSw3
IEBACiAJCTIwOUI0NTZCMTY3OTZBN0UwMEU1NEU0RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMDlCNDU2QTE2Nzk2
QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20uY3BwICovOyB9OwogCQkyMEQ2MjkyNjEyNTM2
OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0
MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwICovOyB9OwogCQkyMEQ2MjkyNzEyNTM2
OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi87IH07Ci0JCTIyNzc3NzYwMTM0NURFQTkw
MDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkyMjc3Nzc2MDEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9y
Rm9yd2FyZGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjI3Nzc3NUYxMzQ1REVBOTAwOEVBNDU1IC8qIEluc3BlY3RvckZvcndhcmRpbmcuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyMjhDMjg0NTEw
RDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjhDMjg0NDEwRDgyNTAwMDA5RDBEMEUgLyogU2Ny
aXB0V3JhcHBhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMjI5MkIyN0MxMzU2NjY5NDAwQ0YxMUVGIC8qIEltYWdlQnVmZmVyRGF0YUNHLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyOTJCMjdC
MTM1NjY2OTQwMENGMTFFRiAvKiBJbWFnZUJ1ZmZlckRhdGFDRy5jcHAgKi87IH07CiAJCTIyQkQ5
RjdGMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyQkQ5RjdEMTM1MzYyNUMwMDlCRDEwMiAv
KiBJbWFnZUJ1ZmZlckRhdGEuaCAqLzsgfTsKQEAgLTM1MjMsNiArMzUyMyw4IEBACiAJCUE1NTZD
Mjg5MTgzMjA2QTgwMDhDQjcyMCAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU2QzI4NzE4MzIwNkE4MDA4
Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1NzMyQjBBMTM2QTE2MUQwMDVDOEQ3QyAvKiBE
YXRlQ29tcG9uZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTczMkIwODEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwICov
OyB9OwogCQlBNTczMkIwQjEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzMyQjA5MTM2QTE2
MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oICovOyB9OworCQlBNUEyQUYwQjE4Mjk3MzQz
MDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1
Z2dhYmxlLmNwcCAqLzsgfTsKKwkJQTVBMkFGMEMxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1
Z2dhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NUEyQUYwQTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCAqLzsgfTsKIAkJQTVB
QkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQkI3ODYxM0I5MDRC
QzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovOyB9OwogCQlBNUFDNEFF
RjE4MzM2OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQzRBRUQxODMzNjk3
NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJQTVB
QzRBRjAxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFDNEFFRTE4MzM2
OTc1MDA3MTE0RTAgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzUwNiw3ICs3NTA4LDcgQEAK
IAkJMjA5QjQ1NkExNjc5NkE3RTAwRTU0RTRFIC8qIEpTQ3J5cHRvQ3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3J5cHRvQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjBENjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyMjc3Nzc1RjEzNDVERUE5
MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyMjc3Nzc1RjEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRm9y
d2FyZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGb3J3
YXJkaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyOEMyODQ0MTBEODI1MDAw
MDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0V3JhcHBhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIy
OTJCMjdCMTM1NjY2OTQwMENGMTFFRiAvKiBJbWFnZUJ1ZmZlckRhdGFDRy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckRhdGFDRy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyQkQ5RjdEMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFn
ZUJ1ZmZlckRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZm
ZXJEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDMzMyw2ICsxMDMzNSw4
IEBACiAJCUE1OTNDRjczMTg0MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9y
LnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5M0NGNzQxODQwMkQ0QjAwQkZDRTI3IC8qIENvZGVH
ZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gQ29kZUdlbmVy
YXRvckluc3BlY3RvclN0cmluZ3MucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
OTNDRjc1MTg0MDJENEIwMEJGQ0UyNyAvKiBjb21iaW5lLWphdmFzY3JpcHQtcmVzb3VyY2VzLnBs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucGVybDsgcGF0aCA9ICJjb21iaW5lLWphdmFzY3JpcHQtcmVzb3VyY2VzLnBsIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBh
Z2VEZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
Z2VEZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVBMkFGMEEx
ODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUJyZWFrSXRlcmF0b3JQb29s
SUNVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUM0QUVEMTgzMzY5NzUwMDcx
MTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUM0QUVFMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTQ1MDEsNyArMTQ1MDUsNyBAQAogCQkJCTUwNEFBQ0NDMTgzNDQ1NTkwMEUzRDlCQyAv
KiBJbnNwZWN0b3JOb2RlRmluZGVyLmggKi8sCiAJCQkJN0E3NEVDQjgxMDE4MzlBNTAwQkY5MzlF
IC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgKi8sCiAJCQkJN0E3NEVDQjkxMDE4MzlB
NjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oICovLAotCQkJCTIyNzc3NzVG
MTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLywKKwkJCQky
Mjc3Nzc1RjEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRm9yd2FyZGluZy5oICovLAogCQkJ
CUYzNDRDNzEyMTEyNUI4MkMwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICov
LAogCQkJCUYzNDRDNzU3MTEyOTRGRjYwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmNwcCAqLywKIAkJCQlGMzQ0Qzc1MjExMjk0RDlEMDBGMjZFRUUgLyogSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5oICovLApAQCAtMTU3MDcsNiArMTU3MTEsOCBAQAogCQkJCUNE
MDgyODVCMTc1NzI1MDgwMEVDNUZCNyAvKiBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oICov
LAogCQkJCURBQUNCM0Q5MTZGMjQxNjQwMDY2NjEzNSAvKiBQYWdlQ29uc29sZS5jcHAgKi8sCiAJ
CQkJREFBQ0IzREExNkYyNDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25zb2xlLmggKi8sCisJCQkJQTVB
MkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCAqLywKKwkJCQlBNUEy
QUYwQTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCAqLywKIAkJCQk5MzAyQjBC
QzBENzlGODI5MDBDN0VFODMgLyogUGFnZUdyb3VwLmNwcCAqLywKIAkJCQk5MzAyQjBCRTBENzlG
ODJDMDBDN0VFODMgLyogUGFnZUdyb3VwLmggKi8sCiAJCQkJN0E2NzRCRDkwRjlFQkY0RTAwNkNG
MDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5jcHAgKi8sCkBAIC0yMzA2NCw2ICsyMzA3MCw3
IEBACiAJCQkJRDAwMEVCQTMxMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNo
aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEQ1OEVCQjE3QjhGMTI4MDBDQkRDQTggLyogRWxl
bWVudFRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCNzdBMzgwQURENzkyNTAwRUE0
QjgxIC8qIEZyYW1lTG9hZGVyVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1QTJBRjBDMTgy
OTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU4
NDM2ODYwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTYyOEQyMTRFMTIxMzFFRjQwMDU1RENGQyAvKiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTcyQUY3MDE4MEYyODk1MDBGQkFEQjkgLyogQ3J5cHRv
S2V5VXNhZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjMzNTIsNyArMjMzNTksNyBAQAogCQkJCTdB
NzRFQ0JCMTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3MDU4NTM0MTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tD
b25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc4REEyMEUxNTIwRUI4QzAwNjE0MUMx
IC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAqLywKLQkJCQkyMjc3Nzc2MDEzNDVE
RUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyMjc3Nzc2MDEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRm9yd2FyZGluZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjM0NEM3MTQxMTI1QjgyQzAwRjI2RUVFIC8qIEluc3BlY3RvckZy
b250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzQ0Qzc1MzExMjk0RDlEMDBGMjZF
RUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0EwRTc3MEYxMEMwMEE4ODAwQTAyNzZFIC8qIEluc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yNzgwMCw2ICsyNzgwNyw3IEBACiAJCQkJQjJBRkZDN0YwRDAwQTVDMTAw
MzAwNzREIC8qIFNpbXBsZUZvbnREYXRhTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzVBMUVB
N0MxNTJCQ0YwNDAwNEQwMEI2IC8qIFNpbXBsaWZ5TWFya3VwQ29tbWFuZC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRDAwRDdBNDE0QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBNUEyQUYwQjE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVn
Z2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzMjdENjExMUEzM0EyQjAwNEY5RDY1IC8q
IFNpbmtEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFDQzBFRjg2RDQ3MDA5
RDBDQUYgLyogU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
MTUwRjlGMjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IDJjYzk1YjEuLjI3YmQ3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTU2LDEyICs1NiwyMCBAQCB2b2lk
IEpTRE9NR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKworI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIHNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQo
ZmFsc2UpOworI2VuZGlmCiB9CiAKIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNPYmplY3QqIHRoaXNWYWx1ZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSwgdGhpc1ZhbHVlKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisKKyNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVk
KGZhbHNlKTsKKyNlbmRpZgogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU0RPTUdsb2Jh
bE9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkK
aW5kZXggYmQxOGJmMi4uNDFlMzM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weQpAQCAtMTc5LDcgKzE3
OSw3IEBAIGJhY2tlbmRfY3BwID0gKAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0y
MDAsNyArMjAwLDcgQEAgZnJvbnRlbmRfY3BwID0gKAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmQuaCIKIAotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1
ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCmluZGV4IGE4
M2YyNDIuLmJmYTRjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50
LmgKaW5kZXggNzBhMTljOS4uNDRlN2VhMTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNsaWVudC5oCkBAIC01Miw2ICs1Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgaGlnaGxpZ2h0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkg
PSAwOwogCisgICAgdmlydHVhbCB2b2lkIGluZGljYXRlKCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGhpZGVJbmRpY2F0aW9uKCkgeyB9CisKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2xlYXJCcm93c2Vy
Q2FjaGUoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhckJyb3dzZXJD
YWNoZSgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5DbGVhckJyb3dzZXJDb29raWVzKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcAppbmRleCBiZGI4ZTE3Li5lMjNmZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC04NCw2ICs4NCw5IEBA
IEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5z
cGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAsIG1faW5z
cGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKICAgICAsIG1faXNVbmRlclRlc3QoZmFsc2Up
CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgLCBtX2hhc1JlbW90ZUZyb250ZW5k
KGZhbHNlKQorI2VuZGlmCiB7CiAgICAgT3duUHRyPEluc3BlY3RvckFnZW50PiBpbnNwZWN0b3JB
Z2VudFB0cihJbnNwZWN0b3JBZ2VudDo6Y3JlYXRlKHBhZ2UsIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmdldCgpLCBtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKTsKICAgICBtX2luc3BlY3Rv
ckFnZW50ID0gaW5zcGVjdG9yQWdlbnRQdHIuZ2V0KCk7CkBAIC0xNDgsNyArMTUxLDYgQEAgSW5z
cGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0
b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBtX2FnZW50cy5hcHBlbmQocHJvZmlsZXJBZ2VudFB0
ci5yZWxlYXNlKCkpOwogCiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckhlYXBQcm9maWxl
ckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci5nZXQoKSkpOwotCiAjZW5kaWYKIAogICAgIG1fYWdlbnRzLmFwcGVuZChJbnNw
ZWN0b3JXb3JrZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpOwpA
QCAtMjAzLDYgKzIwNSwyNCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KFBhc3NPd25QdHI8SW5zcGVjdG9yRnJvbnRlbgogICAgIG1faW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQgPSBpbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIH0KIAorYm9vbCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29uc3QKK3sKKyNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICByZXR1cm4gaGFzRnJvbnRlbmQoKSAmJiAhbV9oYXNS
ZW1vdGVGcm9udGVuZDsKKyNlbHNlCisgICAgcmV0dXJuIGhhc0Zyb250ZW5kKCk7CisjZW5kaWYK
K30KKworYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0
Cit7CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgcmV0dXJuIG1faGFzUmVtb3Rl
RnJvbnRlbmQ7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBib29sIElu
c3BlY3RvckNvbnRyb2xsZXI6Omhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsKQEAgLTIzMyw2ICsyNTMsMTEg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW4KIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6cmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQo
KSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKTsKKwor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlmICghbV9oYXNSZW1vdGVGcm9udGVu
ZCkKKyAgICAgICAgbV9wYWdlLT5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgp
OworI2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250
ZW5kKCkKQEAgLTI1MCwxMCArMjc1LDE3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlz
Y29ubmVjdEZyb250ZW5kKCkKICAgICBtX292ZXJsYXktPmZyZWVQYWdlKCk7CiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZERlbGV0ZWQoKTsKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnVucmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5nZXQoKSk7CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBpZiAo
IW1faGFzUmVtb3RlRnJvbnRlbmQpCisgICAgICAgIG1fcGFnZS0+cmVtb3RlSW5zcGVjdG9ySW5m
b3JtYXRpb25EaWRDaGFuZ2UoKTsKKyNlbmRpZgogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OnNob3coKQogeworICAgIEFTU0VSVCghaGFzUmVtb3RlRnJvbnRlbmQoKSk7CisKICAgICBp
ZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMTAsNyArMzQyLDggQEAgdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0KE5vZGUqIG5vZGUpCiAgICAgaWYgKCFlbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNob3coKTsKKyAgICBpZiAoIWhhc1JlbW90
ZUZyb250ZW5kKCkpCisgICAgICAgIHNob3coKTsKIAogICAgIG1fZG9tQWdlbnQtPmluc3BlY3Qo
bm9kZSk7CiB9CkBAIC0zNDcsNiArMzgwLDE1IEBAIE5vZGUqIEluc3BlY3RvckNvbnRyb2xsZXI6
OmhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fb3ZlcmxheS0+aGlnaGxpZ2h0
ZWROb2RlKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0SW5kaWNhdGluZyhi
b29sIGluZGljYXRpbmcpCit7CisgICAgLy8gRklYTUU6IEZvciBub24taU9TIGNsaWVudHMsIHdl
IHNob3VsZCBoYXZlIEluc3BlY3Rvck92ZXJsYXkgZG8gc29tZXRoaW5nIGhlcmUuCisgICAgaWYg
KGluZGljYXRpbmcpCisgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5pbmRpY2F0ZSgpOworICAg
IGVsc2UKKyAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmhpZGVJbmRpY2F0aW9uKCk7Cit9CisK
ICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxl
cjo6cHJvZmlsZXJFbmFibGVkKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGRjMDk5ZmYuLmE2ZTJkN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtOTEsMTYg
KzkxLDI2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKKyAgICBib29sIGhhc0Zyb250ZW5kKCkgY29uc3Qg
eyByZXR1cm4gISFtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsgfQorICAgIGJvb2wgaGFzTG9j
YWxGcm9udGVuZCgpIGNvbnN0OworICAgIGJvb2wgaGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdDsK
KwogICAgIHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOwog
ICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKCk7CiAgICAgdm9pZCBzZXRQcm9jZXNzSWQobG9u
Zyk7CiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICB2b2lkIHNldEhhc1JlbW90
ZUZyb250ZW5kKGJvb2wgaGFzUmVtb3RlKSB7IG1faGFzUmVtb3RlRnJvbnRlbmQgPSBoYXNSZW1v
dGU7IH0KKyNlbmRpZgorCiAgICAgdm9pZCBpbnNwZWN0KE5vZGUqKTsKICAgICB2b2lkIGRyYXdI
aWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAgICAgdm9pZCBnZXRIaWdobGlnaHQo
SGlnaGxpZ2h0KikgY29uc3Q7CiAgICAgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CiAgICAgTm9kZSog
aGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldEluZGljYXRpbmcoYm9vbCk7
CisKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIaWdobGln
aHRlZE5vZGUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNVbmRlclRlc3QoKTsKQEAgLTE1MSw2ICsx
NjEsMTAgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50
OwogICAgIEluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAgYm9vbCBtX2lzVW5k
ZXJUZXN0OworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgYm9vbCBtX2hhc1Jl
bW90ZUZyb250ZW5kOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5nLmgKc2ltaWxhcml0eSBp
bmRleCA2MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90
ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5nLmgKaW5kZXggYzMyMGZkZS4uZjYwNjU5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0
b3JSZW1vdGVDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZvcndhcmRpbmcuaApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTAsMTAgKzExLDEwIEBACiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgogICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgogICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCiAgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKQEAgLTIzLDIwICsyNCwxMyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1jbGFzcyBX
ZWJJbnNwZWN0b3JDbGllbnQ7Ci1AY2xhc3MgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb247CisjaWZuZGVmIEluc3BlY3RvckZvcndhcmRpbmdfaAorI2RlZmluZSBJbnNwZWN0b3JG
b3J3YXJkaW5nX2gKIAotQGludGVyZmFjZSBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsIDogTlNP
YmplY3QgewotQHByaXZhdGUKLSAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlv
biAqX3JlbW90ZTsKLSAgICBXZWJJbnNwZWN0b3JDbGllbnQqIF9sb2NhbDsKKyNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCA6IHB1YmxpYyBJbnNwZWN0b3I6Oklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7IH07CiB9CiAKLSsgKFdlYkluc3BlY3RvclJlbW90ZUNo
YW5uZWwgKiljcmVhdGVDaGFubmVsRm9yUGFnZUlkOih1bnNpZ25lZClwYWdlSWQgY29ubmVjdGlv
bjooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKiljb25uZWN0aW9uOwotCi0t
ICh2b2lkKWNsb3NlRnJvbUxvY2FsU2lkZTsKLS0gKHZvaWQpY2xvc2VGcm9tUmVtb3RlU2lkZTsK
LS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2U7Ci0tICh2
b2lkKXNlbmRNZXNzYWdlVG9CYWNrZW5kOihOU1N0cmluZyAqKW1lc3NhZ2U7Ci0KLUBlbmQKKyNl
bmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JGb3J3YXJkaW5nX2gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAppbmRleCA2OGNhZGFiLi4z
MjgwMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29y
a2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5jcHAKQEAgLTM0LDggKzM0LDggQEAKIAogI2luY2x1ZGUgIkluc3BlY3Rvcldvcmtl
ckFnZW50LmgiCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCiAjaW5jbHVkZSAiVVJMLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYzI5NGZlNC4uZWYy
MzAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMzksOCArMzksOCBAQAogI2luY2x1ZGUgIkluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZvcndh
cmRpbmcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckhlYXBQcm9maWxlckFn
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CmluZGV4IGFmZTY2M2UuLmFiMWFmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcApAQCAtMzMxOSw2ICszMzE5LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZVRp
dGxlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgIG1fY2xpZW50LnNldE1haW5GcmFt
ZURvY3VtZW50UmVhZHkodHJ1ZSk7IC8vIHVwZGF0ZSBvYnNlcnZlcnMgd2l0aCBuZXcgRE9NRG9j
dW1lbnQKICAgICAgICAgbV9jbGllbnQuZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUobG9hZGVyLT50
aXRsZSgpKTsKICAgICB9CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBpZiAo
bV9mcmFtZS5pc01haW5GcmFtZSgpKQorICAgICAgICBtX2ZyYW1lLnBhZ2UoKS0+cmVtb3RlSW5z
cGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsKKyNlbmRpZgogfQogCiB2b2lkIEZyYW1lTG9h
ZGVyOjpkaWRDaGFuZ2VJY29ucyhJY29uVHlwZSB0eXBlKQpAQCAtMzM0MCw5ICszMzQ1LDEyIEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiAKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWQoJm1fZnJhbWUsIG1fZG9jdW1lbnRMb2Fk
ZXIuZ2V0KCkpOwogCi0gICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKKyAgICBpZiAobV9m
cmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5mZWF0dXJlT2Jz
ZXJ2ZXIoKS0+ZGlkQ29tbWl0TG9hZCgpOwotCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CisgICAgICAgIG1fZnJhbWUucGFnZSgpLT5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENo
YW5nZSgpOworI2VuZGlmCisgICAgfQogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjp0ZWxsQ2xpZW50
QWJvdXRQYXN0TWVtb3J5Q2FjaGVMb2FkcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggYzdhM2NkMi4uYTVlYTE4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtODkyLDcgKzg5Miw3
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAjZW5kaWYgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiAoZnJhbWUtPnBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5oYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIHx8IGZyYW1lLT5w
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aGFzUmVtb3RlRnJvbnRlbmQoKSkpKSB7CiAj
ZW5kaWYKIAogICAgICAgICAgICAgICAgIC8vIEluIEdUSysgdW5hdmFpbGFibGUgaXRlbXMgYXJl
IG5vdCBoaWRkZW4gYnV0IGluc2Vuc2l0aXZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOGQ5Mjk5
Ny4uYWU3MjAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVk
ZSAiUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIK
ICNpbmNsdWRlICJQYWdlQ29uc29sZS5oIgorI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dhYmxlLmgiCiAj
aW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgogI2luY2x1
ZGUgIlBsdWdJbkNsaWVudC5oIgpAQCAtMTg2LDYgKzE4Nyw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNs
aWVudHMmIHBhZ2VDbGllbnRzKQogICAgICwgbV9zY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQo
ZmFsc2UpCiAgICAgLCBtX3BhZ2VUaHJvdHRsZXIoc3RkOjptYWtlX3VuaXF1ZTxQYWdlVGhyb3R0
bGVyPigqdGhpcykpCiAgICAgLCBtX2NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29s
ZT4oKnRoaXMpKQorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgICwgbV9pbnNwZWN0
b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKKyNl
bmRpZgogICAgICwgbV9sYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVzQ291bnQoMCkgLy8g
Tk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMgZm9yIFNwYXRpYWwgTmF2aWdhdGlvbiB0
ZXN0aW5nLgogICAgICwgbV9mcmFtZXNIYW5kbGluZ0JlZm9yZVVubG9hZEV2ZW50KDApCiB7CkBA
IC0yMDMsNiArMjA3LDEwIEBAIFBhZ2U6OlBhZ2UoUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQog
I2lmbmRlZiBOREVCVUcKICAgICBwYWdlQ291bnRlci5pbmNyZW1lbnQoKTsKICNlbmRpZgorCisj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5p
bml0KCk7CisjZW5kaWYKIH0KIAogUGFnZTo6flBhZ2UoKQpAQCAtMTI5MSw2ICsxMjk5LDIzIEBA
IHZvaWQgUGFnZTo6YWRkRm9vdGVyV2l0aEhlaWdodChpbnQgZm9vdGVySGVpZ2h0KQogfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKK2Jvb2wgUGFnZTo6cmVtb3RlSW5z
cGVjdGlvbkFsbG93ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2luc3BlY3RvckRlYnVnZ2Fi
bGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKTsKK30KKwordm9pZCBQYWdlOjpzZXRSZW1vdGVJ
bnNwZWN0aW9uQWxsb3dlZChib29sIGFsbG93ZWQpCit7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dh
YmxlLT5zZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKGFsbG93ZWQpOworfQorCit2b2lkIFBhZ2U6
OnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCkgY29uc3QKK3sKKyAgICBtX2lu
c3BlY3RvckRlYnVnZ2FibGUtPnVwZGF0ZSgpOworfQorI2VuZGlmCisKIHZvaWQgUGFnZTo6YWRk
TGF5b3V0TWlsZXN0b25lcyhMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCiB7CiAgICAgLy8g
SW4gdGhlIGZ1dHVyZSwgd2UgbWF5IHdhbnQgYSBmdW5jdGlvbiB0aGF0IHJlcGxhY2VzIG1fbGF5
b3V0TWlsZXN0b25lcyBpbnN0ZWFkIG9mIGp1c3QgYWRkaW5nIHRvIGl0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApp
bmRleCBiNjc4Mzg4Li43MjM0MzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtODAsNiArODAsNyBAQCBj
bGFzcyBNZWRpYUNhblN0YXJ0TGlzdGVuZXI7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZUFjdGl2
aXR5QXNzZXJ0aW9uVG9rZW47CiBjbGFzcyBQYWdlQ29uc29sZTsKK2NsYXNzIFBhZ2VEZWJ1Z2dh
YmxlOwogY2xhc3MgUGFnZUdyb3VwOwogY2xhc3MgUGFnZVRocm90dGxlcjsKIGNsYXNzIFBsdWdJ
bkNsaWVudDsKQEAgLTE3OCw2ICsxNzksMTIgQEAgcHVibGljOgogICAgIHZvaWQgZGVjcmVtZW50
U3ViZnJhbWVDb3VudCgpIHsgQVNTRVJUKG1fc3ViZnJhbWVDb3VudCk7IC0tbV9zdWJmcmFtZUNv
dW50OyB9CiAgICAgaW50IHN1YmZyYW1lQ291bnQoKSBjb25zdCB7IGNoZWNrU3ViZnJhbWVDb3Vu
dENvbnNpc3RlbmN5KCk7IHJldHVybiBtX3N1YmZyYW1lQ291bnQ7IH0KIAorI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQorICAgIGJvb2wgcmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQoKSBjb25z
dDsKKyAgICB2b2lkIHNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKGJvb2wpOworICAgIHZvaWQg
cmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKSBjb25zdDsKKyNlbmRpZgorCiAg
ICAgQ2hyb21lJiBjaHJvbWUoKSBjb25zdCB7IHJldHVybiAqbV9jaHJvbWU7IH0KICAgICBEcmFn
Q2FyZXRDb250cm9sbGVyJiBkcmFnQ2FyZXRDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1f
ZHJhZ0NhcmV0Q29udHJvbGxlcjsgfQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC01MzIs
NiArNTM5LDEwIEBAIHByaXZhdGU6CiAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFBhZ2VUaHJv
dHRsZXI+IG1fcGFnZVRocm90dGxlcjsKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUNv
bnNvbGU+IG1fY29uc29sZTsKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGNv
bnN0IHN0ZDo6dW5pcXVlX3B0cjxQYWdlRGVidWdnYWJsZT4gbV9pbnNwZWN0b3JEZWJ1Z2dhYmxl
OworI2VuZGlmCisKICAgICBIYXNoU2V0PFN0cmluZz4gbV9zZWVuUGx1Z2luczsKICAgICBIYXNo
U2V0PFN0cmluZz4gbV9zZWVuTWVkaWFFbmdpbmVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURl
YnVnZ2FibGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1YjY5ZTUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNw
cApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dhYmxlLmgi
CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZv
cndhcmRpbmcuaCIKKyNpbmNsdWRlICJNYWluRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFn
ZURlYnVnZ2FibGU6OlBhZ2VEZWJ1Z2dhYmxlKFBhZ2UmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFn
ZSkKK3sKK30KKworU3RyaW5nIFBhZ2VEZWJ1Z2dhYmxlOjpuYW1lKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisKKyAgICByZXR1cm4gbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCktPnRpdGxlKCk7
Cit9CisKK1N0cmluZyBQYWdlRGVidWdnYWJsZTo6dXJsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
cGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisK
KyAgICBTdHJpbmcgdXJsID0gbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCktPnVybCgpLnN0
cmluZygpOworICAgIHJldHVybiB1cmwuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJhYm91dDpi
bGFuayIpIDogdXJsOworfQorCitib29sIFBhZ2VEZWJ1Z2dhYmxlOjpoYXNMb2NhbERlYnVnZ2Vy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aGFz
TG9jYWxGcm9udGVuZCgpOworfQorCit2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBjaGFubmVsKQoreworICAgIEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBtX3BhZ2UuaW5zcGVjdG9yQ29udHJv
bGxlcigpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPnNldEhhc1JlbW90ZUZyb250ZW5kKHRy
dWUpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmNvbm5lY3RGcm9udGVuZChyZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCo+KGNoYW5uZWwpKTsKK30K
Kwordm9pZCBQYWdlRGVidWdnYWJsZTo6ZGlzY29ubmVjdCgpCit7CisgICAgSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVy
KCk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+ZGlzY29ubmVjdEZyb250ZW5kKCk7CisgICAg
aW5zcGVjdG9yQ29udHJvbGxlci0+c2V0SGFzUmVtb3RlRnJvbnRlbmQoZmFsc2UpOworfQorCit2
b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKK30KKwordm9pZCBQYWdlRGVi
dWdnYWJsZTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpCit7CisgICAgbV9wYWdlLmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0SW5kaWNhdGluZyhpbmRpY2F0aW5nKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oCnNpbWlsYXJpdHkgaW5kZXggNTQlCnJlbmFtZSBmcm9t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZURlYnVnZ2FibGUuaAppbmRleCBmOGJmNWU4Li4zZDhlY2MwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZURlYnVnZ2FibGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjMsMjYgKzIzLDQxIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLUBjbGFzcyBX
ZWJJbnNwZWN0b3JTZXJ2ZXI7Ci1AY2xhc3MgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb247Ci1AY2xhc3MgV2ViSW5zcGVjdG9yWFBDV3JhcHBlcjsKKyNpZm5kZWYgUGFnZURlYnVn
Z2FibGVfaAorI2RlZmluZSBQYWdlRGVidWdnYWJsZV9oCiAKLUBpbnRlcmZhY2UgV2ViSW5zcGVj
dG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyIDogTlNPYmplY3QgewotQHByaXZh
dGUKLSAgICBXZWJJbnNwZWN0b3JTZXJ2ZXIgKl9zZXJ2ZXI7IC8vIHdlYWssIHRoZSBzZXJ2ZXIg
c2hvdWxkIG5ldmVyIGRlYWxsb2NhdGUuCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX29wZW5D
b25uZWN0aW9uczsKLSAgICBCT09MIF9oYXNTY2hlZHVsZWRQdXNoOwotfQorI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQogCi0tIChpZClpbml0V2l0aFNlcnZlcjooV2ViSW5zcGVjdG9yU2Vy
dmVyICopc2VydmVyOworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAotLSAodm9pZCljbG9z
ZUFsbENvbm5lY3Rpb25zOworbmFtZXNwYWNlIFdlYkNvcmUgewogCi0tICh2b2lkKXB1c2hMaXN0
aW5nOwotLSAodm9pZClyZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNl
ckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOworY2xhc3MgUGFnZTsKIAotLSAodm9pZClj
b25uZWN0aW9uQ2xvc2luZzooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKilj
b25uZWN0aW9uOworY2xhc3MgUGFnZURlYnVnZ2FibGUgRklOQUwgOiBwdWJsaWMgSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQ
YWdlRGVidWdnYWJsZSk7CitwdWJsaWM6CisgICAgUGFnZURlYnVnZ2FibGUoUGFnZSYpOworICAg
IH5QYWdlRGVidWdnYWJsZSgpIHsgfQogCi0tICh2b2lkKXNlbmRNZXNzYWdlVG9Gcm9udGVuZDoo
TlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87
CisgICAgdmlydHVhbCBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkRlYnVn
Z2FibGVUeXBlIHR5cGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGU6OldlYjsgfQogCi1AZW5kCisgICAgdmlydHVhbCBTdHJpbmcg
bmFtZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHVybCgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNMb2NhbERlYnVnZ2VyKCkgY29uc3QgT1ZFUlJJ
REU7CisKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bmRpY2F0aW5nKGJvb2wpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIFBhZ2UmIG1fcGFnZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorCisjZW5kaWYgLy8gIWRlZmluZWQoUGFnZURlYnVnZ2FibGVfaCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjYTk5NjlkLi5jN2ViYzk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01OSw3ICs1OSw3IEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckNvdW50ZXJzLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGQ5MTQxOWQuLjhmYTE0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTIt
MDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFu
YWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAxMy0xMi0wMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbV2luXSBXZWJLaXQubWFrZSBNYWtlZmlsZSBkb2Vzbid0IGNvcHkgcmVzb3VyY2UgYnVu
ZGxlIHRvIERTVFJPT1QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGNkN2Y1ZjIuLjk0MjVjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzc4LDI0ICszNzgsMTEgQEAKIAkJ
QTEwQzFEOEQxODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZpZXdQbGFjZWhvbGRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwQzFEODgxODIwMzA1
RTAwMzY4ODNBIC8qIFdlYlBERlZpZXdQbGFjZWhvbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExMEMxRDhFMTgyMDMwNUUwMDM2ODgzQSAv
KiBXZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTBDMUQ4OTE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld1Bs
YWNlaG9sZGVyLm1tICovOyB9OwogCQlBMTdBMTFCMTE4MERDODQ4MDBFNTQ5OEMgLyogV2ViUGx1
Z2luUGFja2FnZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExN0ExMUIwMTgwREM4NDgwMEU1NDk4QyAvKiBXZWJQbHVnaW5QYWNrYWdlUHJp
dmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CUE1MjE0RkM3MTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTIxNEZDMTEz
Qjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oICovOyB9OwotCQlB
NTIxNEZDODEzQjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MjE0RkMyMTNC
OTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tICovOyB9OwotCQlB
NTIyMDlGODEzQzUzRTc1MDA0QkE3QjEgLyogV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUyMjA5Rjcx
M0M1M0U3NTAwNEJBN0IxIC8qIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNTVFMjBGRjE0RDcy
NjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVF
MjBGRDE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b25Db250cm9sbGVyLmggKi87IH07Ci0JCUE1NUUyMTAwMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJ
bnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVFMjBGRTE0RDcyNjRDMDAzMTU0
OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tICov
OyB9OwogCQlBNTYwOTQ2NjE0RDhBRDI2MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVMYXllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU2MDk0NjQxNEQ4
QUQyNjAwNzk5QThBIC8qIFdlYkluZGljYXRlTGF5ZXIuaCAqLzsgfTsKIAkJQTU2MDk0NjcxNEQ4
QUQyNjAwNzk5QThBIC8qIFdlYkluZGljYXRlTGF5ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTYwOTQ2NTE0RDhBRDI2MDA3OTlBOEEgLyogV2Vi
SW5kaWNhdGVMYXllci5tbSAqLzsgfTsKIAkJQTU2ODdCREExMzVCNzkxQTAwNzRDQkNCIC8qIFdl
Yk5vZGVIaWdobGlnaHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU2ODdCRDgxMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5o
ICovOyB9OwogCQlBNTY4N0JEQjEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU2ODdC
RDkxMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5tbSAqLzsgfTsKLQkJQTU3
QzI4QTcxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdD
MjhBMTEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24uaCAqLzsgfTsKLQkJQTU3QzI4QTgxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNl
cnZlcldlYlZpZXdDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU3QzI4QTIxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNl
cnZlcldlYlZpZXdDb25uZWN0aW9uLm1tICovOyB9OwotCQlBNTdDMjhBOTEzQkFBNUFEMDA3MEFD
QUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhBMzEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9y
U2VydmVyLmggKi87IH07Ci0JCUE1N0MyOEFBMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0
b3JTZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTdDMjhBNDEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tICovOyB9
OwotCQlBNTdDMjhBQjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QzI4QTUx
M0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNTdDMjhBQzEzQkFBNUFEMDA3
MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QzI4QTYxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYklu
c3BlY3RvclhQQ1dyYXBwZXIubSAqLzsgfTsKIAkJQTU3RTJGMjQxMjA3NDlFNjAwMDQ4REYzIC8q
IFdlYlF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU3RTJGMjIxMjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3RhTWFuYWdlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1N0VCNzhG
MTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RUI3OEQxM0I5N0E0RTAw
OEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggKi87IH07Ci0JCUE1N0VCNzkw
MTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0VCNzhFMTNCOTdBNEUw
MDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSAqLzsgfTsKIAkJQTU4QTU3
OTkxNDNFNzI3MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNThBNTc5NzE0M0U3Mjcw
MDAxMjVGNTAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLzsgfTsKIAkJQTU4QTU3
OUExNDNFNzI3MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4QTU3OTgxNDNFNzI3
MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tICovOyB9OwogCQlBNURF
RkMwQTExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURFRkMwNzExRDUzMzFDMDA4ODUy
NzMgLyogV2ViU2VjdXJpdHlPcmlnaW4ubW0gKi87IH07CkBAIC03NzgsMjQgKzc2NSwxMSBAQAog
CQlBMTBDMUQ4OTE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUERGVmlld1BsYWNlaG9s
ZGVyLm1tOyBwYXRoID0gaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUExMEMxRDhGMTgyMDMwN0QwMDM2ODgzQSAvKiBX
ZWJLaXQuaU9TLmV4cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuZXhwb3J0czsgbmFtZSA9IFdlYktp
dC5pT1MuZXhwOyBwYXRoID0gaW9zL1dlYktpdC5pT1MuZXhwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTdBMTFCMDE4MERDODQ4MDBFNTQ5OEMgLyogV2ViUGx1Z2luUGFja2FnZVBy
aXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGx1Z2luUGFja2Fn
ZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUyMTRGQzExM0I5NzVD
ODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oOyBwYXRoID0gcmVt
b3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQTUyMTRGQzIxM0I5NzVDODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5u
ZWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0
b3JSZW1vdGVDaGFubmVsLm1tOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5u
ZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MjIwOUY3MTNDNTNFNzUwMDRC
QTdCMSAvKiBXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaDsgcGF0aCA9IHJl
bW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUE1NUUyMEZEMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJX
ZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmg7IHBh
dGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NUUyMEZFMTRENzI2NEMwMDMxNTQ5
RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXJX
ZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9y
U2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTYwOTQ2NDE0RDhBRDI2MDA3OTlBOEEgLyogV2ViSW5kaWNhdGVMYXllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbmRpY2F0ZUxheWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NjA5NDY1MTREOEFEMjYwMDc5OUE4QSAvKiBX
ZWJJbmRpY2F0ZUxheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViSW5kaWNhdGVMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU2
ODdCRDgxMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb2RlSGlnaGxpZ2h0ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTU2ODdCRDkxMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdo
bGlnaHRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk5v
ZGVIaWdobGlnaHRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTEx
M0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uLmg7IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nv
bm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTIxM0JBQTVB
RDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb24ubW07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0MyOEEzMTNC
QUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yU2VydmVyLmg7IHBhdGggPSByZW1vdGUvV2ViSW5z
cGVjdG9yU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0MyOEE0MTNC
QUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXIubW07IHBhdGggPSByZW1v
dGUvV2ViSW5zcGVjdG9yU2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlB
NTdDMjhBNTEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmg7IHBh
dGggPSByZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlBNTdDMjhBNjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3Jh
cHBlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IG5hbWUgPSBXZWJJbnNwZWN0b3JY
UENXcmFwcGVyLm07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTdFMkYyMjEyMDc0OUU2MDAwNDhERjMgLyogV2Vi
UXVvdGFNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlF1b3Rh
TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdFQjc4RDEzQjk3QTRF
MDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaDsgcGF0aCA9IHJl
bW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlBNTdFQjc4RTEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVn
aXN0cnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNw
ZWN0b3JDbGllbnRSZWdpc3RyeS5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRS
ZWdpc3RyeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4QTU3OTcxNDNFNzI3
MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OEE1Nzk4MTQzRTcyNzAwMDEyNUY1MCAvKiBXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNURFRkMwNzExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW4u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTZWN1cml0eU9y
aWdpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTIsNyArMTAyNiw2IEBA
CiAJCTFDNjhGNjNGMDk1QjVGOUMwMEMyOTg0RSAvKiBXZWJJbnNwZWN0b3IgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUE1MjE0RkJGMTNCOTc1OTYwMDAw
MTVFRiAvKiByZW1vdGUgKi8sCiAJCQkJNUQ3QkY4MTIwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYklu
c3BlY3Rvci5oICovLAogCQkJCTVEN0JGODEzMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0
b3IubW0gKi8sCiAJCQkJQjgwNDE3NkQxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZy
b250ZW5kLmggKi8sCkBAIC0xNTA5LDI2ICsxNDgyLDYgQEAKIAkJCW5hbWUgPSBpb3M7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlBNTIxNEZCRjEzQjk3NTk2MDAwMDE1RUYg
LyogcmVtb3RlICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJ
CQlBNTdFQjc4RDEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnku
aCAqLywKLQkJCQlBNTdFQjc4RTEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50
UmVnaXN0cnkubW0gKi8sCi0JCQkJQTUyMjA5RjcxM0M1M0U3NTAwNEJBN0IxIC8qIFdlYkluc3Bl
Y3RvclJlbGF5RGVmaW5pdGlvbnMuaCAqLywKLQkJCQlBNTIxNEZDMTEzQjk3NUM4MDAwMDE1RUYg
LyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oICovLAotCQkJCUE1MjE0RkMyMTNCOTc1Qzgw
MDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tICovLAotCQkJCUE1N0MyOEEz
MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCAqLywKLQkJCQlBNTdDMjhB
NDEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tICovLAotCQkJCUE1N0My
OEExMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlv
bi5oICovLAotCQkJCUE1N0MyOEEyMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbSAqLywKLQkJCQlBNTVFMjBGRDE0RDcyNjRDMDAzMTU0OUUg
LyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggKi8sCi0J
CQkJQTU1RTIwRkUxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uQ29udHJvbGxlci5tbSAqLywKLQkJCQlBNTdDMjhBNTEzQkFBNUFEMDA3MEFDQUIg
LyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oICovLAotCQkJCUE1N0MyOEE2MTNCQUE1QUQwMDcw
QUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0gKi8sCi0JCQkpOwotCQkJbmFtZSA9IHJl
bW90ZTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUY1MkNBNkJEMDJERjlE
MEYwMTg2MzVDQSAvKiBIVE1MICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTE4MjUsMTUgKzE3NzgsOCBAQAogCQkJCUExMEMxRDY0MTgyMDMwMEUwMDM2ODgz
QSAvKiBXZWJDaHJvbWVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTVEN0JGODE0MEMy
QTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTA2Njkz
RERDMEJGQkE4NTIwMDIxNjA3MiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICov
LAotCQkJCUE1N0VCNzhGMTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjgwNDE3NkYxMjE3QTgzMTAwNDY2QkFFIC8qIFdl
Ykluc3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QThGRjBEMTEwNzUwMjRB
MDBBODBBMDggLyogV2ViSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUy
MjA5RjgxM0M1M0U3NTAwNEJBN0IxIC8qIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCBp
biBIZWFkZXJzICovLAotCQkJCUE1MjE0RkM3MTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0
b3JSZW1vdGVDaGFubmVsLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTdDMjhBOTEzQkFBNUFEMDA3
MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTdDMjhB
NzEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLAotCQkJCUE1NUUyMEZGMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNw
ZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCUE1N0MyOEFCMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTA0MjA4MjRCRjAxMDA4REYwMzggLyogV2ViSmF2YVNj
cmlwdFRleHRJbnB1dFBhbmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0QxRENBODEwNjU5MjhD
MDA2OEY3RUYgLyogV2ViSlNQREZEb2MuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDg1MDgy
NEJGMDEwMDhERjAzOCAvKiBXZWJLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMjI3
NiwxMyArMjIyMiw3IEBACiAJCQkJNUQ3QkY4MTUwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3Bl
Y3Rvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA2NjkzREREMEJGQkE4NTIwMDIxNjA3MiAvKiBX
ZWJJbnNwZWN0b3JDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzdCMEM2NjBFQjI0NjRE
MDBBMjg1MDIgLyogV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QTU3RUI3OTAxM0I5N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjgwNDE3NzAxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3Bl
Y3RvckZyb250ZW5kLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTUyMTRGQzgxM0I5NzVDODAwMDAx
NUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gaW4gU291cmNlcyAqLywKLQkJCQlB
NTdDMjhBQTEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQTU3QzI4QTgxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZl
cldlYlZpZXdDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTU1RTIxMDAxNEQ3MjY0
QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxl
ci5tbSBpbiBTb3VyY2VzICovLAotCQkJCUE1N0MyOEFDMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJ
bnNwZWN0b3JYUENXcmFwcGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQlBMTBDMUQxOTE4MjAyRjlD
MDAzNjg4M0EgLyogV2ViRGVmYXVsdEZvcm1EZWxlZ2F0ZS5tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTM5ODEwRTQwODI0QkYwMTAwOERGMDM4IC8qIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwQzFEOEIxODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZp
ZXdJT1MubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4
IDViNDMxMmQuLjA0NDZhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVn
Z2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeS5oOgorCiAyMDEzLTEyLTAzICBOaWNrIERpZWdvIFlh
bWFuZSAgPG5pY2sueWFtYW5lQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUg
Q1NTIFZhcmlhYmxlcyBsZWZ0b3ZlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5LmggYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJy
eS5oCmluZGV4IGYyZjY1ZmMuLmNkMWNjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5LmgKKysrIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEJs
YWNrQmVycnkuaApAQCAtMjEsNyArMjEsNyBAQAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRCbGFj
a0JlcnJ5X2gKIAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yT3Zlcmxh
eUJsYWNrQmVycnkuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwppbmRl
eCA1NTJlNzZiLi43NTYyMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEz
LTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9u
IG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGlt
b3RoeSBIYXRjaGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Q0YuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJv
bnRlbmQpOgorCiAyMDEzLTEwLTI1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CiAKICAgICAgICAgVXBzdHJlYW0gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpIGFuZCBlbmFi
bGUgb24gaU9TIGFuZCBNYWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGIvU291cmNlL1dlYktpdC9jZi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKaW5kZXggY2EyMmZkZS4uMTIwZTFmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnRDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnRDRi5jcHAKQEAgLTkxLDEyICs5MSwxMCBAQCBzdGF0aWMgdm9pZCBzdG9yZVNl
dHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgc2V0dGluZykKICAgICBDRlBy
ZWZlcmVuY2VzU2V0QXBwVmFsdWUoY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KS5nZXQoKSwg
c2V0dGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBs
aWNhdGlvbik7CiB9CiAKLSNpZiAhRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiBib29sIFdlYklu
c3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIHsKICAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZShtX2Zyb250
ZW5kUGFnZSwgbWVzc2FnZSk7CiB9Ci0jZW5kaWYKIAogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6
Omluc3BlY3RvckF0dGFjaERpc2FibGVkKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBkZDdmY2E0
Li4zMWVlMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTItMDMg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdl
bWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhh
dGNoZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaDoK
KwogMjAxMy0xMS0yMyAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIFJlbW92ZSAwLjEwIGNvZGVwYXRoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwu
aCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5o
CmluZGV4IDhiZmViMmQuLjg2YmU4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oCkBAIC0zNSw3ICszNSw3IEBACiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZv
cndhcmRpbmcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgiCiAj
aW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggNjI3MGNjYS4uMmM2ZjUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25u
ZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50R3RrLmg6CisKIDIwMTMtMTItMDIgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rh
dm8ubm9yb25oYUBjb2xsYWJvcmEuY29tPgogCiAgICAgICAgIFtHVEtdIEdUSzIgcGFpbnQgY29k
ZSBwYXRoIGRvZXMgbm90IHJlbmRlciBBQyBsYXllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKaW5kZXggMzFmZGU4MDUu
LmM1ZGFmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEd0ay5oCkBAIC0zMCw3ICszMCw3IEBACiAjZGVmaW5lIEluc3BlY3Rv
ckNsaWVudEd0a19oCiAKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKLSNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5n
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIgogI2luY2x1ZGUg
IndlYmtpdHdlYmluc3BlY3Rvci5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0No
YW5nZUxvZwppbmRleCBhYjQzNjM1Li40ODllOWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTMtMTItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdn
aW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnRJT1MubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Oldl
Ykluc3BlY3RvckNsaWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3Rv
ckRlc3Ryb3llZCk6CisKIDIwMTMtMTEtMTggIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTk0NTUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRJT1MubW0KaW5kZXggNWFjYzJlZS4uY2E3NWQxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5t
bQpAQCAtNDIsMTEgKzQyLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZC5oPgog
I2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCIKLSNpbXBvcnQgIldlYklu
c3BlY3RvclJlbW90ZUNoYW5uZWwuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqd2Vi
VmlldykKQEAgLTU0LDIzICs0OSwxMSBAQCBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3Rv
ckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQogICAgICwgbV9oaWdobGlnaHRlcihBZG9wdE5TLCBb
W1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OndlYlZp
ZXddKQogICAgICwgbV9mcm9udGVuZFBhZ2UoMCkKICAgICAsIG1fZnJvbnRlbmRDbGllbnQoMCkK
LSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAsIG1fcmVtb3RlQ2hhbm5lbCgwKQot
ICAgICwgbV9wYWdlSWQoMCkKLSNlbmRpZgogewotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotICAgIFtbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIHJlZ2lz
dGVyQ2xpZW50OnRoaXNdOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpp
bnNwZWN0b3JEZXN0cm95ZWQoKQogewotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAg
IFtbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIHVucmVnaXN0ZXJD
bGllbnQ6dGhpc107Ci0gICAgdGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKHRydWUpOwotI2VuZGlm
Ci0KICAgICBkZWxldGUgdGhpczsKIH0KIApAQCAtMTE2LDk0ICs5OSw2IEBAIHZvaWQgV2ViSW5z
cGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCkKICAgICAg
ICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9u
T25NYWluVGhyZWFkV2l0aE5hbWU6V2ViSW5zcGVjdG9yRGlkU3RvcFNlYXJjaGluZ0Zvck5vZGUg
b2JqZWN0Omluc3BlY3Rvcl07CiB9CiAKLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgUmVt
b3RlIFdlYiBJbnNwZWN0b3IgSW1wbGVtZW50YXRpb24KLQotI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgaWYgKG1fcmVtb3RlQ2hhbm5lbCkgewotICAg
ICAgICBbbV9yZW1vdGVDaGFubmVsIHNlbmRNZXNzYWdlVG9Gcm9udGVuZDptZXNzYWdlXTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLy8gaU9TIGRvZXMgbm90IGhhdmUgYSBs
b2NhbCBpbnNwZWN0b3IuIFRoZXJlIHNob3VsZCBiZSBubyB3YXkgdG8gcmVhY2ggdGhpcy4KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotCi0gICAgcmV0
dXJuIGRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2UobV9mcm9udGVuZFBhZ2UsIG1lc3Nh
Z2UpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIEFTU0VSVChtX3JlbW90ZUNoYW5uZWwpOwot
Ci0gICAgUGFnZSogcGFnZSA9IGNvcmUobV93ZWJWaWV3KTsKLSAgICBwYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKLX0KLQot
Ym9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNldHVwUmVtb3RlQ29ubmVjdGlvbihXZWJJbnNwZWN0
b3JSZW1vdGVDaGFubmVsICpyZW1vdGVDaGFubmVsKQotewotICAgIC8vIFRoZXJlIGlzIGFscmVh
ZHkgYSBsb2NhbCBzZXNzaW9uLCBkbyBub3QgYWxsb3cgYSByZW1vdGUgc2Vzc2lvbi4KLSAgICBp
ZiAoaGFzTG9jYWxTZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFRo
ZXJlIGlzIGFscmVhZHkgYSByZW1vdGUgc2Vzc2lvbiwgZG8gbm90IGFsbG93IGEgbmV3IHJlbW90
ZSBzZXNzaW9uLgotICAgIGlmIChtX3JlbW90ZUNoYW5uZWwpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIG1fcmVtb3RlQ2hhbm5lbCA9IHJlbW90ZUNoYW5uZWw7Ci0KLSAgICBQYWdlKiBw
YWdlID0gY29yZShtX3dlYlZpZXcpOwotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
Y29ubmVjdEZyb250ZW5kKHRoaXMpOwotCi0gICAgLy8gRm9yY2UgZGV2ZWxvcGVyIGV4dHJhcyB0
byBiZSBlbmFibGVkIGluIFdlYkNvcmUgd2hlbiBhIHJlbW90ZSBjb25uZWN0aW9uIHN0YXJ0cy4K
LSAgICBpZiAocGFnZS0+c2V0dGluZ3MoKSkKLSAgICAgICAgcGFnZS0+c2V0dGluZ3MoKS0+c2V0
RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIFdlYkluc3BlY3RvckNsaWVudDo6dGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKGJvb2wgZnJv
bUxvY2FsU2lkZSkKLXsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkp
OwotICAgIGlmICghbV9yZW1vdGVDaGFubmVsKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
ZnJvbUxvY2FsU2lkZSkKLSAgICAgICAgW21fcmVtb3RlQ2hhbm5lbCBjbG9zZUZyb21Mb2NhbFNp
ZGVdOwotCi0gICAgUGFnZSogcGFnZSA9IGNvcmUobV93ZWJWaWV3KTsKLSAgICBpZiAocGFnZSkg
ewotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2Nvbm5lY3RGcm9udGVu
ZCgpOwotCi0gICAgICAgIC8vIFJlc3RvcmUgZGV2ZWxvcGVyIGV4dHJhcyBzZXR0aW5nIGluIFdl
YkNvcmUuCi0gICAgICAgIGlmIChwYWdlICYmIHBhZ2UtPnNldHRpbmdzKCkpCi0gICAgICAgICAg
ICBwYWdlLT5zZXR0aW5ncygpLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKFtbbV93ZWJWaWV3
IHByZWZlcmVuY2VzXSBkZXZlbG9wZXJFeHRyYXNFbmFibGVkXSk7Ci0gICAgfQotCi0gICAgaWYg
KGZyb21Mb2NhbFNpZGUpCi0gICAgICAgIFttX3JlbW90ZUNoYW5uZWwgcmVsZWFzZV07Ci0KLSAg
ICBtX3JlbW90ZUNoYW5uZWwgPSAwOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6aGFz
TG9jYWxTZXNzaW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UgIT0gMDsK
LX0KLQotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQoKSBj
b25zdAotewotICAgIHJldHVybiBbbV93ZWJWaWV3IGNhbkJlUmVtb3RlbHlJbnNwZWN0ZWRdOwot
fQotCi1XZWJWaWV3ICpXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RlZFdlYlZpZXcoKQotewot
ICAgIHJldHVybiBtX3dlYlZpZXc7Ci19Ci0jZW5kaWYKLQogCiAjcHJhZ21hIG1hcmsgLQogI3By
YWdtYSBtYXJrIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50IEltcGxlbWVudGF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKaW5kZXggMzMxYjZkMy4uNGZmYjNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU4IEBACisyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRlYnVn
Z2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFJlbW92ZSB0aGUgb2xkIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKSBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW1wbGVtZW50YXRp
b24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6OmluZGljYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVu
dDo6aGlkZUluZGljYXRlKToKKyAgICAgICAgSG9vayB1cCBXZWJWaWV3IGluZGljYXRpb24gdGhy
b3VnaCB0aGlzIG5ldyBwYXRoLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToK
KyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKToKKyAgICAgICAgKiBX
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lmg6IFJlbW92ZWQu
CisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3Ry
eS5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3Rv
clJlbGF5RGVmaW5pdGlvbnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVt
b3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJ
bnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW06IFJlbW92ZWQuCisg
ICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZl
cldlYlZpZXdDb25uZWN0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3Jl
bW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25u
ZWN0aW9uQ29udHJvbGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1v
dGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
WFBDV3JhcHBlci5tOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdC5leHA6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXph
dGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9lbmFi
bGVSZW1vdGVJbnNwZWN0b3JdKToKKyAgICAgICAgKCtbV2ViVmlldyBfZGlzYWJsZVJlbW90ZUlu
c3BlY3Rvcl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9kaXNhYmxlQXV0b1N0YXJ0UmVtb3RlSW5z
cGVjdG9yXSk6CisgICAgICAgICgrW1dlYlZpZXcgX2lzUmVtb3RlSW5zcGVjdG9yRW5hYmxlZF0p
OgorICAgICAgICAoK1tXZWJWaWV3IF9oYXNSZW1vdGVJbnNwZWN0b3JTZXNzaW9uXSk6CisgICAg
ICAgICgtW1dlYlZpZXcgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbl0pOgorICAgICAgICAoLVtXZWJW
aWV3IHNldEFsbG93c1JlbW90ZUluc3BlY3Rpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0
SW5kaWNhdGluZ0ZvclJlbW90ZUluc3BlY3RvcjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRI
b3N0QXBwbGljYXRpb25CdW5kbGVJZDpuYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9kaWRD
b21taXRMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06CisgICAgICAgICgtW1dlYlZpZXdQcml2
YXRlIGluaXRdKToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgZGVhbGxvY10pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
UHJpdmF0ZS5oOgorICAgICAgICBSZW1vdmUgb2xkIFJFTU9URV9JTlNQRUNUT1IuCisKIDIwMTMt
MTItMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBB
WDogQ3Jhc2ggaW4gYWNjZXNzaWJpbGl0eVJvb3Qgd2hlbiBEb2N1bWVudCBnb2VzIGF3YXkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KaW5kZXggMTg3NWFjMC4uNmU3OGExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAg
LTEzOCwxMCArMTM4LDYgQEAKICNpbXBvcnQgIldlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5o
IgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSNpbXBvcnQgIldlYklu
c3BlY3RvclNlcnZlci5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIApAQCAtNjIxLDEyICs2MTcsNiBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRo
RGlyZWN0aW9uJiB0aQogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRpZFJlY2VpdmVUaXRsZUZv
ckZyYW1lRnVuYykKICAgICAgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCiAg
ICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFJlY2VpdmVU
aXRsZUZvckZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUmVjZWl2ZVRp
dGxlOmZvckZyYW1lOiksIChOU1N0cmluZyAqKXRpdGxlLnN0cmluZygpLCBtX3dlYkZyYW1lLmdl
dCgpKTsKLQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIEJPT0wgaXNNYWluRnJh
bWUgPSBbd2ViVmlldyBtYWluRnJhbWVdID09IG1fd2ViRnJhbWUuZ2V0KCk7Ci0gICAgaWYgKGlz
TWFpbkZyYW1lKQotICAgICAgICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBw
dXNoTGlzdGluZ107Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNTUx
YWY3Zi4uMWU3YTA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTI3LDcgKzI3LDcgQEAKICAqLwogCiAjaW1w
b3J0IDxXZWJDb3JlL0luc3BlY3RvckNsaWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSW5zcGVjdG9yRm9yd2FyZGlu
Zy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmg+CiAK
ICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CkBAIC03Myw2ICs3Myw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVI
aWdobGlnaHQoKSBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgdm9pZCBpbmRpY2F0ZSgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBoaWRlSW5kaWNhdGlvbigpIE9WRVJSSURFOworCiAgICAg
dmlydHVhbCB2b2lkIGRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCkgT1ZFUlJJREU7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIE9WRVJS
SURFOwpAQCAtODUsMjIgKzg4LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWxlYXNlRnJvbnRl
bmQoKTsKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIHZvaWQgc2VuZE1lc3Nh
Z2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBib29sIHNldHVwUmVtb3RlQ29ubmVj
dGlvbihXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICpyZW1vdGVDaGFubmVsKTsKLSAgICB2b2lk
IHRlYXJkb3duUmVtb3RlQ29ubmVjdGlvbihib29sIGZyb21Mb2NhbFNpZGUpOwotCi0gICAgdW5z
aWduZWQgcGFnZUlkKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWQ7IH0KLSAgICB2b2lkIHNldFBh
Z2VJZCh1bnNpZ25lZCBwYWdlSWQpIHsgbV9wYWdlSWQgPSBwYWdlSWQ7IH0KLQotICAgIGJvb2wg
aGFzTG9jYWxTZXNzaW9uKCkgY29uc3Q7Ci0KLSAgICBib29sIGNhbkJlUmVtb3RlbHlJbnNwZWN0
ZWQoKSBjb25zdDsKLQotICAgIFdlYlZpZXcgKmluc3BlY3RlZFdlYlZpZXcoKTsKLSNlbmRpZgot
CiBwcml2YXRlOgogICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbDo6U2V0dGluZ3M+IGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKTsKIApAQCAtMTA4LDEx
ICs5NSw2IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdlYk5vZGVIaWdobGlnaHRlcj4gbV9o
aWdobGlnaHRlcjsKICAgICBXZWJDb3JlOjpQYWdlKiBtX2Zyb250ZW5kUGFnZTsKICAgICBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9mcm9udGVuZENsaWVudDsKLQotI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQotICAgIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKm1fcmVtb3Rl
Q2hhbm5lbDsKLSAgICB1bnNpZ25lZCBtX3BhZ2VJZDsKLSNlbmRpZgogfTsKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
bW0KaW5kZXggZTQzOGM2ZC4uZTI1ZWJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtNTUsMTEgKzU1LDYg
QEAKICNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQu
aD4KIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotI2ltcG9ydCAiV2ViSW5zcGVjdG9y
Q2xpZW50UmVnaXN0cnkuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCIK
LSNlbmRpZgotCiBTT0ZUX0xJTktfU1RBR0VEX0ZSQU1FV09SSyhXZWJJbnNwZWN0b3JVSSwgUHJp
dmF0ZUZyYW1ld29ya3MsIEEpCiAKIC8vIFRoZSBtYXJnaW4gZnJvbSB0aGUgdG9wIGFuZCByaWdo
dCBvZiB0aGUgZG9jayBidXR0b24gKHNhbWUgYXMgdGhlIGZ1bGwgc2NyZWVuIGJ1dHRvbikuCkBA
IC0xMzUsMjMgKzEzMCwxMSBAQCBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVu
dChXZWJWaWV3ICp3ZWJWaWV3KQogICAgICwgbV9oaWdobGlnaHRlcihhZG9wdE5TKFtbV2ViTm9k
ZUhpZ2hsaWdodGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6d2ViVmlld10pKQog
ICAgICwgbV9mcm9udGVuZFBhZ2UoMCkKICAgICAsIG1fZnJvbnRlbmRDbGllbnQoMCkKLSNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAsIG1fcmVtb3RlQ2hhbm5lbCgwKQotICAgICwg
bV9wYWdlSWQoMCkKLSNlbmRpZgogewotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAg
IFtbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIHJlZ2lzdGVyQ2xp
ZW50OnRoaXNdOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0
b3JEZXN0cm95ZWQoKQogewotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIFtbV2Vi
SW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIHVucmVnaXN0ZXJDbGllbnQ6
dGhpc107Ci0gICAgdGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKHRydWUpOwotI2VuZGlmCi0KICAg
ICBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiAgICAgZGVsZXRlIHRoaXM7CiB9CkBAIC0xOTcs
NiArMTgwLDE2IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWRlSGlnaGxpZ2h0KCkKICAg
ICBbbV9oaWdobGlnaHRlci5nZXQoKSBoaWRlSGlnaGxpZ2h0XTsKIH0KIAordm9pZCBXZWJJbnNw
ZWN0b3JDbGllbnQ6OmluZGljYXRlKCkKK3sKKyAgICBbbV93ZWJWaWV3IHNldEluZGljYXRpbmdG
b3JSZW1vdGVJbnNwZWN0b3I6WUVTXTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omhp
ZGVJbmRpY2F0aW9uKCkKK3sKKyAgICBbbV93ZWJWaWV3IHNldEluZGljYXRpbmdGb3JSZW1vdGVJ
bnNwZWN0b3I6Tk9dOworfQorCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNo
aW5nRm9yTm9kZShib29sIGVuYWJsZWQpCiB7CiAgICAgV2ViSW5zcGVjdG9yICppbnNwZWN0b3Ig
PSBbbV93ZWJWaWV3IGluc3BlY3Rvcl07CkBAIC0yMTUsNzggKzIwOCw2IEBAIHZvaWQgV2ViSW5z
cGVjdG9yQ2xpZW50OjpyZWxlYXNlRnJvbnRlbmQoKQogICAgIG1fZnJvbnRlbmRQYWdlID0gMDsK
IH0KIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotYm9vbCBXZWJJbnNwZWN0b3JDbGll
bnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAg
aWYgKG1fcmVtb3RlQ2hhbm5lbCkgewotICAgICAgICBbbV9yZW1vdGVDaGFubmVsIHNlbmRNZXNz
YWdlVG9Gcm9udGVuZDptZXNzYWdlXTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2UobV9mcm9udGVuZFBhZ2Us
IG1lc3NhZ2UpOwotfQotCi12b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Jh
Y2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIEFTU0VSVChtX3JlbW90ZUNoYW5u
ZWwpOwotCi0gICAgUGFnZSogcGFnZSA9IGNvcmUobV93ZWJWaWV3KTsKLSAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsK
LX0KLQotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNldHVwUmVtb3RlQ29ubmVjdGlvbihXZWJJ
bnNwZWN0b3JSZW1vdGVDaGFubmVsICpyZW1vdGVDaGFubmVsKQotewotICAgIC8vIFRoZXJlIGlz
IGFscmVhZHkgYSBsb2NhbCBzZXNzaW9uLCBkbyBub3QgYWxsb3cgYSByZW1vdGUgc2Vzc2lvbi4K
LSAgICBpZiAoaGFzTG9jYWxTZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IC8vIFRoZXJlIGlzIGFscmVhZHkgYSByZW1vdGUgc2Vzc2lvbiwgZG8gbm90IGFsbG93IGEgbmV3
IHJlbW90ZSBzZXNzaW9uLgotICAgIGlmIChtX3JlbW90ZUNoYW5uZWwpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIEFTU0VSVChbW21fd2ViVmlldyBwcmVmZXJlbmNlc10gZGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZF0pOwotCi0gICAgbV9yZW1vdGVDaGFubmVsID0gcmVtb3RlQ2hhbm5lbDsK
LQotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmlldyk7Ci0gICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5jb25uZWN0RnJvbnRlbmQodGhpcyk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnRlYXJkb3duUmVtb3RlQ29ubmVjdGlvbihi
b29sIGZyb21Mb2NhbFNpZGUpCi17Ci0gICAgaWYgKCFtX3JlbW90ZUNoYW5uZWwpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChmcm9tTG9jYWxTaWRlKQotICAgICAgICBbbV9yZW1vdGVDaGFu
bmVsIGNsb3NlRnJvbUxvY2FsU2lkZV07Ci0KLSAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUobV93
ZWJWaWV3KSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNjb25uZWN0
RnJvbnRlbmQoKTsKLQotICAgIGlmIChmcm9tTG9jYWxTaWRlKQotICAgICAgICBbbV9yZW1vdGVD
aGFubmVsIHJlbGVhc2VdOwotCi0gICAgbV9yZW1vdGVDaGFubmVsID0gMDsKLX0KLQotYm9vbCBX
ZWJJbnNwZWN0b3JDbGllbnQ6Omhhc0xvY2FsU2Vzc2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fZnJvbnRlbmRQYWdlICE9IDA7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpjYW5C
ZVJlbW90ZWx5SW5zcGVjdGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21fd2ViVmlldyBjYW5C
ZVJlbW90ZWx5SW5zcGVjdGVkXTsKLX0KLQotV2ViVmlldyAqV2ViSW5zcGVjdG9yQ2xpZW50Ojpp
bnNwZWN0ZWRXZWJWaWV3KCkKLXsKLSAgICByZXR1cm4gbV93ZWJWaWV3OwotfQotI2VuZGlmCi0K
IAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIq
IHdpbmRvd0NvbnRyb2xsZXIsIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIsIFBhZ2UqIGZyb250ZW5kUGFnZSwgV1RGOjpQYXNzT3duUHRyPFNldHRpbmdzPiBzZXR0aW5n
cykKICAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoaW5zcGVjdG9yQ29udHJvbGxl
ciwgIGZyb250ZW5kUGFnZSwgc2V0dGluZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdp
c3RyeS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA5NDhkNS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNs
aWVudFJlZ2lzdHJ5Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmgiCi0KLSNp
bXBvcnQgIldlYkluc3BlY3RvckNsaWVudC5oIgotI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIK
LQotQGltcGxlbWVudGF0aW9uIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Ci0KLUBzeW50aGVz
aXplIGRlbGVnYXRlID0gX2RlbGVnYXRlOwotCi0rIChXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3Ry
eSAqKXNoYXJlZFJlZ2lzdHJ5Ci17Ci0gICAgc3RhdGljIFdlYkluc3BlY3RvckNsaWVudFJlZ2lz
dHJ5ICpzaGFyZWRSZWdpc3RyeSA9IFtbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgYWxsb2Nd
IGluaXRdOwotICAgIHJldHVybiBzaGFyZWRSZWdpc3RyeTsKLX0KLQotLSAoaWQpaW5pdAotewot
ICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4g
bmlsOwotCi0gICAgX25leHRBdmFpbGFibGVQYWdlSWQgPSAxOwotCi0gICAgcmV0dXJuIHNlbGY7
Ci19Ci0KLS0gKHVuc2lnbmVkKV9nZXROZXh0QXZhaWxhYmxlUGFnZUlkCi17Ci0gICAgLy8gQm91
bmRhcnkgdmFsdWVzLCAwIGFuZCBVSU5UX01BWCwgYXJlIGludmFsaWQgSGFzaE1hcCBrZXlzLgot
ICAgIHVuc2lnbmVkIG5leHRWYWxpZFBhZ2VJZDsKLSAgICBkbyB7Ci0gICAgICAgIG5leHRWYWxp
ZFBhZ2VJZCA9IF9uZXh0QXZhaWxhYmxlUGFnZUlkKys7Ci0gICAgfSB3aGlsZSAoIW5leHRWYWxp
ZFBhZ2VJZCB8fCBuZXh0VmFsaWRQYWdlSWQgPT0gVUlOVF9NQVggfHwgX3BhZ2VDbGllbnRNYXAu
Y29udGFpbnMobmV4dFZhbGlkUGFnZUlkKSk7Ci0gICAgcmV0dXJuIG5leHRWYWxpZFBhZ2VJZDsK
LX0KLQotLSAodm9pZClyZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQK
LXsKLSAgICB1bnNpZ25lZCBwYWdlSWQgPSBbc2VsZiBfZ2V0TmV4dEF2YWlsYWJsZVBhZ2VJZF07
Ci0gICAgX3BhZ2VDbGllbnRNYXAuc2V0KHBhZ2VJZCwgY2xpZW50KTsKLSAgICBjbGllbnQtPnNl
dFBhZ2VJZChwYWdlSWQpOwotICAgIFtfZGVsZWdhdGUgZGlkUmVnaXN0ZXJDbGllbnQ6Y2xpZW50
XTsKLX0KLQotLSAodm9pZCl1bnJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWNs
aWVudAotewotICAgIHVuc2lnbmVkIHBhZ2VJZCA9IGNsaWVudC0+cGFnZUlkKCk7Ci0gICAgX3Bh
Z2VDbGllbnRNYXAucmVtb3ZlKHBhZ2VJZCk7Ci0gICAgW19kZWxlZ2F0ZSBkaWRVbnJlZ2lzdGVy
Q2xpZW50OmNsaWVudF07Ci19Ci0KLS0gKFdlYkluc3BlY3RvckNsaWVudCopY2xpZW50Rm9yUGFn
ZUlkOih1bnNpZ25lZClwYWdlSWQKLXsKLSAgICByZXR1cm4gX3BhZ2VDbGllbnRNYXAuZ2V0KHBh
Z2VJZCk7Ci19Ci0KLS0gKE5TRGljdGlvbmFyeSAqKWluc3BlY3RhYmxlV2ViVmlld3MKLXsKLSAg
ICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25hcnkg
ZGljdGlvbmFyeVdpdGhDYXBhY2l0eTpfcGFnZUNsaWVudE1hcC5zaXplKCldOwotCi0gICAgSGFz
aE1hcDx1bnNpZ25lZCwgV2ViSW5zcGVjdG9yQ2xpZW50Kj46Oml0ZXJhdG9yIGVuZCA9IF9wYWdl
Q2xpZW50TWFwLmVuZCgpOwotICAgIGZvciAoSGFzaE1hcDx1bnNpZ25lZCwgV2ViSW5zcGVjdG9y
Q2xpZW50Kj46Oml0ZXJhdG9yIGl0ID0gX3BhZ2VDbGllbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBpdC0+dmFsdWUtPmluc3BlY3Rl
ZFdlYlZpZXcoKTsKLSAgICAgICAgaWYgKCFbd2ViVmlldyBjYW5CZVJlbW90ZWx5SW5zcGVjdGVk
XSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIE5TTnVtYmVyICpwYWdlSWQgPSBb
TlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50Oml0LT5rZXldOwotICAgICAgICBbZGljdGlv
bmFyeSBzZXRPYmplY3Q6d2ViVmlldyBmb3JLZXk6cGFnZUlkXTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gZGljdGlvbmFyeTsKLX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVt
b3RlQ2hhbm5lbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhmZmNkNi4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclJlbW90ZUNoYW5uZWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oIgot
Ci0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvckNs
aWVudFJlZ2lzdHJ5LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVj
dGlvbi5oIgotI2ltcG9ydCAiV2ViS2l0TG9nZ2luZy5oIgotI2ltcG9ydCA8d3RmL3RleHQvQ1N0
cmluZy5oPgotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKCkKLS0gKGlk
KWluaXRXaXRoUmVtb3RlOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqKXJl
bW90ZSBsb2NhbDooV2ViSW5zcGVjdG9yQ2xpZW50Kilsb2NhbDsKLUBlbmQKLQotQGltcGxlbWVu
dGF0aW9uIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwKLQotKyAoV2ViSW5zcGVjdG9yUmVtb3Rl
Q2hhbm5lbCAqKWNyZWF0ZUNoYW5uZWxGb3JQYWdlSWQ6KHVuc2lnbmVkKXBhZ2VJZCBjb25uZWN0
aW9uOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KLXsK
LSAgICAvLyBHZXQgdGhlIEluc3BlY3RvciBjbGllbnQuIEl0cyBwb3NzaWJsZSB0aGUgcGFnZSBj
bG9zZWQgYmVmb3JlIHRoZSByZW1vdGUgY2xpZW50IHJlcXVlc3RlZCBpdC4KLSAgICBXZWJJbnNw
ZWN0b3JDbGllbnQgKmluc3BlY3RvckNsaWVudCA9IFtbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0
cnkgc2hhcmVkUmVnaXN0cnldIGNsaWVudEZvclBhZ2VJZDpwYWdlSWRdOwotICAgIGlmICghaW5z
cGVjdG9yQ2xpZW50KSB7Ci0gICAgICAgIExPRyhSZW1vdGVJbnNwZWN0b3IsICJXZWJJbnNwZWN0
b3JSZW1vdGVDaGFubmVsOiBQYWdlIHJlcXVlc3RlZCBubyBsb25nZXIgZXhpc3RzOiAoJXUpIiwg
cGFnZUlkKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICAvLyBUaGUgV2ViVmll
dyBkb2VzIG5vdCBhbGxvdyByZW1vdGUgaW5zcGVjdGlvbi4KLSAgICBpZiAoIWluc3BlY3RvckNs
aWVudC0+Y2FuQmVSZW1vdGVseUluc3BlY3RlZCgpKSB7Ci0gICAgICAgIExPRyhSZW1vdGVJbnNw
ZWN0b3IsICJXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsOiBXZWJWaWV3IGZvciBQYWdlICgldSkg
ZG9lcyBub3QgYWxsb3cgcmVtb3RlIGluc3BlY3Rpb24uIiwgcGFnZUlkKTsKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICB9Ci0KLSAgICAvLyBUaGUgY2hhbm5lbCBpcyByZWxlYXNlZCBieSB3aGlj
aGV2ZXIgc2lkZSBjbG9zZXMgdGhlIGNoYW5uZWwuIFRoZSBjaGFubmVsIGNvdWxkIGJlIGNsb3Nl
ZAotICAgIC8vIHJlbW90ZWx5IGJ5IHRoZSBzb2NrZXQgY2xvc2luZyAodGhlIHVzZXIgbmF2aWdh
dGluZyBhd2F5IGZyb20gdGhlIHJlbW90ZSBpbnNwZWN0b3IgcGFnZSkuCi0gICAgLy8gSXQgY291
bGQgYmUgY2xvc2VkIGxvY2FsbHkgYnkgdGhlIFBhZ2UgYmVpbmcgZGVzdHJveWVkLCBsaWtlIHRo
ZSBicm93c2VyIG9yIHRhYiBiZWluZyBjbG9zZWQuCi0gICAgLy8gU2V0dGluZyB1cCB0aGUgY29u
bmVjdGlvbiBjYW4gZmFpbCBpZiB0aGVyZSBpcyBhbHJlYWR5IGFuIGV4aXN0aW5nIHNlc3Npb24u
Ci0gICAgV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqY2hhbm5lbCA9IFtbV2ViSW5zcGVjdG9y
UmVtb3RlQ2hhbm5lbCBhbGxvY10gaW5pdFdpdGhSZW1vdGU6Y29ubmVjdGlvbiBsb2NhbDppbnNw
ZWN0b3JDbGllbnRdOwotICAgIGlmICghaW5zcGVjdG9yQ2xpZW50LT5zZXR1cFJlbW90ZUNvbm5l
Y3Rpb24oY2hhbm5lbCkpIHsKLSAgICAgICAgTE9HKFJlbW90ZUluc3BlY3RvciwgIldlYkluc3Bl
Y3RvclJlbW90ZUNoYW5uZWw6IFNldHRpbmcgdXAgYSByZW1vdGUgc2Vzc2lvbiBmYWlsZWQuIFBy
b2JhYmx5IGFscmVhZHkgYSBsb2NhbCBzZXNzaW9uLiIpOwotICAgICAgICBbY2hhbm5lbCByZWxl
YXNlXTsKLSAgICAgICAgY2hhbm5lbCA9IG5pbDsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9
Ci0KLSAgICByZXR1cm4gY2hhbm5lbDsKLX0KLQotLSAoaWQpaW5pdFdpdGhSZW1vdGU6KFdlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uICopcmVtb3RlIGxvY2FsOihXZWJJbnNwZWN0
b3JDbGllbnQqKWxvY2FsCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNl
bGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfcmVtb3RlID0gcmVtb3RlOwotICAgIF9s
b2NhbCA9IGxvY2FsOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpY2xvc2VGcm9t
TG9jYWxTaWRlCi17Ci0gICAgLy8gTG9jYWwgc2lkZSB3aWxsIHJlbGVhc2UuIE1ha2Ugc3VyZSB0
aGUgcmVtb3RlIHNpZGUgY2xlYXJzIGl0cyByZWZlcmVuY2UgdG8gdGhlIGNoYW5uZWwuCi0gICAg
W19yZW1vdGUgY2xlYXJDaGFubmVsXTsKLX0KLQotLSAodm9pZCljbG9zZUZyb21SZW1vdGVTaWRl
Ci17Ci0gICAgLy8gUmVtb3RlIHNpZGUgd2lsbCByZWxlYXNlLiBNYWtlIHN1cmUgdGhlIGxvY2Fs
IHNpZGUgY2xlYXJzIGl0cyByZWZlcmVuY2UgdG8gdGhlIGNoYW5uZWwuCi0gICAgX2xvY2FsLT50
ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24oZmFsc2UpOwotfQotCi0tICh2b2lkKXNlbmRNZXNzYWdl
VG9Gcm9udGVuZDooTlNTdHJpbmcgKiltZXNzYWdlCi17Ci0gICAgW19yZW1vdGUgc2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kOm1lc3NhZ2VdOwotfQotCi0tICh2b2lkKXNlbmRNZXNzYWdlVG9CYWNrZW5k
OihOU1N0cmluZyAqKW1lc3NhZ2UKLXsKLSAgICBfbG9jYWwtPnNlbmRNZXNzYWdlVG9CYWNrZW5k
KG1lc3NhZ2UpOwotfQotCi1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmNjc5MGYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIgotCi1A
Y2xhc3MgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyOwotQGNs
YXNzIFdlYkluc3BlY3RvclhQQ1dyYXBwZXI7Ci0KLUBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yU2Vy
dmVyIDogTlNPYmplY3QgPFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5RGVsZWdhdGU+IHsKLUBw
cml2YXRlCi0gICAgQk9PTCBfaXNFbmFibGVkOwotICAgIEJPT0wgX2hhc0FjdGl2ZURlYnVnU2Vz
c2lvbjsKLSAgICBpbnQgX25vdGlmeVRva2VuOwotICAgIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIg
Kl94cGNDb25uZWN0aW9uOwotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
Q29udHJvbGxlciAqX2Nvbm5lY3Rpb25Db250cm9sbGVyOwotfQotCi0tICh2b2lkKXN0YXJ0Owot
LSAodm9pZClzdG9wOwotLSAoQk9PTClpc0VuYWJsZWQ7Ci0tICh2b2lkKXB1c2hMaXN0aW5nOwot
Ci0tIChCT09MKWhhc0FjdGl2ZURlYnVnU2Vzc2lvbjsKLS0gKHZvaWQpc2V0SGFzQWN0aXZlRGVi
dWdTZXNzaW9uOihCT09MKWhhc1Nlc3Npb247Ci0KLS0gKFdlYkluc3BlY3RvclhQQ1dyYXBwZXIg
Kil4cGNDb25uZWN0aW9uOwotCi1AZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiYzlhNzNhLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsMjA0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLSNpbXBvcnQgIldlYklu
c3BlY3RvclNlcnZlci5oIgotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKLSNpbXBv
cnQgIldlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCIKLSNpbXBvcnQgIldlYkluc3BlY3Rv
clNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oIgotI2ltcG9ydCAiV2ViSW5zcGVj
dG9yWFBDV3JhcHBlci5oIgotI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKLSNpbXBvcnQgPG5v
dGlmeS5oPgotI2ltcG9ydCA8eHBjL3hwYy5oPgotCi0KLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21h
IG1hcmsgUHJpdmF0ZSBDbGFzcyBEZXRhaWxzCi0KLUBpbnRlcmZhY2UgV2ViSW5zcGVjdG9yU2Vy
dmVyICgpIDxXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGU+Ci0tICh2b2lkKXNldHVwWFBD
Q29ubmVjdGlvbklmTmVlZGVkOwotLSAodm9pZCl4cGNDb25uZWN0aW9uOihXZWJJbnNwZWN0b3JY
UENXcmFwcGVyICopY29ubmVjdGlvbiByZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2Fn
ZU5hbWUgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOwotLSAodm9pZCl4cGNDb25u
ZWN0aW9uRmFpbGVkOihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopY29ubmVjdGlvbjsKLUBlbmQK
LQotCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIFNlcnZlciBJbXBsZW1lbnRhdGlvbgot
Ci1AaW1wbGVtZW50YXRpb24gV2ViSW5zcGVjdG9yU2VydmVyCi0KLS0gKGlkKWluaXQKLXsKLSAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5p
bDsKLQotICAgIF9jb25uZWN0aW9uQ29udHJvbGxlciA9IFtbV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb25Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFNlcnZlcjpzZWxmXTsKLQot
ICAgIFtbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIHNldERlbGVn
YXRlOnNlbGZdOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewot
ICAgIC8vIFNpbmdsZXRvbiBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgcmVsZWFzZWQuCi0KLSAgICBb
c2VsZiBzdG9wXTsKLQotICAgIEFTU0VSVCghX3hwY0Nvbm5lY3Rpb24pOwotICAgIFtfY29ubmVj
dGlvbkNvbnRyb2xsZXIgcmVsZWFzZV07Ci0KLSAgICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lz
dHJ5IHNoYXJlZFJlZ2lzdHJ5XSBzZXREZWxlZ2F0ZTpuaWxdOwotCi0gICAgW3N1cGVyIGRlYWxs
b2NdOwotfQotCi0tICh2b2lkKXN0YXJ0Ci17Ci0gICAgaWYgKF9pc0VuYWJsZWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIF9pc0VuYWJsZWQgPSBZRVM7Ci0KLSAgICBub3RpZnlfcmVnaXN0ZXJf
ZGlzcGF0Y2goV0lSU2VydmljZUF2YWlsYWJsZU5vdGlmaWNhdGlvbiwgJl9ub3RpZnlUb2tlbiwg
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihpbnQgdG9rZW4pIHsKLSAgICAgICAgW3NlbGYg
c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWRdOwotICAgIH0pOwotCi0gICAgbm90aWZ5X3Bvc3Qo
V0lSU2VydmljZUF2YWlsYWJpbGl0eUNoZWNrTm90aWZpY2F0aW9uKTsKLX0KLQotLSAodm9pZClz
dG9wCi17Ci0gICAgaWYgKCFfaXNFbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfaXNF
bmFibGVkID0gTk87Ci0KLSAgICBbX2Nvbm5lY3Rpb25Db250cm9sbGVyIGNsb3NlQWxsQ29ubmVj
dGlvbnNdOwotCi0gICAgaWYgKF94cGNDb25uZWN0aW9uKSB7Ci0gICAgICAgIFtfeHBjQ29ubmVj
dGlvbiBjbG9zZV07Ci0gICAgICAgIF94cGNDb25uZWN0aW9uLmRlbGVnYXRlID0gbmlsOwotICAg
ICAgICBbX3hwY0Nvbm5lY3Rpb24gcmVsZWFzZV07Ci0gICAgICAgIF94cGNDb25uZWN0aW9uID0g
bmlsOwotICAgIH0KLQotICAgIG5vdGlmeV9jYW5jZWwoX25vdGlmeVRva2VuKTsKLX0KLQotLSAo
Qk9PTClpc0VuYWJsZWQKLXsKLSAgICByZXR1cm4gX2lzRW5hYmxlZDsKLX0KLQotLSAoV2ViSW5z
cGVjdG9yWFBDV3JhcHBlciAqKXhwY0Nvbm5lY3Rpb24KLXsKLSAgICByZXR1cm4gX3hwY0Nvbm5l
Y3Rpb247Ci19Ci0KLS0gKHZvaWQpc2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQKLXsKLSAgICBp
ZiAoX3hwY0Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIHhwY19jb25uZWN0aW9u
X3QgY29ubmVjdGlvbiA9IHhwY19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2UoV0lSWFBD
TWFjaFBvcnROYW1lLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCAwKTsKLSAgICBpZiAoY29u
bmVjdGlvbikgewotICAgICAgICBfeHBjQ29ubmVjdGlvbiA9IFtbV2ViSW5zcGVjdG9yWFBDV3Jh
cHBlciBhbGxvY10gaW5pdFdpdGhDb25uZWN0aW9uOmNvbm5lY3Rpb25dOwotICAgICAgICBfeHBj
Q29ubmVjdGlvbi5kZWxlZ2F0ZSA9IHNlbGY7Ci0gICAgICAgIFtfeHBjQ29ubmVjdGlvbiBzZW5k
TWVzc2FnZTpAInN5biIgdXNlckluZm86bmlsXTsKLSAgICAgICAgeHBjX3JlbGVhc2UoY29ubmVj
dGlvbik7Ci0gICAgfQotfQotCi0tICh2b2lkKXB1c2hMaXN0aW5nCi17Ci0gICAgaWYgKCFfaXNF
bmFibGVkIHx8ICFfeHBjQ29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW19jb25u
ZWN0aW9uQ29udHJvbGxlciBwdXNoTGlzdGluZ107Ci19Ci0KLS0gKEJPT0wpaGFzQWN0aXZlRGVi
dWdTZXNzaW9uCi17Ci0gICAgcmV0dXJuIF9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb247Ci19Ci0KLS0g
KHZvaWQpc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOihCT09MKWhhc1Nlc3Npb24KLXsKLSAgICBp
ZiAoX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbiA9PSBoYXNTZXNzaW9uKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBfaGFzQWN0aXZlRGVidWdTZXNzaW9uID0gaGFzU2Vzc2lvbjsKLQotICAgIFtbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6X1dl
YlZpZXdSZW1vdGVJbnNwZWN0b3JIYXNTZXNzaW9uQ2hhbmdlZE5vdGlmaWNhdGlvbiBvYmplY3Q6
bmlsXTsKLX0KLQotCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIFdlYkluc3BlY3RvclhQ
Q1dyYXBwZXJEZWxlZ2F0ZSBJbXBsZW1lbnRhdGlvbgotCi0tICh2b2lkKXhwY0Nvbm5lY3Rpb246
KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKil4cGNDb25uZWN0aW9uIHJlY2VpdmVkTWVzc2FnZToo
TlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm8K
LXsKLSAgICBBU1NFUlQoeHBjQ29ubmVjdGlvbiA9PSBfeHBjQ29ubmVjdGlvbik7Ci0KLSAgICBp
ZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJQZXJtaXNzaW9uRGVuaWVkXSkKLSAg
ICAgICAgW3NlbGYgc3RvcF07Ci0gICAgZWxzZQotICAgICAgICBbX2Nvbm5lY3Rpb25Db250cm9s
bGVyIHJlY2VpdmVkTWVzc2FnZTptZXNzYWdlTmFtZSB1c2VySW5mbzp1c2VySW5mb107Ci19Ci0K
LS0gKHZvaWQpeHBjQ29ubmVjdGlvbkZhaWxlZDooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNv
bm5lY3Rpb24KLXsKLSAgICBbX2Nvbm5lY3Rpb25Db250cm9sbGVyIGNsb3NlQWxsQ29ubmVjdGlv
bnNdOwotCi0gICAgaWYgKF94cGNDb25uZWN0aW9uKSB7Ci0gICAgICAgIF94cGNDb25uZWN0aW9u
LmRlbGVnYXRlID0gbmlsOwotICAgICAgICBbX3hwY0Nvbm5lY3Rpb24gcmVsZWFzZV07Ci0gICAg
ICAgIF94cGNDb25uZWN0aW9uID0gbmlsOwotICAgIH0KLX0KLQotCi0jcHJhZ21hIG1hcmsgLQot
I3ByYWdtYSBtYXJrIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5RGVsZWdhdGUgaW1wbGVtZW50
YXRpb24KLQotLSAodm9pZClkaWRSZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50Kilj
bGllbnQKLXsKLSAgICAvLyBXaGVuIGEgV2ViVmlldyBpcyByZWdpc3RlcmVkIGl0IGhhcyBubyBj
b250ZW50LiBCdXQgc29tZSBXZWJWaWV3cwotICAgIC8vIG5ldmVyIGxvYWQgY29udGVudCBmcm9t
IGEgVVJMLCBzdWNoIGFzIFVJVGV4dEZpZWxkcyBvbiBpT1MuCi0gICAgW3NlbGYgcHVzaExpc3Rp
bmddOwotfQotCi0tICh2b2lkKWRpZFVucmVnaXN0ZXJDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVu
dCopY2xpZW50Ci17Ci0gICAgW3NlbGYgcHVzaExpc3RpbmddOwotfQotCi1AZW5kCi0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJ
bnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
Ykluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24ubW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxYWVkODEuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJW
aWV3Q29ubmVjdGlvbi5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlv
bi5oIgotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKLSNpbXBvcnQgIldlYkluc3Bl
Y3RvclJlbGF5RGVmaW5pdGlvbnMuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclJlbW90ZUNoYW5u
ZWwuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclNlcnZlci5oIgotI2ltcG9ydCAiV2ViSW5zcGVj
dG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmgiCi0jaW1wb3J0ICJXZWJJbnNw
ZWN0b3JYUENXcmFwcGVyLmgiCi0jaW1wb3J0ICJXZWJLaXRMb2dnaW5nLmgiCi0jaW1wb3J0IDx3
dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLUBpbXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0b3JTZXJ2ZXJX
ZWJWaWV3Q29ubmVjdGlvbgotCi0tIChpZClpbml0V2l0aENvbnRyb2xsZXI6KFdlYkluc3BlY3Rv
clNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciAqKWNvbnRyb2xsZXIgY29ubmVjdGlv
bklkZW50aWZpZXI6KE5TU3RyaW5nICopY29ubmVjdGlvbklkZW50aWZpZXIgZGVzdGluYXRpb246
KE5TU3RyaW5nICopZGVzdGluYXRpb24gaWRlbnRpZmllcjooTlNOdW1iZXIgKilpZGVudGlmaWVy
Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0KLSAgICBfY29udHJvbGxlciA9IGNvbnRyb2xsZXI7Ci0gICAgX2Nvbm5lY3Rp
b25JZGVudGlmaWVyID0gW2Nvbm5lY3Rpb25JZGVudGlmaWVyIGNvcHldOwotICAgIF9kZXN0aW5h
dGlvbiA9IFtkZXN0aW5hdGlvbiBjb3B5XTsKLSAgICBfaWRlbnRpZmllciA9IFtpZGVudGlmaWVy
IGNvcHldOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKEJPT0wpc2V0dXBDaGFubmVsCi17
Ci0gICAgQVNTRVJUKCFfY2hhbm5lbCk7Ci0gICAgdW5zaWduZWQgcGFnZUlkID0gW19pZGVudGlm
aWVyIHVuc2lnbmVkSW50VmFsdWVdOwotICAgIF9jaGFubmVsID0gW1dlYkluc3BlY3RvclJlbW90
ZUNoYW5uZWwgY3JlYXRlQ2hhbm5lbEZvclBhZ2VJZDpwYWdlSWQgY29ubmVjdGlvbjpzZWxmXTsK
LSAgICByZXR1cm4gX2NoYW5uZWwgIT0gbmlsOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAg
ICBBU1NFUlQoIV9jaGFubmVsKTsKLSAgICBbX2Nvbm5lY3Rpb25JZGVudGlmaWVyIHJlbGVhc2Vd
OwotICAgIFtfZGVzdGluYXRpb24gcmVsZWFzZV07Ci0gICAgW19pZGVudGlmaWVyIHJlbGVhc2Vd
OwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAoTlNTdHJpbmcgKiljb25uZWN0aW9uSWRl
bnRpZmllcgotewotICAgIHJldHVybiBbW19jb25uZWN0aW9uSWRlbnRpZmllciBjb3B5XSBhdXRv
cmVsZWFzZV07Ci19Ci0KLS0gKE5TTnVtYmVyICopaWRlbnRpZmllcgotewotICAgIHJldHVybiBb
W19pZGVudGlmaWVyIGNvcHldIGF1dG9yZWxlYXNlXTsKLX0KLQotCi0jcHJhZ21hIG1hcmsgLQot
I3ByYWdtYSBtYXJrIEludGVyYWN0aW9uIHdpdGggdGhlIGNoYW5uZWwgdG8gdGhlIGxvY2FsIGlu
c3BlY3RvciBiYWNrZW5kCi0KLS0gKHZvaWQpY2xlYXJDaGFubmVsCi17Ci0gICAgX2NoYW5uZWwg
PSBuaWw7Ci0gICAgW19jb250cm9sbGVyIGNvbm5lY3Rpb25DbG9zaW5nOnNlbGZdOwotfQotCi0t
ICh2b2lkKXNlbmRNZXNzYWdlVG9Gcm9udGVuZDooTlNTdHJpbmcgKiltZXNzYWdlCi17Ci0gICAg
TlNEYXRhICpkYXRhID0gW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddOwotICAgIE5TRGljdGlvbmFyeSAqb3V0Z29pbmcgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rp
b25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgIGRhdGEsIFdJUlJhd0RhdGFLZXksCi0g
ICAgICAgIF9jb25uZWN0aW9uSWRlbnRpZmllciwgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXks
Ci0gICAgICAgIF9kZXN0aW5hdGlvbiwgV0lSRGVzdGluYXRpb25LZXksCi0gICAgICAgIG5pbF07
Ci0KLSAgICBbX2NvbnRyb2xsZXIgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOldJUlJhd0RhdGFNZXNz
YWdlIHVzZXJJbmZvOm91dGdvaW5nXTsKLX0KLQotLSAodm9pZClzZW5kTWVzc2FnZVRvQmFja2Vu
ZDooTlNTdHJpbmcgKiltZXNzYWdlCi17Ci0gICAgQVNTRVJUKF9jaGFubmVsKTsKLSAgICBMT0co
UmVtb3RlSW5zcGVjdG9yLCAiV2ViSW5zcGVjdG9yU2VydmVyQ29ubmVjdGlvbjogUmVjZWl2ZWQ6
IHwlc3wiLCBTdHJpbmcobWVzc2FnZSkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBbX2NoYW5uZWwg
c2VuZE1lc3NhZ2VUb0JhY2tlbmQ6bWVzc2FnZV07Ci19Ci0KLQotI3ByYWdtYSBtYXJrIC0KLSNw
cmFnbWEgbWFyayBJbnRlcmFjdGlvbiB3aXRoIHRoZSBzZXJ2ZXIgdG8gdGhlIHJlbW90ZSBpbnNw
ZWN0b3IgZnJvbnRlbmQKLQotLSAodm9pZClyZWNlaXZlZERhdGE6KE5TRGljdGlvbmFyeSAqKWRp
Y3Rpb25hcnkKLXsKLSAgICBOU0RhdGEgKmRhdGEgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
V0lSU29ja2V0RGF0YUtleV07Ci0gICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBbW05TU3RyaW5nIGFs
bG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0g
ICAgW3NlbGYgc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6bWVzc2FnZV07Ci0gICAgW21lc3NhZ2UgcmVs
ZWFzZV07Ci19Ci0KLS0gKHZvaWQpcmVjZWl2ZWREaWRDbG9zZTooTlNEaWN0aW9uYXJ5ICopZGlj
dGlvbmFyeQotewotICAgIGlmIChfY2hhbm5lbCkgewotICAgICAgICBbX2NoYW5uZWwgY2xvc2VG
cm9tUmVtb3RlU2lkZV07Ci0gICAgICAgIFtfY2hhbm5lbCByZWxlYXNlXTsKLSAgICAgICAgX2No
YW5uZWwgPSBuaWw7Ci0gICAgfQotfQotCi1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJW
aWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0
b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VjMjEzNi4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDM4NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJW
aWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCIKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50
LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIgotI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVy
LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oIgotI2lt
cG9ydCAiV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIgotI2ltcG9ydCAiV2ViVmlldy5oIgotI2lt
cG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKLQotI2lmIFBMQVRGT1JNKElPUykKLSNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZVRocmVhZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVu
Lmg+Ci0jZW5kaWYKLQotCi1AaW1wbGVtZW50YXRpb24gV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb25Db250cm9sbGVyCi0KLS0gKGlkKWluaXRXaXRoU2VydmVyOihXZWJJbnNwZWN0
b3JTZXJ2ZXIgKilzZXJ2ZXIKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICgh
c2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9zZXJ2ZXIgPSBzZXJ2ZXI7Ci0KLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgQVNTRVJUKCFbX29w
ZW5Db25uZWN0aW9ucyBjb3VudF0pOwotICAgIFtfb3BlbkNvbm5lY3Rpb25zIHJlbGVhc2VdOwot
Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWNsb3NlQWxsQ29ubmVjdGlvbnMK
LXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgV2ViVGhyZWFkUnVuKF57Ci0jZW5kaWYKLQotICAg
IGZvciAoTlNOdW1iZXIgKmtleSBpbiBfb3BlbkNvbm5lY3Rpb25zKSB7Ci0gICAgICAgIFdlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uICpjb25uZWN0aW9uID0gW19vcGVuQ29ubmVj
dGlvbnMgb2JqZWN0Rm9yS2V5OmtleV07Ci0gICAgICAgIFtjb25uZWN0aW9uIHJlY2VpdmVkRGlk
Q2xvc2U6bmlsXTsKLSAgICB9Ci0gICAgW19vcGVuQ29ubmVjdGlvbnMgcmVtb3ZlQWxsT2JqZWN0
c107Ci0KLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewot
ICAgICAgICBbX3NlcnZlciBzZXRIYXNBY3RpdmVEZWJ1Z1Nlc3Npb246Tk9dOwotICAgIH0pOwot
Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIH0pOwotI2VuZGlmCi19Ci0KLS0gKE5TRGljdGlvbmFy
eSAqKV9saXN0aW5nRm9yV2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgcGFnZUlkOihOU051bWJl
ciAqKXBhZ2VJZCByZWdpc3RyeTooV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgKilyZWdpc3Ry
eQotewotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKndlYlZpZXdEZXRhaWxzID0gW05TTXV0YWJs
ZURpY3Rpb25hcnkgZGljdGlvbmFyeV07Ci0KLSAgICAvLyBQYWdlIElELgotICAgIFt3ZWJWaWV3
RGV0YWlscyBzZXRPYmplY3Q6cGFnZUlkIGZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07Ci0K
LSAgICAvLyBVUkwuCi0gICAgTlNTdHJpbmcgKnVybCA9IFt3ZWJWaWV3IG1haW5GcmFtZVVSTF07
Ci0gICAgaWYgKCF1cmwpCi0gICAgICAgIHVybCA9IEAiYWJvdXQ6YmxhbmsiOwotICAgIFt3ZWJW
aWV3RGV0YWlscyBzZXRPYmplY3Q6dXJsIGZvcktleTpXSVJVUkxLZXldOwotCi0gICAgLy8gVGl0
bGUuCi0gICAgTlNTdHJpbmcgKnRpdGxlID0gW3dlYlZpZXcgbWFpbkZyYW1lVGl0bGVdOwotICAg
IFt3ZWJWaWV3RGV0YWlscyBzZXRPYmplY3Q6dGl0bGUgZm9yS2V5OldJUlRpdGxlS2V5XTsKLQot
ICAgIC8vIFtPcHRpb25hbF0gQ29ubmVjdGlvbiBJZGVudGlmaWVyIChSZW1vdGUgRGVidWdnZXIg
VVVJRCkuCi0gICAgLy8gW09wdGlvbmFsXSBIYXMgTG9jYWwgRGVidWdnZXIgU2Vzc2lvbi4KLSAg
ICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqY29ubmVjdGlvbiA9IFtfb3Bl
bkNvbm5lY3Rpb25zIG9iamVjdEZvcktleTpwYWdlSWRdOwotICAgIGlmIChjb25uZWN0aW9uKQot
ICAgICAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OmNvbm5lY3Rpb24uY29ubmVjdGlvbklk
ZW50aWZpZXIgZm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKLSAgICBlbHNlIHsK
LSAgICAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQgPSBbcmVnaXN0cnkg
Y2xpZW50Rm9yUGFnZUlkOltwYWdlSWQgdW5zaWduZWRJbnRWYWx1ZV1dOwotICAgICAgICBpZiAo
aW5zcGVjdG9yQ2xpZW50LT5oYXNMb2NhbFNlc3Npb24oKSkKLSAgICAgICAgICAgIFt3ZWJWaWV3
RGV0YWlscyBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10gZm9yS2V5OldJ
Ukhhc0xvY2FsRGVidWdnZXJLZXldOwotICAgIH0KLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICAv
LyBbT3B0aW9uYWxdIEhvc3QgQXBwbGljYXRpb24gSUQuCi0gICAgTlNTdHJpbmcgKmhvc3RBcHBs
aWNhdGlvbklkID0gW3dlYlZpZXcgaG9zdEFwcGxpY2F0aW9uQnVuZGxlSWRdOwotICAgIGlmICho
b3N0QXBwbGljYXRpb25JZCkKLSAgICAgICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDpob3N0
QXBwbGljYXRpb25JZCBmb3JLZXk6V0lSSG9zdEFwcGxpY2F0aW9uSWRlbnRpZmllcktleV07Ci0K
LSAgICAvLyBbT3B0aW9uYWxdIEhvc3QgQXBwbGljYXRpb24gTmFtZS4KLSAgICBOU1N0cmluZyAq
aG9zdEFwcGxpY2F0aW9uTmFtZSA9IFt3ZWJWaWV3IGhvc3RBcHBsaWNhdGlvbk5hbWVdOwotICAg
IGlmIChob3N0QXBwbGljYXRpb25OYW1lKQotICAgICAgICBbd2ViVmlld0RldGFpbHMgc2V0T2Jq
ZWN0Omhvc3RBcHBsaWNhdGlvbk5hbWUgZm9yS2V5OldJUkhvc3RBcHBsaWNhdGlvbk5hbWVLZXld
OwotI2VuZGlmCi0KLSAgICAvLyBbT3B0aW9uYWxdIFJlbW90ZSBJbnNwZWN0b3IgV2ViVmlldyBV
c2VyIEluZm8gRGljdGlvbmFyeS4KLSAgICBOU0RpY3Rpb25hcnkgKnJlbW90ZUluc3BlY3RvclVz
ZXJJbmZvID0gW3dlYlZpZXcgcmVtb3RlSW5zcGVjdG9yVXNlckluZm9dOwotICAgIGlmIChyZW1v
dGVJbnNwZWN0b3JVc2VySW5mbykKLSAgICAgICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDpy
ZW1vdGVJbnNwZWN0b3JVc2VySW5mbyBmb3JLZXk6V0lSVXNlckluZm9LZXldOwotCi0gICAgcmV0
dXJuIHdlYlZpZXdEZXRhaWxzOwotfQotCi0tICh2b2lkKV9wdXNoTGlzdGluZzooTlNTdHJpbmcg
KilvcHRpb25hbENvbm5lY3Rpb25JZGVudGlmaWVyCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAg
IEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0jZW5kaWYKLQotICAgIF9oYXNTY2hlZHVs
ZWRQdXNoID0gTk87Ci0KLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpyZXNwb25zZSA9IFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgV2ViSW5zcGVjdG9yQ2xpZW50UmVn
aXN0cnkgKndlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ID0gW1dlYkluc3BlY3RvckNsaWVudFJl
Z2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XTsKLSAgICBOU0RpY3Rpb25hcnkgKnJlZ2lzdGVyZWRWaWV3
cyA9IFt3ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBpbnNwZWN0YWJsZVdlYlZpZXdzXTsKLSAg
ICBmb3IgKE5TTnVtYmVyICpwYWdlSWQgaW4gcmVnaXN0ZXJlZFZpZXdzKSB7Ci0gICAgICAgIFdl
YlZpZXcgKndlYlZpZXcgPSBbcmVnaXN0ZXJlZFZpZXdzIG9iamVjdEZvcktleTpwYWdlSWRdOwot
ICAgICAgICBOU0RpY3Rpb25hcnkgKndlYlZpZXdEZXRhaWxzID0gW3NlbGYgX2xpc3RpbmdGb3JX
ZWJWaWV3OndlYlZpZXcgcGFnZUlkOnBhZ2VJZCByZWdpc3RyeTp3ZWJJbnNwZWN0b3JDbGllbnRS
ZWdpc3RyeV07Ci0gICAgICAgIFtyZXNwb25zZSBzZXRPYmplY3Q6d2ViVmlld0RldGFpbHMgZm9y
S2V5OltwYWdlSWQgc3RyaW5nVmFsdWVdXTsKLSAgICB9Ci0KLSAgICBOU011dGFibGVEaWN0aW9u
YXJ5ICpvdXRnb2luZyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAg
W291dGdvaW5nIHNldE9iamVjdDpyZXNwb25zZSBmb3JLZXk6V0lSTGlzdGluZ0tleV07Ci0gICAg
aWYgKG9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIFtvdXRnb2luZyBzZXRP
YmplY3Q6b3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllciBmb3JLZXk6V0lSQ29ubmVjdGlvbklk
ZW50aWZpZXJLZXldOwotCi0gICAgW3NlbGYgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOldJUkxpc3Rp
bmdNZXNzYWdlIHVzZXJJbmZvOm91dGdvaW5nXTsKLQotICAgIFtvdXRnb2luZyByZWxlYXNlXTsK
LSAgICBbcmVzcG9uc2UgcmVsZWFzZV07Ci19Ci0KLS0gKHZvaWQpcHVzaExpc3Rpbmc6KE5TU3Ry
aW5nICopb3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcgotewotI2lmIFBMQVRGT1JNKElPUykK
LSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotI2VuZGlmCi0KLSAgICBpZiAoX2hh
c1NjaGVkdWxlZFB1c2gpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChvcHRpb25hbENvbm5l
Y3Rpb25JZGVudGlmaWVyKSB7Ci0gICAgICAgIFtzZWxmIF9wdXNoTGlzdGluZzpvcHRpb25hbENv
bm5lY3Rpb25JZGVudGlmaWVyXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmIFBMQVRG
T1JNKElPUykKLSAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVf
Tk9XLCAwLjIgKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BB
VENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeewotICAgICAgICBXZWJUaHJlYWRSdW4o
XnsKLSAgICAgICAgICAgIFtzZWxmIF9wdXNoTGlzdGluZzpuaWxdOwotICAgICAgICB9KTsKLSAg
ICB9KTsKLSNlbHNlCi0gICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihfcHVzaExp
c3Rpbmc6KSB3aXRoT2JqZWN0Om5pbCBhZnRlckRlbGF5OjAuMl07Ci0jZW5kaWYKLQotICAgIF9o
YXNTY2hlZHVsZWRQdXNoID0gWUVTOwotfQotCi0tICh2b2lkKXB1c2hMaXN0aW5nCi17Ci0jaWYg
UExBVEZPUk0oSU9TKQotICAgIFdlYlRocmVhZFJ1biheewotI2VuZGlmCi0KLSAgICBbc2VsZiBw
dXNoTGlzdGluZzpuaWxdOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIH0pOwotI2VuZGlmCi19
Ci0KLS0gKHZvaWQpX3JlY2VpdmVkU2V0dXA6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsK
LSAgICBOU051bWJlciAqcGFnZUlkID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldJUlBhZ2VJ
ZGVudGlmaWVyS2V5XTsKLSAgICBpZiAoIXBhZ2VJZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
TlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5
OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKLSAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlm
aWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU1N0cmluZyAqc2VuZGVyID0gW2RpY3Rpb25h
cnkgb2JqZWN0Rm9yS2V5OldJUlNlbmRlcktleV07Ci0gICAgaWYgKCFzZW5kZXIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmICghX29wZW5Db25uZWN0aW9ucykKLSAgICAgICAgX29wZW5Db25u
ZWN0aW9ucyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0KLSAgICBXZWJJ
bnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqY29ubmVjdGlvbiA9IFtbV2ViSW5zcGVj
dG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gYWxsb2NdIGluaXRXaXRoQ29udHJvbGxlcjpzZWxm
IGNvbm5lY3Rpb25JZGVudGlmaWVyOmNvbm5lY3Rpb25JZGVudGlmaWVyIGRlc3RpbmF0aW9uOnNl
bmRlciBpZGVudGlmaWVyOnBhZ2VJZF07Ci0gICAgaWYgKFtjb25uZWN0aW9uIHNldHVwQ2hhbm5l
bF0pCi0gICAgICAgIFtfb3BlbkNvbm5lY3Rpb25zIHNldE9iamVjdDpjb25uZWN0aW9uIGZvcktl
eTpwYWdlSWRdOwotICAgIFtjb25uZWN0aW9uIHJlbGVhc2VdOwotCi0gICAgaWYgKFtfb3BlbkNv
bm5lY3Rpb25zIGNvdW50XSA9PSAxKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgICAgICBbX3NlcnZlciBzZXRIYXNBY3RpdmVE
ZWJ1Z1Nlc3Npb246WUVTXTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgW3NlbGYgcHVzaExp
c3RpbmddOwotfQotCi0tICh2b2lkKV9yZWNlaXZlZERhdGE6KE5TRGljdGlvbmFyeSAqKWRpY3Rp
b25hcnkKLXsKLSAgICBOU051bWJlciAqcGFnZUlkID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5
OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsKLSAgICBpZiAoIXBhZ2VJZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24g
PSBbX29wZW5Db25uZWN0aW9ucyBvYmplY3RGb3JLZXk6cGFnZUlkXTsKLSAgICBBU1NFUlQoIWNv
bm5lY3Rpb24gfHwgW2Nvbm5lY3Rpb24gaXNLaW5kT2ZDbGFzczpbV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb24gY2xhc3NdXSk7Ci0gICAgaWYgKCFjb25uZWN0aW9uKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBbY29ubmVjdGlvbiByZWNlaXZlZERhdGE6ZGljdGlvbmFyeV07Ci19
Ci0KLS0gKHZvaWQpX3JlY2VpdmVkRGlkQ2xvc2U6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkK
LXsKLSAgICBOU051bWJlciAqcGFnZUlkID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldJUlBh
Z2VJZGVudGlmaWVyS2V5XTsKLSAgICBpZiAoIXBhZ2VJZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9y
S2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKLSAgICBpZiAoIWNvbm5lY3Rpb25JZGVu
dGlmaWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbiAqY29ubmVjdGlvbiA9IFtfb3BlbkNvbm5lY3Rpb25zIG9iamVjdEZvcktleTpw
YWdlSWRdOwotICAgIEFTU0VSVCghY29ubmVjdGlvbiB8fCBbY29ubmVjdGlvbiBpc0tpbmRPZkNs
YXNzOltXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiBjbGFzc11dKTsKLSAgICBp
ZiAoIWNvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghW2Nvbm5lY3Rpb25J
ZGVudGlmaWVyIGlzRXF1YWxUb1N0cmluZzpjb25uZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlmaWVy
XSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW2Nvbm5lY3Rpb24gcmVjZWl2ZWREaWRDbG9zZTpk
aWN0aW9uYXJ5XTsKLSAgICBbX29wZW5Db25uZWN0aW9ucyByZW1vdmVPYmplY3RGb3JLZXk6cGFn
ZUlkXTsKLQotICAgIGlmICghW19vcGVuQ29ubmVjdGlvbnMgY291bnRdKSB7Ci0gICAgICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgICAgICBb
X3NlcnZlciBzZXRIYXNBY3RpdmVEZWJ1Z1Nlc3Npb246Tk9dOwotICAgICAgICB9KTsKLSAgICB9
Ci0KLSAgICBbc2VsZiBwdXNoTGlzdGluZ107Ci19Ci0KLS0gKHZvaWQpX3JlY2VpdmVkR2V0TGlz
dGluZzooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIFtzZWxmIHB1c2hMaXN0aW5n
OltkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV1dOwot
fQotCi0tICh2b2lkKV9yZWNlaXZlZEluZGljYXRlOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5
Ci17Ci0gICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJQ
YWdlSWRlbnRpZmllcktleV07Ci0gICAgaWYgKCFwYWdlSWQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFy
ZWRSZWdpc3RyeV0gaW5zcGVjdGFibGVXZWJWaWV3c10gb2JqZWN0Rm9yS2V5OnBhZ2VJZF07Ci0g
ICAgaWYgKCF3ZWJWaWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICBCT09MIGluZGljYXRlRW5h
YmxlZCA9IFtbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSSW5kaWNhdGVFbmFibGVkS2V5XSBi
b29sVmFsdWVdOwotICAgIFt3ZWJWaWV3IHNldEluZGljYXRpbmdGb3JSZW1vdGVJbnNwZWN0b3I6
aW5kaWNhdGVFbmFibGVkXTsKLX0KLQotLSAodm9pZClfcmVjZWl2ZWRDb25uZWN0aW9uRGllZDoo
TlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRl
bnRpZmllciA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmll
cktleV07Ci0gICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgTlNEaWN0aW9uYXJ5ICpjb25uZWN0aW9uc0NvcHkgPSBbW19vcGVuQ29ubmVjdGlvbnMg
Y29weV0gYXV0b3JlbGVhc2VdOwotICAgIGZvciAoTlNOdW1iZXIgKmtleSBpbiBjb25uZWN0aW9u
c0NvcHkpIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKmNv
bm5lY3Rpb24gPSBbY29ubmVjdGlvbnNDb3B5IG9iamVjdEZvcktleTprZXldOwotICAgICAgICBp
ZiAoW2Nvbm5lY3Rpb24uY29ubmVjdGlvbklkZW50aWZpZXIgaXNFcXVhbFRvU3RyaW5nOmNvbm5l
Y3Rpb25JZGVudGlmaWVyXSkgewotICAgICAgICAgICAgW2Nvbm5lY3Rpb24gcmVjZWl2ZWREaWRD
bG9zZTpuaWxdOwotICAgICAgICAgICAgW19vcGVuQ29ubmVjdGlvbnMgcmVtb3ZlT2JqZWN0Rm9y
S2V5OmtleV07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIVtfb3BlbkNvbm5lY3Rpb25z
IGNvdW50XSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeewotICAgICAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOk5P
XTsKLSAgICAgICAgfSk7Ci0gICAgfQotfQotCi0tICh2b2lkKXJlY2VpdmVkTWVzc2FnZTooTlNT
dHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm8KLXsK
LSNpZiBQTEFURk9STShJT1MpCi0gICAgV2ViVGhyZWFkUnVuKF57Ci0jZW5kaWYKLQotICAgIGlm
IChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlNvY2tldFNldHVwTWVzc2FnZV0pCi0g
ICAgICAgIFtzZWxmIF9yZWNlaXZlZFNldHVwOnVzZXJJbmZvXTsKLSAgICBlbHNlIGlmIChbbWVz
c2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlNvY2tldERhdGFNZXNzYWdlXSkKLSAgICAgICAg
W3NlbGYgX3JlY2VpdmVkRGF0YTp1c2VySW5mb107Ci0gICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1l
IGlzRXF1YWxUb1N0cmluZzpXSVJXZWJQYWdlQ2xvc2VNZXNzYWdlXSkKLSAgICAgICAgW3NlbGYg
X3JlY2VpdmVkRGlkQ2xvc2U6dXNlckluZm9dOwotICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6V0lSQXBwbGljYXRpb25HZXRMaXN0aW5nTWVzc2FnZV0pCi0gICAgICAg
IFtzZWxmIF9yZWNlaXZlZEdldExpc3Rpbmc6dXNlckluZm9dOwotICAgIGVsc2UgaWYgKFttZXNz
YWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSSW5kaWNhdGVNZXNzYWdlXSkKLSAgICAgICAgW3Nl
bGYgX3JlY2VpdmVkSW5kaWNhdGU6dXNlckluZm9dOwotICAgIGVsc2UgaWYgKFttZXNzYWdlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6V0lSQ29ubmVjdGlvbkRpZWRNZXNzYWdlXSkKLSAgICAgICAgW3Nl
bGYgX3JlY2VpdmVkQ29ubmVjdGlvbkRpZWQ6dXNlckluZm9dOwotICAgIGVsc2UKLSAgICAgICAg
TlNMb2coQCJVbnJlY29nbml6ZWQgTWVzc2FnZTogJUAiLCBtZXNzYWdlTmFtZSk7Ci0KLSNpZiBQ
TEFURk9STShJT1MpCi0gICAgfSk7Ci0jZW5kaWYKLX0KLQotCi0jcHJhZ21hIG1hcmsgLQotI3By
YWdtYSBtYXJrIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGludGVyZmFjZQot
Ci0tICh2b2lkKWNvbm5lY3Rpb25DbG9zaW5nOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbiAqKWNvbm5lY3Rpb24KLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgV2ViVGhyZWFk
UnVuKF57Ci0jZW5kaWYKLQotICAgIFtfb3BlbkNvbm5lY3Rpb25zIHJlbW92ZU9iamVjdEZvcktl
eTpbY29ubmVjdGlvbiBpZGVudGlmaWVyXV07Ci0KLSAgICBpZiAoIVtfb3BlbkNvbm5lY3Rpb25z
IGNvdW50XSkgewotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeewotICAgICAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOk5P
XTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIH0pOwotI2Vu
ZGlmCi19Ci0KLQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBUaHJlYWQgU2FmZSBzZW5k
IG1lc3NhZ2UgdG8gZnJvbnRlbmQKLQotLSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5T
U3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvCi17
Ci0gICAgLy8gVGhpcyBtYXkgYmUgY2FsbGVkIGZyb20gZWl0aGVyIHRoZSBXZWJUaHJlYWQgb3Ig
dGhlIE1haW5UaHJlYWQuIFRoaXMKLSAgICAvLyByZXF1aXJlcyBhY2Nlc3MgdG8gdGhlIFdlYklu
c3BlY3RvclNlcnZlcidzIFhQQyBDb25uZWN0aW9uLCB3aGljaAotICAgIC8vIGlzIG1hbmFnZWQg
b24gdGhlIG1haW4gdGhyZWFkLiBTbywgZGlzcGF0Y2ggdG8gdGhlIG1haW4gdGhyZWFkIHRvCi0g
ICAgLy8gc2FmZWx5IHVzZSB0aGUgeHBjIGNvbm5lY3Rpb24uCi0gICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgW1tfc2VydmVyIHhwY0Nvbm5l
Y3Rpb25dIHNlbmRNZXNzYWdlOm1lc3NhZ2VOYW1lIHVzZXJJbmZvOnVzZXJJbmZvXTsKLSAgICB9
KTsKLX0KLQotQGVuZAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
Ykluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmYjFlMDIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0KKysr
IC9kZXYvbnVsbApAQCAtMSwxNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9y
dCAiV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oIgotCi0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5o
PgotCi0jaWYgX19oYXNfaW5jbHVkZSg8Q29yZUZvdW5kYXRpb24vQ0ZYUENCcmlkZ2UuaD4pCi0j
aW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZYUENCcmlkZ2UuaD4KLSNlbHNlCi1leHRlcm4geHBj
X29iamVjdF90IF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VXaXRoQ0ZPYmplY3QoQ0ZUeXBlUmVmKTsK
LWV4dGVybiBDRlR5cGVSZWYgX0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4cGNf
b2JqZWN0X3QpOwotI2VuZGlmCi0KLS8vIENvbnN0YW50cyBwcml2YXRlIHRvIHRoaXMgZmlsZSBm
b3IgbWVzc2FnZSBzZXJpYWxpemF0aW9uIG9uIGJvdGggZW5kcy4KLSNkZWZpbmUgV2ViSW5zcGVj
dG9yWFBDV3JhcHBlck1lc3NhZ2VOYW1lS2V5IEAibWVzc2FnZU5hbWUiCi0jZGVmaW5lIFdlYklu
c3BlY3RvclhQQ1dyYXBwZXJVc2VySW5mb0tleSBAInVzZXJJbmZvIgotI2RlZmluZSBXZWJJbnNw
ZWN0b3JYUENXcmFwcGVyU2VyaWFsaXplZE1lc3NhZ2VLZXkgIm1zZ0RhdGEiCi0KLUBpbnRlcmZh
Y2UgV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAoKQotLSAodm9pZClfaGFuZGxlRXZlbnQ6KHhwY19v
YmplY3RfdClvYmplY3Q7Ci1AZW5kCi0KLQotQGltcGxlbWVudGF0aW9uIFdlYkluc3BlY3RvclhQ
Q1dyYXBwZXIKLQotQGR5bmFtaWMgYXZhaWxhYmxlOwotCi1Ac3ludGhlc2l6ZSBkZWxlZ2F0ZSA9
IF9kZWxlZ2F0ZTsKLUBzeW50aGVzaXplIGNvbm5lY3Rpb24gPSBfY29ubmVjdGlvbjsKLUBzeW50
aGVzaXplIHRhZyA9IF90YWc7Ci0KLS0gKFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKilpbml0V2l0
aENvbm5lY3Rpb246KHhwY19jb25uZWN0aW9uX3QpY29ubmVjdGlvbgotewotICAgIHNlbGYgPSBb
c3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAg
X2Nvbm5lY3Rpb24gPSB4cGNfcmV0YWluKGNvbm5lY3Rpb24pOwotICAgIHhwY19jb25uZWN0aW9u
X3NldF90YXJnZXRfcXVldWUoX2Nvbm5lY3Rpb24sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkp
OwotICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKF9jb25uZWN0aW9uLCBeKHhw
Y19vYmplY3RfdCBvYmplY3QpIHsgW3NlbGYgX2hhbmRsZUV2ZW50Om9iamVjdF07IH0pOwotICAg
IHhwY19jb25uZWN0aW9uX3Jlc3VtZShfY29ubmVjdGlvbik7Ci0KLSAgICByZXR1cm4gc2VsZjsK
LX0KLQotLSAodm9pZCljbG9zZQotewotICAgIGlmIChfY29ubmVjdGlvbikgewotICAgICAgICB4
cGNfY29ubmVjdGlvbl9jYW5jZWwoX2Nvbm5lY3Rpb24pOwotICAgICAgICB4cGNfcmVsZWFzZShf
Y29ubmVjdGlvbik7Ci0gICAgICAgIF9jb25uZWN0aW9uID0gTlVMTDsKLSAgICB9Ci19Ci0KLS0g
KHZvaWQpZGVhbGxvYwotewotICAgIFtzZWxmIGNsb3NlXTsKLSAgICBbX3RhZyByZWxlYXNlXTsK
LSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKE5TRGljdGlvbmFyeSAqKV9kZXNlcmlhbGl6
ZU1lc3NhZ2U6KHhwY19vYmplY3RfdClvYmplY3QKLXsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KHhwY19nZXRfdHlwZShvYmplY3QpID09IFhQQ19UWVBFX0RJQ1RJT05BUlksICJHb3QgdW5leHBl
Y3RlZCBvYmplY3QgZnJvbSBhbiB4cGMgY29ubmVjdGlvbiIpOwotICAgIGlmICh4cGNfZ2V0X3R5
cGUob2JqZWN0KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQotICAgICAgICByZXR1cm4gbmlsOwot
Ci0gICAgeHBjX29iamVjdF90IHhwY0RpY3Rpb25hcnkgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFs
dWUob2JqZWN0LCBXZWJJbnNwZWN0b3JYUENXcmFwcGVyU2VyaWFsaXplZE1lc3NhZ2VLZXkpOwot
ICAgIGlmICgheHBjRGljdGlvbmFyeSB8fCB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgIT0g
WFBDX1RZUEVfRElDVElPTkFSWSkgewotICAgICAgICAvLyBUaGlzIGlzbid0IGEgbWVzc2FnZSB0
eXBlIHRoYXQgd2Uga25vdyBob3cgdG8gZGVzZXJpYWxpemUsIHNvIHdlIGxldCBvdXIgZGVsZWdh
dGUgd29ycnkgYWJvdXQgaXQuCi0gICAgICAgIGlmIChbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoeHBjQ29ubmVjdGlvbjp1bmhhbmRsZWRNZXNzYWdlOildKQotICAgICAg
ICAgICAgW19kZWxlZ2F0ZSB4cGNDb25uZWN0aW9uOnNlbGYgdW5oYW5kbGVkTWVzc2FnZTpvYmpl
Y3RdOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIE5TRGljdGlvbmFyeSAqZGlj
dGlvbmFyeSA9IF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjRGljdGlvbmFy
eSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkaWN0aW9uYXJ5LCAiVW5hYmxlIHRvIGRlc2Vy
aWFsaXplIHhwYyBtZXNzYWdlIik7Ci0gICAgaWYgKCFkaWN0aW9uYXJ5KQotICAgICAgICByZXR1
cm4gbmlsOwotCi0gICAgcmV0dXJuIFtkaWN0aW9uYXJ5IGF1dG9yZWxlYXNlXTsKLX0KLQotLSAo
dm9pZClfaGFuZGxlRXZlbnQ6KHhwY19vYmplY3RfdClvYmplY3QKLXsKLSAgICBpZiAoIV9jb25u
ZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoeHBjX2dldF90eXBlKG9iamVjdCkg
PT0gWFBDX1RZUEVfRVJST1IpIHsKLSAgICAgICAgW19kZWxlZ2F0ZSB4cGNDb25uZWN0aW9uRmFp
bGVkOnNlbGZdOwotICAgICAgICBbc2VsZiBjbG9zZV07Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoIV9kZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNEaWN0aW9u
YXJ5ICpkYXRhRGljdGlvbmFyeSA9IFtzZWxmIF9kZXNlcmlhbGl6ZU1lc3NhZ2U6b2JqZWN0XTsK
LSAgICBpZiAoIWRhdGFEaWN0aW9uYXJ5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU1N0cmlu
ZyAqbWVzc2FnZSA9IFtkYXRhRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V2ViSW5zcGVjdG9yWFBD
V3JhcHBlck1lc3NhZ2VOYW1lS2V5XTsKLSAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gW2Rh
dGFEaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXZWJJbnNwZWN0b3JYUENXcmFwcGVyVXNlckluZm9L
ZXldOwotICAgIFtfZGVsZWdhdGUgeHBjQ29ubmVjdGlvbjpzZWxmIHJlY2VpdmVkTWVzc2FnZTpt
ZXNzYWdlIHVzZXJJbmZvOnVzZXJJbmZvXTsKLX0KLQotLSAodm9pZClzZW5kTWVzc2FnZTooTlNT
dHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm8KLXsK
LSAgICBpZiAoIV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU011dGFibGVE
aWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdp
dGhPYmplY3Q6bWVzc2FnZU5hbWUgZm9yS2V5OldlYkluc3BlY3RvclhQQ1dyYXBwZXJNZXNzYWdl
TmFtZUtleV07Ci0gICAgaWYgKHVzZXJJbmZvKQotICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmpl
Y3Q6dXNlckluZm8gZm9yS2V5OldlYkluc3BlY3RvclhQQ1dyYXBwZXJVc2VySW5mb0tleV07Ci0K
LSAgICB4cGNfb2JqZWN0X3QgeHBjRGljdGlvbmFyeSA9IF9DRlhQQ0NyZWF0ZVhQQ01lc3NhZ2VX
aXRoQ0ZPYmplY3QoKENGRGljdGlvbmFyeVJlZilkaWN0aW9uYXJ5KTsKLSAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKHhwY0RpY3Rpb25hcnkgJiYgeHBjX2dldF90eXBlKHhwY0RpY3Rpb25hcnkpID09
IFhQQ19UWVBFX0RJQ1RJT05BUlksICJVbmFibGUgdG8gc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7
Ci0gICAgaWYgKCF4cGNEaWN0aW9uYXJ5KQotICAgICAgICByZXR1cm47Ci0KLSAgICB4cGNfb2Jq
ZWN0X3QgbXNnID0geHBjX2RpY3Rpb25hcnlfY3JlYXRlKE5VTEwsIE5VTEwsIDApOwotICAgIHhw
Y19kaWN0aW9uYXJ5X3NldF92YWx1ZShtc2csIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJTZXJpYWxp
emVkTWVzc2FnZUtleSwgeHBjRGljdGlvbmFyeSk7Ci0gICAgeHBjX3JlbGVhc2UoeHBjRGljdGlv
bmFyeSk7Ci0KLSAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoX2Nvbm5lY3Rpb24sIG1z
Zyk7Ci0KLSAgICB4cGNfcmVsZWFzZShtc2cpOwotfQotCi0tIChCT09MKWF2YWlsYWJsZQotewot
ICAgIHJldHVybiBfY29ubmVjdGlvbiAhPSBOVUxMOwotfQotCi1AZW5kCi0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0LmV4cCBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYktpdC5leHAKaW5kZXggZjNmZDJmNC4uNTZmODE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViS2l0LmV4cAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQuZXhwCkBA
IC0yMiw3ICsyMiw2IEBACiAub2JqY19jbGFzc19uYW1lX1dlYkhpc3RvcnlJdGVtCiAub2JqY19j
bGFzc19uYW1lX1dlYkljb25EYXRhYmFzZQogLm9iamNfY2xhc3NfbmFtZV9XZWJJbnNwZWN0b3IK
LS5vYmpjX2NsYXNzX25hbWVfV2ViSW5zcGVjdG9yWFBDV3JhcHBlcgogLm9iamNfY2xhc3NfbmFt
ZV9XZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwKIC5vYmpjX2NsYXNzX25hbWVfV2ViS2V5R2Vu
ZXJhdG9yCiAub2JqY19jbGFzc19uYW1lX1dlYktpdFN0YXRpc3RpY3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQppbmRleCBmNWQzODM1Li4xODVhZGU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yMTIsNyArMjEyLDYgQEAKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKICNp
ZiBQTEFURk9STShJT1MpCiAjaW1wb3J0ICJXZWJJbmRpY2F0ZUxheWVyLmgiCiAjZW5kaWYKQEAg
LTM5MSwxMCArMzkwLDYgQEAgc3RhdGljIFdlYkNhY2hlTW9kZWwgc19jYWNoZU1vZGVsID0gV2Vi
Q2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOwogc3RhdGljIGNvbnN0IGNoYXIgd2ViVmlld0lzT3Bl
bltdID0gIkF0IGxlYXN0IG9uZSBXZWJWaWV3IGlzIHN0aWxsIG9wZW4uIjsKICNlbmRpZgogCi0j
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi1zdGF0aWMgQk9PTCBhdXRvU3RhcnRSZW1vdGVJ
bnNwZWN0b3IgPSBZRVM7Ci0jZW5kaWYKLQogQGludGVyZmFjZSBOU09iamVjdCAoV2ViVmFsaWRh
dGVXaXRob3V0RGVsZWdhdGUpCiAtIChCT09MKXZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW1XaXRo
b3V0RGVsZWdhdGU6KGlkIDxOU1ZhbGlkYXRlZFVzZXJJbnRlcmZhY2VJdGVtPilpdGVtOwogQGVu
ZApAQCAtNTI1LDYgKzUyMCw3IEBAIE5TU3RyaW5nICpfV2ViVmlld0RpZFN0YXJ0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ05vdGlmaWNhdGlvbiA9IEAiX1dlYlZpZXdEaWRTdGFyCiBOU1N0cmluZyAq
IGNvbnN0IFdlYlZpZXdXaWxsQ2xvc2VOb3RpZmljYXRpb24gPSBAIldlYlZpZXdXaWxsQ2xvc2VO
b3RpZmljYXRpb24iOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisvLyBGSVhNRTog
TGVnYWN5LCByZW1vdmUgdGhpcywgc3dpdGNoIHRvIHNvbWV0aGluZyBmcm9tIEphdmFTY3JpcHRD
b3JlIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyLgogTlNTdHJpbmcgKl9XZWJWaWV3
UmVtb3RlSW5zcGVjdG9ySGFzU2Vzc2lvbkNoYW5nZWROb3RpZmljYXRpb24gPSBAIl9XZWJWaWV3
UmVtb3RlSW5zcGVjdG9ySGFzU2Vzc2lvbkNoYW5nZWROb3RpZmljYXRpb24iOwogI2VuZGlmCiAK
QEAgLTc2NiwxMSArNzYyLDYgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlTGVnYWN5QmFja2dyb3Vu
ZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpCiAgICAgICAgIAogICAgICAgICBTZXR0aW5nczo6c2V0
U2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKHNob3VsZFJlc3BlY3RQ
cmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycygpKTsKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQotICAgICAgICBpZiAoYXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yKQotICAgICAgICAg
ICAgW1dlYlZpZXcgX2VuYWJsZVJlbW90ZUluc3BlY3Rvcl07Ci0jZW5kaWYKLQogICAgICAgICBk
aWRPbmVUaW1lSW5pdGlhbGl6YXRpb24gPSB0cnVlOwogICAgIH0KIApAQCAtNzk4LDYgKzc4OSwx
MCBAQCBzdGF0aWMgYm9vbCBzaG91bGRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJl
aGF2aW9yKCkKICAgICBXZWJDb3JlOjpwcm92aWRlVXNlck1lZGlhVG8oX3ByaXZhdGUtPnBhZ2Us
IG5ldyBXZWJVc2VyTWVkaWFDbGllbnQoc2VsZikpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0UmVtb3RlSW5zcGVjdGlvbkFs
bG93ZWQodHJ1ZSk7CisjZW5kaWYKKwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXRDYW5TdGFydE1l
ZGlhKFtzZWxmIHdpbmRvd10pOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldExv
Y2FsU3RvcmFnZURhdGFiYXNlUGF0aChbW3NlbGYgcHJlZmVyZW5jZXNdIF9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGhdKTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRVc2VMZWdh
Y3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKHNob3VsZFVzZUxlZ2FjeUJhY2tncm91
bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IoKSk7CkBAIC0xMjY3LDYwICsxMjYyLDQyIEBAIHN0YXRp
YyBib29sIGZhc3REb2N1bWVudFRlYXJkb3duRW5hYmxlZCgpCiB9CiAKICNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLSsgKFdlYkluc3BlY3RvclNlcnZlciAqKXNoYXJlZFdlYkluc3BlY3Rv
clNlcnZlcgotewotICAgIHN0YXRpYyBXZWJJbnNwZWN0b3JTZXJ2ZXIgKnNoYXJlZFNlcnZlciA9
IFtbV2ViSW5zcGVjdG9yU2VydmVyIGFsbG9jXSBpbml0XTsKLSAgICByZXR1cm4gc2hhcmVkU2Vy
dmVyOwotfQotCiArICh2b2lkKV9lbmFibGVSZW1vdGVJbnNwZWN0b3IKIHsKLSAgICBbW1dlYlZp
ZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBzdGFydF07CisgICAgLy8gRklYTUU6IE1vdmUg
dGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlciBpbnRlcmZhY2Ug
b3IgcmVtb3ZlIGl0LgogfQogCiArICh2b2lkKV9kaXNhYmxlUmVtb3RlSW5zcGVjdG9yCiB7Ci0g
ICAgW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gc3RvcF07CisgICAgLy8gRklY
TUU6IE1vdmUgdGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlciBp
bnRlcmZhY2Ugb3IgcmVtb3ZlIGl0LgogfQogCiArICh2b2lkKV9kaXNhYmxlQXV0b1N0YXJ0UmVt
b3RlSW5zcGVjdG9yCiB7Ci0gICAgYXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yID0gTk87CisgICAg
Ly8gRklYTUU6IE1vdmUgdGhpcyB0byBhIG5ldyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNl
cnZlciBpbnRlcmZhY2Ugb3IgcmVtb3ZlIGl0LgogfQogCiArIChCT09MKV9pc1JlbW90ZUluc3Bl
Y3RvckVuYWJsZWQKIHsKLSAgICByZXR1cm4gW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNl
cnZlcl0gaXNFbmFibGVkXTsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGEgbmV3IEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyIGludGVyZmFjZSBvciByZW1vdmUgaXQuCisgICAg
cmV0dXJuIE5POwogfQogCiArIChCT09MKV9oYXNSZW1vdGVJbnNwZWN0b3JTZXNzaW9uCiB7Ci0g
ICAgcmV0dXJuIFtbV2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIGhhc0FjdGl2ZURl
YnVnU2Vzc2lvbl07Ci19Ci0KLS0gKEJPT0wpY2FuQmVSZW1vdGVseUluc3BlY3RlZAotewotI2lm
ICFQTEFURk9STShJT1MpCi0gICAgaWYgKCFbW3NlbGYgcHJlZmVyZW5jZXNdIGRldmVsb3BlckV4
dHJhc0VuYWJsZWRdKQotICAgICAgICByZXR1cm4gTk87Ci0jZW5kaWYKLQotICAgIHJldHVybiBb
c2VsZiBhbGxvd3NSZW1vdGVJbnNwZWN0aW9uXTsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRv
IGEgbmV3IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyIGludGVyZmFjZSBvciByZW1v
dmUgaXQuCisgICAgcmV0dXJuIE5POwogfQogCiAtIChCT09MKWFsbG93c1JlbW90ZUluc3BlY3Rp
b24KIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmFsbG93c1JlbW90ZUluc3BlY3Rpb247CisgICAg
Ly8gRklYTUU6IE1vdmUgdGhpcyB0byBhIG5ldyBBUEkuCisgICAgcmV0dXJuIE5POwogfQogCiAt
ICh2b2lkKXNldEFsbG93c1JlbW90ZUluc3BlY3Rpb246KEJPT0wpYWxsb3cKIHsKLSAgICBpZiAo
X3ByaXZhdGUtPmFsbG93c1JlbW90ZUluc3BlY3Rpb24gPT0gYWxsb3cpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIF9wcml2YXRlLT5hbGxvd3NSZW1vdGVJbnNwZWN0aW9uID0gYWxsb3c7Ci0KLSAg
ICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBwdXNoTGlzdGluZ107CisgICAg
Ly8gRklYTUU6IE1vdmUgdGhpcyB0byBhIG5ldyBBUEkuCiB9CiAKIC0gKHZvaWQpc2V0SW5kaWNh
dGluZ0ZvclJlbW90ZUluc3BlY3RvcjooQk9PTCllbmFibGVkCkBAIC0xMzQwLDI5ICsxMzE3LDE1
IEBAIHN0YXRpYyBib29sIGZhc3REb2N1bWVudFRlYXJkb3duRW5hYmxlZCgpCiAgICAgICAgIF9w
cml2YXRlLT5pbmRpY2F0ZUxheWVyID0gbmlsOwogICAgIH0KICNlbHNlCi0gICAgLy8gRklYTUU6
IE5lZWRzIGltcGxlbWVudGF0aW9uLgorICAgIC8vIEZJWE1FOiBOZWVkcyBpbXBsZW1lbnRhdGlv
biBvciBwdXQgYW4gaW1wbGVtZW50YXRpb24gaW4gV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheS4K
ICNlbmRpZgogfQogCi0tICh2b2lkKXNldFJlbW90ZUluc3BlY3RvclVzZXJJbmZvOihOU0RpY3Rp
b25hcnkgKil1c2VySW5mbwotewotICAgIGlmIChbX3ByaXZhdGUtPnJlbW90ZUluc3BlY3RvclVz
ZXJJbmZvIGlzRXF1YWxUb0RpY3Rpb25hcnk6dXNlckluZm9dKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBbX3ByaXZhdGUtPnJlbW90ZUluc3BlY3RvclVzZXJJbmZvIHJlbGVhc2VdOwotICAgIF9w
cml2YXRlLT5yZW1vdGVJbnNwZWN0b3JVc2VySW5mbyA9IFt1c2VySW5mbyBjb3B5XTsKLQotICAg
IFtbV2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIHB1c2hMaXN0aW5nXTsKLX0KLQot
LSAoTlNEaWN0aW9uYXJ5ICopcmVtb3RlSW5zcGVjdG9yVXNlckluZm8KLXsKLSAgICByZXR1cm4g
X3ByaXZhdGUtPnJlbW90ZUluc3BlY3RvclVzZXJJbmZvOwotfQotCiAjaWYgUExBVEZPUk0oSU9T
KQogLSAodm9pZClzZXRIb3N0QXBwbGljYXRpb25CdW5kbGVJZDooTlNTdHJpbmcgKilidW5kbGVJ
ZCBuYW1lOihOU1N0cmluZyAqKW5hbWUKIHsKKyAgICAvLyBGSVhNRTogVGhpcyBoYXMgbm90IHll
dCBiZWVuIHBvcnRlZCB0byBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlci4KKwogICAg
IGlmICghW19wcml2YXRlLT5ob3N0QXBwbGljYXRpb25CdW5kbGVJZCBpc0VxdWFsVG9TdHJpbmc6
YnVuZGxlSWRdKSB7CiAgICAgICAgIFtfcHJpdmF0ZS0+aG9zdEFwcGxpY2F0aW9uQnVuZGxlSWQg
cmVsZWFzZV07CiAgICAgICAgIF9wcml2YXRlLT5ob3N0QXBwbGljYXRpb25CdW5kbGVJZCA9IFti
dW5kbGVJZCBjb3B5XTsKQEAgLTIxMTgsOSArMjA4MSw2IEBAIHN0YXRpYyBpbmxpbmUgSU1QIGdl
dE1ldGhvZChpZCBvLCBTRUwgcykKICAgICBpZiAoZnJhbWUgPT0gW3NlbGYgbWFpbkZyYW1lXSkK
ICAgICAgICAgW3NlbGYgX2RpZENoYW5nZVZhbHVlRm9yS2V5OiBfV2ViTWFpbkZyYW1lVVJMS2V5
XTsKICAgICBbTlNBcHAgc2V0V2luZG93c05lZWRVcGRhdGU6WUVTXTsKLSNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLSAgICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBw
dXNoTGlzdGluZ107Ci0jZW5kaWYKIH0KIAogLSAodm9pZClfZGlkRmluaXNoTG9hZEZvckZyYW1l
OihXZWJGcmFtZSAqKWZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgK
aW5kZXggMjQ1NDE1OC4uNGMyNjcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0RhdGEuaApAQCAtMjA4LDggKzIwOCw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQotICAgIEJPT0wgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbjsKLSAg
ICBOU0RpY3Rpb25hcnkgKnJlbW90ZUluc3BlY3RvclVzZXJJbmZvOwogI2lmIFBMQVRGT1JNKElP
UykKICAgICBXZWJJbmRpY2F0ZUxheWVyICppbmRpY2F0ZUxheWVyOwogICAgIE5TU3RyaW5nICpo
b3N0QXBwbGljYXRpb25CdW5kbGVJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdE
YXRhLm1tCmluZGV4IDAzNDNhOWMuLmViMGJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3RGF0YS5tbQpAQCAtOTksMTAgKzk5LDYgQEAgV2ViVmlld0xheWVyRmx1c2hTY2hl
ZHVsZXI6OldlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyKExheWVyRmx1c2hDb250cm9sbGVyKiBm
bHUKICAgICBkYXNoYm9hcmRCZWhhdmlvckFsbG93V2hlZWxTY3JvbGxpbmcgPSBZRVM7CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIGFsbG93c1JlbW90ZUluc3Bl
Y3Rpb24gPSBZRVM7Ci0jZW5kaWYKLQogICAgIHNob3VsZENsb3NlV2l0aFdpbmRvdyA9IG9iamNf
Y29sbGVjdGluZ0VuYWJsZWQoKTsKIAogICAgIHBsdWdpbkRhdGFiYXNlQ2xpZW50Q291bnQrKzsK
QEAgLTEzNSw3ICsxMzEsNiBAQCBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmlld0xh
eWVyRmx1c2hTY2hlZHVsZXIoTGF5ZXJGbHVzaENvbnRyb2xsZXIqIGZsdQogICAgIFttZWRpYVN0
eWxlIHJlbGVhc2VdOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgW3JlbW90
ZUluc3BlY3RvclVzZXJJbmZvIHJlbGVhc2VdOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBbaW5k
aWNhdGVMYXllciByZWxlYXNlXTsKICAgICBbaG9zdEFwcGxpY2F0aW9uQnVuZGxlSWQgcmVsZWFz
ZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCAy
NmM4OTg2Li5jZDU0ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0lu
dGVybmFsLmgKQEAgLTYxLDkgKzYxLDYgQEAgc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOwog
QGNsYXNzIFdlYkJhc2VQbHVnaW5QYWNrYWdlOwogQGNsYXNzIFdlYkRvd25sb2FkOwogQGNsYXNz
IFdlYk5vZGVIaWdobGlnaHQ7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi1AY2xhc3Mg
V2ViSW5zcGVjdG9yU2VydmVyOwotI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogCkBAIC0y
MTcsMTAgKzIxNCw2IEBAIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogLSAodm9pZClf
ZnVsbFNjcmVlblJlbmRlcmVyQ2hhbmdlZDooV2ViQ29yZTo6UmVuZGVyQm94KilyZW5kZXJlcjsK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0rIChXZWJJbnNwZWN0b3JT
ZXJ2ZXIgKilzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXI7Ci0jZW5kaWYKLQogLy8gQ29udmVyc2lv
biBmdW5jdGlvbnMgYmV0d2VlbiBXZWJDb3JlIHJvb3QgdmlldyBjb29yZGluYXRlcyBhbmQgd2Vi
IHZpZXcgY29vcmRpbmF0ZXMuCiAtIChOU1BvaW50KV9jb252ZXJ0UG9pbnRGcm9tUm9vdFZpZXc6
KE5TUG9pbnQpcG9pbnQ7CiAtIChOU1JlY3QpX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OihOU1Jl
Y3QpcmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRl
eCAyZGRmZGVkLi41MDFmOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
UHJpdmF0ZS5oCkBAIC03Nyw2ICs3Nyw3IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViRWxlbWVudElz
SW5TY3JvbGxCYXJLZXk7CiBleHRlcm4gTlNTdHJpbmcgKl9XZWJWaWV3RGlkU3RhcnRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTm90aWZpY2F0aW9uOwogCiAjaWYgRU5BQkxFX1JFTU9URV9JTlNQRUNU
T1IKKy8vIEZJWE1FOiBMZWdhY3ksIHJlbW92ZSB0aGlzLCBzd2l0Y2ggdG8gc29tZXRoaW5nIGZy
b20gSmF2YVNjcmlwdENvcmUgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuCiAvLyBO
b3RpZmljYXRpb24gd2hlbiB0aGUgbnVtYmVyIG9mIGluc3BlY3RvciBzZXNzaW9ucyBiZWNvbWVz
IG5vbi16ZXJvIG9yIHJldHVybnMgdG8gMC4KIC8vIENoZWNrIHRoZSBjdXJyZW50IHN0YXRlIHZp
YSAtW1dlYlZpZXcgX2hhc1JlbW90ZUluc3BlY3RvclNlc3Npb25dLgogZXh0ZXJuIE5TU3RyaW5n
ICpfV2ViVmlld1JlbW90ZUluc3BlY3Rvckhhc1Nlc3Npb25DaGFuZ2VkTm90aWZpY2F0aW9uOwpA
QCAtMjYzLDE1ICsyNjQsNiBAQCB0eXBlZGVmIGVudW0gewogKyAoQk9PTClfaGFzUmVtb3RlSW5z
cGVjdG9yU2Vzc2lvbjsKIAogLyohCi0gICAgQG1ldGhvZCBjYW5CZVJlbW90ZWx5SW5zcGVjdGVk
Ci0gICAgQHJlc3VsdCBMb29rcyBhdCBhbGwgdGhlIGZhY3RvcnMgb2YgdGhpcyBXZWJWaWV3IGFu
ZCByZXR1cm5zIHdoZXRoZXIgb3Igbm90Ci0gICAgdGhpcyBXZWJWaWV3IHNob3VsZCBhbGxvdyBh
IFJlbW90ZSBXZWIgSW5zcGVjdG9yIHRvIGF0dGFjaCB0byBpdC4gVGhpcyB0YWtlcwotICAgIGlu
dG8gYWNjb3VudCAtYWxsb3dzUmVtb3RlSW5zcGVjdGlvbiwgUHJpdmF0ZSBCcm93c2luZywgYW5k
IHBvdGVudGlhbGx5IG90aGVyCi0gICAgZmFjdG9ycy4KLSovCi0tIChCT09MKWNhbkJlUmVtb3Rl
bHlJbnNwZWN0ZWQ7Ci0KLS8qIQogICAgIEBtZXRob2QgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbgog
ICAgIEByZXN1bHQgUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGlzIFdlYlZpZXcgd2lsbCBhbGxv
dyBhIFJlbW90ZSBXZWIgSW5zcGVjdG9yCiAgICAgdG8gYXR0YWNoIHRvIGl0LgpAQCAtMjkyLDIx
ICsyODQsNiBAQCB0eXBlZGVmIGVudW0gewogICAgIEBhYnN0cmFjdCBpbmRpY2F0ZSB0aGlzIFdl
YlZpZXcgb24gc2NyZWVuIGZvciBhIHJlbW90ZSBpbnNwZWN0b3IuCiAqLwogLSAodm9pZClzZXRJ
bmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOihCT09MKWVuYWJsZWQ7Ci0KLS8qCi0gICAgQG1l
dGhvZCBzZXRSZW1vdGVJbnNwZWN0b3JVc2VySW5mbwotICAgIEBwYXJhbSB0YWcgVGhlIGRpY3Rp
b25hcnkgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBXZWJWaWV3LgotICAgIEBhYnN0cmFjdCBE
ZXZlbG9wZXIgc3BlY2lmaWVkIGRpY3Rpb25hcnkgZm9yIHRoZSBXZWJWaWV3IHRoYXQgd2lsbCBi
ZQotICAgIHNlbnQgdG8gdGhlIFJlbW90ZSBEZWJ1Z2dlci4gVGhlIGRpY3Rpb25hcnkgbXVzdCBj
b250YWluIHByb3BlcnR5Ci0gICAgbGlzdCBzZXJpYWxpemFibGUgdmFsdWVzLgotKi8KLS0gKHZv
aWQpc2V0UmVtb3RlSW5zcGVjdG9yVXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOwot
Ci0vKiEKLSAgICBAbWV0aG9kIHJlbW90ZUluc3BlY3RvclVzZXJJbmZvCi0gICAgQHJlc3VsdCBS
ZXR1cm5zIHRoZSBkaWN0aW9uYXJ5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFdlYlZpZXcuCi0qLwot
LSAoTlNEaWN0aW9uYXJ5ICopcmVtb3RlSW5zcGVjdG9yVXNlckluZm87CiAjZW5kaWYKIAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKaW5kZXggNjY3ZjNlYi4uNjI2MDJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9yIGRl
YnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisKIDIwMTMtMTEtMjUgIHBlYXZvQG91dGxvb2suY29t
ICA8cGVhdm9Ab3V0bG9vay5jb20+CiAKICAgICAgICAgW1dpbl0gV2ViS2l0IHZlcnNpb24gaW4g
dXNlciBhZ2VudCBzdHJpbmcgaXMgaW5jb3JyZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBlNWRjYjdhLi4x
OTBlMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29y
ZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNsaWVudC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlTGlzdGVu
ZXIuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bmNlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IGQ0NTRj
MjMuLmRjOWE2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMt
MTItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24g
bWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1v
dGh5IEhhdGNoZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRX
aW5DRS5oOgorCiAyMDEzLTExLTA0ICBaaHVhbmcgWmhpZ2FuZyAgPHpodWFuZ3pnQGNuLmZ1aml0
c3UuY29tPgogCiAgICAgICAgIENoYW5nZSBzdHJ1Y3R1cmUgb2YgZnJhbWUgdHJlZSBpbiBXSU5D
RSBwb3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRXaW5DRS5oCmluZGV4IDJhZjI2YzguLmVkZGNkNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2lu
Q0UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudFdpbkNFLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNkZWZpbmUgSW5zcGVjdG9yQ2xpZW50V2lu
Q0VfaAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgogCiBj
bGFzcyBXZWJWaWV3OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjg1MzhhMS4uYTQ3ZTNiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVj
dG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjEzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgVXBkYXRlZCBpbmNsdWRl
cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb20uYXBw
bGUuV2ViUHJvY2Vzcy5zYi5pbjoKKyAgICAgICAgQWxsb3cgdGhlIFdlYlByb2Nlc3MgdG8gYWNj
ZXNzIHRoZSAiY29tLmFwcGxlLndlYmluc3BlY3RvciIgbmFtZWQKKyAgICAgICAgWFBDIHNlcnZp
Y2UgdG8gZXhwb3NlIGl0cyBXZWJDb3JlOjpQYWdlJ3MgdG8gcmVtb3RlIGRlYnVnZ2Vycy4KKwog
MjAxMy0xMi0wMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBvbGQgV2ViS2l0OjpBUElDbGllbnQgY3J1ZnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oCmluZGV4IDNlZTJlYTguLjRkN2FkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCiAKICNpbmNsdWRl
IDxXZWJDb3JlL0luc3BlY3RvckNsaWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKaW5k
ZXggNjRkOTk1NS4uYTg5MGY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JG
b3J3YXJkaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggMjlmMWVhMy4uYjE2NjhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMzQ1LDYgKzM0NSwxMCBAQCBXZWJQYWdlOjpXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKICAgICBXZWJDb3JlOjpwcm92aWRlRGV2aWNlUHJveGltaXR5VG8obV9wYWdlLmdldCgpLCBu
ZXcgV2ViRGV2aWNlUHJveGltaXR5Q2xpZW50KHRoaXMpKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9wYWdlLT5zZXRSZW1vdGVJbnNwZWN0aW9uQWxsb3dl
ZCh0cnVlKTsKKyNlbmRpZgorCiAgICAgbV9wYWdlLT5zZXRDYW5TdGFydE1lZGlhKGZhbHNlKTsK
ICAgICBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cgPSBwYXJhbWV0ZXJzLm1heVN0YXJ0TWVk
aWFXaGVuSW5XaW5kb3c7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Y29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Nv
bS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCmluZGV4IDkwYmIwZTYuLmM0NzJjMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5p
bgpAQCAtMTM5LDYgKzEzOSwxMCBAQAogCiAjZW5kaWYKIAorOzsgUmVtb3RlIFdlYiBJbnNwZWN0
b3IKKyhhbGxvdyBtYWNoLWxvb2t1cAorICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLndl
Ymluc3BlY3RvciIpKQorCiA7OyBWYXJpb3VzIHNlcnZpY2VzIHJlcXVpcmVkIGJ5IEFwcEtpdCBh
bmQgb3RoZXIgZnJhbWV3b3JrcwogKGFsbG93IG1hY2gtbG9va3VwCiAgICAgICAgKGdsb2JhbC1u
YW1lICJjb20uYXBwbGUuRGlza0FyYml0cmF0aW9uLmRpc2thcmJpdHJhdGlvbmQiKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218329</attachid>
            <date>2013-12-03 13:00:32 -0800</date>
            <delta_ts>2013-12-04 04:43:47 -0800</delta_ts>
            <desc>[PATCH] Combined For Bots 8</desc>
            <filename>for-bots-8.patch</filename>
            <type>text/plain</type>
            <size>218284</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5oCmluZGV4IDEyNjdiN2EuLmY5ZDdjZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQuaApAQCAtMTY0LDYgKzE2NCwxMiBA
QCBPQkpDX1ZJU0lCTEUKICovCiBAcHJvcGVydHkocmVhZG9ubHksIHJldGFpbikgSlNWaXJ0dWFs
TWFjaGluZSAqdmlydHVhbE1hY2hpbmU7CiAKKy8qIQorQHByb3BlcnR5CitAZGlzY3Vzc2lvbiBO
YW1lIG9mIHRoZSBKU0NvbnRleHQuIEV4cG9zZWQgd2hlbiByZW1vdGUgZGVidWdnaW5nIHRoZSBj
b250ZXh0LgorKi8KK0Bwcm9wZXJ0eShjb3B5KSBOU1N0cmluZyAqbmFtZTsKKwogQGVuZAogCiAv
KiEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggYmM4ZmMxYS4uNDdk
Y2IwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTE2Niw2ICsx
NjYsMjIgQEAKICAgICByZXR1cm4gbV92aXJ0dWFsTWFjaGluZTsKIH0KIAorLSAoTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTR2xvYmFsQ29udGV4dENvcHlOYW1l
KG1fY29udGV4dCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
cmV0dXJuIFsoTlNTdHJpbmcgKilKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBuYW1lKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcg
KiluYW1lCit7CisgICAgSlNTdHJpbmdSZWYgbmFtZUpTID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZT
dHJpbmcoKENGU3RyaW5nUmVmKVtuYW1lIGNvcHldKTsKKyAgICBKU0dsb2JhbENvbnRleHRTZXRO
YW1lKG1fY29udGV4dCwgbmFtZUpTKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UobmFtZUpTKTsKK30K
KwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gSlNDb250ZXh0KFN1YnNjcmlwdFN1cHBvcnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggZjBhNDM1Yy4u
ODFiNjFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApA
QCAtMjEzLDYgKzIxMywzNyBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0R2xvYmFs
Q29udGV4dChKU0NvbnRleHRSZWYgY3R4KQogICAgIHJldHVybiB0b0dsb2JhbFJlZihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSk7CiB9CiAKK0pTU3RyaW5nUmVmIEpT
R2xvYmFsQ29udGV4dENvcHlOYW1lKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCit7CisgICAgaWYg
KCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBBUElFbnRy
eVNoaW0gZW50cnlTaGltKGV4ZWMpOworCisgICAgU3RyaW5nIG5hbWUgPSBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCktPm5hbWUoKTsKKyAgICBpZiAobmFtZS5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShuYW1lKS5sZWFr
UmVmKCk7Cit9CisKK3ZvaWQgSlNHbG9iYWxDb250ZXh0U2V0TmFtZShKU0dsb2JhbENvbnRleHRS
ZWYgY3R4LCBKU1N0cmluZ1JlZiBuYW1lKQoreworICAgIGlmICghY3R4KSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7
CisKKyAgICBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnNldE5hbWUobmFtZSA/IG5hbWUt
PnN0cmluZygpIDogU3RyaW5nKCkpOworfQorCisKIGNsYXNzIEJhY2t0cmFjZUZ1bmN0b3Igewog
cHVibGljOgogICAgIEJhY2t0cmFjZUZ1bmN0b3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5z
aWduZWQgcmVtYWluaW5nQ2FwYWNpdHlGb3JGcmFtZUNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuaAppbmRleCA3NzA1OTU1Li5lYWI3YTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgKQEAgLTEzMyw2ICsxMzMsMjQgQEAgSlNf
RVhQT1JUIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBj
dHgpIEFWQUlMQUJMRV9JTl9XRUIKICovCiBKU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpT
Q29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEw
XzcsIDRfMCk7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyBhIGNvcHkgb2YgdGhl
IG5hbWUgb2YgYSBjb250ZXh0LgorQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHdob3Nl
IG5hbWUgeW91IHdhbnQgdG8gZ2V0LgorQHJlc3VsdCBUaGUgbmFtZSBmb3IgY3R4LgorQGRpc2N1
c3Npb24gQSBKU0dsb2JhbENvbnRleHQncyBuYW1lIGlzIGV4cG9zZWQgZm9yIHJlbW90ZSBkZWJ1
Z2dpbmcgdG8gbWFrZSBpdAorZWFzaWVyIHRvIGlkZW50aWZ5IHRoZSBjb250ZXh0IHlvdSB3b3Vs
ZCBsaWtlIHRvIGF0dGFjaCB0by4KKyovCitKU19FWFBPUlQgSlNTdHJpbmdSZWYgSlNHbG9iYWxD
b250ZXh0Q29weU5hbWUoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCk7CisKKy8qIQorQGZ1bmN0aW9u
CitAYWJzdHJhY3QgU2V0cyB0aGUgcmVtb3RlIGRlYnVnZ2luZyBuYW1lIGZvciBhIGNvbnRleHQu
CitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBuYW1lLgor
QHBhcmFtIG5hbWUgVGhlIHJlbW90ZSBkZWJ1Z2dpbmcgbmFtZSB0byBzZXQgb24gY3R4LgorKi8K
K0pTX0VYUE9SVCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldE5hbWUoSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgbmFtZSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWIyY2RmZS4uNDQ5ZmFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEsNiArMTEsNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vZnRsIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaGVhcCIKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5z
cGVjdG9yIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGlu
dCIKQEAgLTU4Myw2ICs1ODQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFE
RVJTX0RJUkVDVE9SSUVTCiAgICAgY29sbGVjdG9yL2hhbmRsZXMKICAgICBkZWJ1Z2dlcgogICAg
IGhlYXAKKyAgICBpbnNwZWN0b3IKICAgICBpbnRlcnByZXRlcgogICAgIGppdAogICAgIGxsaW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiMDc1N2IzLi5hZTMzYTk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNjkgQEAKKzIwMTMtMTItMDMgIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNo
IFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEph
dmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAg
ICAgICAgTW92ZSB0aGUgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpIHJlbW90ZSBkZWJ1Z2dlciBj
b25uZWN0aW9uIG1hbmFnZW1lbnQKKyAgICAgICAgaW50byBKYXZhU2NyaXB0Q29yZSAob3JpZ2lu
YWxseSBmcm9tIFdlYktpdC9tYWMpLiBJbmNsdWRlIGVuaGFuY2VtZW50czoKKworICAgICAgICAg
ICogYWxsb3cgZm9yIGRpZmZlcmVudCB0eXBlcyBvZiByZW1vdGUgZGVidWdnYWJsZSB0YXJnZXRz
LAorICAgICAgICAgICAgZXZlbnR1YWxseSBhdCBsZWFzdCBhIEpTQ29udGV4dCwgV2ViVmlldywg
V0tWaWV3LgorICAgICAgICAgICogYWxsb3cgZGVidWdnYWJsZXMgdG8gYmUgcmVnaXN0ZXJlZCBh
bmQgZGVidWdnZWQgb24gYW55IHRocmVhZC4gVW5saWtlCisgICAgICAgICAgICBXZWJWaWV3cywg
SlNDb250ZXh0cyBtYXkgYmUgcnVuIGVudGlyZWx5IG9mZiBvZiB0aGUgbWFpbiB0aHJlYWQuCisg
ICAgICAgICAgKiBtb3ZlIHRoZSByZW1vdGUgY29ubmVjdGlvbiAoWFBDIGNvbm5lY3Rpb24pIGl0
c2VsZiBvZmYgb2YgdGhlIG1haW4gdGhyZWFkLAorICAgICAgICAgICAgaXQgZG9lc24ndCBuZWVk
IHRvIGJlIG9uIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICBNYWtlIEpTQ29udGV4dCBAY2xh
c3MgYW5kIEphdmFTY3JpcHRDb3JlOjpKU0NvbnRleHRSZWYKKyAgICAgICAgIkphdmFTY3JpcHQi
IFJlbW90ZSBEZWJ1Z2dhYmxlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZS5oOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6On5SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6aW5pdCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGU6OnVwZGF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGU6OnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjppbmZvKToKKyAgICAgICAgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZSBkZWZpbmVzIGEgZGVidWdnYWJsZSB0YXJnZXQuIEFzIGxvbmcgYXMKKyAg
ICAgICAgc29tZXRoaW5nIGNyZWF0ZXMgYSBkZWJ1Z2dhYmxlIGFuZCBpcyBzZXQgdG8gYWxsb3cg
cmVtb3RlIGluc3BlY3Rpb24KKyAgICAgICAgaXQgd2lsbCBiZSBsaXN0ZWQgaW4gcmVtb3RlIGRl
YnVnZ2Vycy4gRm9yIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2YKKyAgICAgICAgZGVidWdnYWJsZXMg
KEphdmFTY3JpcHQgYW5kIFdlYikgdGhlcmUgaXMgZGlmZmVyZW50IGJhc2ljIGluZm9ybWF0aW9u
CisgICAgICAgIHRoYXQgbWF5IGJlIGxpc3RlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaDogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbDo6fkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCk6CisgICAgICAg
IFRoZSBvbmx5IHRoaW5nIGEgZGVidWdnYWJsZSBuZWVkcyBmb3IgcmVtb3RlIGRlYnVnZ2luZyBp
cyBhbgorICAgICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgYSB3YXkgdG8gc2VuZCBtZXNz
YWdlcyB0byBhIHJlbW90ZSBmcm9udGVuZC4KKyAgICAgICAgVGhpcyBjbGFzcyBwcm92aWRlcyB0
aGF0IG1ldGhvZCwgYW5kIGlzIHZlbmRlZCB0byB0aGUKKyAgICAgICAgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZSB3aGVuIGEgcmVtb3RlIGNvbm5lY3Rpb24gaXMgc2V0dXAuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbTogQWRkZWQuCisgICAgICAgIFNpbmds
ZXRvbiwgY3JlYXRlZCBhdCBsZWFzdCB3aGVuIHRoZSBmaXJzdCBEZWJ1Z2dhYmxlIGlzIGNyZWF0
ZWQuCisgICAgICAgIFRoaXMgY2xhc3MgbWFuYWdlcyB0aGUgbGlzdCBvZiBkZWJ1Z2dhYmxlcywg
YW55IGNvbm5lY3Rpb24gdG8gYQorICAgICAgICByZW1vdGUgZGVidWdnZXIgcHJveHkgKFhQQyBz
ZXJ2aWNlICJjb20uYXBwbGUud2ViaW5zcGVjdG9yIikuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6
ZGlzcGF0Y2hBc3luY09uUXVldWVTYWZlRm9yQW55RGVidWdnYWJsZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3IpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6Om5leHRBdmFpbGFibGVJZGVudGlmaWVyKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yOjpyZWdpc3RlckRlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVucmVnaXN0ZXJEZWJ1Z2dhYmxlKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVEZWJ1Z2dhYmxlKToKKyAgICAgICAgRGVi
dWdnYWJsZSBtYW5hZ2VtZW50LiBXaGVuIGRlYnVnZ2FibGVzIGFyZSBhZGRlZCwgcmVtb3ZlZCwg
b3IgdXBkYXRlZAorICAgICAgICB3ZSBzdGFzaCBhIGNvcHkgb2YgdGhlIGRlYnVnZ2FibGUgaW5m
b3JtYXRpb24gYW5kIHB1c2ggYW4gdXBkYXRlIHRvCisgICAgICAgIGRlYnVnZ2Vycy4gU3Rhc2hp
bmcgYSBjb3B5IG9mIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgUmVtb3RlSW5zcGVjdG9yCisgICAg
ICAgIGlzIGEgdGhyZWFkIHNhZmUgd2F5IHRvIGF2b2lkIHdhbGtpbmcgb3ZlciBhbGwgZGVidWdn
YWJsZXMgdG8gZ2F0aGVyCisgICAgICAgIHRoZSBpbmZvcm1hdGlvbiB3aGVuIGl0IGlzIG5lZWRl
ZC4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzdG9wKToKKyAgICAgICAgUnVudGltZSBB
UEkgdG8gZW5hYmxlIC8gZGlzYWJsZSB0aGUgZmVhdHVyZS4KKworICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3I6Omxpc3RpbmdGb3JEZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGluZ05vdyk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdTb29uKToKKyAgICAgICAgUHVzaGluZyBh
IGxpc3RpbmcgdG8gcmVtb3RlIGRlYnVnZ2Vycy4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1l
c3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rp
b25GYWlsZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5l
Y3Rpb25VbmhhbmRsZWRNZXNzYWdlKToKKyAgICAgICAgWFBDIHNldHVwLCBzZW5kLCBhbmQgcmVj
ZWl2ZSBoYW5kbGluZy4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVw
ZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbik6CisgICAgICAgIEFwcGxpY2F0aW9ucyBiZWluZyBk
ZWJ1Z2dlZCBtYXkgd2FudCB0byBrbm93IHdoZW4gYSBkZWJ1ZworICAgICAgICBzZXNzaW9uIGlz
IGFjdGl2ZS4gVGhpcyBwcm92aWRlcyB0aGF0IG5vdGlmaWNhdGlvbi4KKworICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERhdGFNZXNzYWdlKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERpZENsb3NlTWVzc2FnZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRHZXRMaXN0aW5n
TWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRJ
bmRpY2F0ZU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJl
Y2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKToKKyAgICAgICAgRGlzcGF0Y2hpbmcgaW5jb21p
bmcgcmVtb3RlIGRlYnVnZ2luZyBwcm90b2NvbCBtZXNzYWdlcy4KKyAgICAgICAgVGhlc2UgYXJl
IHdyYXBwaW5nIGFib3ZlIHRoZSBpbnNwZWN0b3IgcHJvdG9jb2wgbWVzc2FnZXMuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oOiBBZGRlZC4K
KyAgICAgICAgUHJvdG9jb2wgbWVzc2FnZXMgYW5kIGRpY3Rpb25hcnkga2V5cyBpbnNpZGUgdGhl
IG1lc3NhZ2VzLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVJbmZvOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyk6CisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgVGhpcyBpcyBhIGNvbm5lY3Rpb24gYmV0d2VlbiB0
aGUgUmVtb3RlSW5zcGVjdG9yIHNpbmdsZXRvbiBhbmQgYSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbik6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjp+UmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24pOgorICAgICAgICBBbGxvdyBmb3IgZGlzcGF0Y2hp
bmcgbWVzc2FnZXMgb24gSmF2YVNjcmlwdCBkZWJ1Z2dhYmxlcyBvbiBhIGRpc3BhdGNoX3F1ZXVl
CisgICAgICAgIGluc3RlYWQgb2YgdGhlIG1haW4gcXVldWUuCisKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRlc3RpbmF0aW9uKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmNv
bm5lY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgTmVlZGVkIGluIHRoZSByZW1vdGUgZGVidWdn
aW5nIHByb3RvY29sIHRvIGlkZW50aWZ5IHRoZSByZW1vdGUgZGVidWdnZXIuCisKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNo
U3luY09uRGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uOjpkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNldHVwKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246
OmNsb3NlRnJvbURlYnVnZ2FibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y2xvc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaXMgYSB0aGlu
IGNoYW5uZWwgYmV0d2VlbiB0aGUgdHdvIHNpZGVzIHRoYXQgY2FuIGJlIGNsb3NlZAorICAgICAg
ICBmcm9tIGVpdGhlciBzaWRlLCBzbyB0aGVyZSBpcyBzb21lIGxvZ2ljIGFyb3VuZCBtdWx0aS10
aHJlYWRlZCBhY2Nlc3MuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb246OkNsaWVudDo6fkNsaWVudCk6CisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOiBBZGRlZC4KKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6UmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb246On5SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6Y2xvc2UpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1lc3Nh
Z2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpo
YW5kbGVFdmVudCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgVGhpcyBpcyBhIGNvbm5lY3Rpb24gYmV0d2Vl
biB0aGUgUmVtb3RlSW5zcGVjdG9yIHNpbmdsZXRvbiBhbmQgYW4gWFBDIHNlcnZpY2UKKyAgICAg
ICAgbmFtZWQgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiLiBUaGlzIGhhbmRsZXMgc2VyaWFsaXph
dGlvbiBvZiB0aGUgZGljdGlvbmFyeQorICAgICAgICBtZXNzYWdlcyB0byBhbmQgZnJvbSB0aGUg
c2VydmljZS4gVGhlIHJlY2VpdmluZyBpcyBkb25lIG9uIGEgbm9uLW1haW4gcXVldWUuCisKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAg
ICAgICAgKC1bSlNDb250ZXh0IG5hbWVdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IHNldE5hbWU6
XSk6CisgICAgICAgIE9iakMgQVBJIHRvIGVuYWJsZS9kaXNhYmxlIEpTQ29udGV4dCByZW1vdGUg
aW5zcGVjdGlvbiBhbmQgZ2l2ZSBhIG5hbWUuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVm
Lmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0dsb2JhbENv
bnRleHRHZXROYW1lKToKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dFNldE5hbWUpOgorICAgICAg
ICBDIEFQSSB0byBnaXZlIGEgSlNDb250ZXh0IGEgbmFtZS4KKworICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c2V0TmFt
ZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bmFtZSk6CisgICAgICAgIFNoYXJlZCBoYW5kbGluZyBvZiB0aGUgQVBJ
cyBhYm92ZS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6SlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlOjpuYW1lKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpjb25u
ZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNjb25uZWN0
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNwYXRjaE1lc3Nh
Z2VGcm9tUmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmg6IEFkZGVkLgorICAgICAgICBTdHViIGZvciB0aGUgYWN0dWFsIHJlbW90ZSBk
ZWJ1Z2dpbmcgaW1wbGVtZW50YXRpb24uIFdlIHdpbGwgcHVzaAorICAgICAgICBkb3duIHRoZSBh
cHByb3ByaWF0ZSBXZWJDb3JlL2luc3BlY3RvciBwZWljZXMgc3VpdGFibGUgZm9yIGRlYnVnZ2lu
ZworICAgICAgICBqdXN0IGEgSmF2YVNjcmlwdCBjb250ZXh0LgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgVXBkYXRlIGJ1aWxkIGZpbGVzLgorCiAyMDEzLTEy
LTAzICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIHRl
c3RhcGkgdGVzdCBjcmFzaGVzIG9uIFdpbmRvd3MgaW4gV1RGOjpWZWN0b3I8d2NoYXJfdCw2NCxX
VEY6OlVuc2FmZVZlY3Rvck92ZXJmbG93Pjo6c2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUuYW0KaW5kZXggNDJhYTY0My4uMDg1ZmNhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtNTksNiArNTksNyBAQCBqYXZhc2NyaXB0Y29yZV9jcHBmbGFncyArPSBc
CiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlciBcCiAJLUkk
KHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bCBcCiAJLUkkKHNyY2RpcikvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMTFiZDA5NS4uMTg1MTU3NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTYxMCw2ICs2MTAsNyBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNv
ZGUvdXRmX29sZC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaWN1L3VuaWNvZGUvdXR5cGVz
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UvdW5pY29kZS91dmVyc2lvbi5oIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggYzM2YTg3OS4uM2VmNDI4MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC05OTQsNiArOTk0LDcgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vha1NldC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caGVhcFxXZWFrU2V0SW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxBYnN0cmFjdFBDLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWNoZWRDYWxsLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWxsRnJhbWUuaCIgLz4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4MDEz
MmYyLi5iMzQ3YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzCkBAIC0yNSw2ICsyNSw5IEBACiAgICAgPEZpbHRlciBJbmNsdWRlPSJoZWFw
Ij4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntiZDQ5ZTVjZi05NWQ2LTQxNTEtYjI4Ni04ODM3
Y2NkMzQ3ZmF9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIg
SW5jbHVkZT0iaW5zcGVjdG9yIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswOWFlMDlkYS0x
MjM5LTAwZWEtOGRmZS05MDg3YWUxMjNiYmV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmls
dGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iaW50ZXJwcmV0ZXIiPgogICAgICAgPFVuaXF1ZUlk
ZW50aWZpZXI+ezEwZDk3ZWEzLTJhZjktNDg5Yy1hNTRlLWQ2OWVmMmU0Y2EwYX08L1VuaXF1ZUlk
ZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0xNzAwLDYgKzE3MDMsOSBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxXcml0ZUJhcnJpZXJTdXBwb3J0LmgiPgogICAgICAgPEZp
bHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiPgorICAgICAgPEZp
bHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFic3RyYWN0UEMuaCI+CiAgICAgICA8RmlsdGVyPmlu
dGVycHJldGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDY2NTg1NWYuLmU4M2ZmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04ODYsNiArODg2LDE4IEBACiAJCUExNzEyQjQxMTFDN0IyMzUwMDdBNTMxNSAvKiBS
ZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3
MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0MxNTZFRUQzQjAwNTY2Q0IyIC8qIE1hY3JvQXNzZW1i
bGVyQVJNNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5MjNCMTU2RUVEM0Iw
MDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKKwkJQTU5NDU1OTIxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTk0NTU5MDE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKKwkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU5NDU1OTExODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZS5oICovOyB9OworCQlBNTk0NTU5NTE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTk0NTU5NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QTVCQTE1RTgxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RTExODIzNDBCMzAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNw
ZWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLm1tICovOyB9OworCQlB
NUJBMTVFQTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMzE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVCQTE1RUIxODIzNDBCNDAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFNDE4MjM0MEIzMDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCAqLzsgfTsKKwkJQTVC
QTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVC
QTE1RTUxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uLm1tICovOyB9OworCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24uaCAqLzsgfTsKKwkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUlu
c3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNUJBMTVFNzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5tbSAqLzsgfTsKKwkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8qIFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1QkExNUVGMTgyMzQ1QUYwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTcwMDg3MzkxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzM3MTdD
QkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCUE3MDA4NzNBMTdD
QkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENv
bnN0cnVjdG9yLmggKi87IH07CiAJCUE3MDA4NzNEMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi87IH07CkBAIC0y
MTk2LDYgKzIyMDgsMTggQEAKIAkJQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENh
Y2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cENhY2hl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCM0UxMUM3QjIyODAwN0E1
MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
Z0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjQwMTFDN0Iy
MzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTQ1NThFMTgy
NDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3Bw
OyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5NDU1OTAxODI0NzQ0NzAwQ0MzODQzIC8q
IEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTk0NTU5NDE4
MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOyBwYXRoID0g
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3Rvci5oOyBwYXRo
ID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTVCQTE1RTIxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUluc3BlY3Rv
ci5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFMzE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3Rl
SW5zcGVjdG9yQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJl
bW90ZUluc3BlY3RvckNvbnN0YW50cy5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3JDb25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1
RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uLmg7IHBhdGggPSBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1
QkExNUU1MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlSW5z
cGVjdG9yWFBDQ29ubmVjdGlvbi5oOyBwYXRoID0gaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QkEx
NUU3MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5tbTsgcGF0aCA9IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVCQTE1RUYxODIz
NDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oOyBwYXRoID0g
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1
Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXBDb25zdHJ1
Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDA4NzM4MTdDQkU4NTMw
MEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYXBDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzAw
ODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yNjk0LDYgKzI3MTgsNyBAQAogCQkJCTA4NjdENjlBRkU4NDAyOEZDMDJB
QUMwNyAvKiBGcmFtZXdvcmtzICovLAogCQkJCTBGRUEwOUZDMTcwNTEzN0YwMEJCNzIyQyAvKiBm
dGwgKi8sCiAJCQkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8qIGhlYXAgKi8sCisJCQkJQTVC
QTE1REYxODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAqLywKIAkJCQkxNDI5RDc3QTBFRDIw
RDczMDBCODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8sCiAJCQkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5
NjE5IC8qIGppdCAqLywKIAkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8s
CkBAIC0zNDc3LDYgKzM1MDIsOCBAQAogCQkJCTBGMkI2NkM4MTdCNkI1QUIwMEE3QUUzRiAvKiBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCAqLywKIAkJCQkxNERFMEQ2
ODBEMDI0MzE0MDBBQUNDQTIgLyogSlNHbG9iYWxPYmplY3QuY3BwICovLAogCQkJCUE4RTg5NDMz
MENEMDYwM0YwMDM2NzE3OSAvKiBKU0dsb2JhbE9iamVjdC5oICovLAorCQkJCUE1OTQ1NTkwMTgy
NDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwICovLAorCQkJCUE1
OTQ1NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCAqLywK
IAkJCQlCQzc1NkZDNjBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
Y3BwICovLAogCQkJCUJDNzU2RkM3MEUyMDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5oICovLAogCQkJCTBGMkI2NkNBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2QXJy
YXkuaCAqLywKQEAgLTQxNDUsNiArNDE3MiwzMSBAQAogCQkJcGF0aCA9IGJ5dGVjb2RlOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTVCQTE1REYxODIzNDA5MjAwQTgyRTY5
IC8qIGluc3BlY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJQTVCQTE1RTAxODIzNDA5RDAwQTgyRTY5IC8qIHJlbW90ZSAqLywKKwkJCQlBNTk0NTU5
NDE4MjQ3OUVCMDBDQzM4NDMgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi8sCisJCQkp
OworCQkJbmFtZSA9IGluc3BlY3RvcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CisJCUE1QkExNUUwMTgyMzQwOUQwMEE4MkU2OSAvKiByZW1vdGUgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1QkExNUUxMTgyMzQwQjMwMEE4MkU2OSAv
KiBSZW1vdGVJbnNwZWN0b3IuaCAqLywKKwkJCQlBNUJBMTVFMjE4MjM0MEIzMDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yLm1tICovLAorCQkJCUE1QkExNUUzMTgyMzQwQjMwMEE4MkU2OSAvKiBS
ZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCAqLywKKwkJCQlBNUJBMTVFRjE4MjM0NUFGMDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oICovLAorCQkJCUE1OTQ1NThFMTgyNDVF
REUwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCAqLywKKwkJCQlBNUJB
MTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b24uaCAqLywKKwkJCQlBNUJBMTVFNTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gKi8sCisJCQkJQTVCQTE1RTYxODIzNDBCMzAwQTgyRTY5
IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCAqLywKKwkJCQlBNUJBMTVFNzE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLywKKwkJCSk7
CisJCQluYW1lID0gcmVtb3RlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8q
IEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KQEAgLTQyMTUsNiArNDI2Nyw3IEBACiAJCQkJODY2NzM5RDIxM0JGREU3MTAw
MjNEODdDIC8qIEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0ODE2RTFDMTU0Q0M1
NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMz
RUMwRTE2RjVDRDAwQjM0NDYwIC8qIEJvb2xlYW5PYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE1QkExNUVBMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk3MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk4MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJm
bHlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIg
LyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC00Mjg1LDYgKzQzMzgs
NyBAQAogCQkJCTBGMTYwMTVFMTU2MTk4QzkwMEMyNTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlm
aWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA1QzNCNDE2ODNDRjkyMDBCQUY0
NUIgLyogREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY2Mzk0ODUxNUU0ODExQjAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTVCQTE1RUIxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5QTI5NTE3QTBCQzc0MDBFRTI2
MTggLyogREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MTRD
QTUxNkVBOTJGMjAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNjIwMTc2MTQzRkNEM0IwMDY4Qjc3QyAvKiBERkdCYXNpY0Jsb2Nr
LmggaW4gSGVhZGVycyAqLywKQEAgLTQzNjAsNiArNDQxNCw3IEBACiAJCQkJMEZEOEEzMjYxN0Q1
MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUJBMTVFRDE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQw
MkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtNDQxOCw2ICs0NDczLDcgQEAKIAkJ
CQkwRkVBMEEwODE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTQ1NTkzMTgyNDc0NDcw
MENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUEwQTBBMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBDMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxl
LmggaW4gSGVhZGVycyAqLywKQEAgLTQ1MTAsNiArNDU2Niw3IEBACiAJCQkJODZDQ0VGREUwRjQx
M0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDc3NkJGMTRG
RjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERpc2Fzc2VtYmxlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUxRjE4MTI0QUNFMDA5
QjZCNEQgLyogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAg
LTQ2ODEsNiArNDczOCw3IEBACiAJCQkJMTREMkYzREIxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtl
ZFNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJENkYxMjEzNTM5QTQxMDBCMDJFODYgLyog
TWFya1N0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjExMjJFMzE1REQ5QUIzMDA3OTBFM0Eg
LyogTWFya1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5NDU1OTUxODI0NzlF
QjAwQ0MzODQzIC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODYxMkU0Q0QxNTIzODlFQzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQzQzBFMTZGNUNEMDBCMzQ0NjAgLyogTWF0aE9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3Mu
aCBpbiBIZWFkZXJzICovLApAQCAtNDg0OSw2ICs0OTA3LDcgQEAKIAkJCQkxNDJFMzEzQzEzNEZG
MEE2MDBBRkFEQjUgLyogV2Vhay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRFODRGOUYxNEVFMUFD
QzAwRDZENUQ0IC8qIFdlYWtCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCRkNFNjkxMENE
QjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RTgx
ODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTRGNzI1NjYxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVPd25lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTRFODRGQTIxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtJbXBsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNEJFN0QzMzE3MTM1Q0Y0MDBEMTgwN0EgLyogV2Vha0lubGluZXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtNTQ0Myw2ICs1NTAyLDcgQEAKIAkJCQlBN0I0OEY0OTBFRTg5MzZGMDBE
Q0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkRC
NjQ2NDBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTZBMUQ1MTUwMDFDRjQwMDI5OTJCMSAvKiBFeGVjdXRp
b25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1OTQ1NTkyMTgyNDc0NDcwMENDMzg0
MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZC
MTA1ODUxNjc1NDgwRjAwRjhBQjZFIC8qIEV4aXRLaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRUEwQTFDMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQTBBMUUxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01NjA0LDYgKzU2NjQsNyBAQAogCQkJCTE0
NDY5RERFMTA3RUM3RTcwMDY1MDQ0NiAvKiBMb29rdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTRCNzIzQjIxMkQ3REE0NjAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01h
cmtlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTk0NTU4RjE4MjQ1RUZEMDBDQzM4NDMgLyog
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVCM0VD
RjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fzc2VtYmxl
ckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTczMSw2ICs1NzkyLDkgQEAKIAkJCQlBN0NB
M0FFNTE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNEU4NEZBMDE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9y
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUJBMTVFOTE4MjM0MEIzMDBBODJFNjkgLyogUmVt
b3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTVCQTE1RUMxODIzNDBCNDAwQTgy
RTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlBN0U1QUIzQTE3OTlFNEIyMDBEMjgzM0Qg
LyogWDg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2M0M2RDlDMTUyMTEx
MUEwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaApzaW1pbGFyaXR5IGluZGV4IDgzJQpyZW5hbWUgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKcmVuYW1lIHRv
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LmgKaW5kZXggYjMyMTRlZi4uZmEwYThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAsMjUgKzEwLDI1IEBACiAg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKICAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgogICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCiAgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKICAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAogI2lmbmRlZiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAogI2RlZmluZSBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWxfaAogCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6CkBA
IC0zNiw2ICszNiw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogfTsKIAotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNDNkNDAzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCkBAIC0wLDAg
KzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCisjaWZuZGVmIFJlbW90ZUluc3BlY3Rvcl9o
CisjZGVmaW5lIFJlbW90ZUluc3BlY3Rvcl9oCisKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uLmgiCisjaW1wb3J0ICJSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLmgiCisjaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4K
KyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1RocmVhZGluZy5o
PgorCitPQkpDX0NMQVNTIE5TU3RyaW5nOworT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CisKK25h
bWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOwor
c3RydWN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvOworCitjbGFzcyBKU19FWFBPUlRf
UFJJVkFURSBSZW1vdGVJbnNwZWN0b3IgRklOQUwgOiBwdWJsaWMgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVtb3RlSW5zcGVjdG9y
JiBzaGFyZWQoKTsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8UmVtb3RlSW5zcGVj
dG9yPjsKKworICAgIHZvaWQgcmVnaXN0ZXJEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUqKTsKKyAgICB2b2lkIHVwZGF0ZURlYnVnZ2FibGUoUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZSopOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKHVuc2lnbmVk
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisKKyAgICBib29sIGVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAgICBib29sIGhhc0FjdGl2ZURlYnVnU2Vz
c2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlRGVidWdTZXNzaW9uOyB9CisKKyAgICB2
b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CisKK3ByaXZhdGU6CisgICAgUmVtb3RlSW5z
cGVjdG9yKCk7CisKKyAgICB1bnNpZ25lZCBuZXh0QXZhaWxhYmxlSWRlbnRpZmllcigpOworCisg
ICAgdm9pZCBzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCgpOworCisgICAgTlNEaWN0aW9uYXJ5
ICpsaXN0aW5nRm9yRGVidWdnYWJsZShjb25zdCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5m
byYpIGNvbnN0OworICAgIHZvaWQgcHVzaExpc3RpbmdOb3coKTsKKyAgICB2b2lkIHB1c2hMaXN0
aW5nU29vbigpOworCisgICAgdm9pZCB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uUmVjZWl2ZWRNZXNzYWdlKFJlbW90ZUluc3Bl
Y3RvclhQQ0Nvbm5lY3Rpb24qLCBOU1N0cmluZyAqbWVzc2FnZU5hbWUsIE5TRGljdGlvbmFyeSAq
dXNlckluZm8pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uRmFpbGVk
KFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgeHBjQ29ubmVjdGlvblVuaGFuZGxlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbiosIHhwY19vYmplY3RfdCkgT1ZFUlJJREU7CisKKyAgICB2b2lkIHJlY2VpdmVkU2V0dXBN
ZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworICAgIHZvaWQgcmVjZWl2ZWREYXRhTWVz
c2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkRGlkQ2xvc2VN
ZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworICAgIHZvaWQgcmVjZWl2ZWRHZXRMaXN0
aW5nTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKyAgICB2b2lkIHJlY2VpdmVkSW5k
aWNhdGVNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pOworICAgIHZvaWQgcmVjZWl2ZWRD
b25uZWN0aW9uRGllZE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CisKKyAgICAvLyBE
ZWJ1Z2dhYmxlcyBjYW4gYmUgcmVnaXN0ZXJlZCBmcm9tIGFueSB0aHJlYWQgYXQgYW55IHRpbWUu
CisgICAgLy8gQW55IGRlYnVnZ2FibGUgY2FuIHNlbmQgbWVzc2FnZXMgb3ZlciB0aGUgWFBDIGNv
bm5lY3Rpb24uCisgICAgLy8gU28gbG9jayBhY2Nlc3MgdG8gYWxsIG1hcHMgYW5kIHN0YXRlIGFz
IHRoZXkgY2FuIGNoYW5nZQorICAgIC8vIGZyb20gYW55IHRocmVhZC4KKyAgICBNdXRleCBtX2xv
Y2s7CisKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnBhaXI8UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZSosIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvPj4gbV9kZWJ1Z2dhYmxlTWFw
OworICAgIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbk1hcDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbj4gbV94cGNDb25uZWN0aW9uOworICAgIHVuc2lnbmVkIG1f
bmV4dEF2YWlsYWJsZUlkZW50aWZpZXI7CisgICAgaW50IG1fbm90aWZ5VG9rZW47CisgICAgYm9v
bCBtX2VuYWJsZWQ7CisgICAgYm9vbCBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbjsKKyAgICBib29s
IG1fcHVzaFNjaGVkdWxlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5k
aWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNlbmRpZiAvLyBXZWJJbnNwZWN0b3JT
ZXJ2ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjg3OWI0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KQEAgLTAsMCArMSw0ODggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3Rvci5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCisKKyNpbXBvcnQgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKKyNpbXBvcnQgIlJlbW90
ZUluc3BlY3RvckNvbnN0YW50cy5oIgorI2ltcG9ydCAiUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZS5oIgorI2ltcG9ydCA8bm90aWZ5Lmg+CisjaW1wb3J0IDx4cGMveHBjLmg+CisjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1w
b3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
KyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0IDx3dGYvaW9zL1dlYkNvcmVUaHJlYWQuaD4KKyNl
bmRpZgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworc3RhdGljIHZvaWQgZGlzcGF0Y2hBc3lu
Y09uUXVldWVTYWZlRm9yQW55RGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpCit7CisjaWYgUExB
VEZPUk0oSU9TKQorICAgIGlmIChXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkICYmIFdlYkNvcmVX
ZWJUaHJlYWRJc0VuYWJsZWQoKSkgeworICAgICAgICBXZWJDb3JlV2ViVGhyZWFkUnVuKGJsb2Nr
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgYmxvY2spOworfQorCitSZW1vdGVJbnNwZWN0b3Im
IFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmVtb3RlSW5zcGVjdG9yPiBzaGFyZWQ7CisKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9u
Y2U7CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKKyAgICAgICAgSlNDOjppbml0aWFsaXpl
VGhyZWFkaW5nKCk7CisgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKyAgICAg
ICAgc2hhcmVkLmdldCgpLnN0YXJ0KCk7CisgICAgfSk7CisKKyAgICByZXR1cm4gc2hhcmVkOwor
fQorCitSZW1vdGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvcigpCisgICAgOiBtX25leHRBdmFp
bGFibGVJZGVudGlmaWVyKDEpCisgICAgLCBtX25vdGlmeVRva2VuKDApCisgICAgLCBtX2VuYWJs
ZWQoZmFsc2UpCisgICAgLCBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbihmYWxzZSkKKyAgICAsIG1f
cHVzaFNjaGVkdWxlZChmYWxzZSkKK3sKK30KKwordW5zaWduZWQgUmVtb3RlSW5zcGVjdG9yOjpu
ZXh0QXZhaWxhYmxlSWRlbnRpZmllcigpCit7CisgICAgdW5zaWduZWQgbmV4dFZhbGlkSWRlbnRp
ZmllcjsKKyAgICBkbyB7CisgICAgICAgIG5leHRWYWxpZElkZW50aWZpZXIgPSBtX25leHRBdmFp
bGFibGVJZGVudGlmaWVyKys7CisgICAgfSB3aGlsZSAoIW5leHRWYWxpZElkZW50aWZpZXIgfHwg
bmV4dFZhbGlkSWRlbnRpZmllciA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkgfHwgbV9kZWJ1Z2dhYmxlTWFwLmNvbnRhaW5zKG5leHRWYWxpZElkZW50aWZpZXIpKTsKKyAg
ICByZXR1cm4gbmV4dFZhbGlkSWRlbnRpZmllcjsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnJlZ2lzdGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxl
KQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgdW5zaWduZWQgaWRl
bnRpZmllciA9IG5leHRBdmFpbGFibGVJZGVudGlmaWVyKCk7CisgICAgZGVidWdnYWJsZS0+c2V0
SWRlbnRpZmllcihpZGVudGlmaWVyKTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9kZWJ1Z2dhYmxl
TWFwLnNldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfcGFpcihkZWJ1Z2dhYmxlLCBkZWJ1Z2dhYmxl
LT5pbmZvKCkpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkp
OworCisgICAgaWYgKGRlYnVnZ2FibGUtPnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKSkKKyAgICAg
ICAgcHVzaExpc3RpbmdTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1bnJlZ2lz
dGVyRGVidWdnYWJsZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlKQorewor
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworCisgICAgdW5zaWduZWQgaWRlbnRpZmll
ciA9IGRlYnVnZ2FibGUtPmlkZW50aWZpZXIoKTsKKyAgICBpZiAoIWlkZW50aWZpZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fZGVidWdnYWJsZU1hcC5yZW1v
dmUoaWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVk
KTsKKworICAgIGlmIChSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+
IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAudGFrZShpZGVudGlmaWVyKSkKKyAgICAgICAg
Y29ubmVjdGlvbi0+Y2xvc2VGcm9tRGVidWdnYWJsZSgpOworCisgICAgaWYgKGRlYnVnZ2FibGUt
PnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKSkKKyAgICAgICAgcHVzaExpc3RpbmdTb29uKCk7Cit9
CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVEZWJ1Z2dhYmxlKFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gZGVidWdnYWJsZS0+aWRlbnRpZmllcigp
OworICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByZXN1
bHQgPSBtX2RlYnVnZ2FibGVNYXAuc2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV9wYWlyKGRlYnVn
Z2FibGUsIGRlYnVnZ2FibGUtPmluZm8oKSkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCAh
cmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgaWYgKGRlYnVnZ2FibGUtPnJlbW90ZURlYnVnZ2lu
Z0FsbG93ZWQoKSkKKyAgICAgICAgcHVzaExpc3RpbmdTb29uKCk7Cit9CisKK3ZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQodW5zaWduZWQgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xv
Y2spOworCisgICAgaWYgKCFtX3hwY0Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAg
IFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9
IG1fY29ubmVjdGlvbk1hcC5nZXQoaWRlbnRpZmllcik7CisgICAgaWYgKCFjb25uZWN0aW9uKQor
ICAgICAgICByZXR1cm47CisKKyAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gQHsKKyAgICAg
ICAgV0lSUmF3RGF0YUtleTogW3N0YXRpY19jYXN0PE5TU3RyaW5nICo+KG1lc3NhZ2UpIGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwKKyAgICAgICAgV0lSQ29ubmVjdGlv
bklkZW50aWZpZXJLZXk6IGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25JZGVudGlmaWVyKCksCisgICAg
ICAgIFdJUkRlc3RpbmF0aW9uS2V5OiBjb25uZWN0aW9uLT5kZXN0aW5hdGlvbigpCisgICAgfTsK
KworICAgIG1feHBjQ29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lSUmF3RGF0YU1lc3NhZ2UsIHVz
ZXJJbmZvKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkKK3sKKyAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlmIChtX2VuYWJsZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fZW5hYmxlZCA9IHRydWU7CisKKyAgICBub3RpZnlfcmVnaXN0ZXJfZGlz
cGF0Y2goV0lSU2VydmljZUF2YWlsYWJsZU5vdGlmaWNhdGlvbiwgJm1fbm90aWZ5VG9rZW4sIGRp
c3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwg
MCksIF4oaW50KSB7CisgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6c2hhcmVkKCkuc2V0dXBYUEND
b25uZWN0aW9uSWZOZWVkZWQoKTsKKyAgICB9KTsKKworICAgIG5vdGlmeV9wb3N0KFdJUlNlcnZp
Y2VBdmFpbGFiaWxpdHlDaGVja05vdGlmaWNhdGlvbik7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpzdG9wKCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIGlm
ICghbV9lbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2VuYWJsZWQgPSBmYWxzZTsK
KworICAgIG1fcHVzaFNjaGVkdWxlZCA9IGZhbHNlOworCisgICAgZm9yIChhdXRvIGl0ID0gbV9j
b25uZWN0aW9uTWFwLmJlZ2luKCksIGVuZCA9IG1fY29ubmVjdGlvbk1hcC5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPmNsb3NlKCk7CisgICAgbV9jb25uZWN0aW9u
TWFwLmNsZWFyKCk7CisKKyAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKKworICAg
IGlmIChtX3hwY0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgbV94cGNDb25uZWN0aW9uLT5jbG9zZSgp
OworICAgICAgICBtX3hwY0Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgIH0KKworICAgIG5vdGlm
eV9jYW5jZWwobV9ub3RpZnlUb2tlbik7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1
cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZCgpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisKKyAgICBpZiAobV94cGNDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICB4
cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24gPSB4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9z
ZXJ2aWNlKFdJUlhQQ01hY2hQb3J0TmFtZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgMCk7
CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3hwY0Nvbm5l
Y3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24+KGNv
bm5lY3Rpb24sIHRoaXMpOworICAgIG1feHBjQ29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoQCJzeW4i
LCBuaWwpOyAvLyBTZW5kIGEgc2ltcGxlIG1lc3NhZ2UgdG8gaW5pdGlhbGl6ZSB0aGUgWFBDIGNv
bm5lY3Rpb24uCisgICAgeHBjX3JlbGVhc2UoY29ubmVjdGlvbik7CisKKyAgICBwdXNoTGlzdGlu
Z1Nvb24oKTsKK30KKworI3ByYWdtYSBtYXJrIC0gUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bjo6Q2xpZW50CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uUmVjZWl2ZWRN
ZXNzYWdlKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCBOU1N0cmluZyAqbWVzc2FnZU5h
bWUsIE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
bG9jayk7CisKKyAgICBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJQZXJtaXNz
aW9uRGVuaWVkXSkgeworICAgICAgICBzdG9wKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJTb2NrZXREYXRhTWVzc2Fn
ZV0pCisgICAgICAgIHJlY2VpdmVkRGF0YU1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYg
KFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSU29ja2V0U2V0dXBNZXNzYWdlXSkKKyAg
ICAgICAgcmVjZWl2ZWRTZXR1cE1lc3NhZ2UodXNlckluZm8pOworICAgIGVsc2UgaWYgKFttZXNz
YWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSV2ViUGFnZUNsb3NlTWVzc2FnZV0pCisgICAgICAg
IHJlY2VpdmVkRGlkQ2xvc2VNZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlIGlmIChbbWVzc2Fn
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkFwcGxpY2F0aW9uR2V0TGlzdGluZ01lc3NhZ2VdKQor
ICAgICAgICByZWNlaXZlZEdldExpc3RpbmdNZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlIGlm
IChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkluZGljYXRlTWVzc2FnZV0pCisgICAg
ICAgIHJlY2VpdmVkSW5kaWNhdGVNZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlIGlmIChbbWVz
c2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkNvbm5lY3Rpb25EaWVkTWVzc2FnZV0pCisgICAg
ICAgIHJlY2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKHVzZXJJbmZvKTsKKyAgICBlbHNlCisg
ICAgICAgIE5TTG9nKEAiVW5yZWNvZ25pemVkIFJlbW90ZUluc3BlY3RvciBYUEMgTWVzc2FnZTog
JUAiLCBtZXNzYWdlTmFtZSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0
aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qKQoreworICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2xvY2spOworCisgICAgbV9wdXNoU2NoZWR1bGVkID0gZmFsc2U7CisKKyAg
ICBmb3IgKGF1dG8gaXQgPSBtX2Nvbm5lY3Rpb25NYXAuYmVnaW4oKSwgZW5kID0gbV9jb25uZWN0
aW9uTWFwLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGl0LT52YWx1ZS0+Y2xvc2Uo
KTsKKyAgICBtX2Nvbm5lY3Rpb25NYXAuY2xlYXIoKTsKKworICAgIHVwZGF0ZUhhc0FjdGl2ZURl
YnVnU2Vzc2lvbigpOworCisgICAgaWYgKG1feHBjQ29ubmVjdGlvbikgeworICAgICAgICBtX3hw
Y0Nvbm5lY3Rpb24tPmNsb3NlKCk7CisgICAgICAgIG1feHBjQ29ubmVjdGlvbiA9IG51bGxwdHI7
CisgICAgfQorfQorCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6eHBjQ29ubmVjdGlvblVuaGFuZGxl
ZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIHhwY19vYmplY3RfdCkKK3sK
KyAgICAvLyBJbnRlbnRpb25hbGx5IGlnbm9yZWQuCit9CisKKyNwcmFnbWEgbWFyayAtIExpc3Rp
bmdzCisKK05TRGljdGlvbmFyeSAqUmVtb3RlSW5zcGVjdG9yOjpsaXN0aW5nRm9yRGVidWdnYWJs
ZShjb25zdCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyYgZGVidWdnYWJsZUluZm8pIGNv
bnN0Cit7CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGVidWdnYWJsZURldGFpbHMgPSBbTlNN
dXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKworICAgIFtkZWJ1Z2dhYmxlRGV0YWlscyBz
ZXRPYmplY3Q6QChkZWJ1Z2dhYmxlSW5mby5pZGVudGlmaWVyKSBmb3JLZXk6V0lSUGFnZUlkZW50
aWZpZXJLZXldOworCisgICAgc3dpdGNoIChkZWJ1Z2dhYmxlSW5mby50eXBlKSB7CisgICAgY2Fz
ZSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpKYXZhU2NyaXB0OiB7CisgICAgICAgIE5TU3Ry
aW5nICpuYW1lID0gZGVidWdnYWJsZUluZm8ubmFtZTsKKyAgICAgICAgW2RlYnVnZ2FibGVEZXRh
aWxzIHNldE9iamVjdDpuYW1lIGZvcktleTpXSVJUaXRsZUtleV07CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OldlYjogeworICAgICAg
ICBOU1N0cmluZyAqdXJsID0gZGVidWdnYWJsZUluZm8udXJsOworICAgICAgICBOU1N0cmluZyAq
dGl0bGUgPSBkZWJ1Z2dhYmxlSW5mby5uYW1lOworICAgICAgICBbZGVidWdnYWJsZURldGFpbHMg
c2V0T2JqZWN0OnVybCBmb3JLZXk6V0lSVVJMS2V5XTsKKyAgICAgICAgW2RlYnVnZ2FibGVEZXRh
aWxzIHNldE9iamVjdDp0aXRsZSBmb3JLZXk6V0lSVGl0bGVLZXldOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KGRlYnVnZ2Fi
bGVJbmZvLmlkZW50aWZpZXIpKQorICAgICAgICBbZGVidWdnYWJsZURldGFpbHMgc2V0T2JqZWN0
OmNvbm5lY3Rpb24tPmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgZm9yS2V5OldJUkNvbm5lY3Rpb25J
ZGVudGlmaWVyS2V5XTsKKworICAgIGlmIChkZWJ1Z2dhYmxlSW5mby5oYXNMb2NhbERlYnVnZ2Vy
KQorICAgICAgICBbZGVidWdnYWJsZURldGFpbHMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OldJUkhh
c0xvY2FsRGVidWdnZXJLZXldOworCisgICAgcmV0dXJuIGRlYnVnZ2FibGVEZXRhaWxzOworfQor
Cit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdOb3coKQoreworICAgIEFTU0VSVCht
X3hwY0Nvbm5lY3Rpb24pOworICAgIGlmICghbV94cGNDb25uZWN0aW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3B1c2hTY2hlZHVsZWQgPSBmYWxzZTsKKworICAgIFJldGFpblB0cjxOU011
dGFibGVEaWN0aW9uYXJ5PiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0XSk7CisgICAgZm9yIChhdXRvIGl0ID0gbV9kZWJ1Z2dhYmxlTWFwLmJlZ2lu
KCksIGVuZCA9IG1fZGVidWdnYWJsZU1hcC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgIGNvbnN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvJiBkZWJ1Z2dhYmxlSW5mbyA9
IGl0LT52YWx1ZS5zZWNvbmQ7CisgICAgICAgIGlmIChkZWJ1Z2dhYmxlSW5mby5yZW1vdGVEZWJ1
Z2dpbmdBbGxvd2VkKSB7CisgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmRldGFpbHMgPSBsaXN0
aW5nRm9yRGVidWdnYWJsZShkZWJ1Z2dhYmxlSW5mbyk7CisgICAgICAgICAgICBbcmVzcG9uc2Ug
c2V0T2JqZWN0OmRldGFpbHMgZm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXUi
LCBkZWJ1Z2dhYmxlSW5mby5pZGVudGlmaWVyXV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gb3V0Z29pbmcgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIFtvdXRnb2luZyBzZXRPYmplY3Q6cmVz
cG9uc2UuZ2V0KCkgZm9yS2V5OldJUkxpc3RpbmdLZXldOworCisgICAgbV94cGNDb25uZWN0aW9u
LT5zZW5kTWVzc2FnZShXSVJMaXN0aW5nTWVzc2FnZSwgb3V0Z29pbmcuZ2V0KCkpOworfQorCit2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6cHVzaExpc3RpbmdTb29uKCkKK3sKKyAgICBpZiAoIW1feHBj
Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fcHVzaFNjaGVkdWxlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9wdXNoU2NoZWR1bGVkID0gdHJ1ZTsKKyAgICBkaXNw
YXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCAwLjAyICogTlNFQ19Q
RVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklU
WV9ERUZBVUxULCAwKSwgXnsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgICAgIGlmIChtX3B1c2hTY2hlZHVsZWQpCisgICAgICAgICAgICBwdXNoTGlzdGluZ05vdygp
OworICAgIH0pOworfQorCisjcHJhZ21hIG1hcmsgLSBBY3RpdmUgRGVidWdnZXIgU2Vzc2lvbnMK
Kwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpCit7
CisgICAgYm9vbCBoYXNBY3RpdmVEZWJ1Z2dlclNlc3Npb24gPSAhbV9jb25uZWN0aW9uTWFwLmlz
RW1wdHkoKTsKKyAgICBpZiAoaGFzQWN0aXZlRGVidWdnZXJTZXNzaW9uID09IG1faGFzQWN0aXZl
RGVidWdTZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hhc0FjdGl2ZURlYnVnU2Vz
c2lvbiA9IGhhc0FjdGl2ZURlYnVnZ2VyU2Vzc2lvbjsKKworICAgIC8vIEZJWE1FOiBFeHBvc2Ug
c29tZSB3YXkgdG8gYWNjZXNzIHRoaXMgc3RhdGUgaW4gYW4gZW1iZWRkZXIuCisgICAgLy8gTGVn
YWN5IGlPUyBXZWJLaXQgMSBoYWQgYSBub3RpZmljYXRpb24uIFRoaXMgd2lsbCBuZWVkIHRvIGJl
IHNtYXJ0ZXIgd2l0aCBXZWJLaXQyLgorfQorCisjcHJhZ21hIG1hcmsgLSBSZWNlaXZlZCBYUEMg
TWVzc2FnZXMKKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKE5T
RGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFt1c2VySW5m
byBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOworICAgIGlmICghcGFnZUlkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBb
dXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKKyAgICBp
ZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmlu
ZyAqc2VuZGVyID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJTZW5kZXJLZXldOworICAgIGlm
ICghc2VuZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0g
W3BhZ2VJZCB1bnNpZ25lZEludFZhbHVlXTsKKyAgICBpZiAobV9jb25uZWN0aW9uTWFwLmNvbnRh
aW5zKGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGl0ID0gbV9kZWJ1
Z2dhYmxlTWFwLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ID09IG1fZGVidWdnYWJsZU1h
cC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQXR0ZW1wdCB0byBjcmVhdGUgYSBj
b25uZWN0aW9uLiBUaGlzIG1heSBmYWlsIGlmIHRoZSBwYWdlIGFscmVhZHkgaGFzIGFuIGluc3Bl
Y3RvciBvciBpZiBpdCBkaXNhbGxvd3MgaW5zcGVjdGlvbi4KKyAgICBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlID0gaXQtPnZhbHVlLmZpcnN0OworICAgIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVJbmZvIGRlYnVnZ2FibGVJbmZvID0gaXQtPnZhbHVlLnNlY29uZDsKKyAg
ICBSZWZQdHI8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+IGNvbm5lY3Rpb24g
PSBhZG9wdFJlZihuZXcgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oZGVidWdn
YWJsZSwgY29ubmVjdGlvbklkZW50aWZpZXIsIHNlbmRlciwgZGVidWdnYWJsZUluZm8udHlwZSkp
OworICAgIGlmICghY29ubmVjdGlvbi0+c2V0dXAoKSkgeworICAgICAgICBjb25uZWN0aW9uLT5j
bG9zZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb25uZWN0aW9uTWFwLnNl
dChpZGVudGlmaWVyLCBjb25uZWN0aW9uLnJlbGVhc2UoKSk7CisKKyAgICB1cGRhdGVIYXNBY3Rp
dmVEZWJ1Z1Nlc3Npb24oKTsKKworICAgIHB1c2hMaXN0aW5nU29vbigpOworfQorCit2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWREYXRhTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZv
KQoreworICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlBh
Z2VJZGVudGlmaWVyS2V5XTsKKyAgICBpZiAoIXBhZ2VJZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgdW5zaWduZWQgcGFnZUlkZW50aWZpZXIgPSBbcGFnZUlkIHVuc2lnbmVkSW50VmFsdWVdOwor
ICAgIFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlv
biA9IG1fY29ubmVjdGlvbk1hcC5nZXQocGFnZUlkZW50aWZpZXIpOworICAgIGlmICghY29ubmVj
dGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNEYXRhICpkYXRhID0gW3VzZXJJbmZvIG9i
amVjdEZvcktleTpXSVJTb2NrZXREYXRhS2V5XTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1l
c3NhZ2UgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIGVuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2VU
b0JhY2tlbmQobWVzc2FnZS5nZXQoKSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNl
aXZlZERpZENsb3NlTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKQoreworICAgIE5TTnVt
YmVyICpwYWdlSWQgPSBbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5
XTsKKyAgICBpZiAoIXBhZ2VJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNTdHJpbmcgKmNv
bm5lY3Rpb25JZGVudGlmaWVyID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9u
SWRlbnRpZmllcktleV07CisgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IFtwYWdlSWQgdW5zaWduZWRJbnRW
YWx1ZV07CisgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiBj
b25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChpZGVudGlmaWVyKTsKKyAgICBpZiAoIWNv
bm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghW2Nvbm5lY3Rpb25JZGVudGlm
aWVyIGlzRXF1YWxUb1N0cmluZzpjb25uZWN0aW9uLT5jb25uZWN0aW9uSWRlbnRpZmllcigpXSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgY29ubmVjdGlvbi0+Y2xvc2UoKTsKKyAgICBtX2Nvbm5l
Y3Rpb25NYXAucmVtb3ZlKGlkZW50aWZpZXIpOworCisgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdT
ZXNzaW9uKCk7CisKKyAgICBwdXNoTGlzdGluZ1Nvb24oKTsKK30KKwordm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OnJlY2VpdmVkR2V0TGlzdGluZ01lc3NhZ2UoTlNEaWN0aW9uYXJ5ICopCit7CisgICAg
cHVzaExpc3RpbmdOb3coKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkSW5k
aWNhdGVNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTlNOdW1iZXIgKnBh
Z2VJZCA9IFt1c2VySW5mbyBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOworICAg
IGlmICghcGFnZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVy
ID0gW3BhZ2VJZCB1bnNpZ25lZEludFZhbHVlXTsKKyAgICBCT09MIGluZGljYXRlRW5hYmxlZCA9
IFtbdXNlckluZm8gb2JqZWN0Rm9yS2V5OldJUkluZGljYXRlRW5hYmxlZEtleV0gYm9vbFZhbHVl
XTsKKworICAgIGRpc3BhdGNoQXN5bmNPblF1ZXVlU2FmZUZvckFueURlYnVnZ2FibGUoXnsKKyAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisKKyAgICAgICAgYXV0byBpdCA9IG1f
ZGVidWdnYWJsZU1hcC5maW5kKGlkZW50aWZpZXIpOworICAgICAgICBpZiAoaXQgPT0gbV9kZWJ1
Z2dhYmxlTWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUgPSBpdC0+dmFsdWUuZmlyc3Q7CisgICAgICAg
IGRlYnVnZ2FibGUtPnNldEluZGljYXRpbmcoaW5kaWNhdGVFbmFibGVkKTsKKyAgICB9KTsKK30K
Kwordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKE5T
RGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlm
aWVyID0gW3VzZXJJbmZvIG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07
CisgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBpdCA9IG1fY29ubmVjdGlvbk1hcC5iZWdpbigpOworICAgIGF1dG8gZW5kID0gbV9jb25u
ZWN0aW9uTWFwLmVuZCgpOworICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
aWYgKFtjb25uZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6aXQtPnZhbHVlLT5jb25u
ZWN0aW9uSWRlbnRpZmllcigpXSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlm
IChpdCA9PSBlbmQpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IGl0LT52YWx1ZTsKKyAgICBjb25u
ZWN0aW9uLT5jbG9zZSgpOworICAgIG1fY29ubmVjdGlvbk1hcC5yZW1vdmUoaXQpOworCisgICAg
dXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbGF5RGVm
aW5pdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3RvckNvbnN0YW50cy5oCnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVsYXlEZWZp
bml0aW9ucy5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaAppbmRleCAxZjNiYzMyLi41OTUxODU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3Rv
clJlbGF5RGVmaW5pdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaApAQCAtMjMsMTIgKzIzLDEyIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9u
c19oCi0jZGVmaW5lIFdlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnNfaAorI2lmbmRlZiBSZW1v
dGVJbnNwZWN0b3JDb25zdGFudHNfaAorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHNf
aAogCiAvLyBXSVJDb25zdGFudHMgYXJlICJXZWIgSW5zcGVjdG9yIFJlbGF5IiBjb25zdGFudHMg
c2hhcmVkIGJldHdlZW4KLS8vIHRoZSBXZWJJbnNwZWN0b3IgZnJhbWV3b3JrIG9uIHRoZSBkZWJ1
Z2dlciBzaWRlLCB3ZWJpbnNwZWN0b3JkLAotLy8gYW5kIFdlYktpdCBvbiB0aGUgZGVidWdnYWJs
ZSBhcHBsaWNhdGlvbiBzaWRlLgorLy8gdGhlIFdlYkluc3BlY3RvciBmcmFtZXdvcmsgb24gdGhl
IE9TIFggc2lkZSwgd2ViaW5zcGVjdG9yZCwgYW5kCisvLyBpT1MgV2ViS2l0IG9uIHRoZSBkZXZp
Y2Ugc2lkZS4KIAogI2RlZmluZSBXSVJTaW11bGF0b3JUQ1BQb3J0TnVtYmVyICAgICAgICAgICAg
ICAgMjc3NTMKICNkZWZpbmUgV0lSWFBDTWFjaFBvcnROYW1lICAgICAgICAgICAgICAgICAgICAg
ICJjb20uYXBwbGUud2ViaW5zcGVjdG9yIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZS5jcHAKc2ltaWxhcml0eSBpbmRleCA1MSUKcmVuYW1lIGZyb20gU291cmNlL1dl
YktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbi5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcAppbmRleCBjN2E1YmNjLi5mZGYxZDk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDMzICsyMyw1OSBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1AY2xhc3MgV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5l
bDsKLUBjbGFzcyBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXI7
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZS5oIgogCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIDog
TlNPYmplY3QgewotQHByaXZhdGUKLSAgICBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICpfY2hh
bm5lbDsKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotICAgIFdlYkluc3BlY3RvclNl
cnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciAqX2NvbnRyb2xsZXI7IC8vIHdlYWssIHRo
ZSBjb250cm9sbGVyIG93bnMgdXMuCi0gICAgTlNTdHJpbmcgKl9jb25uZWN0aW9uSWRlbnRpZmll
cjsKLSAgICBOU1N0cmluZyAqX2Rlc3RpbmF0aW9uOwotICAgIE5TTnVtYmVyICpfaWRlbnRpZmll
cjsKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJSZW1v
dGVJbnNwZWN0b3IuaCIKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGU6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUoKQorICAgIDogbV9pZGVudGlm
aWVyKDApCisgICAgLCBtX2FsbG93ZWQoZmFsc2UpCit7Cit9CisKK1JlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGU6On5SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCkKK3sKKyAgICBSZW1vdGVJbnNw
ZWN0b3I6OnNoYXJlZCgpLnVucmVnaXN0ZXJEZWJ1Z2dhYmxlKHRoaXMpOwogfQogCi0tIChpZClp
bml0V2l0aENvbnRyb2xsZXI6KFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29u
dHJvbGxlciAqKWNvbnRyb2xsZXIgY29ubmVjdGlvbklkZW50aWZpZXI6KE5TU3RyaW5nICopY29u
bmVjdGlvbklkZW50aWZpZXIgZGVzdGluYXRpb246KE5TU3RyaW5nICopZGVzdGluYXRpb24gaWRl
bnRpZmllcjooTlNOdW1iZXIgKilpZGVudGlmaWVyOwotLSAoQk9PTClzZXR1cENoYW5uZWw7Ci0t
IChOU1N0cmluZyAqKWNvbm5lY3Rpb25JZGVudGlmaWVyOwotLSAoTlNOdW1iZXIgKilpZGVudGlm
aWVyOwordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjppbml0KCkKK3sKKyAgICBSZW1v
dGVJbnNwZWN0b3I6OnNoYXJlZCgpLnJlZ2lzdGVyRGVidWdnYWJsZSh0aGlzKTsKK30KIAotLy8g
TWVzc2FnZXMgZnJvbSB0aGUgSW5zcGVjdG9yU2VydmVyLgotLSAodm9pZClyZWNlaXZlZERhdGE6
KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnk7Ci0tICh2b2lkKXJlY2VpdmVkRGlkQ2xvc2U6KE5T
RGljdGlvbmFyeSAqKWRpY3Rpb25hcnk7Cit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6
OnVwZGF0ZSgpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpzaGFyZWQoKS51cGRhdGVEZWJ1Z2dh
YmxlKHRoaXMpOworfQogCi0vLyBNZXNzYWdlcyBmcm9tIHRoZSBDaGFubmVsLgotLSAodm9pZClj
bGVhckNoYW5uZWw7Ci0tICh2b2lkKXNlbmRNZXNzYWdlVG9Gcm9udGVuZDooTlNTdHJpbmcgKilt
ZXNzYWdlOwordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpzZXRSZW1vdGVEZWJ1Z2dp
bmdBbGxvd2VkKGJvb2wgYWxsb3dlZCkKK3sKKyAgICBpZiAobV9hbGxvd2VkID09IGFsbG93ZWQp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fYWxsb3dlZCA9IGFsbG93ZWQ7CisKKyAgICB1cGRh
dGUoKTsKK30KKworUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6aW5mbygpIGNvbnN0Cit7CisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm8gaW5mbzsKKyAgICBpbmZvLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyKCk7CisgICAgaW5m
by50eXBlID0gdHlwZSgpOworICAgIGluZm8ubmFtZSA9IG5hbWUoKTsKKyAgICBpbmZvLnVybCA9
IHVybCgpOworICAgIGluZm8uaGFzTG9jYWxEZWJ1Z2dlciA9IGhhc0xvY2FsRGVidWdnZXIoKTsK
KyAgICBpbmZvLnJlbW90ZURlYnVnZ2luZ0FsbG93ZWQgPSByZW1vdGVEZWJ1Z2dpbmdBbGxvd2Vk
KCk7CisgICAgcmV0dXJuIGluZm87Cit9CiAKLS8vIE1lc3NhZ2VzIHRvIHRoZSBDaGFubmVsLgot
LSAodm9pZClzZW5kTWVzc2FnZVRvQmFja2VuZDooTlNTdHJpbmcgKiltZXNzYWdlOworfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCiAKLUBlbmQKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45MDI3NGFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5o
CkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpZm5kZWYgUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZV9oCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVfaAor
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworCitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CitzdHJ1Y3QgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUluZm87CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUgeworcHVibGljOgorICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUo
KTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKCk7CisKKyAgICB2b2lk
IGluaXQoKTsKKyAgICB2b2lkIHVwZGF0ZSgpOworCisgICAgdW5zaWduZWQgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0SWRlbnRpZmllcih1
bnNpZ25lZCBpZGVudGlmaWVyKSB7IG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KKworICAg
IGJvb2wgcmVtb3RlRGVidWdnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZDsg
fQorICAgIHZvaWQgc2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZChib29sKTsKKworICAgIFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIGluZm8oKSBjb25zdDsKKworICAgIGVudW0gRGVidWdn
YWJsZVR5cGUgeyBKYXZhU2NyaXB0LCBXZWIgfTsKKyAgICB2aXJ0dWFsIERlYnVnZ2FibGVUeXBl
IHR5cGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIFN0cmluZygpOyB9IC8vIEphdmFTY3JpcHQgYW5kIFdlYgorICAgIHZpcnR1YWwgU3RyaW5n
IHVybCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8vIFdlYgorICAgIHZpcnR1YWwgYm9v
bCBoYXNMb2NhbERlYnVnZ2VyKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGNvbm5l
Y3QoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNj
b25uZWN0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dEluZGljYXRpbmcoYm9vbCkgeyB9IC8vIERlZmF1bHQgaXMgdG8gZG8gbm90aGluZy4KKworcHJp
dmF0ZToKKyAgICB1bnNpZ25lZCBtX2lkZW50aWZpZXI7CisgICAgYm9vbCBtX2FsbG93ZWQ7Cit9
OworCitzdHJ1Y3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8geworICAgIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVJbmZvKCkKKyAgICAgICAgOiBpZGVudGlmaWVyKDApCisgICAgICAg
ICwgdHlwZShSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpKYXZhU2NyaXB0KQorICAgICAgICAs
IGhhc0xvY2FsRGVidWdnZXIoZmFsc2UpCisgICAgICAgICwgcmVtb3RlRGVidWdnaW5nQWxsb3dl
ZChmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgdW5zaWduZWQgaWRlbnRpZmllcjsKKyAgICBS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpEZWJ1Z2dhYmxlVHlwZSB0eXBlOworICAgIFN0cmlu
ZyBuYW1lOworICAgIFN0cmluZyB1cmw7CisgICAgYm9vbCBoYXNMb2NhbERlYnVnZ2VyOworICAg
IGJvb2wgcmVtb3RlRGVidWdnaW5nQWxsb3dlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgorCisjZW5kaWYgLy8gUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZV9oCisKKyNlbmRpZiAv
LyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmMyNGQ4ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCkBAIC0w
LDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpZm5kZWYgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb25faAorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbl9oCisKKyNpbXBvcnQgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2lt
cG9ydCAiUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oIgorI2ltcG9ydCA8ZGlzcGF0Y2gvZGlz
cGF0Y2guaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9UaHJlYWRp
bmcuaD4KKyNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCitPQkpDX0NMQVNT
IE5TU3RyaW5nOworCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24gRklOQUwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+LCBwdWJsaWMgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbihSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiwgTlNTdHJpbmcgKmNvbm5lY3Rp
b25JZGVudGlmaWVyLCBOU1N0cmluZyAqZGVzdGluYXRpb24sIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGU6OkRlYnVnZ2FibGVUeXBlKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlQ29ubmVjdGlvbigpOworCisgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKCkgY29uc3Q7
CisgICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CisgICAgdW5zaWdu
ZWQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgYm9v
bCBzZXR1cCgpOworCisgICAgdm9pZCBjbG9zZSgpOworICAgIHZvaWQgY2xvc2VGcm9tRGVidWdn
YWJsZSgpOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChOU1N0cmluZyAqKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIE9WRVJS
SURFOworCitwcml2YXRlOgorICAgIHZvaWQgZGlzcGF0Y2hTeW5jT25EZWJ1Z2dhYmxlKHZvaWQg
KF5ibG9jaykoKSk7CisgICAgdm9pZCBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5i
bG9jaykoKSk7CisKKyAgICAvLyBUaGlzIGNvbm5lY3Rpb24gZnJvbSB0aGUgUmVtb3RlSW5zcGVj
dG9yIHNpbmdsZXRvbiB0byB0aGUgRGVidWdnYWJsZQorICAgIC8vIGNhbiBiZSB1c2VkIG9uIG11
bHRpcGxlIHRocmVhZHMuIFNvIGFueSBhY2Nlc3MgdG8gdGhlIGRlYnVnZ2FibGUKKyAgICAvLyBp
dHNlbGYgbXVzdCB0YWtlIHRoaXMgbG9jayB0byBlbnN1cmUgbV9kZWJ1Z2dhYmxlIGlzIHZhbGlk
LgorICAgIE11dGV4IG1fZGVidWdnYWJsZUxvY2s7CisKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlKiBtX2RlYnVnZ2FibGU7CisgICAgZGlzcGF0Y2hfcXVldWVfdCBtX3F1ZXVlRm9yRGVi
dWdnYWJsZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fY29ubmVjdGlvbklkZW50aWZpZXI7
CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2Rlc3RpbmF0aW9uOworICAgIHVuc2lnbmVkIG1f
aWRlbnRpZmllcjsKKyAgICBib29sIG1fY29ubmVjdGVkOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCisKKyNlbmRpZiAvLyBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bl9oCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNWZmZmVhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVD
b25uZWN0aW9uLm1tCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCisKKyNpbXBvcnQgIlJlbW90ZUluc3BlY3Rvci5oIgorCisjaWYgUExBVEZPUk0oSU9T
KQorI2ltcG9ydCA8d3RmL2lvcy9XZWJDb3JlVGhyZWFkLmg+CisjZW5kaWYKKworbmFtZXNwYWNl
IEluc3BlY3RvciB7CisKK1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbihSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
KiBkZWJ1Z2dhYmxlLCBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIsIE5TU3RyaW5nICpk
ZXN0aW5hdGlvbiwgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUgdHlw
ZSkKKyAgICA6IG1fZGVidWdnYWJsZShkZWJ1Z2dhYmxlKQorICAgICwgbV9xdWV1ZUZvckRlYnVn
Z2FibGUoTlVMTCkKKyAgICAsIG1fY29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvbklkZW50
aWZpZXIpCisgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgICwgbV9pZGVudGlm
aWVyKGRlYnVnZ2FibGUtPmlkZW50aWZpZXIoKSkKKyAgICAsIG1fY29ubmVjdGVkKGZhbHNlKQor
eworICAgIC8vIFdlYiBkZWJ1Z2dhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIG9uIHRoZSBtYWluIHF1
ZXVlIChvciB0aGUgV2ViVGhyZWFkIG9uIGlPUykuIFNpZ25hbCB0aGF0IHdpdGggYSBOVUxMIG1f
cXVldWVGb3JEZWJ1Z2dhYmxlLgorICAgIC8vIEhvd2V2ZXIsIEphdmFTY3JpcHQgZGVidWdnYWJs
ZXMgY2FuIGJlIGFjY2Vzc2VkIGZyb20gYW55IHRocmVhZC9xdWV1ZSwgc28gd2UgY3JlYXRlIGEg
cXVldWUgZm9yIGVhY2ggSmF2YVNjcmlwdCBkZWJ1Z2dhYmxlLgorICAgIGlmICh0eXBlID09IFJl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkphdmFTY3JpcHQpCisgICAgICAgIG1fcXVldWVGb3JE
ZWJ1Z2dhYmxlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuSmF2YVNjcmlwdENv
cmUucmVtb3RlLWluc3BlY3Rvci14cGMtY29ubmVjdGlvbiIsIERJU1BBVENIX1FVRVVFX1NFUklB
TCk7Cit9CisKK1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjp+UmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oKQoreworICAgIGlmIChtX3F1ZXVlRm9yRGVidWdn
YWJsZSkgeworICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fcXVldWVGb3JEZWJ1Z2dhYmxlKTsK
KyAgICAgICAgbV9xdWV1ZUZvckRlYnVnZ2FibGUgPSBOVUxMOworICAgIH0KK30KKworTlNTdHJp
bmcgKlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpkZXN0aW5hdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFtbbV9kZXN0aW5hdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07Cit9
CisKK05TU3RyaW5nICpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y29ubmVj
dGlvbklkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBbW21fY29ubmVjdGlvbklkZW50
aWZpZXIgY29weV0gYXV0b3JlbGVhc2VdOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNPbkRlYnVnZ2FibGUodm9pZCAoXmJsb2NrKSgp
KQoreworICAgIGlmIChtX3F1ZXVlRm9yRGVidWdnYWJsZSkKKyAgICAgICAgZGlzcGF0Y2hfc3lu
YyhtX3F1ZXVlRm9yRGVidWdnYWJsZSwgYmxvY2spOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBl
bHNlIGlmIChXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJc0Vu
YWJsZWQoKSkKKyAgICAgICAgV2ViQ29yZVdlYlRocmVhZFJ1blN5bmMoYmxvY2spOworI2VuZGlm
CisgICAgZWxzZQorICAgICAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIGJsb2NrKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hBc3luY09uRGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpCit7CisgICAgaWYg
KG1fcXVldWVGb3JEZWJ1Z2dhYmxlKQorICAgICAgICBkaXNwYXRjaF9hc3luYyhtX3F1ZXVlRm9y
RGVidWdnYWJsZSwgYmxvY2spOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBlbHNlIGlmIChXZWJD
b3JlV2ViVGhyZWFkSXNFbmFibGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQoKSkKKyAg
ICAgICAgV2ViQ29yZVdlYlRocmVhZFJ1bihibG9jayk7CisjZW5kaWYKKyAgICBlbHNlCisgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGJsb2NrKTsKK30K
KworYm9vbCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXAoKQorewor
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2FibGVMb2NrKTsKKworICAgIGlmICghbV9k
ZWJ1Z2dhYmxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkaXNwYXRjaFN5bmNPbkRl
YnVnZ2FibGUoXnsKKyAgICAgICAgaWYgKCFtX2RlYnVnZ2FibGUtPnJlbW90ZURlYnVnZ2luZ0Fs
bG93ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobV9kZWJ1Z2dhYmxl
LT5oYXNMb2NhbERlYnVnZ2VyKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9k
ZWJ1Z2dhYmxlLT5jb25uZWN0KHRoaXMpOworICAgICAgICBtX2Nvbm5lY3RlZCA9IHRydWU7Cisg
ICAgfSk7CisKKyAgICByZXR1cm4gbV9jb25uZWN0ZWQ7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmNsb3NlRnJvbURlYnVnZ2FibGUoKQoreworICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2FibGVMb2NrKTsKKworICAgIG1fZGVidWdnYWJsZSA9
IG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246
OmNsb3NlKCkKK3sKKyAgICByZWYoKTsKKyAgICBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKF57
CisgICAgICAgIHsKKyAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RlYnVnZ2FibGVM
b2NrKTsKKworICAgICAgICAgICAgaWYgKG1fZGVidWdnYWJsZSkgeworICAgICAgICAgICAgICAg
IGlmIChtX2Nvbm5lY3RlZCkKKyAgICAgICAgICAgICAgICAgICAgbV9kZWJ1Z2dhYmxlLT5kaXNj
b25uZWN0KCk7CisKKyAgICAgICAgICAgICAgICBtX2RlYnVnZ2FibGUgPSBudWxscHRyOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGRlcmVmKCk7CisgICAgfSk7Cit9CisKK3Zv
aWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNlbmRNZXNzYWdlVG9CYWNr
ZW5kKE5TU3RyaW5nICptZXNzYWdlKQoreworICAgIHJlZigpOworICAgIGRpc3BhdGNoQXN5bmNP
bkRlYnVnZ2FibGUoXnsKKyAgICAgICAgeworICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fZGVidWdnYWJsZUxvY2spOworCisgICAgICAgICAgICBpZiAobV9kZWJ1Z2dhYmxlKQorICAg
ICAgICAgICAgICAgIG1fZGVidWdnYWJsZS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250
ZW5kKG1lc3NhZ2UpOworICAgICAgICB9CisgICAgICAgIGRlcmVmKCk7CisgICAgfSk7Cit9CisK
K2Jvb2wgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNlbmRNZXNzYWdlVG9G
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgUmVtb3RlSW5zcGVjdG9yOjpz
aGFyZWQoKS5zZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoaWRlbnRpZmllcigpLCBtZXNzYWdl
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKwor
I2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLmgKc2ltaWxhcml0eSBpbmRleCA1MCUKY29weSBmcm9tIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oCmNvcHkgdG8g
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbi5oCmluZGV4IDNmOTQ0ZWMuLjBiZjM2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsMzIgKzIzLDQ5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQorCisjaWZuZGVmIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25faAorI2RlZmluZSBSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uX2gKKworI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2gu
aD4KKyNpbXBvcnQgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2ltcG9ydCA8eHBjL3hwYy5oPgogCi1A
Y2xhc3MgV2ViSW5zcGVjdG9yWFBDV3JhcHBlcjsKLQotQHByb3RvY29sIFdlYkluc3BlY3RvclhQ
Q1dyYXBwZXJEZWxlZ2F0ZSA8TlNPYmplY3Q+Ci0tICh2b2lkKXhwY0Nvbm5lY3Rpb246KFdlYklu
c3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uIHJlY2VpdmVkTWVzc2FnZTooTlNTdHJpbmcg
KiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87Ci0tICh2b2lk
KXhwY0Nvbm5lY3Rpb25GYWlsZWQ6KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9u
OwotQG9wdGlvbmFsCi0tICh2b2lkKXhwY0Nvbm5lY3Rpb246KFdlYkluc3BlY3RvclhQQ1dyYXBw
ZXIgKiljb25uZWN0aW9uIHVuaGFuZGxlZE1lc3NhZ2U6KHhwY19vYmplY3RfdCltZXNzYWdlOwot
QGVuZAotCi1AaW50ZXJmYWNlIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgOiBOU09iamVjdAotewot
ICAgIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFwcGVyRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKLSAgICB4
cGNfY29ubmVjdGlvbl90IF9jb25uZWN0aW9uOwotICAgIE5TU3RyaW5nICpfdGFnOwotfQotCi0t
IChXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopaW5pdFdpdGhDb25uZWN0aW9uOih4cGNfY29ubmVj
dGlvbl90KWNvbm5lY3Rpb247Ci0tICh2b2lkKWNsb3NlOwotLSAodm9pZClzZW5kTWVzc2FnZToo
TlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87
Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGlkIDxXZWJJbnNwZWN0b3JYUENXcmFw
cGVyRGVsZWdhdGU+IGRlbGVnYXRlOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSB4
cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb247Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEJPT0wgYXZhaWxhYmxlOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5n
ICp0YWc7Ci0KLUBlbmQKK09CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpDX0NMQVNTIE5TRGljdGlv
bmFyeTsKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24pOworCitwdWJsaWM6CisgICAgY2xhc3MgQ2xpZW50IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgeHBj
Q29ubmVjdGlvblJlY2VpdmVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwg
TlNTdHJpbmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24qKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uVW5oYW5k
bGVkTWVzc2FnZShSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKiwgeHBjX29iamVjdF90KSA9
IDA7CisgICAgfTsKKworICAgIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24oeHBjX2Nvbm5l
Y3Rpb25fdCwgQ2xpZW50Kik7CisgICAgdmlydHVhbCB+UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbigpOworCisgICAgdm9pZCBjbG9zZSgpOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoTlNTdHJp
bmcgKm1lc3NhZ2VOYW1lLCBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKKworcHJpdmF0ZToKKyAg
ICBOU0RpY3Rpb25hcnkgKmRlc2VyaWFsaXplTWVzc2FnZSh4cGNfb2JqZWN0X3QpOworICAgIHZv
aWQgaGFuZGxlRXZlbnQoeHBjX29iamVjdF90KTsKKworICAgIHhwY19jb25uZWN0aW9uX3QgbV9j
b25uZWN0aW9uOworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9xdWV1ZTsKKyAgICBDbGllbnQqIG1f
Y2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uX2gKKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQxNjk5OAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24ubW0KQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisKKyNpZiBfX2hhc19pbmNsdWRlKDxDb3JlRm91bmRhdGlvbi9DRlhQQ0JyaWRn
ZS5oPikKKyNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGWFBDQnJpZGdlLmg+CisjZWxzZQorZXh0
ZXJuICJDIiB4cGNfb2JqZWN0X3QgX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdChD
RlR5cGVSZWYpOworZXh0ZXJuICJDIiBDRlR5cGVSZWYgX0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9t
WFBDTWVzc2FnZSh4cGNfb2JqZWN0X3QpOworI2VuZGlmCisKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworCisvLyBDb25zdGFudHMgcHJpdmF0ZSB0byB0aGlzIGZpbGUgZm9yIG1lc3NhZ2Ugc2VyaWFs
aXphdGlvbiBvbiBib3RoIGVuZHMuCisjZGVmaW5lIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b25NZXNzYWdlTmFtZUtleSBAIm1lc3NhZ2VOYW1lIgorI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JY
UENDb25uZWN0aW9uVXNlckluZm9LZXkgQCJ1c2VySW5mbyIKKyNkZWZpbmUgUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdlS2V5ICJtc2dEYXRhIgorCitSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKHhwY19j
b25uZWN0aW9uX3QgY29ubmVjdGlvbiwgQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2Nvbm5lY3Rp
b24oY29ubmVjdGlvbikKKyAgICAsIG1fcXVldWUoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20u
YXBwbGUuSmF2YVNjcmlwdENvcmUucmVtb3RlLWluc3BlY3Rvci14cGMtY29ubmVjdGlvbiIsIERJ
U1BBVENIX1FVRVVFX1NFUklBTCkpCisgICAgLCBtX2NsaWVudChjbGllbnQpCit7CisgICAgeHBj
X3JldGFpbihtX2Nvbm5lY3Rpb24pOworICAgIHhwY19jb25uZWN0aW9uX3NldF90YXJnZXRfcXVl
dWUobV9jb25uZWN0aW9uLCBtX3F1ZXVlKTsKKyAgICBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uKiB3ZWFrVGhpcyA9IHRoaXM7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRs
ZXIobV9jb25uZWN0aW9uLCBeKHhwY19vYmplY3RfdCBvYmplY3QpIHsKKyAgICAgICAgd2Vha1Ro
aXMtPmhhbmRsZUV2ZW50KG9iamVjdCk7CisgICAgfSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fcmVz
dW1lKG1fY29ubmVjdGlvbik7Cit9CisKK1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246On5S
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50KTsK
KyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB4cGNfY29ubmVjdGlvbl9jYW5jZWwobV9jb25uZWN0aW9uKTsKKyAgICB4
cGNfcmVsZWFzZShtX2Nvbm5lY3Rpb24pOworICAgIG1fY29ubmVjdGlvbiA9IE5VTEw7CisKKyAg
ICBkaXNwYXRjaF9yZWxlYXNlKG1fcXVldWUpOworICAgIG1fcXVldWUgPSBOVUxMOworCisgICAg
bV9jbGllbnQgPSBudWxscHRyOworfQorCitOU0RpY3Rpb25hcnkgKlJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSh4cGNfb2JqZWN0X3Qgb2JqZWN0KQorewor
ICAgIGlmICh4cGNfZ2V0X3R5cGUob2JqZWN0KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgeHBjX29iamVjdF90IHhwY0RpY3Rpb25hcnkgPSB4cGNf
ZGljdGlvbmFyeV9nZXRfdmFsdWUob2JqZWN0LCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9u
U2VyaWFsaXplZE1lc3NhZ2VLZXkpOworICAgIGlmICgheHBjRGljdGlvbmFyeSB8fCB4cGNfZ2V0
X3R5cGUoeHBjRGljdGlvbmFyeSkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkgeworICAgICAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+eHBjQ29ubmVjdGlvblVuaGFuZGxl
ZE1lc3NhZ2UodGhpcywgb2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAg
ICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxOU0RpY3Rpb25hcnkgKj4o
X0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4cGNEaWN0aW9uYXJ5KSk7CisgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShkaWN0aW9uYXJ5LCAiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHhw
YyBtZXNzYWdlIik7CisgICAgcmV0dXJuIFtkaWN0aW9uYXJ5IGF1dG9yZWxlYXNlXTsKK30KKwor
dm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0
X3Qgb2JqZWN0KQoreworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoeHBjX2dldF90eXBlKG9iamVjdCkgPT0gWFBDX1RZUEVfRVJST1IpIHsKKyAgICAg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPnhwY0Nvbm5lY3Rpb25GYWls
ZWQodGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBOU0RpY3Rpb25hcnkgKmRh
dGFEaWN0aW9uYXJ5ID0gZGVzZXJpYWxpemVNZXNzYWdlKG9iamVjdCk7CisgICAgaWYgKCFkYXRh
RGljdGlvbmFyeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBb
ZGF0YURpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb25N
ZXNzYWdlTmFtZUtleV07CisgICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtkYXRhRGljdGlv
bmFyeSBvYmplY3RGb3JLZXk6UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5
XTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT54cGNDb25uZWN0aW9uUmVj
ZWl2ZWRNZXNzYWdlKHRoaXMsIG1lc3NhZ2UsIHVzZXJJbmZvKTsKK30KKwordm9pZCBSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uOjpzZW5kTWVzc2FnZShOU1N0cmluZyAqbWVzc2FnZU5hbWUs
IE5TRGljdGlvbmFyeSAqdXNlckluZm8pCit7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbTlNN
dXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptZXNzYWdlTmFtZSBmb3JLZXk6
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbk1lc3NhZ2VOYW1lS2V5XTsKKyAgICBpZiAodXNl
ckluZm8pCisgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp1c2VySW5mbyBmb3JLZXk6UmVt
b3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblVzZXJJbmZvS2V5XTsKKworICAgIHhwY19vYmplY3Rf
dCB4cGNEaWN0aW9uYXJ5ID0gX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoQ0ZE
aWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoeHBjRGlj
dGlvbmFyeSAmJiB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgPT0gWFBDX1RZUEVfRElDVElP
TkFSWSwgIlVuYWJsZSB0byBzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKKyAgICBpZiAoIXhwY0Rp
Y3Rpb25hcnkpCisgICAgICAgIHJldHVybjsKKworICAgIHhwY19vYmplY3RfdCBtc2cgPSB4cGNf
ZGljdGlvbmFyeV9jcmVhdGUoTlVMTCwgTlVMTCwgMCk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0
X3ZhbHVlKG1zZywgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvblNlcmlhbGl6ZWRNZXNzYWdl
S2V5LCB4cGNEaWN0aW9uYXJ5KTsKKyAgICB4cGNfcmVsZWFzZSh4cGNEaWN0aW9uYXJ5KTsKKwor
ICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShtX2Nvbm5lY3Rpb24sIG1zZyk7CisKKyAg
ICB4cGNfcmVsZWFzZShtc2cpOworfQorCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2Vu
ZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGJhM2Q0MjIuLmIzMzdhN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTEyNSw2ICsxMjUsMTEgQEAKICNpbmNsdWRlICJKU1Byb21pc2VSZXNvbHZlclByb3RvdHlw
ZS5oIgogI2VuZGlmIC8vIEVOQUJMRShQUk9NSVNFUykKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIgorI2luY2x1ZGUg
IlJlbW90ZUluc3BlY3Rvci5oIgorI2VuZGlmCisKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5s
dXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xODcsNiArMTkyLDEyIEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OmluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSkKIAogICAgIG1fZGVidWdnZXIgPSAw
OwogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dh
YmxlID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsK
KyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPmluaXQoKTsKKyAgICBtX2luc3BlY3RvckRlYnVn
Z2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQodHJ1ZSk7CisjZW5kaWYKKwogICAgIHJl
c2V0KHByb3RvdHlwZSgpKTsKIH0KIApAQCAtNzYwLDQgKzc3MSwzMSBAQCBVbmxpbmtlZEV2YWxD
b2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSog
Y2FsbEZyYW1lLAogICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsKIH0KIAordm9pZCBKU0ds
b2JhbE9iamVjdDo6c2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit7Cisj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5z
ZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKGVuYWJsZWQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oZW5hYmxlZCk7CisjZW5kaWYKK30KKworYm9vbCBKU0dsb2JhbE9iamVjdDo6cmVtb3RlRGVi
dWdnaW5nRW5hYmxlZCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisg
ICAgcmV0dXJuIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+cmVtb3RlRGVidWdnaW5nQWxsb3dlZCgp
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBKU0dsb2JhbE9i
amVjdDo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgbV9uYW1lID0gbmFtZTsK
KworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIG1faW5zcGVjdG9yRGVidWdnYWJs
ZS0+dXBkYXRlKCk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA0YmQ3NDQ2Li40
NGM5MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKQEAgLTU4LDYgKzU4LDcgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3Mg
RnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBHbG9iYWxDb2Rl
QmxvY2s7CitjbGFzcyBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU7CiBjbGFzcyBKU1Byb21pc2VQ
cm90b3R5cGU7CiBjbGFzcyBKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZTsKIGNsYXNzIEpTU3Rh
Y2s7CkBAIC0yMjksOCArMjMwLDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAgCiAgICAgdm9pZCog
bV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6VGFibGVTaXplXTsgLy8gU3BlY2lhbCBwb2ludGVy
cyB1c2VkIGJ5IHRoZSBMTEludCBhbmQgSklULgogCisgICAgU3RyaW5nIG1fbmFtZTsKKwogICAg
IERlYnVnZ2VyKiBtX2RlYnVnZ2VyOwogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisg
ICAgc3RkOjp1bmlxdWVfcHRyPEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZT4gbV9pbnNwZWN0b3JE
ZWJ1Z2dhYmxlOworI2VuZGlmCisKICAgICBSZWZQdHI8V2F0Y2hwb2ludFNldD4gbV9tYXNxdWVy
YWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludDsKICAgICBSZWZQdHI8V2F0Y2hwb2ludFNldD4gbV9o
YXZpbmdBQmFkVGltZVdhdGNocG9pbnQ7CiAgICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fdmFy
SW5qZWN0aW9uV2F0Y2hwb2ludDsKQEAgLTQyMCw2ICs0MjcsMTIgQEAgcHVibGljOgogICAgIFN0
cnVjdHVyZSogcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvbWlzZVdyYXBwZXJDYWxsYmFja1N0cnVjdHVyZS5nZXQoKTsgfQogI2VuZGlmIC8vIEVO
QUJMRShQUk9NSVNFUykKIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UmVtb3RlRGVi
dWdnaW5nRW5hYmxlZChib29sKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHJlbW90ZURl
YnVnZ2luZ0VuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcm
KTsKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKwog
ICAgIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUqIGFycmF5QnVmZmVyUHJvdG90eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9hcnJheUJ1ZmZlclByb3RvdHlwZS5nZXQoKTsgfQogCiAjZGVmaW5lIERFRklO
RV9BQ0NFU1NPUlNfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Bl
ck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKc2lt
aWxhcml0eSBpbmRleCA1MyUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVj
dG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKaW5kZXggM2Y5
NDRlYy4uYjI4ZjMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L3JlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzIgKzIzLDQ5IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2lt
cG9ydCA8eHBjL3hwYy5oPgorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZS5oIgogCi1AY2xhc3MgV2ViSW5zcGVjdG9yWFBDV3JhcHBlcjsKKyNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotQHByb3RvY29sIFdlYkluc3BlY3RvclhQQ1dy
YXBwZXJEZWxlZ2F0ZSA8TlNPYmplY3Q+Ci0tICh2b2lkKXhwY0Nvbm5lY3Rpb246KFdlYkluc3Bl
Y3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uIHJlY2VpdmVkTWVzc2FnZTooTlNTdHJpbmcgKilt
ZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87Ci0tICh2b2lkKXhw
Y0Nvbm5lY3Rpb25GYWlsZWQ6KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uOwot
QG9wdGlvbmFsCi0tICh2b2lkKXhwY0Nvbm5lY3Rpb246KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIg
Kiljb25uZWN0aW9uIHVuaGFuZGxlZE1lc3NhZ2U6KHhwY19vYmplY3RfdCltZXNzYWdlOwotQGVu
ZAorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9yLmgiCiAKLUBpbnRlcmZhY2Ug
V2ViSW5zcGVjdG9yWFBDV3JhcHBlciA6IE5TT2JqZWN0Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCituYW1lc3BhY2UgSlNDIHsKKworSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpKU0ds
b2JhbE9iamVjdERlYnVnZ2FibGUoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKKyAgICA6
IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKIHsKLSAgICBpZCA8V2ViSW5zcGVjdG9yWFBD
V3JhcHBlckRlbGVnYXRlPiBfZGVsZWdhdGU7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fdCBfY29ubmVj
dGlvbjsKLSAgICBOU1N0cmluZyAqX3RhZzsKIH0KIAotLSAoV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ciAqKWluaXRXaXRoQ29ubmVjdGlvbjooeHBjX2Nvbm5lY3Rpb25fdCljb25uZWN0aW9uOwotLSAo
dm9pZCljbG9zZTsKLS0gKHZvaWQpc2VuZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUg
dXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOworU3RyaW5nIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgU3RyaW5nIG5hbWUgPSBtX2dsb2JhbE9i
amVjdC5uYW1lKCk7CisgICAgcmV0dXJuIG5hbWUuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJK
U0NvbnRleHQiKSA6IG5hbWU7Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpj
b25uZWN0KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopCit7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudC4KKyAgICAvLyBDcmVhdGUgYW4gSW5zcGVjdG9yQ29udHJvbGxlciwgSW5zcGVjdG9yRnJv
bnRlbmQsIEluc3BlY3RvckJhY2tlbmQsIGFuZCBBZ2VudHMuCisgICAgLy8gIkluc3BlY3RvckNv
bnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCIuCit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlOjpkaXNjb25uZWN0KCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIC8v
ICJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQiLgorfQorCit2b2lkIEpT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5k
KGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICAvLyAiSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kIgorfQogCi1AcHJv
cGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpZCA8V2ViSW5zcGVjdG9yWFBDV3JhcHBlckRlbGVn
YXRlPiBkZWxlZ2F0ZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgeHBjX2Nvbm5l
Y3Rpb25fdCBjb25uZWN0aW9uOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09M
IGF2YWlsYWJsZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqdGFnOwor
fSAvLyBuYW1lc3BhY2UgSlNDCiAKLUBlbmQKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUv
V2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oCnNpbWlsYXJpdHkgaW5kZXggNTMlCnJlbmFt
ZSBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
Q2xpZW50UmVnaXN0cnkuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgKaW5kZXggZWE1YjJlMy4uNmYyZDllZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JD
bGllbnRSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMywyOSArMjMsMzkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpZm5kZWYgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
X2gKKyNkZWZpbmUgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlX2gKIAotY2xhc3MgV2ViSW5zcGVj
dG9yQ2xpZW50OworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCi1AcHJvdG9jb2wgV2Vi
SW5zcGVjdG9yQ2xpZW50UmVnaXN0cnlEZWxlZ2F0ZQotLSAodm9pZClkaWRSZWdpc3RlckNsaWVu
dDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQ7Ci0tICh2b2lkKWRpZFVucmVnaXN0ZXJDbGll
bnQ6KFdlYkluc3BlY3RvckNsaWVudCopY2xpZW50OwotQGVuZAorI2luY2x1ZGUgIlJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAotQGlu
dGVyZmFjZSBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSA6IE5TT2JqZWN0IHsKLUBwcml2YXRl
Ci0gICAgdW5zaWduZWQgX25leHRBdmFpbGFibGVQYWdlSWQ7Ci0gICAgSGFzaE1hcDx1bnNpZ25l
ZCwgV2ViSW5zcGVjdG9yQ2xpZW50Kj4gX3BhZ2VDbGllbnRNYXA7Ci0gICAgaWQgPFdlYkluc3Bl
Y3RvckNsaWVudFJlZ2lzdHJ5RGVsZWdhdGU+IF9kZWxlZ2F0ZTsKLX0KK25hbWVzcGFjZSBKU0Mg
ewogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpZCA8V2ViSW5zcGVjdG9yQ2xpZW50
UmVnaXN0cnlEZWxlZ2F0ZT4gZGVsZWdhdGU7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKIAotKyAo
V2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgKilzaGFyZWRSZWdpc3RyeTsKK2NsYXNzIEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZSBGSU5BTCA6IHB1YmxpYyBJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZSk7CitwdWJsaWM6CisgICAgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlKEpTR2xv
YmFsT2JqZWN0Jik7CisgICAgfkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZSgpIHsgfQogCi0tICh2
b2lkKXJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudDsKLS0gKHZvaWQp
dW5yZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQ7Ci0tIChXZWJJbnNw
ZWN0b3JDbGllbnQqKWNsaWVudEZvclBhZ2VJZDoodW5zaWduZWQpcGFnZUlkOwotLSAoTlNEaWN0
aW9uYXJ5ICopaW5zcGVjdGFibGVXZWJWaWV3czsKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUgdHlwZSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6SmF2YVNj
cmlwdDsgfQogCi1AZW5kCisgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCBoYXNMb2NhbERlYnVnZ2VyKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nv
bm5lY3QoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJl
bW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7CisKK3ByaXZhdGU6
CisgICAgSlNHbG9iYWxPYmplY3QmIG1fZ2xvYmFsT2JqZWN0OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2VuZGlmIC8v
ICFkZWZpbmVkKEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAxZDQ4NDBiLi44ZTA3
MWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUg
SW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0
Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0
NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgICog
d3RmL2lvcy9XZWJDb3JlVGhyZWFkLmNwcDoKKyAgICAgICAgKiB3dGYvaW9zL1dlYkNvcmVUaHJl
YWQuaDoKKyAgICAgICAgRXhwb3NlIFdlYlRocmVhZFJ1bi9XZWJUaHJlYWRSdW5TeW5jIGlPUyBt
ZXRob2RzIGRlZmluZWQgaW4gV2ViQ29yZSB0aHJvdWdoCisgICAgICAgIFdURiBzbyB0aGF0IEph
dmFTY3JpcHRDb3JlIGNhbiB1c2UgaXQuIEFub3RoZXIgc3VjaCBtZXRob2QgYWxyZWFkeSBleGlz
dGVkLgorCiAyMDEzLTEyLTAyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBCdWlsZCBmYWlsdXJlIHdoZW4gZGlzYWJsaW5nIEpJVCwgWUFSUl9KSVQsIGFuZCBBU1NF
TUJMRVIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5jcHAKaW5kZXggNDI3NDQ2Ni4uZjA3
ZGMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvaW9zL1dlYkNvcmVUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmNwcApAQCAtMjgsNCArMjgsNyBA
QAogCiAjaWYgVVNFKFdFQl9USFJFQUQpCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCAoKldlYkNv
cmVXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQpKHZvaWQpOworV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkKSh2b2lkKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSB2b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1bikodm9pZCAoXmJsb2NrKSgpKTsKK1dURl9F
WFBPUlRfUFJJVkFURSB2b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1blN5bmMpKHZvaWQgKF5ibG9j
aykoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhy
ZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9pb3MvV2ViQ29yZVRocmVhZC5oCmluZGV4IDEwZTI2YTcu
LjgxOWNlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2lvcy9XZWJDb3JlVGhyZWFkLmgK
KysrIGIvU291cmNlL1dURi93dGYvaW9zL1dlYkNvcmVUaHJlYWQuaApAQCAtMzMsNiArMzMsOSBA
QCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiBleHRlcm4gYm9vbCAoKldlYkNvcmVXZWJUaHJlYWRJ
c0xvY2tlZE9yRGlzYWJsZWQpKHZvaWQpOworZXh0ZXJuIGJvb2wgKCpXZWJDb3JlV2ViVGhyZWFk
SXNFbmFibGVkKSh2b2lkKTsKK2V4dGVybiB2b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1bikodm9p
ZCAoXmJsb2NrKSgpKTsKK2V4dGVybiB2b2lkICgqV2ViQ29yZVdlYlRocmVhZFJ1blN5bmMpKHZv
aWQgKF5ibG9jaykoKSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJj
NWFmYzQuLmFhNDQ4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NiBAQAorMjAxMy0xMi0wMyAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2Vt
ZW50IGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0
Y2hlci4KKworICAgICAgICBNYWtlIGEgV2ViQ29yZTo6UGFnZSBhICJXZWIiIFJlbW90ZSBEZWJ1
Z2dhYmxlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICBEaXNhYmxlIEphdmFTY3JpcHQgY29udGV4dCBpbnNwZWN0aW9uIG9uIEpTR2xvYmFs
T2JqZWN0cyBpbnNpZGUgV2ViQ29yZTo6UGFnZSdzLgorCisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6cmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0
UmVtb3RlSW5zcGVjdGlvbkFsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVtb3Rl
SW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgor
ICAgICAgICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1
Z2dhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6UGFn
ZURlYnVnZ2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6Om5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OnVybCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlRGVidWdnYWJsZTo6aGFzTG9jYWxEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlRGVidWdnYWJsZTo6Y29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJs
ZTo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6ZGlzcGF0
Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1
Z2dhYmxlOjpzZXRJbmRpY2F0aW5nKToKKyAgICAgICAgTWFrZSBhIHBhZ2UgYSAiV2ViIiBkZWJ1
Z2dhYmxlLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIE1pc2MuCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnQ6OmluZGljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudDo6aGlkZUluZGljYXRlKToKKyAgICAgICAgRm9yd2FyZCBpbmRpY2F0ZSBtZXRob2Rz
IHRvIFdlYktpdCBjbGllbnRzLgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKyAgICAgICAg
UHVzaCB1cGRhdGVzIHdoZW4gcmVtb3RlIGRlYnVnZ2FibGUgaW5mb3JtYXRpb24gbGlrZSB0aGUg
UGFnZSdzCisgICAgICAgIFVSTCBvciB0aXRsZSBjaGFuZ2UuCisKKyAgICAgICAgKiBGb3J3YXJk
aW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaDoKKyAgICAgICAgUmUtZXhwb3J0IElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIGFzIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbAorICAgICAgICB0byBhdm9pZCBuZWVkbGVzc2x5IHVwZGF0aW5nIGNvZGUg
YWxsIG92ZXIgdGhlIHBsYWNlLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3JTdHJpbmdzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJB
Z2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgVXBkYXRlIGlu
Y2x1ZGUgbmFtZXMuCisKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKToKKyAg
ICAgICAgTWFrZSB0aGUgIkluc3BlY3QgRWxlbWVudCIgY29udGV4dCBtZW51IHdvcmsgY29ycmVj
dGx5IHdoZW4gdGhlcmUgaXMgYQorICAgICAgICByZW1vdGUgaW5zcGVjdG9yIGluc3RlYWQgb2Yg
YSBsb2NhbCBpbnNwZWN0b3IuCisKKzIwMTMtMTItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgbWlzc2luZyBmb2xk
ZXJzIGFuZCBmaWxlcyB0byBYY29kZSBwcm9qZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ4MDIKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1v
dGh5IEhhdGNoZXIuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisKIDIwMTMtMTItMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgWE1MIGZyYWdtZW50IHBhcnNpbmcgYWxnb3JpdGhtIGRvZXNuJ3QgdXNlIHRoZSBjb250
ZXh0IGVsZW1lbnQncyBkZWZhdWx0IG5hbWVzcGFjZSBVUkkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5i
YTNhZTI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCkBAIC0wLDAgKzEsNCBAQAor
I2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAorI2RlZmluZSBX
ZWJDb3JlX0ZXRF9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWxfaAorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCA4NGVlOTUwLi42MWUzNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTM4MTAsNyArMzgxMCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBcCi0J
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KaW5kZXggMmI4YTU0OC4uOTE2ZTA2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KQEAgLTI4MDYsNiArMjgwNiw3IEBAIF9fWk43V2ViQ29yZTMzUUxQcmV2aWV3R2V0U3VwcG9y
dGVkTUlNRVR5cGVzU2V0RXYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CitfX1pON1dlYkNvcmU0UGFnZTI2c2V0UmVtb3RlSW5zcGVjdGlvbkFsbG93ZWRFYgogX19aTjdX
ZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjdkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRF
UktOM1dURjZTdHJpbmdFCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggZjgyYjg4Ny4uN2U3MjNkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0yMDk0Myw3ICsy
MDk0Myw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
RE9NQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRm9yd2FyZGluZy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5k
Q2xpZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kSG9zdC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDM3
NzUyYzcuLmQ4NDY0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTI2NSw2ICsyNjUsOSBAQAogICAgIDxG
aWx0ZXIgSW5jbHVkZT0iRm9yd2FyZGluZ0hlYWRlcnNcaGVhcCI+CiAgICAgICA8VW5pcXVlSWRl
bnRpZmllcj57ODJiYTliYjQtZWFhMC00OTczLTliYjMtYTI3NjY3YTFjMTY3fTwvVW5pcXVlSWRl
bnRpZmllcj4KICAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkZvcndhcmRpbmdI
ZWFkZXJzXGluc3BlY3RvciI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MTMyYmFkZTItMGFh
Yi02Mjc0LTBhZGZmLWFlOGFlZDVhZWQ0fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRl
cj4KICAgICA8RmlsdGVyIEluY2x1ZGU9Imhpc3RvcnkiPgogICAgICAgPFVuaXF1ZUlkZW50aWZp
ZXI+ezZmMzlkZWRmLTJkM2EtNDE0ZS04M2ZlLTdiZjY0ZjkxMWNmYn08L1VuaXF1ZUlkZW50aWZp
ZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0xMjIyNSw2ICsxMjIyOCw5IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xoZWFwXFN0cm9uZy5oIj4KICAgICAgIDxG
aWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaGVhcDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXElu
c3BlY3RvckZvcndhcmRpbmcuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXGlu
c3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caGlzdG9yeVxCYWNrRm9yd2FyZENsaWVudC5oIj4KICAgICAgIDxGaWx0ZXI+aGlzdG9y
eTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTI0MjksNyArMTI0MzUsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
ckZvcndhcmRpbmcuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50LmgiPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY3YWI3NjcuLjgxMTY0ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg4NSw3ICs4
ODUsNyBAQAogCQkyMDlCNDU2QjE2Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjA5QjQ1NkEx
Njc5NkE3RTAwRTU0RTRFIC8qIEpTQ3J5cHRvQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMjBENjI5MjYx
MjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMEQ2MjkyNDEyNTM2OTBCMDAw
ODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCAqLzsgfTsKIAkJMjBENjI5Mjcx
MjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjBENjI5MjUxMjUzNjkwQjAwMDgx
NTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oICovOyB9OwotCQkyMjc3Nzc2MDEzNDVE
RUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjc3Nzc1RjEzNDVERUE5MDA4RUE0NTUg
LyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMjI3Nzc3NjAxMzQ1REVBOTAwOEVBNDU1IC8qIEluc3Bl
Y3RvckZvcndhcmRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGb3J3YXJkaW5nLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjI4QzI4
NDUxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI4QzI4NDQxMEQ4MjUwMDAwOUQwRDBFIC8q
IFNjcmlwdFdyYXBwYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTIyOTJCMjdDMTM1NjY2OTQwMENGMTFFRiAvKiBJbWFnZUJ1ZmZlckRhdGFD
Ry5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjky
QjI3QjEzNTY2Njk0MDBDRjExRUYgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwICovOyB9OwogCQky
MkJEOUY3RjEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMkJEOUY3RDEzNTM2MjVDMDA5QkQx
MDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi87IH07CkBAIC0zNTIzLDYgKzM1MjMsOCBAQAogCQlB
NTU2QzI4OTE4MzIwNkE4MDA4Q0I3MjAgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NkMyODcxODMyMDZB
ODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTczMkIwQTEzNkExNjFEMDA1QzhEN0Mg
LyogRGF0ZUNvbXBvbmVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNw
cCAqLzsgfTsKIAkJQTU3MzJCMEIxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTczMkIwOTEz
NkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLzsgfTsKKwkJQTVBMkFGMEIxODI5
NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjA5MTgyOTczNDMwMERFMTcyOSAvKiBQYWdl
RGVidWdnYWJsZS5jcHAgKi87IH07CisJCUE1QTJBRjBDMTgyOTczNDMwMERFMTcyOSAvKiBQYWdl
RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi87IH07CiAJ
CUE1QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUJCNzg2MTNC
OTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLzsgfTsKIAkJQTVB
QzRBRUYxODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUM0QUVEMTgz
MzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi87IH07CiAJ
CUE1QUM0QUYwMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQzRBRUUx
ODMzNjk3NTAwNzExNEUwIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc1MDYsNyArNzUwOCw3
IEBACiAJCTIwOUI0NTZBMTY3OTZBN0UwMEU1NEU0RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NyeXB0b0N1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjBENjI5MjUxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjI3Nzc3NUYxMzQ1
REVBOTAwOEVBNDU1IC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjI3Nzc3NUYxMzQ1REVBOTAwOEVBNDU1IC8qIEluc3BlY3Rv
ckZvcndhcmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
Rm9yd2FyZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMjhDMjg0NDEwRDgy
NTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdFdyYXBwYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyMjkyQjI3QjEzNTY2Njk0MDBDRjExRUYgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyog
SW1hZ2VCdWZmZXJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdl
QnVmZmVyRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAzMjksNiArMTAz
MzEsMTIgQEAKIAkJQTU1NkMyODcxODMyMDZBODAwOENCNzIwIC8qIEluc3BlY3RvckFnZW50UmVn
aXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTczMkIwODEzNkExNjFE
MDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGNzIxODQwMkNFOTAwQkZDRTI3IC8qIHByb3RvY29sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBw
YXRoID0gcHJvdG9jb2w7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjczMTg0
MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBw
YXRoID0gQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTU5M0NGNzQxODQwMkQ0QjAwQkZDRTI3IC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JT
dHJpbmdzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmlu
Z3MucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjc1MTg0MDJENEIwMEJG
Q0UyNyAvKiBjb21iaW5lLWphdmFzY3JpcHQtcmVzb3VyY2VzLnBsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9
ICJjb21iaW5lLWphdmFzY3JpcHQtcmVzb3VyY2VzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8q
IFBhZ2VEZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VE
ZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUJCNzg2MTNCOTA0
QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1QUM0QUVEMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1QUM0QUVFMTgzMzY5NzUwMDcxMTRFMCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0MjcsNyArMTQ0
MzUsMTEgQEAKIAkJMUM4MUI5NEQwRTk3MzJEOTAwMjY2RTA3IC8qIGluc3BlY3RvciAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTU5M0NGNzIxODQwMkNF
OTAwQkZDRTI3IC8qIHByb3RvY29sICovLAogCQkJCUE1MTgyMjUzMTdFMjhDRjEwMEE5QkExRCAv
KiBTY3JpcHRzICovLAorCQkJCUE1OTNDRjczMTg0MDJENEIwMEJGQ0UyNyAvKiBDb2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnB5ICovLAorCQkJCUE1OTNDRjc0MTg0MDJENEIwMEJGQ0UyNyAvKiBDb2Rl
R2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSAqLywKKwkJCQlBNTkzQ0Y3NTE4NDAyRDRCMDBC
RkNFMjcgLyogY29tYmluZS1qYXZhc2NyaXB0LXJlc291cmNlcy5wbCAqLywKIAkJCQlGMzVBRTVB
QjE0OTI1RjVCMDA0RDU3NzYgLyogQmluZGluZ1Zpc2l0b3JzLmggKi8sCiAJCQkJMkRGMkU5RDQx
NjZFMzk3NDAwMzVCRUYyIC8qIENvbnNvbGVBUElUeXBlcy5oICovLAogCQkJCTQxRjA2MThEMEY1
RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5jcHAgKi8sCkBAIC0xNDQ5Myw3ICsxNDUw
NSw3IEBACiAJCQkJNTA0QUFDQ0MxODM0NDU1OTAwRTNEOUJDIC8qIEluc3BlY3Rvck5vZGVGaW5k
ZXIuaCAqLywKIAkJCQk3QTc0RUNCODEwMTgzOUE1MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmNwcCAqLywKIAkJCQk3QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmggKi8sCi0JCQkJMjI3Nzc3NUYxMzQ1REVBOTAwOEVBNDU1IC8q
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovLAorCQkJCTIyNzc3NzVGMTM0NURFQTkwMDhF
QTQ1NSAvKiBJbnNwZWN0b3JGb3J3YXJkaW5nLmggKi8sCiAJCQkJRjM0NEM3MTIxMTI1QjgyQzAw
RjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggKi8sCiAJCQkJRjM0NEM3NTcxMTI5
NEZGNjAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwICovLAogCQkJ
CUYzNDRDNzUyMTEyOTREOUQwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmggKi8sCkBAIC0xNTY5OSw2ICsxNTcxMSw4IEBACiAJCQkJQ0QwODI4NUIxNzU3MjUwODAwRUM1
RkI3IC8qIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmggKi8sCiAJCQkJREFBQ0IzRDkxNkYy
NDE2NDAwNjY2MTM1IC8qIFBhZ2VDb25zb2xlLmNwcCAqLywKIAkJCQlEQUFDQjNEQTE2RjI0MTY0
MDA2NjYxMzUgLyogUGFnZUNvbnNvbGUuaCAqLywKKwkJCQlBNUEyQUYwOTE4Mjk3MzQzMDBERTE3
MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwICovLAorCQkJCUE1QTJBRjBBMTgyOTczNDMwMERFMTcy
OSAvKiBQYWdlRGVidWdnYWJsZS5oICovLAogCQkJCTkzMDJCMEJDMEQ3OUY4MjkwMEM3RUU4MyAv
KiBQYWdlR3JvdXAuY3BwICovLAogCQkJCTkzMDJCMEJFMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdl
R3JvdXAuaCAqLywKIAkJCQk3QTY3NEJEOTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9h
ZERlZmVycmVyLmNwcCAqLywKQEAgLTIzMDU2LDYgKzIzMDcwLDcgQEAKIAkJCQlEMDAwRUJBMzEx
QkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0RDU4RUJCMTdCOEYxMjgwMENCRENBOCAvKiBFbGVtZW50VHJhdmVyc2FsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5M0I3N0EzODBBREQ3OTI1MDBFQTRCODEgLyogRnJhbWVMb2FkZXJU
eXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVBMkFGMEMxODI5NzM0MzAwREUxNzI5IC8qIFBh
Z2VEZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTg0MzY4NjBBRTAxQjc0MDBFNTM3
NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjI4RDIxNEUxMjEz
MUVGNDAwNTVEQ0ZDIC8qIEZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxNzJBRjcwMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yMzM0NCw3ICsyMzM1OSw3IEBACiAJCQkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5
MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcw
NTg1MzQxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1NzhEQTIwRTE1MjBFQjhDMDA2MTQxQzEgLyogSW5zcGVjdG9yRnJvbnRl
bmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTIyNzc3NzYwMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTIyNzc3NzYwMTM0NURF
QTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGb3J3YXJkaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
MzQ0QzcxNDExMjVCODJDMDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUYzNDRDNzUzMTEyOTREOUQwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTBFNzcwRjEwQzAwQTg4MDBB
MDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLywKQEAgLTI3Nzky
LDYgKzI3ODA3LDcgQEAKIAkJCQlCMkFGRkM3RjBEMDBBNUMxMDAzMDA3NEQgLyogU2ltcGxlRm9u
dERhdGFNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNUExRUE3QzE1MkJDRjA0MDA0RDAwQjYg
LyogU2ltcGxpZnlNYXJrdXBDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMDBEN0E0
MTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1wbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUE1QTJBRjBCMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTMyN0Q2MTExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUNDMEVGODZENDcwMDlEMENBRiAvKiBTa2V3VHJhbnNm
b3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNTBGOUYyMTJCNkUwRTcwMDA4
Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggMmNjOTVi
MS4uMjdiZDc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmNwcApAQCAtNTYsMTIgKzU2LDIwIEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCisgICAgc2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChmYWxzZSk7CisjZW5kaWYKIH0K
IAogdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVj
dCogdGhpc1ZhbHVlKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCB0aGlzVmFsdWUp
OwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQorICAgIHNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoZmFsc2UpOworI2VuZGlmCiB9
CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTRE9NR2xvYmFsT2JqZWN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weQppbmRleCBiZDE4YmYyLi40MWUz
Mzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvcklu
c3BlY3RvclN0cmluZ3MucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5l
cmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5CkBAIC0xNzksNyArMTc5LDcgQEAgYmFja2VuZF9jcHAg
PSAoCiAKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTIwMCw3ICsyMDAsNyBAQCBmcm9u
dGVuZF9jcHAgPSAoCiAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2Fy
ZGluZy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKaW5kZXggYTgzZjI0Mi4uYmZhNGM0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yRm9yd2FyZGluZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA3MGExOWM5Li40
NGU3ZWExNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgK
QEAgLTUyLDYgKzUyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKSA9IDA7CiAKKyAgICB2aXJ0dWFs
IHZvaWQgaW5kaWNhdGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGlkZUluZGljYXRpb24oKSB7
IH0KKwogICAgIHZpcnR1YWwgYm9vbCBjYW5DbGVhckJyb3dzZXJDYWNoZSgpIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQnJvd3NlckNhY2hlKCkgeyB9CiAgICAgdmly
dHVhbCBib29sIGNhbkNsZWFyQnJvd3NlckNvb2tpZXMoKSB7IHJldHVybiBmYWxzZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4
IGJkYjhlMTcuLmUyM2ZlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTg0LDYgKzg0LDkgQEAgSW5zcGVjdG9yQ29udHJvbGxl
cjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3Bl
Y3RvckMKICAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9pbnNwZWN0b3JDbGllbnQoaW5zcGVj
dG9yQ2xpZW50KQogICAgICwgbV9pc1VuZGVyVGVzdChmYWxzZSkKKyNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKKyAgICAsIG1faGFzUmVtb3RlRnJvbnRlbmQoZmFsc2UpCisjZW5kaWYKIHsK
ICAgICBPd25QdHI8SW5zcGVjdG9yQWdlbnQ+IGluc3BlY3RvckFnZW50UHRyKEluc3BlY3RvckFn
ZW50OjpjcmVhdGUocGFnZSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1faW5zdHJ1
bWVudGluZ0FnZW50cy5nZXQoKSkpOwogICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JB
Z2VudFB0ci5nZXQoKTsKQEAgLTE0OCw3ICsxNTEsNiBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJ
bnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9y
QwogICAgIG1fYWdlbnRzLmFwcGVuZChwcm9maWxlckFnZW50UHRyLnJlbGVhc2UoKSk7CiAKICAg
ICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmNyZWF0ZShtX2lu
c3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7
Ci0KICNlbmRpZgogCiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvcldvcmtlckFnZW50Ojpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKSk7CkBAIC0yMDMsNiArMjA1LDI0IEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoUGFz
c093blB0cjxJbnNwZWN0b3JGcm9udGVuCiAgICAgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCA9
IGluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogfQogCitib29sIEluc3BlY3RvckNvbnRyb2xsZXI6
Omhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdAoreworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQorICAgIHJldHVybiBoYXNGcm9udGVuZCgpICYmICFtX2hhc1JlbW90ZUZyb250ZW5kOworI2Vs
c2UKKyAgICByZXR1cm4gaGFzRnJvbnRlbmQoKTsKKyNlbmRpZgorfQorCitib29sIEluc3BlY3Rv
ckNvbnRyb2xsZXI6Omhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKyAgICByZXR1cm4gbV9oYXNSZW1vdGVGcm9udGVuZDsKKyNlbHNlCisg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6
aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OwpAQCAtMjMzLDYgKzI1MywxMSBAQCB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbgogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1l
bnRpbmdBZ2VudHMobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKTsKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmZyb250ZW5kQ3JlYXRlZCgpOworCisjaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCisgICAgaWYgKCFtX2hhc1JlbW90ZUZyb250ZW5kKQorICAgICAgICBtX3BhZ2Ut
PnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CisjZW5kaWYKIH0KIAogdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoKQpAQCAtMjUwLDEwICsy
NzUsMTcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoKQog
ICAgIG1fb3ZlcmxheS0+ZnJlZVBhZ2UoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmZyb250ZW5kRGVsZXRlZCgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dW5yZWdp
c3Rlckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKTsKKwor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlmICghbV9oYXNSZW1vdGVGcm9udGVu
ZCkKKyAgICAgICAgbV9wYWdlLT5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgp
OworI2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCiB7CisgICAg
QVNTRVJUKCFoYXNSZW1vdGVGcm9udGVuZCgpKTsKKwogICAgIGlmICghZW5hYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTMxMCw3ICszNDIsOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6Omluc3BlY3QoTm9kZSogbm9kZSkKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc2hvdygpOworICAgIGlmICghaGFzUmVtb3RlRnJvbnRlbmQoKSkKKyAgICAg
ICAgc2hvdygpOwogCiAgICAgbV9kb21BZ2VudC0+aW5zcGVjdChub2RlKTsKIH0KQEAgLTM0Nyw2
ICszODAsMTUgQEAgTm9kZSogSW5zcGVjdG9yQ29udHJvbGxlcjo6aGlnaGxpZ2h0ZWROb2RlKCkg
Y29uc3QKICAgICByZXR1cm4gbV9vdmVybGF5LT5oaWdobGlnaHRlZE5vZGUoKTsKIH0KIAordm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykKK3sK
KyAgICAvLyBGSVhNRTogRm9yIG5vbi1pT1MgY2xpZW50cywgd2Ugc2hvdWxkIGhhdmUgSW5zcGVj
dG9yT3ZlcmxheSBkbyBzb21ldGhpbmcgaGVyZS4KKyAgICBpZiAoaW5kaWNhdGluZykKKyAgICAg
ICAgbV9pbnNwZWN0b3JDbGllbnQtPmluZGljYXRlKCk7CisgICAgZWxzZQorICAgICAgICBtX2lu
c3BlY3RvckNsaWVudC0+aGlkZUluZGljYXRpb24oKTsKK30KKwogI2lmIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKQogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpwcm9maWxlckVuYWJsZWQo
KSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKaW5kZXggZGMwOTlmZi4uYTZlMmQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC05MSwxNiArOTEsMjYgQEAgcHVibGljOgog
CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKIAorICAgIGJvb2wgaGFzRnJvbnRlbmQoKSBjb25zdCB7IHJldHVybiAhIW1faW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsOyB9CisgICAgYm9vbCBoYXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7
CisgICAgYm9vbCBoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0OworCiAgICAgdm9pZCBjb25uZWN0
RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CiAgICAgdm9pZCBkaXNjb25uZWN0
RnJvbnRlbmQoKTsKICAgICB2b2lkIHNldFByb2Nlc3NJZChsb25nKTsKIAorI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQorICAgIHZvaWQgc2V0SGFzUmVtb3RlRnJvbnRlbmQoYm9vbCBoYXNS
ZW1vdGUpIHsgbV9oYXNSZW1vdGVGcm9udGVuZCA9IGhhc1JlbW90ZTsgfQorI2VuZGlmCisKICAg
ICB2b2lkIGluc3BlY3QoTm9kZSopOwogICAgIHZvaWQgZHJhd0hpZ2hsaWdodChHcmFwaGljc0Nv
bnRleHQmKSBjb25zdDsKICAgICB2b2lkIGdldEhpZ2hsaWdodChIaWdobGlnaHQqKSBjb25zdDsK
ICAgICB2b2lkIGhpZGVIaWdobGlnaHQoKTsKICAgICBOb2RlKiBoaWdobGlnaHRlZE5vZGUoKSBj
b25zdDsKIAorICAgIHZvaWQgc2V0SW5kaWNhdGluZyhib29sKTsKKwogICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0Owog
CiAgICAgYm9vbCBpc1VuZGVyVGVzdCgpOwpAQCAtMTUxLDYgKzE2MSwxMCBAQCBwcml2YXRlOgog
ICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CiAgICAgSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBib29sIG1faXNVbmRlclRlc3Q7CisKKyNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBib29sIG1faGFzUmVtb3RlRnJvbnRlbmQ7CisjZW5k
aWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9y
ZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZvcndhcmRpbmcuaApzaW1pbGFyaXR5IGluZGV4IDYyJQpyZW5hbWUgZnJv
bSBTb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbW90
ZUNoYW5uZWwuaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZv
cndhcmRpbmcuaAppbmRleCBjMzIwZmRlLi5mNjA2NTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oCkBAIC0x
LDUgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMCwxMCArMTEs
MTAgQEAKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQogICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCiAg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKICAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpAQCAtMjMsMjAgKzI0
LDEzIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsK
LUBjbGFzcyBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbjsKKyNpZm5kZWYgSW5z
cGVjdG9yRm9yd2FyZGluZ19oCisjZGVmaW5lIEluc3BlY3RvckZvcndhcmRpbmdfaAogCi1AaW50
ZXJmYWNlIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgOiBOU09iamVjdCB7Ci1AcHJpdmF0ZQot
ICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uICpfcmVtb3RlOwotICAgIFdl
Ykluc3BlY3RvckNsaWVudCogX2xvY2FsOworI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsIHsgfTsKIH0KIAotKyAoV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqKWNyZWF0ZUNoYW5u
ZWxGb3JQYWdlSWQ6KHVuc2lnbmVkKXBhZ2VJZCBjb25uZWN0aW9uOihXZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb247Ci0KLS0gKHZvaWQpY2xvc2VGcm9tTG9j
YWxTaWRlOwotLSAodm9pZCljbG9zZUZyb21SZW1vdGVTaWRlOwotLSAodm9pZClzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0Jh
Y2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKLQotQGVuZAorI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvckZvcndhcmRpbmdfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDY4Y2FkYWIuLjMyODAxYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtMzQs
OCArMzQsOCBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yV29ya2VyQWdlbnQuaCIKIAorI2luY2x1
ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5o
IgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRl
ICJVUkwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjMjk0ZmU0Li5lZjIzMDM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CkBAIC0zOSw4ICszOSw4IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJz
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29u
c29sZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYWZlNjYzZS4uYWIx
YWYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMzE5LDYgKzMz
MTksMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlcikKICAgICAgICAgbV9jbGllbnQuc2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeSh0cnVl
KTsgLy8gdXBkYXRlIG9ic2VydmVycyB3aXRoIG5ldyBET01Eb2N1bWVudAogICAgICAgICBtX2Ns
aWVudC5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZShsb2FkZXItPnRpdGxlKCkpOwogICAgIH0KKwor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1l
KCkpCisgICAgICAgIG1fZnJhbWUucGFnZSgpLT5yZW1vdGVJbnNwZWN0b3JJbmZvcm1hdGlvbkRp
ZENoYW5nZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZUljb25z
KEljb25UeXBlIHR5cGUpCkBAIC0zMzQwLDkgKzMzNDUsMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ29tbWl0TG9hZCgmbV9mcmFtZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSk7CiAKLSAgICBp
ZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQorICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkp
IHsKICAgICAgICAgbV9mcmFtZS5wYWdlKCktPmZlYXR1cmVPYnNlcnZlcigpLT5kaWRDb21taXRM
b2FkKCk7Ci0KKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICAgICAgbV9mcmFtZS5w
YWdlKCktPnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CisjZW5kaWYKKyAg
ICB9CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnRlbGxDbGllbnRBYm91dFBhc3RNZW1vcnlDYWNo
ZUxvYWRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cAppbmRleCBjN2EzY2QyLi5hNWVhMTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC04OTIsNyArODkyLDcgQEAgdm9pZCBDb250ZXh0TWVu
dUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICNlbmRpZiAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgICAgICAgICBpZiAo
IShmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIShm
cmFtZS0+cGFnZSgpICYmIChmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmhh
c0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgfHwgZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5oYXNSZW1vdGVGcm9udGVuZCgpKSkpIHsKICNlbmRpZgogCiAgICAgICAgICAg
ICAgICAgLy8gSW4gR1RLKyB1bmF2YWlsYWJsZSBpdGVtcyBhcmUgbm90IGhpZGRlbiBidXQgaW5z
ZW5zaXRpdmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA4ZDkyOTk3Li5hZTcyMDNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJQYWdlQWN0aXZpdHlBc3Nl
cnRpb25Ub2tlbi5oIgogI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25z
b2xlLmgiCisjaW5jbHVkZSAiUGFnZURlYnVnZ2FibGUuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAu
aCIKICNpbmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUGx1Z0luQ2xpZW50Lmgi
CkBAIC0xODYsNiArMTg3LDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMp
CiAgICAgLCBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZChmYWxzZSkKICAgICAsIG1fcGFn
ZVRocm90dGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VUaHJvdHRsZXI+KCp0aGlzKSkKICAgICAs
IG1fY29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb25zb2xlPigqdGhpcykpCisjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUoc3RkOjpt
YWtlX3VuaXF1ZTxQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQorI2VuZGlmCiAgICAgLCBtX2xhc3RT
cGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZXNDb3VudCgwKSAvLyBOT1RFOiBPbmx5IGNhbGxlZCBm
cm9tIEludGVybmFscyBmb3IgU3BhdGlhbCBOYXZpZ2F0aW9uIHRlc3RpbmcuCiAgICAgLCBtX2Zy
YW1lc0hhbmRsaW5nQmVmb3JlVW5sb2FkRXZlbnQoMCkKIHsKQEAgLTIwMyw2ICsyMDcsMTAgQEAg
UGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAjaWZuZGVmIE5ERUJVRwogICAg
IHBhZ2VDb3VudGVyLmluY3JlbWVudCgpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPmluaXQoKTsKKyNlbmRpZgogfQog
CiBQYWdlOjp+UGFnZSgpCkBAIC0xMjkxLDYgKzEyOTksMjMgQEAgdm9pZCBQYWdlOjphZGRGb290
ZXJXaXRoSGVpZ2h0KGludCBmb290ZXJIZWlnaHQpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQorYm9vbCBQYWdlOjpyZW1vdGVJbnNwZWN0aW9uQWxsb3dlZCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+cmVtb3RlRGVidWdnaW5n
QWxsb3dlZCgpOworfQorCit2b2lkIFBhZ2U6OnNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKGJv
b2wgYWxsb3dlZCkKK3sKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPnNldFJlbW90ZURlYnVn
Z2luZ0FsbG93ZWQoYWxsb3dlZCk7Cit9CisKK3ZvaWQgUGFnZTo6cmVtb3RlSW5zcGVjdG9ySW5m
b3JtYXRpb25EaWRDaGFuZ2UoKSBjb25zdAoreworICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+
dXBkYXRlKCk7Cit9CisjZW5kaWYKKwogdm9pZCBQYWdlOjphZGRMYXlvdXRNaWxlc3RvbmVzKExh
eW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKIHsKICAgICAvLyBJbiB0aGUgZnV0dXJlLCB3ZSBt
YXkgd2FudCBhIGZ1bmN0aW9uIHRoYXQgcmVwbGFjZXMgbV9sYXlvdXRNaWxlc3RvbmVzIGluc3Rl
YWQgb2YganVzdCBhZGRpbmcgdG8gaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGI2NzgzODguLjcyMzQz
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC04MCw2ICs4MCw3IEBAIGNsYXNzIE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lcjsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbjsK
IGNsYXNzIFBhZ2VDb25zb2xlOworY2xhc3MgUGFnZURlYnVnZ2FibGU7CiBjbGFzcyBQYWdlR3Jv
dXA7CiBjbGFzcyBQYWdlVGhyb3R0bGVyOwogY2xhc3MgUGx1Z0luQ2xpZW50OwpAQCAtMTc4LDYg
KzE3OSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNyZW1lbnRTdWJmcmFtZUNvdW50KCkgeyBB
U1NFUlQobV9zdWJmcmFtZUNvdW50KTsgLS1tX3N1YmZyYW1lQ291bnQ7IH0KICAgICBpbnQgc3Vi
ZnJhbWVDb3VudCgpIGNvbnN0IHsgY2hlY2tTdWJmcmFtZUNvdW50Q29uc2lzdGVuY3koKTsgcmV0
dXJuIG1fc3ViZnJhbWVDb3VudDsgfQogCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisg
ICAgYm9vbCByZW1vdGVJbnNwZWN0aW9uQWxsb3dlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0UmVt
b3RlSW5zcGVjdGlvbkFsbG93ZWQoYm9vbCk7CisgICAgdm9pZCByZW1vdGVJbnNwZWN0b3JJbmZv
cm1hdGlvbkRpZENoYW5nZSgpIGNvbnN0OworI2VuZGlmCisKICAgICBDaHJvbWUmIGNocm9tZSgp
IGNvbnN0IHsgcmV0dXJuICptX2Nocm9tZTsgfQogICAgIERyYWdDYXJldENvbnRyb2xsZXImIGRy
YWdDYXJldENvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9kcmFnQ2FyZXRDb250cm9sbGVy
OyB9CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTUzMiw2ICs1MzksMTAgQEAgcHJpdmF0
ZToKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZVRocm90dGxlcj4gbV9wYWdlVGhyb3R0
bGVyOwogICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxQYWdlQ29uc29sZT4gbV9jb25zb2xlOwog
CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRy
PFBhZ2VEZWJ1Z2dhYmxlPiBtX2luc3BlY3RvckRlYnVnZ2FibGU7CisjZW5kaWYKKwogICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX3NlZW5QbHVnaW5zOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NlZW5N
ZWRpYUVuZ2luZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVn
Z2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjViNjllNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCkBAIC0wLDAgKzEsOTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUGFnZURlYnVnZ2FibGUuaCIKKworI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgorI2luY2x1
ZGUgIk1haW5GcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYWdlRGVidWdnYWJsZTo6UGFnZURl
YnVnZ2FibGUoUGFnZSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCitTdHJpbmcg
UGFnZURlYnVnZ2FibGU6Om5hbWUoKSBjb25zdAoreworICAgIGlmICghbV9wYWdlLm1haW5GcmFt
ZSgpLmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBt
X3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+dGl0bGUoKTsKK30KKworU3RyaW5nIFBhZ2VE
ZWJ1Z2dhYmxlOjp1cmwoKSBjb25zdAoreworICAgIGlmICghbV9wYWdlLm1haW5GcmFtZSgpLmRv
Y3VtZW50KCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFN0cmluZyB1cmwgPSBt
X3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7CisgICAgcmV0dXJu
IHVybC5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoImFib3V0OmJsYW5rIikgOiB1cmw7Cit9CisK
K2Jvb2wgUGFnZURlYnVnZ2FibGU6Omhhc0xvY2FsRGVidWdnZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLT5oYXNMb2NhbEZyb250ZW5kKCk7Cit9
CisKK3ZvaWQgUGFnZURlYnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGNoYW5uZWwpCit7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgaW5zcGVj
dG9yQ29udHJvbGxlci0+c2V0SGFzUmVtb3RlRnJvbnRlbmQodHJ1ZSk7CisgICAgaW5zcGVjdG9y
Q29udHJvbGxlci0+Y29ubmVjdEZyb250ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKj4oY2hhbm5lbCkpOworfQorCit2b2lkIFBhZ2VEZWJ1Z2dh
YmxlOjpkaXNjb25uZWN0KCkKK3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyID0gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAgICBpbnNwZWN0b3JD
b250cm9sbGVyLT5kaXNjb25uZWN0RnJvbnRlbmQoKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVy
LT5zZXRIYXNSZW1vdGVGcm9udGVuZChmYWxzZSk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2FibGU6
OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Cit7CisgICAgbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0Y2hNZXNzYWdlRnJv
bUZyb250ZW5kKG1lc3NhZ2UpOworfQorCit2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpzZXRJbmRpY2F0
aW5nKGJvb2wgaW5kaWNhdGluZykKK3sKKyAgICBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigp
LT5zZXRJbmRpY2F0aW5nKGluZGljYXRpbmcpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dh
YmxlLmgKc2ltaWxhcml0eSBpbmRleCA1NCUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdC9tYWMv
V2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNv
bnRyb2xsZXIuaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5o
CmluZGV4IGY4YmY1ZTguLjNkOGVjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
Ykluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyNiArMjMs
NDEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotQGNsYXNzIFdlYkluc3BlY3RvclNlcnZlcjsK
LUBjbGFzcyBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbjsKLUBjbGFzcyBXZWJJ
bnNwZWN0b3JYUENXcmFwcGVyOworI2lmbmRlZiBQYWdlRGVidWdnYWJsZV9oCisjZGVmaW5lIFBh
Z2VEZWJ1Z2dhYmxlX2gKIAotQGludGVyZmFjZSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbkNvbnRyb2xsZXIgOiBOU09iamVjdCB7Ci1AcHJpdmF0ZQotICAgIFdlYkluc3BlY3Rv
clNlcnZlciAqX3NlcnZlcjsgLy8gd2VhaywgdGhlIHNlcnZlciBzaG91bGQgbmV2ZXIgZGVhbGxv
Y2F0ZS4KLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpfb3BlbkNvbm5lY3Rpb25zOwotICAgIEJP
T0wgX2hhc1NjaGVkdWxlZFB1c2g7Ci19CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAK
LS0gKGlkKWluaXRXaXRoU2VydmVyOihXZWJJbnNwZWN0b3JTZXJ2ZXIgKilzZXJ2ZXI7CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi0tICh2b2lkKWNsb3NlQWxsQ29ubmVjdGlvbnM7Citu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS0gKHZvaWQpcHVzaExpc3Rpbmc7Ci0tICh2b2lkKXJlY2Vp
dmVkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5
ICopdXNlckluZm87CitjbGFzcyBQYWdlOwogCi0tICh2b2lkKWNvbm5lY3Rpb25DbG9zaW5nOihX
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb247CitjbGFzcyBQ
YWdlRGVidWdnYWJsZSBGSU5BTCA6IHB1YmxpYyBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VEZWJ1Z2dhYmxlKTsKK3B1
YmxpYzoKKyAgICBQYWdlRGVidWdnYWJsZShQYWdlJik7CisgICAgflBhZ2VEZWJ1Z2dhYmxlKCkg
eyB9CiAKLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2VO
YW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKKyAgICB2aXJ0dWFsIEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUgdHlwZSgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZTo6V2ViOyB9CiAKLUBlbmQKKyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBTdHJpbmcgdXJsKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwg
dm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCkgT1ZF
UlJJREU7CisKK3ByaXZhdGU6CisgICAgUGFnZSYgbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNlbmRp
ZiAvLyAhZGVmaW5lZChQYWdlRGVidWdnYWJsZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCmluZGV4IGNhOTk2OWQuLmM3ZWJjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xlQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQ291bnRlcnMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDkxNDE5ZC4uOGZhMTRj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMi0wMyAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVt
b3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNj
cmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEzLTEyLTAzICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFdlYktpdC5t
YWtlIE1ha2VmaWxlIGRvZXNuJ3QgY29weSByZXNvdXJjZSBidW5kbGUgdG8gRFNUUk9PVApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2Q3
ZjVmMi4uOTQyNWMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zNzgsMjQgKzM3OCwxMSBAQAogCQlBMTBDMUQ4RDE4MjAzMDVFMDAz
Njg4M0EgLyogV2ViUERGVmlld1BsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTBDMUQ4ODE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERG
Vmlld1BsYWNlaG9sZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTEwQzFEOEUxODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZpZXdQbGFjZWhv
bGRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
MEMxRDg5MTgyMDMwNUUwMDM2ODgzQSAvKiBXZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gKi87IH07
CiAJCUExN0ExMUIxMTgwREM4NDgwMEU1NDk4QyAvKiBXZWJQbHVnaW5QYWNrYWdlUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3QTExQjAx
ODBEQzg0ODAwRTU0OThDIC8qIFdlYlBsdWdpblBhY2thZ2VQcml2YXRlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTUyMTRGQzcxM0I5NzVDODAw
MDAxNUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MjE0RkMxMTNCOTc1QzgwMDAwMTVFRiAvKiBX
ZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmggKi87IH07Ci0JCUE1MjE0RkM4MTNCOTc1QzgwMDAw
MTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUyMTRGQzIxM0I5NzVDODAwMDAxNUVGIC8qIFdl
Ykluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0gKi87IH07Ci0JCUE1MjIwOUY4MTNDNTNFNzUwMDRC
QTdCMSAvKiBXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTIyMDlGNzEzQzUzRTc1MDA0QkE3QjEgLyog
V2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1NUUyMEZGMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJ
bnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NUUyMEZEMTRENzI2NEMwMDMxNTQ5
RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCAqLzsg
fTsKLQkJQTU1RTIxMDAxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1NUUyMEZFMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JT
ZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW0gKi87IH07CiAJCUE1NjA5NDY2MTRE
OEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRpY2F0ZUxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTYwOTQ2NDE0RDhBRDI2MDA3OTlBOEEgLyogV2Vi
SW5kaWNhdGVMYXllci5oICovOyB9OwogCQlBNTYwOTQ2NzE0RDhBRDI2MDA3OTlBOEEgLyogV2Vi
SW5kaWNhdGVMYXllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1NjA5NDY1MTREOEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRpY2F0ZUxheWVyLm1tICov
OyB9OwogCQlBNTY4N0JEQTEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTY4N0JEODEz
NUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLmggKi87IH07CiAJCUE1Njg3QkRC
MTM1Qjc5MUEwMDc0Q0JDQiAvKiBXZWJOb2RlSGlnaGxpZ2h0ZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTY4N0JEOTEzNUI3OTFBMDA3NENCQ0Ig
LyogV2ViTm9kZUhpZ2hsaWdodGVyLm1tICovOyB9OwotCQlBNTdDMjhBNzEzQkFBNUFEMDA3MEFD
QUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0MyOEExMTNCQUE1QUQwMDcwQUNB
QiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oICovOyB9OwotCQlBNTdD
MjhBODEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdD
MjhBMjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24ubW0gKi87IH07Ci0JCUE1N0MyOEE5MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JT
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
N0MyOEEzMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCAqLzsgfTsKLQkJ
QTU3QzI4QUExM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0MyOEE0MTNCQUE1QUQw
MDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gKi87IH07Ci0JCUE1N0MyOEFCMTNCQUE1
QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhBNTEzQkFBNUFEMDA3MEFDQUIgLyog
V2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCUE1N0MyOEFDMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0
b3JYUENXcmFwcGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTdDMjhBNjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5t
ICovOyB9OwogCQlBNTdFMkYyNDEyMDc0OUU2MDAwNDhERjMgLyogV2ViUXVvdGFNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdFMkYyMjEy
MDc0OUU2MDAwNDhERjMgLyogV2ViUXVvdGFNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTU3RUI3OEYxM0I5N0E0RTAwOEQ2OTFEIC8q
IFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdFQjc4RDEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVj
dG9yQ2xpZW50UmVnaXN0cnkuaCAqLzsgfTsKLQkJQTU3RUI3OTAxM0I5N0E0RTAwOEQ2OTFEIC8q
IFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RUI3OEUxM0I5N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3Bl
Y3RvckNsaWVudFJlZ2lzdHJ5Lm1tICovOyB9OwogCQlBNThBNTc5OTE0M0U3MjcwMDAxMjVGNTAg
LyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OEE1Nzk3MTQzRTcyNzAwMDEyNUY1MCAvKiBXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5oICovOyB9OwogCQlBNThBNTc5QTE0M0U3MjcwMDAxMjVGNTAg
LyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNThBNTc5ODE0M0U3MjcwMDAxMjVGNTAgLyogV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIubW0gKi87IH07CiAJCUE1REVGQzBBMTFENTMzMUMwMDg4NTI3
MyAvKiBXZWJTZWN1cml0eU9yaWdpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1REVGQzA3MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9y
aWdpbi5tbSAqLzsgfTsKQEAgLTc3OCwyNCArNzY1LDExIEBACiAJCUExMEMxRDg5MTgyMDMwNUUw
MDM2ODgzQSAvKiBXZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJQREZWaWV3UGxhY2Vob2xkZXIubW07IHBhdGggPSBpb3Mv
V2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKIAkJQTEwQzFEOEYxODIwMzA3RDAwMzY4ODNBIC8qIFdlYktpdC5pT1MuZXhwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5leHBvcnRzOyBuYW1lID0gV2ViS2l0LmlPUy5leHA7IHBhdGggPSBp
b3MvV2ViS2l0LmlPUy5leHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0ExMUIw
MTgwREM4NDgwMEU1NDk4QyAvKiBXZWJQbHVnaW5QYWNrYWdlUHJpdmF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQbHVnaW5QYWNrYWdlUHJpdmF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBNTIxNEZDMTEzQjk3NUM4MDAwMDE1RUYgLyogV2ViSW5z
cGVjdG9yUmVtb3RlQ2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmg7IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yUmVt
b3RlQ2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTIxNEZDMjEzQjk3
NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW07
IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQTUyMjA5RjcxM0M1M0U3NTAwNEJBN0IxIC8qIFdlYkluc3BlY3Rv
clJlbGF5RGVmaW5pdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2Vi
SW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvclJl
bGF5RGVmaW5pdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU1RTIwRkQx
NEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JT
ZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaDsgcGF0aCA9IHJlbW90ZS9XZWJJbnNw
ZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQTU1RTIwRkUxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNl
cnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29u
dHJvbGxlci5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVj
dGlvbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NjA5NDY0
MTREOEFEMjYwMDc5OUE4QSAvKiBXZWJJbmRpY2F0ZUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkluZGljYXRlTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU2MDk0NjUxNEQ4QUQyNjAwNzk5QThBIC8qIFdlYkluZGljYXRlTGF5ZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbmRpY2F0ZUxheWVy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTY4N0JEODEzNUI3OTFBMDA3NENC
Q0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYk5vZGVIaWdobGlnaHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTY4N0JEOTEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTm9kZUhpZ2hsaWdodGVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdDMjhBMTEzQkFBNUFEMDA3MEFDQUIgLyog
V2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaDsgcGF0
aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBNTdDMjhBMjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbTsg
cGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTMxM0JBQTVBRDAwNzBBQ0FCIC8qIFdl
Ykluc3BlY3RvclNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJ
bnNwZWN0b3JTZXJ2ZXIuaDsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3QzI4QTQxM0JBQTVBRDAwNzBBQ0FCIC8qIFdl
Ykluc3BlY3RvclNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IFdlYkluc3BlY3RvclNlcnZlci5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0MyOEE1MTNCQUE1QUQwMDcw
QUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdlYkluc3BlY3RvclhQQ1dyYXBwZXIuaDsgcGF0aCA9IHJlbW90ZS9XZWJJbnNw
ZWN0b3JYUENXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0MyOEE2
MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMub2JqYzsgbmFtZSA9IFdlYkluc3BlY3RvclhQQ1dyYXBwZXIubTsgcGF0aCA9
IHJlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1N0UyRjIyMTIwNzQ5RTYwMDA0OERGMyAvKiBXZWJRdW90YU1hbmFnZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUXVvdGFNYW5hZ2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0VCNzhEMTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNw
ZWN0b3JDbGllbnRSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvckNs
aWVudFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1N0VCNzhFMTNC
OTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5
Lm1tOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNThBNTc5NzE0M0U3MjcwMDAxMjVGNTAgLyogV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTU4QTU3OTgxNDNFNzI3MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1REVGQzA3
MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNlY3VyaXR5T3JpZ2luLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTA1Miw3ICsxMDI2LDYgQEAKIAkJMUM2OEY2M0YwOTVCNUY5
QzAwQzI5ODRFIC8qIFdlYkluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJQTUyMTRGQkYxM0I5NzU5NjAwMDAxNUVGIC8qIHJlbW90ZSAqLywK
IAkJCQk1RDdCRjgxMjBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLmggKi8sCiAJCQkJ
NUQ3QkY4MTMwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5tbSAqLywKIAkJCQlCODA0
MTc2RDEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQuaCAqLywKQEAgLTE1
MDksMjYgKzE0ODIsNiBAQAogCQkJbmFtZSA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07Ci0JCUE1MjE0RkJGMTNCOTc1OTYwMDAwMTVFRiAvKiByZW1vdGUgKi8gPSB7Ci0J
CQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUE1N0VCNzhEMTNCOTdBNEUw
MDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oICovLAotCQkJCUE1N0VCNzhF
MTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSAqLywKLQkJ
CQlBNTIyMDlGNzEzQzUzRTc1MDA0QkE3QjEgLyogV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9u
cy5oICovLAotCQkJCUE1MjE0RkMxMTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1v
dGVDaGFubmVsLmggKi8sCi0JCQkJQTUyMTRGQzIxM0I5NzVDODAwMDAxNUVGIC8qIFdlYkluc3Bl
Y3RvclJlbW90ZUNoYW5uZWwubW0gKi8sCi0JCQkJQTU3QzI4QTMxM0JBQTVBRDAwNzBBQ0FCIC8q
IFdlYkluc3BlY3RvclNlcnZlci5oICovLAotCQkJCUE1N0MyOEE0MTNCQUE1QUQwMDcwQUNBQiAv
KiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gKi8sCi0JCQkJQTU3QzI4QTExM0JBQTVBRDAwNzBBQ0FC
IC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmggKi8sCi0JCQkJQTU3QzI4
QTIxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
Lm1tICovLAotCQkJCUE1NUUyMEZEMTRENzI2NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIuaCAqLywKLQkJCQlBNTVFMjBGRTE0RDcyNjRD
MDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVy
Lm1tICovLAotCQkJCUE1N0MyOEE1MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENX
cmFwcGVyLmggKi8sCi0JCQkJQTU3QzI4QTYxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3Rv
clhQQ1dyYXBwZXIubSAqLywKLQkJCSk7Ci0JCQluYW1lID0gcmVtb3RlOwotCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJRjUyQ0E2QkQwMkRGOUQwRjAxODYzNUNBIC8qIEhUTUwg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTgyNSwxNSAr
MTc3OCw4IEBACiAJCQkJQTEwQzFENjQxODIwMzAwRTAwMzY4ODNBIC8qIFdlYkNocm9tZUNsaWVu
dElPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ3QkY4MTQwQzJBMUQ5MDAwOENFMDZEIC8qIFdl
Ykluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDY2OTNEREMwQkZCQTg1MjAwMjE2MDcy
IC8qIFdlYkluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU3RUI3OEYxM0I5
N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCODA0MTc2RjEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdBOEZGMEQxMTA3NTAyNEEwMEE4MEEwOCAvKiBXZWJJbnNw
ZWN0b3JQcml2YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTIyMDlGODEzQzUzRTc1MDA0QkE3
QjEgLyogV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QTUyMTRGQzcxM0I5NzVDODAwMDAxNUVGIC8qIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCBp
biBIZWFkZXJzICovLAotCQkJCUE1N0MyOEE5MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0
b3JTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1N0MyOEE3MTNCQUE1QUQwMDcwQUNBQiAv
KiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQTU1RTIwRkYxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU3QzI4QUIxM0JBQTVB
RDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzOTgxMDQyMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTM3RDFEQ0E4MTA2NTkyOEMwMDY4RjdFRiAvKiBXZWJKU1BE
RkRvYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwODUwODI0QkYwMTAwOERGMDM4IC8qIFdl
YktleUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjc2LDEzICsyMjIyLDcgQEAKIAkJ
CQk1RDdCRjgxNTBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDY2OTNEREQwQkZCQTg1MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFDN0IwQzY2MEVCMjQ2NEQwMEEyODUwMiAvKiBXZWJJbnNw
ZWN0b3JDbGllbnRDRi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNTdFQjc5MDEzQjk3QTRFMDA4
RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlCODA0MTc3MDEyMTdBODMxMDA0NjZCQUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQubW0gaW4g
U291cmNlcyAqLywKLQkJCQlBNTIxNEZDODEzQjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVjdG9y
UmVtb3RlQ2hhbm5lbC5tbSBpbiBTb3VyY2VzICovLAotCQkJCUE1N0MyOEFBMTNCQUE1QUQwMDcw
QUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNTdDMjhB
ODEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24u
bW0gaW4gU291cmNlcyAqLywKLQkJCQlBNTVFMjEwMDE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQTU3QzI4QUMxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclhQQ1dyYXBwZXIu
bSBpbiBTb3VyY2VzICovLAogCQkJCUExMEMxRDE5MTgyMDJGOUMwMDM2ODgzQSAvKiBXZWJEZWZh
dWx0Rm9ybURlbGVnYXRlLm0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBFNDA4MjRCRjAxMDA4
REYwMzggLyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm0gaW4gU291cmNlcyAqLywKIAkJ
CQlBMTBDMUQ4QjE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld0lPUy5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggNWI0MzEyZC4uMDQ0NmFiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTIt
MDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFu
YWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRCbGFj
a0JlcnJ5Lmg6CisKIDIwMTMtMTItMDMgIE5pY2sgRGllZ28gWWFtYW5lICA8bmljay55YW1hbmVA
b3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZW1vdmUgc29tZSBDU1MgVmFyaWFibGVzIGxlZnRv
dmVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5LmgKaW5kZXggZjJmNjVmYy4u
Y2QxY2M2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudEJsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeS5oCkBAIC0yMSw3
ICsyMSw3IEBACiAjZGVmaW5lIEluc3BlY3RvckNsaWVudEJsYWNrQmVycnlfaAogCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ck92ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5QmxhY2tCZXJyeS5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCmluZGV4IDU1MmU3NmIuLjc1NjIxNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2YvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTItMDMgIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQdXNo
IFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbnRvIEph
dmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAg
IChXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisKIDIwMTMtMTAt
MjUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0
cmVhbSBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikgYW5kIGVuYWJsZSBvbiBpT1MgYW5kIE1hYwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudENGLmNwcAppbmRleCBjYTIyZmRlLi4xMjBlMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApA
QCAtOTEsMTIgKzkxLDEwIEBAIHN0YXRpYyB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBzZXR0aW5nKQogICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1
ZShjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpLmdldCgpLCBzZXR0aW5nLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKIH0KIAotI2lm
ICFFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5k
TWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiBk
b0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKG1fZnJvbnRlbmRQYWdlLCBtZXNzYWdlKTsK
IH0KLSNlbmRpZgogCiBib29sIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yQXR0YWNoRGlz
YWJsZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGRkN2ZjYTQuLjMxZWUyYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMi0wMyAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2ggUmVtb3Rl
IEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2YVNjcmlw
dENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oOgorCiAyMDEzLTExLTIzICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dT
dHJlYW1lcl0gUmVtb3ZlIDAuMTAgY29kZXBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmgKaW5kZXggOGJmZWIyZC4uODZi
ZTgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50RWZsLmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRm9yd2FyZGluZy5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCIKICNpbmNsdWRlIDxFdmFzLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA2MjcwY2NhLi4yYzZm
NTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTItMDMgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBp
bnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaDoKKwogMjAx
My0xMi0wMiAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9y
YS5jb20+CiAKICAgICAgICAgW0dUS10gR1RLMiBwYWludCBjb2RlIHBhdGggZG9lcyBub3QgcmVu
ZGVyIEFDIGxheWVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRHdGsuaAppbmRleCAzMWZkZTgwNS4uYzVkYWZlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3Rr
LmgKQEAgLTMwLDcgKzMwLDcgQEAKICNkZWZpbmUgSW5zcGVjdG9yQ2xpZW50R3RrX2gKIAogI2lu
Y2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZvcndhcmRpbmcuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgiCiAjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9y
LmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IGFiNDM2
MzUuLjQ4OWU5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0xMi0w
MyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5h
Z2VtZW50IGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkg
SGF0Y2hlci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElP
Uy5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKToKKwogMjAx
My0xMS0xOCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE1OTQ1NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQppbmRl
eCA1YWNjMmVlLi5jYTc1ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCkBAIC00MiwxMSArNDIsNiBA
QAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUGFzc093
blB0ci5oPgogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0jaW1wb3J0ICJXZWJJbnNw
ZWN0b3JDbGllbnRSZWdpc3RyeS5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5l
bC5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXZWJJbnNwZWN0b3JD
bGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQpAQCAtNTQsMjMgKzQ5
LDExIEBAIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndl
YlZpZXcpCiAgICAgLCBtX2hpZ2hsaWdodGVyKEFkb3B0TlMsIFtbV2ViTm9kZUhpZ2hsaWdodGVy
IGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6d2ViVmlld10pCiAgICAgLCBtX2Zyb250
ZW5kUGFnZSgwKQogICAgICwgbV9mcm9udGVuZENsaWVudCgwKQotI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQotICAgICwgbV9yZW1vdGVDaGFubmVsKDApCi0gICAgLCBtX3BhZ2VJZCgwKQot
I2VuZGlmCiB7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgW1tXZWJJbnNwZWN0
b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gcmVnaXN0ZXJDbGllbnQ6dGhpc107Ci0j
ZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgp
CiB7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGll
bnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gdW5yZWdpc3RlckNsaWVudDp0aGlzXTsKLSAgICB0
ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24odHJ1ZSk7Ci0jZW5kaWYKLQogICAgIGRlbGV0ZSB0aGlz
OwogfQogCkBAIC0xMTYsOTQgKzk5LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNl
dFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQogICAgICAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25Pbk1haW5UaHJlYWRXaXRoTmFt
ZTpXZWJJbnNwZWN0b3JEaWRTdG9wU2VhcmNoaW5nRm9yTm9kZSBvYmplY3Q6aW5zcGVjdG9yXTsK
IH0KIAotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBSZW1vdGUgV2ViIEluc3BlY3RvciBJ
bXBsZW1lbnRhdGlvbgotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi1ib29sIFdlYklu
c3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKLXsKLSAgICBpZiAobV9yZW1vdGVDaGFubmVsKSB7Ci0gICAgICAgIFttX3JlbW90ZUNoYW5u
ZWwgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOm1lc3NhZ2VdOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0KLSAgICAvLyBpT1MgZG9lcyBub3QgaGF2ZSBhIGxvY2FsIGluc3BlY3Rvci4gVGhl
cmUgc2hvdWxkIGJlIG5vIHdheSB0byByZWFjaCB0aGlzLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0KLSAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3Nh
Z2VPbkZyb250ZW5kUGFnZShtX2Zyb250ZW5kUGFnZSwgbWVzc2FnZSk7Ci19Ci0KLXZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCi17Ci0gICAgQVNTRVJUKG1fcmVtb3RlQ2hhbm5lbCk7Ci0KLSAgICBQYWdlKiBwYWdlID0g
Y29yZShtX3dlYlZpZXcpOwotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNs
aWVudDo6c2V0dXBSZW1vdGVDb25uZWN0aW9uKFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKnJl
bW90ZUNoYW5uZWwpCi17Ci0gICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIGxvY2FsIHNlc3Npb24s
IGRvIG5vdCBhbGxvdyBhIHJlbW90ZSBzZXNzaW9uLgotICAgIGlmIChoYXNMb2NhbFNlc3Npb24o
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIHJl
bW90ZSBzZXNzaW9uLCBkbyBub3QgYWxsb3cgYSBuZXcgcmVtb3RlIHNlc3Npb24uCi0gICAgaWYg
KG1fcmVtb3RlQ2hhbm5lbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9yZW1vdGVD
aGFubmVsID0gcmVtb3RlQ2hhbm5lbDsKLQotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2ViVmll
dyk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25uZWN0RnJvbnRlbmQodGhp
cyk7Ci0KLSAgICAvLyBGb3JjZSBkZXZlbG9wZXIgZXh0cmFzIHRvIGJlIGVuYWJsZWQgaW4gV2Vi
Q29yZSB3aGVuIGEgcmVtb3RlIGNvbm5lY3Rpb24gc3RhcnRzLgotICAgIGlmIChwYWdlLT5zZXR0
aW5ncygpKQotICAgICAgICBwYWdlLT5zZXR0aW5ncygpLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFi
bGVkKHRydWUpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xp
ZW50Ojp0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24oYm9vbCBmcm9tTG9jYWxTaWRlKQotewotICAg
IEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7Ci0gICAgaWYgKCFtX3JlbW90
ZUNoYW5uZWwpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChmcm9tTG9jYWxTaWRlKQotICAg
ICAgICBbbV9yZW1vdGVDaGFubmVsIGNsb3NlRnJvbUxvY2FsU2lkZV07Ci0KLSAgICBQYWdlKiBw
YWdlID0gY29yZShtX3dlYlZpZXcpOwotICAgIGlmIChwYWdlKSB7Ci0gICAgICAgIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7Ci0KLSAgICAgICAgLy8g
UmVzdG9yZSBkZXZlbG9wZXIgZXh0cmFzIHNldHRpbmcgaW4gV2ViQ29yZS4KLSAgICAgICAgaWYg
KHBhZ2UgJiYgcGFnZS0+c2V0dGluZ3MoKSkKLSAgICAgICAgICAgIHBhZ2UtPnNldHRpbmdzKCkt
PnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoW1ttX3dlYlZpZXcgcHJlZmVyZW5jZXNdIGRldmVs
b3BlckV4dHJhc0VuYWJsZWRdKTsKLSAgICB9Ci0KLSAgICBpZiAoZnJvbUxvY2FsU2lkZSkKLSAg
ICAgICAgW21fcmVtb3RlQ2hhbm5lbCByZWxlYXNlXTsKLQotICAgIG1fcmVtb3RlQ2hhbm5lbCA9
IDA7Ci19Ci0KLWJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpoYXNMb2NhbFNlc3Npb24oKSBjb25z
dAotewotICAgIHJldHVybiBtX2Zyb250ZW5kUGFnZSAhPSAwOwotfQotCi1ib29sIFdlYkluc3Bl
Y3RvckNsaWVudDo6Y2FuQmVSZW1vdGVseUluc3BlY3RlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IFttX3dlYlZpZXcgY2FuQmVSZW1vdGVseUluc3BlY3RlZF07Ci19Ci0KLVdlYlZpZXcgKldlYklu
c3BlY3RvckNsaWVudDo6aW5zcGVjdGVkV2ViVmlldygpCi17Ci0gICAgcmV0dXJuIG1fd2ViVmll
dzsKLX0KLSNlbmRpZgotCiAKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQgSW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAzMzFi
NmQzLi40ZmZiM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTMtMTIt
MDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24gbWFu
YWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBvbGQgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpIGNvbm5lY3Rpb24gbWFuYWdlbWVudCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6
aW5kaWNhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWRlSW5kaWNhdGUpOgor
ICAgICAgICBIb29rIHVwIFdlYlZpZXcgaW5kaWNhdGlvbiB0aHJvdWdoIHRoaXMgbmV3IHBhdGgu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVj
dG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xp
ZW50OjppbnNwZWN0b3JEZXN0cm95ZWQpOgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUv
V2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNw
ZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5o
OiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVt
b3RlQ2hhbm5lbC5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0
b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYklu
c3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyLm1tOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24u
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNl
cnZlcldlYlZpZXdDb25uZWN0aW9uLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkluc3BlY3Rv
ci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmg6
IFJlbW92ZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW06IFJlbW92ZWQuCisgICAgICAgICogV2Vi
SW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLmg6IFJlbW92ZWQuCisgICAg
ICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLm06IFJlbW92
ZWQuCisgICAgICAgICogV2ViS2l0LmV4cDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06
CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpn
cm91cE5hbWU6XSk6CisgICAgICAgICgrW1dlYlZpZXcgX2VuYWJsZVJlbW90ZUluc3BlY3Rvcl0p
OgorICAgICAgICAoK1tXZWJWaWV3IF9kaXNhYmxlUmVtb3RlSW5zcGVjdG9yXSk6CisgICAgICAg
ICgrW1dlYlZpZXcgX2Rpc2FibGVBdXRvU3RhcnRSZW1vdGVJbnNwZWN0b3JdKToKKyAgICAgICAg
KCtbV2ViVmlldyBfaXNSZW1vdGVJbnNwZWN0b3JFbmFibGVkXSk6CisgICAgICAgICgrW1dlYlZp
ZXcgX2hhc1JlbW90ZUluc3BlY3RvclNlc3Npb25dKToKKyAgICAgICAgKC1bV2ViVmlldyBhbGxv
d3NSZW1vdGVJbnNwZWN0aW9uXSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0QWxsb3dzUmVtb3Rl
SW5zcGVjdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRJbmRpY2F0aW5nRm9yUmVtb3Rl
SW5zcGVjdG9yOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEhvc3RBcHBsaWNhdGlvbkJ1bmRs
ZUlkOm5hbWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2RpZENvbW1pdExvYWRGb3JGcmFtZTpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3RGF0YS5tbToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgaW5pdF0pOgorICAgICAg
ICAoLVtXZWJWaWV3UHJpdmF0ZSBkZWFsbG9jXSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
SW50ZXJuYWwuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAg
IFJlbW92ZSBvbGQgUkVNT1RFX0lOU1BFQ1RPUi4KKwogMjAxMy0xMi0wMiAgQ2hyaXMgRmxlaXph
Y2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBDcmFzaCBpbiBhY2Nlc3Np
YmlsaXR5Um9vdCB3aGVuIERvY3VtZW50IGdvZXMgYXdheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCAx
ODc1YWMwLi42ZTc4YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTM4LDEwICsxMzgsNiBAQAog
I2ltcG9ydCAiV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3LmgiCiAjZW5kaWYKIAotI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCi0j
ZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCkBAIC02MjEsMTIgKzYxNyw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpCiAgICAg
aWYgKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jKQogICAgICAg
ICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KICAgICAgICAgQ2FsbEZyYW1lTG9h
ZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jLCB3
ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwgKE5T
U3RyaW5nICopdGl0bGUuc3RyaW5nKCksIG1fd2ViRnJhbWUuZ2V0KCkpOwotCi0jaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCi0gICAgQk9PTCBpc01haW5GcmFtZSA9IFt3ZWJWaWV3IG1haW5G
cmFtZV0gPT0gbV93ZWJGcmFtZS5nZXQoKTsKLSAgICBpZiAoaXNNYWluRnJhbWUpCi0gICAgICAg
IFtbV2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIHB1c2hMaXN0aW5nXTsKLSNlbmRp
ZgogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25z
KFdlYkNvcmU6Okljb25UeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA1NTFhZjdmLi4xZTdhMDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaApAQCAtMjcsNyArMjcsNyBAQAogICovCiAKICNpbXBvcnQgPFdlYkNvcmUvSW5zcGVj
dG9yQ2xpZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JGb3J3YXJkaW5nLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaD4KIAogI2ltcG9ydCA8d3RmL0Zvcndh
cmQuaD4KQEAgLTczLDYgKzczLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoaWdobGln
aHQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpIE9WRVJSSURF
OwogCisgICAgdmlydHVhbCB2b2lkIGluZGljYXRlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGhpZGVJbmRpY2F0aW9uKCkgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0
U2VhcmNoaW5nRm9yTm9kZShib29sKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZW5k
TWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CkBAIC04NSwyMiArODgs
NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbGVhc2VGcm9udGVuZCgpOwogCi0jaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCi0gICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBT
dHJpbmcmKTsKLQotICAgIGJvb2wgc2V0dXBSZW1vdGVDb25uZWN0aW9uKFdlYkluc3BlY3RvclJl
bW90ZUNoYW5uZWwgKnJlbW90ZUNoYW5uZWwpOwotICAgIHZvaWQgdGVhcmRvd25SZW1vdGVDb25u
ZWN0aW9uKGJvb2wgZnJvbUxvY2FsU2lkZSk7Ci0KLSAgICB1bnNpZ25lZCBwYWdlSWQoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VJZDsgfQotICAgIHZvaWQgc2V0UGFnZUlkKHVuc2lnbmVkIHBhZ2VJ
ZCkgeyBtX3BhZ2VJZCA9IHBhZ2VJZDsgfQotCi0gICAgYm9vbCBoYXNMb2NhbFNlc3Npb24oKSBj
b25zdDsKLQotICAgIGJvb2wgY2FuQmVSZW1vdGVseUluc3BlY3RlZCgpIGNvbnN0OwotCi0gICAg
V2ViVmlldyAqaW5zcGVjdGVkV2ViVmlldygpOwotI2VuZGlmCi0KIHByaXZhdGU6CiAgICAgUGFz
c093blB0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4g
Y3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpOwogCkBAIC0xMDgsMTEgKzk1LDYgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8V2ViTm9kZUhpZ2hsaWdodGVyPiBtX2hpZ2hsaWdodGVyOwogICAgIFdl
YkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQYWdlOwogICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KiBtX2Zyb250ZW5kQ2xpZW50OwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0g
ICAgV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqbV9yZW1vdGVDaGFubmVsOwotICAgIHVuc2ln
bmVkIG1fcGFnZUlkOwotI2VuZGlmCiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCBlNDM4YzZkLi5l
MjVlYmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC01NSwxMSArNTUsNiBAQAogI2ltcG9ydCA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCi0jaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIgot
I2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oIgotI2VuZGlmCi0KIFNPRlRfTElO
S19TVEFHRURfRlJBTUVXT1JLKFdlYkluc3BlY3RvclVJLCBQcml2YXRlRnJhbWV3b3JrcywgQSkK
IAogLy8gVGhlIG1hcmdpbiBmcm9tIHRoZSB0b3AgYW5kIHJpZ2h0IG9mIHRoZSBkb2NrIGJ1dHRv
biAoc2FtZSBhcyB0aGUgZnVsbCBzY3JlZW4gYnV0dG9uKS4KQEAgLTEzNSwyMyArMTMwLDExIEBA
IFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcp
CiAgICAgLCBtX2hpZ2hsaWdodGVyKGFkb3B0TlMoW1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2Nd
IGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzp3ZWJWaWV3XSkpCiAgICAgLCBtX2Zyb250ZW5kUGFn
ZSgwKQogICAgICwgbV9mcm9udGVuZENsaWVudCgwKQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQotICAgICwgbV9yZW1vdGVDaGFubmVsKDApCi0gICAgLCBtX3BhZ2VJZCgwKQotI2VuZGlm
CiB7Ci0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGll
bnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gcmVnaXN0ZXJDbGllbnQ6dGhpc107Ci0jZW5kaWYK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiB7Ci0j
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdp
c3RyeSBzaGFyZWRSZWdpc3RyeV0gdW5yZWdpc3RlckNsaWVudDp0aGlzXTsKLSAgICB0ZWFyZG93
blJlbW90ZUNvbm5lY3Rpb24odHJ1ZSk7Ci0jZW5kaWYKLQogICAgIGNsb3NlSW5zcGVjdG9yRnJv
bnRlbmQoKTsKICAgICBkZWxldGUgdGhpczsKIH0KQEAgLTE5Nyw2ICsxODAsMTYgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JDbGllbnQ6OmhpZGVIaWdobGlnaHQoKQogICAgIFttX2hpZ2hsaWdodGVyLmdl
dCgpIGhpZGVIaWdobGlnaHRdOwogfQogCit2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5kaWNh
dGUoKQoreworICAgIFttX3dlYlZpZXcgc2V0SW5kaWNhdGluZ0ZvclJlbW90ZUluc3BlY3RvcjpZ
RVNdOworfQorCit2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aGlkZUluZGljYXRpb24oKQorewor
ICAgIFttX3dlYlZpZXcgc2V0SW5kaWNhdGluZ0ZvclJlbW90ZUluc3BlY3RvcjpOT107Cit9CisK
IHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5h
YmxlZCkKIHsKICAgICBXZWJJbnNwZWN0b3IgKmluc3BlY3RvciA9IFttX3dlYlZpZXcgaW5zcGVj
dG9yXTsKQEAgLTIxNSw3OCArMjA4LDYgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnJlbGVh
c2VGcm9udGVuZCgpCiAgICAgbV9mcm9udGVuZFBhZ2UgPSAwOwogfQogCi0jaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBpZiAobV9yZW1vdGVDaGFubmVs
KSB7Ci0gICAgICAgIFttX3JlbW90ZUNoYW5uZWwgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOm1lc3Nh
Z2VdOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZG9EaXNwYXRj
aE1lc3NhZ2VPbkZyb250ZW5kUGFnZShtX2Zyb250ZW5kUGFnZSwgbWVzc2FnZSk7Ci19Ci0KLXZv
aWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCi17Ci0gICAgQVNTRVJUKG1fcmVtb3RlQ2hhbm5lbCk7Ci0KLSAgICBQYWdlKiBw
YWdlID0gY29yZShtX3dlYlZpZXcpOwotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwotfQotCi1ib29sIFdlYkluc3Bl
Y3RvckNsaWVudDo6c2V0dXBSZW1vdGVDb25uZWN0aW9uKFdlYkluc3BlY3RvclJlbW90ZUNoYW5u
ZWwgKnJlbW90ZUNoYW5uZWwpCi17Ci0gICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhIGxvY2FsIHNl
c3Npb24sIGRvIG5vdCBhbGxvdyBhIHJlbW90ZSBzZXNzaW9uLgotICAgIGlmIChoYXNMb2NhbFNl
c3Npb24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGhlcmUgaXMgYWxyZWFk
eSBhIHJlbW90ZSBzZXNzaW9uLCBkbyBub3QgYWxsb3cgYSBuZXcgcmVtb3RlIHNlc3Npb24uCi0g
ICAgaWYgKG1fcmVtb3RlQ2hhbm5lbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQVNT
RVJUKFtbbV93ZWJWaWV3IHByZWZlcmVuY2VzXSBkZXZlbG9wZXJFeHRyYXNFbmFibGVkXSk7Ci0K
LSAgICBtX3JlbW90ZUNoYW5uZWwgPSByZW1vdGVDaGFubmVsOwotCi0gICAgUGFnZSogcGFnZSA9
IGNvcmUobV93ZWJWaWV3KTsKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5l
Y3RGcm9udGVuZCh0aGlzKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6dGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKGJvb2wgZnJvbUxvY2FsU2lkZSkK
LXsKLSAgICBpZiAoIW1fcmVtb3RlQ2hhbm5lbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KGZyb21Mb2NhbFNpZGUpCi0gICAgICAgIFttX3JlbW90ZUNoYW5uZWwgY2xvc2VGcm9tTG9jYWxT
aWRlXTsKLQotICAgIGlmIChQYWdlKiBwYWdlID0gY29yZShtX3dlYlZpZXcpKQotICAgICAgICBw
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2Nvbm5lY3RGcm9udGVuZCgpOwotCi0gICAg
aWYgKGZyb21Mb2NhbFNpZGUpCi0gICAgICAgIFttX3JlbW90ZUNoYW5uZWwgcmVsZWFzZV07Ci0K
LSAgICBtX3JlbW90ZUNoYW5uZWwgPSAwOwotfQotCi1ib29sIFdlYkluc3BlY3RvckNsaWVudDo6
aGFzTG9jYWxTZXNzaW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mcm9udGVuZFBhZ2UgIT0g
MDsKLX0KLQotYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQo
KSBjb25zdAotewotICAgIHJldHVybiBbbV93ZWJWaWV3IGNhbkJlUmVtb3RlbHlJbnNwZWN0ZWRd
OwotfQotCi1XZWJWaWV3ICpXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RlZFdlYlZpZXcoKQot
ewotICAgIHJldHVybiBtX3dlYlZpZXc7Ci19Ci0jZW5kaWYKLQogCiBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVk
V2ViVmlldywgV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciogd2luZG93Q29udHJvbGxlciwg
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgUGFnZSogZnJvbnRlbmRQ
YWdlLCBXVEY6OlBhc3NPd25QdHI8U2V0dGluZ3M+IHNldHRpbmdzKQogICAgIDogSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbChpbnNwZWN0b3JDb250cm9sbGVyLCAgZnJvbnRlbmRQYWdlLCBz
ZXR0aW5ncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1v
dGUvV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJ
bnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4MDk0OGQ1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0KKysr
IC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9y
dCAiV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCIKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9y
Q2xpZW50LmgiCi0jaW1wb3J0ICJXZWJWaWV3UHJpdmF0ZS5oIgotCi1AaW1wbGVtZW50YXRpb24g
V2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkKLQotQHN5bnRoZXNpemUgZGVsZWdhdGUgPSBfZGVs
ZWdhdGU7Ci0KLSsgKFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ICopc2hhcmVkUmVnaXN0cnkK
LXsKLSAgICBzdGF0aWMgV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgKnNoYXJlZFJlZ2lzdHJ5
ID0gW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBhbGxvY10gaW5pdF07Ci0gICAgcmV0dXJu
IHNoYXJlZFJlZ2lzdHJ5OwotfQotCi0tIChpZClpbml0Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBp
bml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfbmV4dEF2
YWlsYWJsZVBhZ2VJZCA9IDE7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodW5zaWduZWQp
X2dldE5leHRBdmFpbGFibGVQYWdlSWQKLXsKLSAgICAvLyBCb3VuZGFyeSB2YWx1ZXMsIDAgYW5k
IFVJTlRfTUFYLCBhcmUgaW52YWxpZCBIYXNoTWFwIGtleXMuCi0gICAgdW5zaWduZWQgbmV4dFZh
bGlkUGFnZUlkOwotICAgIGRvIHsKLSAgICAgICAgbmV4dFZhbGlkUGFnZUlkID0gX25leHRBdmFp
bGFibGVQYWdlSWQrKzsKLSAgICB9IHdoaWxlICghbmV4dFZhbGlkUGFnZUlkIHx8IG5leHRWYWxp
ZFBhZ2VJZCA9PSBVSU5UX01BWCB8fCBfcGFnZUNsaWVudE1hcC5jb250YWlucyhuZXh0VmFsaWRQ
YWdlSWQpKTsKLSAgICByZXR1cm4gbmV4dFZhbGlkUGFnZUlkOwotfQotCi0tICh2b2lkKXJlZ2lz
dGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudAotewotICAgIHVuc2lnbmVkIHBh
Z2VJZCA9IFtzZWxmIF9nZXROZXh0QXZhaWxhYmxlUGFnZUlkXTsKLSAgICBfcGFnZUNsaWVudE1h
cC5zZXQocGFnZUlkLCBjbGllbnQpOwotICAgIGNsaWVudC0+c2V0UGFnZUlkKHBhZ2VJZCk7Ci0g
ICAgW19kZWxlZ2F0ZSBkaWRSZWdpc3RlckNsaWVudDpjbGllbnRdOwotfQotCi0tICh2b2lkKXVu
cmVnaXN0ZXJDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVudCopY2xpZW50Ci17Ci0gICAgdW5zaWdu
ZWQgcGFnZUlkID0gY2xpZW50LT5wYWdlSWQoKTsKLSAgICBfcGFnZUNsaWVudE1hcC5yZW1vdmUo
cGFnZUlkKTsKLSAgICBbX2RlbGVnYXRlIGRpZFVucmVnaXN0ZXJDbGllbnQ6Y2xpZW50XTsKLX0K
LQotLSAoV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnRGb3JQYWdlSWQ6KHVuc2lnbmVkKXBhZ2VJ
ZAotewotICAgIHJldHVybiBfcGFnZUNsaWVudE1hcC5nZXQocGFnZUlkKTsKLX0KLQotLSAoTlNE
aWN0aW9uYXJ5ICopaW5zcGVjdGFibGVXZWJWaWV3cwotewotICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKmRpY3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aENhcGFj
aXR5Ol9wYWdlQ2xpZW50TWFwLnNpemUoKV07Ci0KLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBXZWJJ
bnNwZWN0b3JDbGllbnQqPjo6aXRlcmF0b3IgZW5kID0gX3BhZ2VDbGllbnRNYXAuZW5kKCk7Ci0g
ICAgZm9yIChIYXNoTWFwPHVuc2lnbmVkLCBXZWJJbnNwZWN0b3JDbGllbnQqPjo6aXRlcmF0b3Ig
aXQgPSBfcGFnZUNsaWVudE1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAg
V2ViVmlldyAqd2ViVmlldyA9IGl0LT52YWx1ZS0+aW5zcGVjdGVkV2ViVmlldygpOwotICAgICAg
ICBpZiAoIVt3ZWJWaWV3IGNhbkJlUmVtb3RlbHlJbnNwZWN0ZWRdKQotICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtOU051bWJlciBudW1iZXJXaXRo
VW5zaWduZWRJbnQ6aXQtPmtleV07Ci0gICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp3ZWJW
aWV3IGZvcktleTpwYWdlSWRdOwotICAgIH0KLQotICAgIHJldHVybiBkaWN0aW9uYXJ5OwotfQot
Ci1AZW5kCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVj
dG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGZmY2Q2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotCi0j
aW1wb3J0ICJXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmgiCi0KLSNpbXBvcnQgIldlYkluc3Bl
Y3RvckNsaWVudC5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCIKLSNp
bXBvcnQgIldlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmgiCi0jaW1wb3J0ICJX
ZWJLaXRMb2dnaW5nLmgiCi0jaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLUBpbnRlcmZh
Y2UgV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAoKQotLSAoaWQpaW5pdFdpdGhSZW1vdGU6KFdl
Ykluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uICopcmVtb3RlIGxvY2FsOihXZWJJbnNw
ZWN0b3JDbGllbnQqKWxvY2FsOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViSW5zcGVjdG9y
UmVtb3RlQ2hhbm5lbAotCi0rIChXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICopY3JlYXRlQ2hh
bm5lbEZvclBhZ2VJZDoodW5zaWduZWQpcGFnZUlkIGNvbm5lY3Rpb246KFdlYkluc3BlY3RvclNl
cnZlcldlYlZpZXdDb25uZWN0aW9uICopY29ubmVjdGlvbgotewotICAgIC8vIEdldCB0aGUgSW5z
cGVjdG9yIGNsaWVudC4gSXRzIHBvc3NpYmxlIHRoZSBwYWdlIGNsb3NlZCBiZWZvcmUgdGhlIHJl
bW90ZSBjbGllbnQgcmVxdWVzdGVkIGl0LgotICAgIFdlYkluc3BlY3RvckNsaWVudCAqaW5zcGVj
dG9yQ2xpZW50ID0gW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0g
Y2xpZW50Rm9yUGFnZUlkOnBhZ2VJZF07Ci0gICAgaWYgKCFpbnNwZWN0b3JDbGllbnQpIHsKLSAg
ICAgICAgTE9HKFJlbW90ZUluc3BlY3RvciwgIldlYkluc3BlY3RvclJlbW90ZUNoYW5uZWw6IFBh
Z2UgcmVxdWVzdGVkIG5vIGxvbmdlciBleGlzdHM6ICgldSkiLCBwYWdlSWQpOwotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIH0KLQotICAgIC8vIFRoZSBXZWJWaWV3IGRvZXMgbm90IGFsbG93IHJl
bW90ZSBpbnNwZWN0aW9uLgotICAgIGlmICghaW5zcGVjdG9yQ2xpZW50LT5jYW5CZVJlbW90ZWx5
SW5zcGVjdGVkKCkpIHsKLSAgICAgICAgTE9HKFJlbW90ZUluc3BlY3RvciwgIldlYkluc3BlY3Rv
clJlbW90ZUNoYW5uZWw6IFdlYlZpZXcgZm9yIFBhZ2UgKCV1KSBkb2VzIG5vdCBhbGxvdyByZW1v
dGUgaW5zcGVjdGlvbi4iLCBwYWdlSWQpOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQot
ICAgIC8vIFRoZSBjaGFubmVsIGlzIHJlbGVhc2VkIGJ5IHdoaWNoZXZlciBzaWRlIGNsb3NlcyB0
aGUgY2hhbm5lbC4gVGhlIGNoYW5uZWwgY291bGQgYmUgY2xvc2VkCi0gICAgLy8gcmVtb3RlbHkg
YnkgdGhlIHNvY2tldCBjbG9zaW5nICh0aGUgdXNlciBuYXZpZ2F0aW5nIGF3YXkgZnJvbSB0aGUg
cmVtb3RlIGluc3BlY3RvciBwYWdlKS4KLSAgICAvLyBJdCBjb3VsZCBiZSBjbG9zZWQgbG9jYWxs
eSBieSB0aGUgUGFnZSBiZWluZyBkZXN0cm95ZWQsIGxpa2UgdGhlIGJyb3dzZXIgb3IgdGFiIGJl
aW5nIGNsb3NlZC4KLSAgICAvLyBTZXR0aW5nIHVwIHRoZSBjb25uZWN0aW9uIGNhbiBmYWlsIGlm
IHRoZXJlIGlzIGFscmVhZHkgYW4gZXhpc3Rpbmcgc2Vzc2lvbi4KLSAgICBXZWJJbnNwZWN0b3JS
ZW1vdGVDaGFubmVsICpjaGFubmVsID0gW1tXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsIGFsbG9j
XSBpbml0V2l0aFJlbW90ZTpjb25uZWN0aW9uIGxvY2FsOmluc3BlY3RvckNsaWVudF07Ci0gICAg
aWYgKCFpbnNwZWN0b3JDbGllbnQtPnNldHVwUmVtb3RlQ29ubmVjdGlvbihjaGFubmVsKSkgewot
ICAgICAgICBMT0coUmVtb3RlSW5zcGVjdG9yLCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbDog
U2V0dGluZyB1cCBhIHJlbW90ZSBzZXNzaW9uIGZhaWxlZC4gUHJvYmFibHkgYWxyZWFkeSBhIGxv
Y2FsIHNlc3Npb24uIik7Ci0gICAgICAgIFtjaGFubmVsIHJlbGVhc2VdOwotICAgICAgICBjaGFu
bmVsID0gbmlsOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIHJldHVybiBjaGFu
bmVsOwotfQotCi0tIChpZClpbml0V2l0aFJlbW90ZTooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb24gKilyZW1vdGUgbG9jYWw6KFdlYkluc3BlY3RvckNsaWVudCopbG9jYWwKLXsK
LSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJu
IG5pbDsKLQotICAgIF9yZW1vdGUgPSByZW1vdGU7Ci0gICAgX2xvY2FsID0gbG9jYWw7Ci0KLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZCljbG9zZUZyb21Mb2NhbFNpZGUKLXsKLSAgICAv
LyBMb2NhbCBzaWRlIHdpbGwgcmVsZWFzZS4gTWFrZSBzdXJlIHRoZSByZW1vdGUgc2lkZSBjbGVh
cnMgaXRzIHJlZmVyZW5jZSB0byB0aGUgY2hhbm5lbC4KLSAgICBbX3JlbW90ZSBjbGVhckNoYW5u
ZWxdOwotfQotCi0tICh2b2lkKWNsb3NlRnJvbVJlbW90ZVNpZGUKLXsKLSAgICAvLyBSZW1vdGUg
c2lkZSB3aWxsIHJlbGVhc2UuIE1ha2Ugc3VyZSB0aGUgbG9jYWwgc2lkZSBjbGVhcnMgaXRzIHJl
ZmVyZW5jZSB0byB0aGUgY2hhbm5lbC4KLSAgICBfbG9jYWwtPnRlYXJkb3duUmVtb3RlQ29ubmVj
dGlvbihmYWxzZSk7Ci19Ci0KLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOihOU1N0cmlu
ZyAqKW1lc3NhZ2UKLXsKLSAgICBbX3JlbW90ZSBzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6bWVzc2Fn
ZV07Ci19Ci0KLS0gKHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2Fn
ZQotewotICAgIF9sb2NhbC0+c2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSk7Ci19Ci0KLUBl
bmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
cmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVj
dG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggY2Y2NzkwZi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0
b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBv
cnQgIldlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmgiCi0KLUBjbGFzcyBXZWJJbnNwZWN0b3JT
ZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXI7Ci1AY2xhc3MgV2ViSW5zcGVjdG9yWFBD
V3JhcHBlcjsKLQotQGludGVyZmFjZSBXZWJJbnNwZWN0b3JTZXJ2ZXIgOiBOU09iamVjdCA8V2Vi
SW5zcGVjdG9yQ2xpZW50UmVnaXN0cnlEZWxlZ2F0ZT4gewotQHByaXZhdGUKLSAgICBCT09MIF9p
c0VuYWJsZWQ7Ci0gICAgQk9PTCBfaGFzQWN0aXZlRGVidWdTZXNzaW9uOwotICAgIGludCBfbm90
aWZ5VG9rZW47Ci0gICAgV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqX3hwY0Nvbm5lY3Rpb247Ci0g
ICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyICpfY29ubmVj
dGlvbkNvbnRyb2xsZXI7Ci19Ci0KLS0gKHZvaWQpc3RhcnQ7Ci0tICh2b2lkKXN0b3A7Ci0tIChC
T09MKWlzRW5hYmxlZDsKLS0gKHZvaWQpcHVzaExpc3Rpbmc7Ci0KLS0gKEJPT0wpaGFzQWN0aXZl
RGVidWdTZXNzaW9uOwotLSAodm9pZClzZXRIYXNBY3RpdmVEZWJ1Z1Nlc3Npb246KEJPT0wpaGFz
U2Vzc2lvbjsKLQotLSAoV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKXhwY0Nvbm5lY3Rpb247Ci0K
LUBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUv
V2ViSW5zcGVjdG9yU2VydmVyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3Jl
bW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJjOWE3M2EuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3Jl
bW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXIubW0KKysrIC9kZXYvbnVsbApAQCAtMSwyMDQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCi0K
LSNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVudC5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVs
YXlEZWZpbml0aW9ucy5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb25Db250cm9sbGVyLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmgiCi0j
aW1wb3J0ICJXZWJWaWV3UHJpdmF0ZS5oIgotI2ltcG9ydCA8bm90aWZ5Lmg+Ci0jaW1wb3J0IDx4
cGMveHBjLmg+Ci0KLQotI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBQcml2YXRlIENsYXNz
IERldGFpbHMKLQotQGludGVyZmFjZSBXZWJJbnNwZWN0b3JTZXJ2ZXIgKCkgPFdlYkluc3BlY3Rv
clhQQ1dyYXBwZXJEZWxlZ2F0ZT4KLS0gKHZvaWQpc2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQ7
Ci0tICh2b2lkKXhwY0Nvbm5lY3Rpb246KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0
aW9uIHJlY2VpdmVkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNE
aWN0aW9uYXJ5ICopdXNlckluZm87Ci0tICh2b2lkKXhwY0Nvbm5lY3Rpb25GYWlsZWQ6KFdlYklu
c3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uOwotQGVuZAotCi0KLSNwcmFnbWEgbWFyayAt
Ci0jcHJhZ21hIG1hcmsgU2VydmVyIEltcGxlbWVudGF0aW9uCi0KLUBpbXBsZW1lbnRhdGlvbiBX
ZWJJbnNwZWN0b3JTZXJ2ZXIKLQotLSAoaWQpaW5pdAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5p
dF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX2Nvbm5lY3Rp
b25Db250cm9sbGVyID0gW1tXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRy
b2xsZXIgYWxsb2NdIGluaXRXaXRoU2VydmVyOnNlbGZdOwotCi0gICAgW1tXZWJJbnNwZWN0b3JD
bGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV0gc2V0RGVsZWdhdGU6c2VsZl07Ci0KLSAgICBy
ZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgLy8gU2luZ2xldG9uIGlz
IG5vdCBleHBlY3RlZCB0byBiZSByZWxlYXNlZC4KLQotICAgIFtzZWxmIHN0b3BdOwotCi0gICAg
QVNTRVJUKCFfeHBjQ29ubmVjdGlvbik7Ci0gICAgW19jb25uZWN0aW9uQ29udHJvbGxlciByZWxl
YXNlXTsKLQotICAgIFtbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnld
IHNldERlbGVnYXRlOm5pbF07Ci0KLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQp
c3RhcnQKLXsKLSAgICBpZiAoX2lzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2lz
RW5hYmxlZCA9IFlFUzsKLQotICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaChXSVJTZXJ2aWNl
QXZhaWxhYmxlTm90aWZpY2F0aW9uLCAmX25vdGlmeVRva2VuLCBkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBeKGludCB0b2tlbikgewotICAgICAgICBbc2VsZiBzZXR1cFhQQ0Nvbm5lY3Rpb25J
Zk5lZWRlZF07Ci0gICAgfSk7Ci0KLSAgICBub3RpZnlfcG9zdChXSVJTZXJ2aWNlQXZhaWxhYmls
aXR5Q2hlY2tOb3RpZmljYXRpb24pOwotfQotCi0tICh2b2lkKXN0b3AKLXsKLSAgICBpZiAoIV9p
c0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIF9pc0VuYWJsZWQgPSBOTzsKLQotICAg
IFtfY29ubmVjdGlvbkNvbnRyb2xsZXIgY2xvc2VBbGxDb25uZWN0aW9uc107Ci0KLSAgICBpZiAo
X3hwY0Nvbm5lY3Rpb24pIHsKLSAgICAgICAgW194cGNDb25uZWN0aW9uIGNsb3NlXTsKLSAgICAg
ICAgX3hwY0Nvbm5lY3Rpb24uZGVsZWdhdGUgPSBuaWw7Ci0gICAgICAgIFtfeHBjQ29ubmVjdGlv
biByZWxlYXNlXTsKLSAgICAgICAgX3hwY0Nvbm5lY3Rpb24gPSBuaWw7Ci0gICAgfQotCi0gICAg
bm90aWZ5X2NhbmNlbChfbm90aWZ5VG9rZW4pOwotfQotCi0tIChCT09MKWlzRW5hYmxlZAotewot
ICAgIHJldHVybiBfaXNFbmFibGVkOwotfQotCi0tIChXZWJJbnNwZWN0b3JYUENXcmFwcGVyICop
eHBjQ29ubmVjdGlvbgotewotICAgIHJldHVybiBfeHBjQ29ubmVjdGlvbjsKLX0KLQotLSAodm9p
ZClzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZAotewotICAgIGlmIChfeHBjQ29ubmVjdGlvbikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uID0geHBj
X2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShXSVJYUENNYWNoUG9ydE5hbWUsIGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIDApOwotICAgIGlmIChjb25uZWN0aW9uKSB7Ci0gICAgICAg
IF94cGNDb25uZWN0aW9uID0gW1tXZWJJbnNwZWN0b3JYUENXcmFwcGVyIGFsbG9jXSBpbml0V2l0
aENvbm5lY3Rpb246Y29ubmVjdGlvbl07Ci0gICAgICAgIF94cGNDb25uZWN0aW9uLmRlbGVnYXRl
ID0gc2VsZjsKLSAgICAgICAgW194cGNDb25uZWN0aW9uIHNlbmRNZXNzYWdlOkAic3luIiB1c2Vy
SW5mbzpuaWxdOwotICAgICAgICB4cGNfcmVsZWFzZShjb25uZWN0aW9uKTsKLSAgICB9Ci19Ci0K
LS0gKHZvaWQpcHVzaExpc3RpbmcKLXsKLSAgICBpZiAoIV9pc0VuYWJsZWQgfHwgIV94cGNDb25u
ZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbX2Nvbm5lY3Rpb25Db250cm9sbGVyIHB1
c2hMaXN0aW5nXTsKLX0KLQotLSAoQk9PTCloYXNBY3RpdmVEZWJ1Z1Nlc3Npb24KLXsKLSAgICBy
ZXR1cm4gX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbjsKLX0KLQotLSAodm9pZClzZXRIYXNBY3RpdmVE
ZWJ1Z1Nlc3Npb246KEJPT0wpaGFzU2Vzc2lvbgotewotICAgIGlmIChfaGFzQWN0aXZlRGVidWdT
ZXNzaW9uID09IGhhc1Nlc3Npb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIF9oYXNBY3RpdmVE
ZWJ1Z1Nlc3Npb24gPSBoYXNTZXNzaW9uOwotCi0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBk
ZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpfV2ViVmlld1JlbW90ZUluc3BlY3Rv
ckhhc1Nlc3Npb25DaGFuZ2VkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwotfQotCi0KLSNwcmFn
bWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgV2ViSW5zcGVjdG9yWFBDV3JhcHBlckRlbGVnYXRlIElt
cGxlbWVudGF0aW9uCi0KLS0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVjdG9yWFBDV3Jh
cHBlciAqKXhwY0Nvbm5lY3Rpb24gcmVjZWl2ZWRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2VO
YW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbwotewotICAgIEFTU0VSVCh4cGND
b25uZWN0aW9uID09IF94cGNDb25uZWN0aW9uKTsKLQotICAgIGlmIChbbWVzc2FnZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOldJUlBlcm1pc3Npb25EZW5pZWRdKQotICAgICAgICBbc2VsZiBzdG9wXTsK
LSAgICBlbHNlCi0gICAgICAgIFtfY29ubmVjdGlvbkNvbnRyb2xsZXIgcmVjZWl2ZWRNZXNzYWdl
Om1lc3NhZ2VOYW1lIHVzZXJJbmZvOnVzZXJJbmZvXTsKLX0KLQotLSAodm9pZCl4cGNDb25uZWN0
aW9uRmFpbGVkOihXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopY29ubmVjdGlvbgotewotICAgIFtf
Y29ubmVjdGlvbkNvbnRyb2xsZXIgY2xvc2VBbGxDb25uZWN0aW9uc107Ci0KLSAgICBpZiAoX3hw
Y0Nvbm5lY3Rpb24pIHsKLSAgICAgICAgX3hwY0Nvbm5lY3Rpb24uZGVsZWdhdGUgPSBuaWw7Ci0g
ICAgICAgIFtfeHBjQ29ubmVjdGlvbiByZWxlYXNlXTsKLSAgICAgICAgX3hwY0Nvbm5lY3Rpb24g
PSBuaWw7Ci0gICAgfQotfQotCi0KLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgV2ViSW5z
cGVjdG9yQ2xpZW50UmVnaXN0cnlEZWxlZ2F0ZSBpbXBsZW1lbnRhdGlvbgotCi0tICh2b2lkKWRp
ZFJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudAotewotICAgIC8vIFdo
ZW4gYSBXZWJWaWV3IGlzIHJlZ2lzdGVyZWQgaXQgaGFzIG5vIGNvbnRlbnQuIEJ1dCBzb21lIFdl
YlZpZXdzCi0gICAgLy8gbmV2ZXIgbG9hZCBjb250ZW50IGZyb20gYSBVUkwsIHN1Y2ggYXMgVUlU
ZXh0RmllbGRzIG9uIGlPUy4KLSAgICBbc2VsZiBwdXNoTGlzdGluZ107Ci19Ci0KLS0gKHZvaWQp
ZGlkVW5yZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQKLXsKLSAgICBb
c2VsZiBwdXNoTGlzdGluZ107Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9X
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDFhZWQ4MS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJ
bnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLSNpbXBv
cnQgIldlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmgiCi0KLSNpbXBvcnQgIldl
Ykluc3BlY3RvckNsaWVudC5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9u
cy5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oIgotI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yU2VydmVyLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbkNvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIuaCIK
LSNpbXBvcnQgIldlYktpdExvZ2dpbmcuaCIKLSNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
LQotQGltcGxlbWVudGF0aW9uIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uCi0K
LS0gKGlkKWluaXRXaXRoQ29udHJvbGxlcjooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb25Db250cm9sbGVyICopY29udHJvbGxlciBjb25uZWN0aW9uSWRlbnRpZmllcjooTlNTdHJp
bmcgKiljb25uZWN0aW9uSWRlbnRpZmllciBkZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0aW5h
dGlvbiBpZGVudGlmaWVyOihOU051bWJlciAqKWlkZW50aWZpZXIKLXsKLSAgICBzZWxmID0gW3N1
cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9j
b250cm9sbGVyID0gY29udHJvbGxlcjsKLSAgICBfY29ubmVjdGlvbklkZW50aWZpZXIgPSBbY29u
bmVjdGlvbklkZW50aWZpZXIgY29weV07Ci0gICAgX2Rlc3RpbmF0aW9uID0gW2Rlc3RpbmF0aW9u
IGNvcHldOwotICAgIF9pZGVudGlmaWVyID0gW2lkZW50aWZpZXIgY29weV07Ci0KLSAgICByZXR1
cm4gc2VsZjsKLX0KLQotLSAoQk9PTClzZXR1cENoYW5uZWwKLXsKLSAgICBBU1NFUlQoIV9jaGFu
bmVsKTsKLSAgICB1bnNpZ25lZCBwYWdlSWQgPSBbX2lkZW50aWZpZXIgdW5zaWduZWRJbnRWYWx1
ZV07Ci0gICAgX2NoYW5uZWwgPSBbV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCBjcmVhdGVDaGFu
bmVsRm9yUGFnZUlkOnBhZ2VJZCBjb25uZWN0aW9uOnNlbGZdOwotICAgIHJldHVybiBfY2hhbm5l
bCAhPSBuaWw7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIEFTU0VSVCghX2NoYW5uZWwp
OwotICAgIFtfY29ubmVjdGlvbklkZW50aWZpZXIgcmVsZWFzZV07Ci0gICAgW19kZXN0aW5hdGlv
biByZWxlYXNlXTsKLSAgICBbX2lkZW50aWZpZXIgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxs
b2NdOwotfQotCi0tIChOU1N0cmluZyAqKWNvbm5lY3Rpb25JZGVudGlmaWVyCi17Ci0gICAgcmV0
dXJuIFtbX2Nvbm5lY3Rpb25JZGVudGlmaWVyIGNvcHldIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAo
TlNOdW1iZXIgKilpZGVudGlmaWVyCi17Ci0gICAgcmV0dXJuIFtbX2lkZW50aWZpZXIgY29weV0g
YXV0b3JlbGVhc2VdOwotfQotCi0KLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgSW50ZXJh
Y3Rpb24gd2l0aCB0aGUgY2hhbm5lbCB0byB0aGUgbG9jYWwgaW5zcGVjdG9yIGJhY2tlbmQKLQot
LSAodm9pZCljbGVhckNoYW5uZWwKLXsKLSAgICBfY2hhbm5lbCA9IG5pbDsKLSAgICBbX2NvbnRy
b2xsZXIgY29ubmVjdGlvbkNsb3Npbmc6c2VsZl07Ci19Ci0KLS0gKHZvaWQpc2VuZE1lc3NhZ2VU
b0Zyb250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2UKLXsKLSAgICBOU0RhdGEgKmRhdGEgPSBbbWVz
c2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgTlNEaWN0
aW9uYXJ5ICpvdXRnb2luZyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5k
S2V5czoKLSAgICAgICAgZGF0YSwgV0lSUmF3RGF0YUtleSwKLSAgICAgICAgX2Nvbm5lY3Rpb25J
ZGVudGlmaWVyLCBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleSwKLSAgICAgICAgX2Rlc3RpbmF0
aW9uLCBXSVJEZXN0aW5hdGlvbktleSwKLSAgICAgICAgbmlsXTsKLQotICAgIFtfY29udHJvbGxl
ciBzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6V0lSUmF3RGF0YU1lc3NhZ2UgdXNlckluZm86b3V0Z29p
bmddOwotfQotCi0tICh2b2lkKXNlbmRNZXNzYWdlVG9CYWNrZW5kOihOU1N0cmluZyAqKW1lc3Nh
Z2UKLXsKLSAgICBBU1NFUlQoX2NoYW5uZWwpOwotICAgIExPRyhSZW1vdGVJbnNwZWN0b3IsICJX
ZWJJbnNwZWN0b3JTZXJ2ZXJDb25uZWN0aW9uOiBSZWNlaXZlZDogfCVzfCIsIFN0cmluZyhtZXNz
YWdlKS51dGY4KCkuZGF0YSgpKTsKLQotICAgIFtfY2hhbm5lbCBzZW5kTWVzc2FnZVRvQmFja2Vu
ZDptZXNzYWdlXTsKLX0KLQotCi0jcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIEludGVyYWN0
aW9uIHdpdGggdGhlIHNlcnZlciB0byB0aGUgcmVtb3RlIGluc3BlY3RvciBmcm9udGVuZAotCi0t
ICh2b2lkKXJlY2VpdmVkRGF0YTooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIE5T
RGF0YSAqZGF0YSA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJTb2NrZXREYXRhS2V5XTsK
LSAgICBOU1N0cmluZyAqbWVzc2FnZSA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpk
YXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBbc2VsZiBzZW5kTWVzc2Fn
ZVRvQmFja2VuZDptZXNzYWdlXTsKLSAgICBbbWVzc2FnZSByZWxlYXNlXTsKLX0KLQotLSAodm9p
ZClyZWNlaXZlZERpZENsb3NlOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Ci17Ci0gICAgaWYg
KF9jaGFubmVsKSB7Ci0gICAgICAgIFtfY2hhbm5lbCBjbG9zZUZyb21SZW1vdGVTaWRlXTsKLSAg
ICAgICAgW19jaGFubmVsIHJlbGVhc2VdOwotICAgICAgICBfY2hhbm5lbCA9IG5pbDsKLSAgICB9
Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJ
bnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVj
dG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3ZWMyMTM2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
Ykluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250
cm9sbGVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMzg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi0KLSNpbXBvcnQgIldlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJv
bGxlci5oIgotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKLSNpbXBvcnQgIldlYklu
c3BlY3RvckNsaWVudFJlZ2lzdHJ5LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JSZWxheURlZmlu
aXRpb25zLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKLSNpbXBvcnQgIldlYklu
c3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JY
UENXcmFwcGVyLmgiCi0jaW1wb3J0ICJXZWJWaWV3LmgiCi0jaW1wb3J0ICJXZWJWaWV3UHJpdmF0
ZS5oIgotCi0jaWYgUExBVEZPUk0oSU9TKQotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFk
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KLSNlbmRpZgotCi0KLUBp
bXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xs
ZXIKLQotLSAoaWQpaW5pdFdpdGhTZXJ2ZXI6KFdlYkluc3BlY3RvclNlcnZlciAqKXNlcnZlcgot
ewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1
cm4gbmlsOwotCi0gICAgX3NlcnZlciA9IHNlcnZlcjsKLQotICAgIHJldHVybiBzZWxmOwotfQot
Ci0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBBU1NFUlQoIVtfb3BlbkNvbm5lY3Rpb25zIGNvdW50
XSk7Ci0gICAgW19vcGVuQ29ubmVjdGlvbnMgcmVsZWFzZV07Ci0KLSAgICBbc3VwZXIgZGVhbGxv
Y107Ci19Ci0KLS0gKHZvaWQpY2xvc2VBbGxDb25uZWN0aW9ucwotewotI2lmIFBMQVRGT1JNKElP
UykKLSAgICBXZWJUaHJlYWRSdW4oXnsKLSNlbmRpZgotCi0gICAgZm9yIChOU051bWJlciAqa2V5
IGluIF9vcGVuQ29ubmVjdGlvbnMpIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24gPSBbX29wZW5Db25uZWN0aW9ucyBvYmplY3RGb3JLZXk6
a2V5XTsKLSAgICAgICAgW2Nvbm5lY3Rpb24gcmVjZWl2ZWREaWRDbG9zZTpuaWxdOwotICAgIH0K
LSAgICBbX29wZW5Db25uZWN0aW9ucyByZW1vdmVBbGxPYmplY3RzXTsKLQotICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgIFtfc2VydmVyIHNl
dEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjpOT107Ci0gICAgfSk7Ci0KLSNpZiBQTEFURk9STShJT1Mp
Ci0gICAgfSk7Ci0jZW5kaWYKLX0KLQotLSAoTlNEaWN0aW9uYXJ5ICopX2xpc3RpbmdGb3JXZWJW
aWV3OihXZWJWaWV3ICopd2ViVmlldyBwYWdlSWQ6KE5TTnVtYmVyICopcGFnZUlkIHJlZ2lzdHJ5
OihXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSAqKXJlZ2lzdHJ5Ci17Ci0gICAgTlNNdXRhYmxl
RGljdGlvbmFyeSAqd2ViVmlld0RldGFpbHMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9u
YXJ5XTsKLQotICAgIC8vIFBhZ2UgSUQuCi0gICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDpw
YWdlSWQgZm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsKLQotICAgIC8vIFVSTC4KLSAgICBO
U1N0cmluZyAqdXJsID0gW3dlYlZpZXcgbWFpbkZyYW1lVVJMXTsKLSAgICBpZiAoIXVybCkKLSAg
ICAgICAgdXJsID0gQCJhYm91dDpibGFuayI7Ci0gICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVj
dDp1cmwgZm9yS2V5OldJUlVSTEtleV07Ci0KLSAgICAvLyBUaXRsZS4KLSAgICBOU1N0cmluZyAq
dGl0bGUgPSBbd2ViVmlldyBtYWluRnJhbWVUaXRsZV07Ci0gICAgW3dlYlZpZXdEZXRhaWxzIHNl
dE9iamVjdDp0aXRsZSBmb3JLZXk6V0lSVGl0bGVLZXldOwotCi0gICAgLy8gW09wdGlvbmFsXSBD
b25uZWN0aW9uIElkZW50aWZpZXIgKFJlbW90ZSBEZWJ1Z2dlciBVVUlEKS4KLSAgICAvLyBbT3B0
aW9uYWxdIEhhcyBMb2NhbCBEZWJ1Z2dlciBTZXNzaW9uLgotICAgIFdlYkluc3BlY3RvclNlcnZl
cldlYlZpZXdDb25uZWN0aW9uICpjb25uZWN0aW9uID0gW19vcGVuQ29ubmVjdGlvbnMgb2JqZWN0
Rm9yS2V5OnBhZ2VJZF07Ci0gICAgaWYgKGNvbm5lY3Rpb24pCi0gICAgICAgIFt3ZWJWaWV3RGV0
YWlscyBzZXRPYmplY3Q6Y29ubmVjdGlvbi5jb25uZWN0aW9uSWRlbnRpZmllciBmb3JLZXk6V0lS
Q29ubmVjdGlvbklkZW50aWZpZXJLZXldOwotICAgIGVsc2UgewotICAgICAgICBXZWJJbnNwZWN0
b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCA9IFtyZWdpc3RyeSBjbGllbnRGb3JQYWdlSWQ6W3Bh
Z2VJZCB1bnNpZ25lZEludFZhbHVlXV07Ci0gICAgICAgIGlmIChpbnNwZWN0b3JDbGllbnQtPmhh
c0xvY2FsU2Vzc2lvbigpKQotICAgICAgICAgICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDpb
TlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSBmb3JLZXk6V0lSSGFzTG9jYWxEZWJ1Z2dlcktl
eV07Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIFtPcHRpb25hbF0gSG9zdCBB
cHBsaWNhdGlvbiBJRC4KLSAgICBOU1N0cmluZyAqaG9zdEFwcGxpY2F0aW9uSWQgPSBbd2ViVmll
dyBob3N0QXBwbGljYXRpb25CdW5kbGVJZF07Ci0gICAgaWYgKGhvc3RBcHBsaWNhdGlvbklkKQot
ICAgICAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0Omhvc3RBcHBsaWNhdGlvbklkIGZvcktl
eTpXSVJIb3N0QXBwbGljYXRpb25JZGVudGlmaWVyS2V5XTsKLQotICAgIC8vIFtPcHRpb25hbF0g
SG9zdCBBcHBsaWNhdGlvbiBOYW1lLgotICAgIE5TU3RyaW5nICpob3N0QXBwbGljYXRpb25OYW1l
ID0gW3dlYlZpZXcgaG9zdEFwcGxpY2F0aW9uTmFtZV07Ci0gICAgaWYgKGhvc3RBcHBsaWNhdGlv
bk5hbWUpCi0gICAgICAgIFt3ZWJWaWV3RGV0YWlscyBzZXRPYmplY3Q6aG9zdEFwcGxpY2F0aW9u
TmFtZSBmb3JLZXk6V0lSSG9zdEFwcGxpY2F0aW9uTmFtZUtleV07Ci0jZW5kaWYKLQotICAgIC8v
IFtPcHRpb25hbF0gUmVtb3RlIEluc3BlY3RvciBXZWJWaWV3IFVzZXIgSW5mbyBEaWN0aW9uYXJ5
LgotICAgIE5TRGljdGlvbmFyeSAqcmVtb3RlSW5zcGVjdG9yVXNlckluZm8gPSBbd2ViVmlldyBy
ZW1vdGVJbnNwZWN0b3JVc2VySW5mb107Ci0gICAgaWYgKHJlbW90ZUluc3BlY3RvclVzZXJJbmZv
KQotICAgICAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnJlbW90ZUluc3BlY3RvclVzZXJJ
bmZvIGZvcktleTpXSVJVc2VySW5mb0tleV07Ci0KLSAgICByZXR1cm4gd2ViVmlld0RldGFpbHM7
Ci19Ci0KLS0gKHZvaWQpX3B1c2hMaXN0aW5nOihOU1N0cmluZyAqKW9wdGlvbmFsQ29ubmVjdGlv
bklkZW50aWZpZXIKLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgQVNTRVJUKFdlYlRocmVhZElz
Q3VycmVudCgpKTsKLSNlbmRpZgotCi0gICAgX2hhc1NjaGVkdWxlZFB1c2ggPSBOTzsKLQotICAg
IE5TTXV0YWJsZURpY3Rpb25hcnkgKnJlc3BvbnNlID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XTsKLSAgICBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSAqd2ViSW5zcGVjdG9y
Q2xpZW50UmVnaXN0cnkgPSBbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0
cnldOwotICAgIE5TRGljdGlvbmFyeSAqcmVnaXN0ZXJlZFZpZXdzID0gW3dlYkluc3BlY3RvckNs
aWVudFJlZ2lzdHJ5IGluc3BlY3RhYmxlV2ViVmlld3NdOwotICAgIGZvciAoTlNOdW1iZXIgKnBh
Z2VJZCBpbiByZWdpc3RlcmVkVmlld3MpIHsKLSAgICAgICAgV2ViVmlldyAqd2ViVmlldyA9IFty
ZWdpc3RlcmVkVmlld3Mgb2JqZWN0Rm9yS2V5OnBhZ2VJZF07Ci0gICAgICAgIE5TRGljdGlvbmFy
eSAqd2ViVmlld0RldGFpbHMgPSBbc2VsZiBfbGlzdGluZ0ZvcldlYlZpZXc6d2ViVmlldyBwYWdl
SWQ6cGFnZUlkIHJlZ2lzdHJ5OndlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5XTsKLSAgICAgICAg
W3Jlc3BvbnNlIHNldE9iamVjdDp3ZWJWaWV3RGV0YWlscyBmb3JLZXk6W3BhZ2VJZCBzdHJpbmdW
YWx1ZV1dOwotICAgIH0KLQotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKm91dGdvaW5nID0gW1tO
U011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAgICBbb3V0Z29pbmcgc2V0T2JqZWN0
OnJlc3BvbnNlIGZvcktleTpXSVJMaXN0aW5nS2V5XTsKLSAgICBpZiAob3B0aW9uYWxDb25uZWN0
aW9uSWRlbnRpZmllcikKLSAgICAgICAgW291dGdvaW5nIHNldE9iamVjdDpvcHRpb25hbENvbm5l
Y3Rpb25JZGVudGlmaWVyIGZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07Ci0KLSAg
ICBbc2VsZiBzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6V0lSTGlzdGluZ01lc3NhZ2UgdXNlckluZm86
b3V0Z29pbmddOwotCi0gICAgW291dGdvaW5nIHJlbGVhc2VdOwotICAgIFtyZXNwb25zZSByZWxl
YXNlXTsKLX0KLQotLSAodm9pZClwdXNoTGlzdGluZzooTlNTdHJpbmcgKilvcHRpb25hbENvbm5l
Y3Rpb25JZGVudGlmaWVyCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIEFTU0VSVChXZWJUaHJl
YWRJc0N1cnJlbnQoKSk7Ci0jZW5kaWYKLQotICAgIGlmIChfaGFzU2NoZWR1bGVkUHVzaCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXIpIHsK
LSAgICAgICAgW3NlbGYgX3B1c2hMaXN0aW5nOm9wdGlvbmFsQ29ubmVjdGlvbklkZW50aWZpZXJd
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIGRpc3Bh
dGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDAuMiAqIE5TRUNfUEVS
X1NFQyksIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlf
REVGQVVMVCwgMCksIF57Ci0gICAgICAgIFdlYlRocmVhZFJ1biheewotICAgICAgICAgICAgW3Nl
bGYgX3B1c2hMaXN0aW5nOm5pbF07Ci0gICAgICAgIH0pOwotICAgIH0pOwotI2Vsc2UKLSAgICBb
c2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKF9wdXNoTGlzdGluZzopIHdpdGhPYmplY3Q6
bmlsIGFmdGVyRGVsYXk6MC4yXTsKLSNlbmRpZgotCi0gICAgX2hhc1NjaGVkdWxlZFB1c2ggPSBZ
RVM7Ci19Ci0KLS0gKHZvaWQpcHVzaExpc3RpbmcKLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAg
V2ViVGhyZWFkUnVuKF57Ci0jZW5kaWYKLQotICAgIFtzZWxmIHB1c2hMaXN0aW5nOm5pbF07Ci0K
LSNpZiBQTEFURk9STShJT1MpCi0gICAgfSk7Ci0jZW5kaWYKLX0KLQotLSAodm9pZClfcmVjZWl2
ZWRTZXR1cDooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIE5TTnVtYmVyICpwYWdl
SWQgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOwotICAg
IGlmICghcGFnZUlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU1N0cmluZyAqY29ubmVjdGlv
bklkZW50aWZpZXIgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50
aWZpZXJLZXldOwotICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIE5TU3RyaW5nICpzZW5kZXIgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lS
U2VuZGVyS2V5XTsKLSAgICBpZiAoIXNlbmRlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KCFfb3BlbkNvbm5lY3Rpb25zKQotICAgICAgICBfb3BlbkNvbm5lY3Rpb25zID0gW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLQotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uICpjb25uZWN0aW9uID0gW1tXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29u
bmVjdGlvbiBhbGxvY10gaW5pdFdpdGhDb250cm9sbGVyOnNlbGYgY29ubmVjdGlvbklkZW50aWZp
ZXI6Y29ubmVjdGlvbklkZW50aWZpZXIgZGVzdGluYXRpb246c2VuZGVyIGlkZW50aWZpZXI6cGFn
ZUlkXTsKLSAgICBpZiAoW2Nvbm5lY3Rpb24gc2V0dXBDaGFubmVsXSkKLSAgICAgICAgW19vcGVu
Q29ubmVjdGlvbnMgc2V0T2JqZWN0OmNvbm5lY3Rpb24gZm9yS2V5OnBhZ2VJZF07Ci0gICAgW2Nv
bm5lY3Rpb24gcmVsZWFzZV07Ci0KLSAgICBpZiAoW19vcGVuQ29ubmVjdGlvbnMgY291bnRdID09
IDEpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XnsKLSAgICAgICAgICAgIFtfc2VydmVyIHNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjpZRVNdOwot
ICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBbc2VsZiBwdXNoTGlzdGluZ107Ci19Ci0KLS0gKHZv
aWQpX3JlY2VpdmVkRGF0YTooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIE5TTnVt
YmVyICpwYWdlSWQgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJL
ZXldOwotICAgIGlmICghcGFnZUlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJJbnNwZWN0
b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqY29ubmVjdGlvbiA9IFtfb3BlbkNvbm5lY3Rpb25z
IG9iamVjdEZvcktleTpwYWdlSWRdOwotICAgIEFTU0VSVCghY29ubmVjdGlvbiB8fCBbY29ubmVj
dGlvbiBpc0tpbmRPZkNsYXNzOltXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiBj
bGFzc11dKTsKLSAgICBpZiAoIWNvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIFtj
b25uZWN0aW9uIHJlY2VpdmVkRGF0YTpkaWN0aW9uYXJ5XTsKLX0KLQotLSAodm9pZClfcmVjZWl2
ZWREaWRDbG9zZTooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeQotewotICAgIE5TTnVtYmVyICpw
YWdlSWQgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOwot
ICAgIGlmICghcGFnZUlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU1N0cmluZyAqY29ubmVj
dGlvbklkZW50aWZpZXIgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSQ29ubmVjdGlvbklk
ZW50aWZpZXJLZXldOwotICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uICpjb25uZWN0
aW9uID0gW19vcGVuQ29ubmVjdGlvbnMgb2JqZWN0Rm9yS2V5OnBhZ2VJZF07Ci0gICAgQVNTRVJU
KCFjb25uZWN0aW9uIHx8IFtjb25uZWN0aW9uIGlzS2luZE9mQ2xhc3M6W1dlYkluc3BlY3RvclNl
cnZlcldlYlZpZXdDb25uZWN0aW9uIGNsYXNzXV0pOwotICAgIGlmICghY29ubmVjdGlvbikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFbY29ubmVjdGlvbklkZW50aWZpZXIgaXNFcXVhbFRv
U3RyaW5nOmNvbm5lY3Rpb24uY29ubmVjdGlvbklkZW50aWZpZXJdKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBbY29ubmVjdGlvbiByZWNlaXZlZERpZENsb3NlOmRpY3Rpb25hcnldOwotICAgIFtf
b3BlbkNvbm5lY3Rpb25zIHJlbW92ZU9iamVjdEZvcktleTpwYWdlSWRdOwotCi0gICAgaWYgKCFb
X29wZW5Db25uZWN0aW9ucyBjb3VudF0pIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgIFtfc2VydmVyIHNldEhhc0FjdGl2
ZURlYnVnU2Vzc2lvbjpOT107Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIFtzZWxmIHB1c2hM
aXN0aW5nXTsKLX0KLQotLSAodm9pZClfcmVjZWl2ZWRHZXRMaXN0aW5nOihOU0RpY3Rpb25hcnkg
KilkaWN0aW9uYXJ5Ci17Ci0gICAgW3NlbGYgcHVzaExpc3Rpbmc6W2RpY3Rpb25hcnkgb2JqZWN0
Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XV07Ci19Ci0KLS0gKHZvaWQpX3JlY2Vp
dmVkSW5kaWNhdGU6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKLXsKLSAgICBOU051bWJlciAq
cGFnZUlkID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldJUlBhZ2VJZGVudGlmaWVyS2V5XTsK
LSAgICBpZiAoIXBhZ2VJZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViVmlldyAqd2ViVmll
dyA9IFtbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XSBpbnNwZWN0
YWJsZVdlYlZpZXdzXSBvYmplY3RGb3JLZXk6cGFnZUlkXTsKLSAgICBpZiAoIXdlYlZpZXcpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIEJPT0wgaW5kaWNhdGVFbmFibGVkID0gW1tkaWN0aW9uYXJ5
IG9iamVjdEZvcktleTpXSVJJbmRpY2F0ZUVuYWJsZWRLZXldIGJvb2xWYWx1ZV07Ci0gICAgW3dl
YlZpZXcgc2V0SW5kaWNhdGluZ0ZvclJlbW90ZUluc3BlY3RvcjppbmRpY2F0ZUVuYWJsZWRdOwot
fQotCi0tICh2b2lkKV9yZWNlaXZlZENvbm5lY3Rpb25EaWVkOihOU0RpY3Rpb25hcnkgKilkaWN0
aW9uYXJ5Ci17Ci0gICAgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyID0gW2RpY3Rpb25h
cnkgb2JqZWN0Rm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKLSAgICBpZiAoIWNv
bm5lY3Rpb25JZGVudGlmaWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU0RpY3Rpb25hcnkg
KmNvbm5lY3Rpb25zQ29weSA9IFtbX29wZW5Db25uZWN0aW9ucyBjb3B5XSBhdXRvcmVsZWFzZV07
Ci0gICAgZm9yIChOU051bWJlciAqa2V5IGluIGNvbm5lY3Rpb25zQ29weSkgewotICAgICAgICBX
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqY29ubmVjdGlvbiA9IFtjb25uZWN0
aW9uc0NvcHkgb2JqZWN0Rm9yS2V5OmtleV07Ci0gICAgICAgIGlmIChbY29ubmVjdGlvbi5jb25u
ZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6Y29ubmVjdGlvbklkZW50aWZpZXJdKSB7
Ci0gICAgICAgICAgICBbY29ubmVjdGlvbiByZWNlaXZlZERpZENsb3NlOm5pbF07Ci0gICAgICAg
ICAgICBbX29wZW5Db25uZWN0aW9ucyByZW1vdmVPYmplY3RGb3JLZXk6a2V5XTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGlmICghW19vcGVuQ29ubmVjdGlvbnMgY291bnRdKSB7Ci0gICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgICAg
ICBbX3NlcnZlciBzZXRIYXNBY3RpdmVEZWJ1Z1Nlc3Npb246Tk9dOwotICAgICAgICB9KTsKLSAg
ICB9Ci19Ci0KLS0gKHZvaWQpcmVjZWl2ZWRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1l
IHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbwotewotI2lmIFBMQVRGT1JNKElPUykK
LSAgICBXZWJUaHJlYWRSdW4oXnsKLSNlbmRpZgotCi0gICAgaWYgKFttZXNzYWdlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6V0lSU29ja2V0U2V0dXBNZXNzYWdlXSkKLSAgICAgICAgW3NlbGYgX3JlY2Vp
dmVkU2V0dXA6dXNlckluZm9dOwotICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6V0lSU29ja2V0RGF0YU1lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWREYXRh
OnVzZXJJbmZvXTsKLSAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJ
UldlYlBhZ2VDbG9zZU1lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWREaWRDbG9zZTp1
c2VySW5mb107Ci0gICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpXSVJB
cHBsaWNhdGlvbkdldExpc3RpbmdNZXNzYWdlXSkKLSAgICAgICAgW3NlbGYgX3JlY2VpdmVkR2V0
TGlzdGluZzp1c2VySW5mb107Ci0gICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0
cmluZzpXSVJJbmRpY2F0ZU1lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWRJbmRpY2F0
ZTp1c2VySW5mb107Ci0gICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpX
SVJDb25uZWN0aW9uRGllZE1lc3NhZ2VdKQotICAgICAgICBbc2VsZiBfcmVjZWl2ZWRDb25uZWN0
aW9uRGllZDp1c2VySW5mb107Ci0gICAgZWxzZQotICAgICAgICBOU0xvZyhAIlVucmVjb2duaXpl
ZCBNZXNzYWdlOiAlQCIsIG1lc3NhZ2VOYW1lKTsKLQotI2lmIFBMQVRGT1JNKElPUykKLSAgICB9
KTsKLSNlbmRpZgotfQotCi0KLSNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgV2ViSW5zcGVj
dG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gaW50ZXJmYWNlCi0KLS0gKHZvaWQpY29ubmVjdGlv
bkNsb3Npbmc6KFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uICopY29ubmVjdGlv
bgotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBXZWJUaHJlYWRSdW4oXnsKLSNlbmRpZgotCi0g
ICAgW19vcGVuQ29ubmVjdGlvbnMgcmVtb3ZlT2JqZWN0Rm9yS2V5Oltjb25uZWN0aW9uIGlkZW50
aWZpZXJdXTsKLQotICAgIGlmICghW19vcGVuQ29ubmVjdGlvbnMgY291bnRdKSB7Ci0gICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgICAg
ICBbX3NlcnZlciBzZXRIYXNBY3RpdmVEZWJ1Z1Nlc3Npb246Tk9dOwotICAgICAgICB9KTsKLSAg
ICB9Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgfSk7Ci0jZW5kaWYKLX0KLQotCi0jcHJhZ21h
IG1hcmsgLQotI3ByYWdtYSBtYXJrIFRocmVhZCBTYWZlIHNlbmQgbWVzc2FnZSB0byBmcm9udGVu
ZAotCi0tICh2b2lkKXNlbmRNZXNzYWdlVG9Gcm9udGVuZDooTlNTdHJpbmcgKiltZXNzYWdlTmFt
ZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm8KLXsKLSAgICAvLyBUaGlzIG1heSBi
ZSBjYWxsZWQgZnJvbSBlaXRoZXIgdGhlIFdlYlRocmVhZCBvciB0aGUgTWFpblRocmVhZC4gVGhp
cwotICAgIC8vIHJlcXVpcmVzIGFjY2VzcyB0byB0aGUgV2ViSW5zcGVjdG9yU2VydmVyJ3MgWFBD
IENvbm5lY3Rpb24sIHdoaWNoCi0gICAgLy8gaXMgbWFuYWdlZCBvbiB0aGUgbWFpbiB0aHJlYWQu
IFNvLCBkaXNwYXRjaCB0byB0aGUgbWFpbiB0aHJlYWQgdG8KLSAgICAvLyBzYWZlbHkgdXNlIHRo
ZSB4cGMgY29ubmVjdGlvbi4KLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBeewotICAgICAgICBbW19zZXJ2ZXIgeHBjQ29ubmVjdGlvbl0gc2VuZE1lc3NhZ2U6
bWVzc2FnZU5hbWUgdXNlckluZm86dXNlckluZm9dOwotICAgIH0pOwotfQotCi1AZW5kCi0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9X
ZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
cmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIubQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNWZiMWUwMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0
b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIubQorKysgL2Rldi9udWxsCkBAIC0xLDE2
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JYUENX
cmFwcGVyLmgiCi0KLSNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLSNpZiBfX2hhc19pbmNs
dWRlKDxDb3JlRm91bmRhdGlvbi9DRlhQQ0JyaWRnZS5oPikKLSNpbmNsdWRlIDxDb3JlRm91bmRh
dGlvbi9DRlhQQ0JyaWRnZS5oPgotI2Vsc2UKLWV4dGVybiB4cGNfb2JqZWN0X3QgX0NGWFBDQ3Jl
YXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdChDRlR5cGVSZWYpOwotZXh0ZXJuIENGVHlwZVJlZiBf
Q0ZYUENDcmVhdGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY19vYmplY3RfdCk7Ci0jZW5kaWYK
LQotLy8gQ29uc3RhbnRzIHByaXZhdGUgdG8gdGhpcyBmaWxlIGZvciBtZXNzYWdlIHNlcmlhbGl6
YXRpb24gb24gYm90aCBlbmRzLgotI2RlZmluZSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyTWVzc2Fn
ZU5hbWVLZXkgQCJtZXNzYWdlTmFtZSIKLSNkZWZpbmUgV2ViSW5zcGVjdG9yWFBDV3JhcHBlclVz
ZXJJbmZvS2V5IEAidXNlckluZm8iCi0jZGVmaW5lIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJTZXJp
YWxpemVkTWVzc2FnZUtleSAibXNnRGF0YSIKLQotQGludGVyZmFjZSBXZWJJbnNwZWN0b3JYUENX
cmFwcGVyICgpCi0tICh2b2lkKV9oYW5kbGVFdmVudDooeHBjX29iamVjdF90KW9iamVjdDsKLUBl
bmQKLQotCi1AaW1wbGVtZW50YXRpb24gV2ViSW5zcGVjdG9yWFBDV3JhcHBlcgotCi1AZHluYW1p
YyBhdmFpbGFibGU7Ci0KLUBzeW50aGVzaXplIGRlbGVnYXRlID0gX2RlbGVnYXRlOwotQHN5bnRo
ZXNpemUgY29ubmVjdGlvbiA9IF9jb25uZWN0aW9uOwotQHN5bnRoZXNpemUgdGFnID0gX3RhZzsK
LQotLSAoV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWluaXRXaXRoQ29ubmVjdGlvbjooeHBjX2Nv
bm5lY3Rpb25fdCljb25uZWN0aW9uCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBp
ZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfY29ubmVjdGlvbiA9IHhwY19y
ZXRhaW4oY29ubmVjdGlvbik7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShf
Y29ubmVjdGlvbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7Ci0gICAgeHBjX2Nvbm5lY3Rp
b25fc2V0X2V2ZW50X2hhbmRsZXIoX2Nvbm5lY3Rpb24sIF4oeHBjX29iamVjdF90IG9iamVjdCkg
eyBbc2VsZiBfaGFuZGxlRXZlbnQ6b2JqZWN0XTsgfSk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fcmVz
dW1lKF9jb25uZWN0aW9uKTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWNsb3Nl
Ci17Ci0gICAgaWYgKF9jb25uZWN0aW9uKSB7Ci0gICAgICAgIHhwY19jb25uZWN0aW9uX2NhbmNl
bChfY29ubmVjdGlvbik7Ci0gICAgICAgIHhwY19yZWxlYXNlKF9jb25uZWN0aW9uKTsKLSAgICAg
ICAgX2Nvbm5lY3Rpb24gPSBOVUxMOwotICAgIH0KLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0g
ICAgW3NlbGYgY2xvc2VdOwotICAgIFtfdGFnIHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9j
XTsKLX0KLQotLSAoTlNEaWN0aW9uYXJ5ICopX2Rlc2VyaWFsaXplTWVzc2FnZTooeHBjX29iamVj
dF90KW9iamVjdAotewotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoeHBjX2dldF90eXBlKG9iamVj
dCkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSwgIkdvdCB1bmV4cGVjdGVkIG9iamVjdCBmcm9tIGFu
IHhwYyBjb25uZWN0aW9uIik7Ci0gICAgaWYgKHhwY19nZXRfdHlwZShvYmplY3QpICE9IFhQQ19U
WVBFX0RJQ1RJT05BUlkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICB4cGNfb2JqZWN0X3Qg
eHBjRGljdGlvbmFyeSA9IHhwY19kaWN0aW9uYXJ5X2dldF92YWx1ZShvYmplY3QsIFdlYkluc3Bl
Y3RvclhQQ1dyYXBwZXJTZXJpYWxpemVkTWVzc2FnZUtleSk7Ci0gICAgaWYgKCF4cGNEaWN0aW9u
YXJ5IHx8IHhwY19nZXRfdHlwZSh4cGNEaWN0aW9uYXJ5KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZ
KSB7Ci0gICAgICAgIC8vIFRoaXMgaXNuJ3QgYSBtZXNzYWdlIHR5cGUgdGhhdCB3ZSBrbm93IGhv
dyB0byBkZXNlcmlhbGl6ZSwgc28gd2UgbGV0IG91ciBkZWxlZ2F0ZSB3b3JyeSBhYm91dCBpdC4K
LSAgICAgICAgaWYgKFtfZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih4cGND
b25uZWN0aW9uOnVuaGFuZGxlZE1lc3NhZ2U6KV0pCi0gICAgICAgICAgICBbX2RlbGVnYXRlIHhw
Y0Nvbm5lY3Rpb246c2VsZiB1bmhhbmRsZWRNZXNzYWdlOm9iamVjdF07Ci0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgfQotCi0gICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gX0NGWFBDQ3Jl
YXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4cGNEaWN0aW9uYXJ5KTsKLSAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKGRpY3Rpb25hcnksICJVbmFibGUgdG8gZGVzZXJpYWxpemUgeHBjIG1lc3NhZ2Ui
KTsKLSAgICBpZiAoIWRpY3Rpb25hcnkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1
cm4gW2RpY3Rpb25hcnkgYXV0b3JlbGVhc2VdOwotfQotCi0tICh2b2lkKV9oYW5kbGVFdmVudDoo
eHBjX29iamVjdF90KW9iamVjdAotewotICAgIGlmICghX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmICh4cGNfZ2V0X3R5cGUob2JqZWN0KSA9PSBYUENfVFlQRV9FUlJPUikg
ewotICAgICAgICBbX2RlbGVnYXRlIHhwY0Nvbm5lY3Rpb25GYWlsZWQ6c2VsZl07Ci0gICAgICAg
IFtzZWxmIGNsb3NlXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghX2RlbGVn
YXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBOU0RpY3Rpb25hcnkgKmRhdGFEaWN0aW9uYXJ5
ID0gW3NlbGYgX2Rlc2VyaWFsaXplTWVzc2FnZTpvYmplY3RdOwotICAgIGlmICghZGF0YURpY3Rp
b25hcnkpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TU3RyaW5nICptZXNzYWdlID0gW2RhdGFE
aWN0aW9uYXJ5IG9iamVjdEZvcktleTpXZWJJbnNwZWN0b3JYUENXcmFwcGVyTWVzc2FnZU5hbWVL
ZXldOwotICAgIE5TRGljdGlvbmFyeSAqdXNlckluZm8gPSBbZGF0YURpY3Rpb25hcnkgb2JqZWN0
Rm9yS2V5OldlYkluc3BlY3RvclhQQ1dyYXBwZXJVc2VySW5mb0tleV07Ci0gICAgW19kZWxlZ2F0
ZSB4cGNDb25uZWN0aW9uOnNlbGYgcmVjZWl2ZWRNZXNzYWdlOm1lc3NhZ2UgdXNlckluZm86dXNl
ckluZm9dOwotfQotCi0tICh2b2lkKXNlbmRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1l
IHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbwotewotICAgIGlmICghX2Nvbm5lY3Rp
b24pCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25h
cnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptZXNzYWdlTmFt
ZSBmb3JLZXk6V2ViSW5zcGVjdG9yWFBDV3JhcHBlck1lc3NhZ2VOYW1lS2V5XTsKLSAgICBpZiAo
dXNlckluZm8pCi0gICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp1c2VySW5mbyBmb3JLZXk6
V2ViSW5zcGVjdG9yWFBDV3JhcHBlclVzZXJJbmZvS2V5XTsKLQotICAgIHhwY19vYmplY3RfdCB4
cGNEaWN0aW9uYXJ5ID0gX0NGWFBDQ3JlYXRlWFBDTWVzc2FnZVdpdGhDRk9iamVjdCgoQ0ZEaWN0
aW9uYXJ5UmVmKWRpY3Rpb25hcnkpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoeHBjRGljdGlv
bmFyeSAmJiB4cGNfZ2V0X3R5cGUoeHBjRGljdGlvbmFyeSkgPT0gWFBDX1RZUEVfRElDVElPTkFS
WSwgIlVuYWJsZSB0byBzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKLSAgICBpZiAoIXhwY0RpY3Rp
b25hcnkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHhwY19vYmplY3RfdCBtc2cgPSB4cGNfZGlj
dGlvbmFyeV9jcmVhdGUoTlVMTCwgTlVMTCwgMCk7Ci0gICAgeHBjX2RpY3Rpb25hcnlfc2V0X3Zh
bHVlKG1zZywgV2ViSW5zcGVjdG9yWFBDV3JhcHBlclNlcmlhbGl6ZWRNZXNzYWdlS2V5LCB4cGNE
aWN0aW9uYXJ5KTsKLSAgICB4cGNfcmVsZWFzZSh4cGNEaWN0aW9uYXJ5KTsKLQotICAgIHhwY19j
b25uZWN0aW9uX3NlbmRfbWVzc2FnZShfY29ubmVjdGlvbiwgbXNnKTsKLQotICAgIHhwY19yZWxl
YXNlKG1zZyk7Ci19Ci0KLS0gKEJPT0wpYXZhaWxhYmxlCi17Ci0gICAgcmV0dXJuIF9jb25uZWN0
aW9uICE9IE5VTEw7Ci19Ci0KLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJLaXQuZXhwIGIvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0LmV4cAppbmRleCBm
M2ZkMmY0Li41NmY4MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQuZXhw
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5leHAKQEAgLTIyLDcgKzIyLDYgQEAKIC5v
YmpjX2NsYXNzX25hbWVfV2ViSGlzdG9yeUl0ZW0KIC5vYmpjX2NsYXNzX25hbWVfV2ViSWNvbkRh
dGFiYXNlCiAub2JqY19jbGFzc19uYW1lX1dlYkluc3BlY3RvcgotLm9iamNfY2xhc3NfbmFtZV9X
ZWJJbnNwZWN0b3JYUENXcmFwcGVyCiAub2JqY19jbGFzc19uYW1lX1dlYkphdmFTY3JpcHRUZXh0
SW5wdXRQYW5lbAogLm9iamNfY2xhc3NfbmFtZV9XZWJLZXlHZW5lcmF0b3IKIC5vYmpjX2NsYXNz
X25hbWVfV2ViS2l0U3RhdGlzdGljcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmlu
ZGV4IGY1ZDM4MzUuLjE4NWFkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
QEAgLTIxMiw3ICsyMTIsNiBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKLSNpbXBvcnQgIldlYkluc3BlY3RvclNlcnZlci5oIgogI2lmIFBMQVRGT1JNKElPUykKICNp
bXBvcnQgIldlYkluZGljYXRlTGF5ZXIuaCIKICNlbmRpZgpAQCAtMzkxLDEwICszOTAsNiBAQCBz
dGF0aWMgV2ViQ2FjaGVNb2RlbCBzX2NhY2hlTW9kZWwgPSBXZWJDYWNoZU1vZGVsRG9jdW1lbnRW
aWV3ZXI7CiBzdGF0aWMgY29uc3QgY2hhciB3ZWJWaWV3SXNPcGVuW10gPSAiQXQgbGVhc3Qgb25l
IFdlYlZpZXcgaXMgc3RpbGwgb3Blbi4iOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKLXN0YXRpYyBCT09MIGF1dG9TdGFydFJlbW90ZUluc3BlY3RvciA9IFlFUzsKLSNl
bmRpZgotCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJWYWxpZGF0ZVdpdGhvdXREZWxlZ2F0ZSkK
IC0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXREZWxlZ2F0ZTooaWQgPE5T
VmFsaWRhdGVkVXNlckludGVyZmFjZUl0ZW0+KWl0ZW07CiBAZW5kCkBAIC01MjUsNiArNTIwLDcg
QEAgTlNTdHJpbmcgKl9XZWJWaWV3RGlkU3RhcnRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTm90aWZp
Y2F0aW9uID0gQCJfV2ViVmlld0RpZFN0YXIKIE5TU3RyaW5nICogY29uc3QgV2ViVmlld1dpbGxD
bG9zZU5vdGlmaWNhdGlvbiA9IEAiV2ViVmlld1dpbGxDbG9zZU5vdGlmaWNhdGlvbiI7CiAKICNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKy8vIEZJWE1FOiBMZWdhY3ksIHJlbW92ZSB0aGlz
LCBzd2l0Y2ggdG8gc29tZXRoaW5nIGZyb20gSmF2YVNjcmlwdENvcmUgSW5zcGVjdG9yOjpSZW1v
dGVJbnNwZWN0b3JTZXJ2ZXIuCiBOU1N0cmluZyAqX1dlYlZpZXdSZW1vdGVJbnNwZWN0b3JIYXNT
ZXNzaW9uQ2hhbmdlZE5vdGlmaWNhdGlvbiA9IEAiX1dlYlZpZXdSZW1vdGVJbnNwZWN0b3JIYXNT
ZXNzaW9uQ2hhbmdlZE5vdGlmaWNhdGlvbiI7CiAjZW5kaWYKIApAQCAtNzY2LDExICs3NjIsNiBA
QCBzdGF0aWMgYm9vbCBzaG91bGRVc2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2
aW9yKCkKICAgICAgICAgCiAgICAgICAgIFNldHRpbmdzOjpzZXRTaG91bGRSZXNwZWN0UHJpb3Jp
dHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoc2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1
dGVTZXR0ZXJzKCkpOwogCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgICAgIGlm
IChhdXRvU3RhcnRSZW1vdGVJbnNwZWN0b3IpCi0gICAgICAgICAgICBbV2ViVmlldyBfZW5hYmxl
UmVtb3RlSW5zcGVjdG9yXTsKLSNlbmRpZgotCiAgICAgICAgIGRpZE9uZVRpbWVJbml0aWFsaXph
dGlvbiA9IHRydWU7CiAgICAgfQogCkBAIC03OTgsNiArNzg5LDEwIEBAIHN0YXRpYyBib29sIHNo
b3VsZFVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IoKQogICAgIFdlYkNv
cmU6OnByb3ZpZGVVc2VyTWVkaWFUbyhfcHJpdmF0ZS0+cGFnZSwgbmV3IFdlYlVzZXJNZWRpYUNs
aWVudChzZWxmKSk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAg
IF9wcml2YXRlLT5wYWdlLT5zZXRSZW1vdGVJbnNwZWN0aW9uQWxsb3dlZCh0cnVlKTsKKyNlbmRp
ZgorCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldENhblN0YXJ0TWVkaWEoW3NlbGYgd2luZG93XSk7
CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0TG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoKFtbc2VsZiBwcmVmZXJlbmNlc10gX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aF0pOwogICAg
IF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hv
cnRoYW5kQmVoYXZpb3Ioc2hvdWxkVXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhh
dmlvcigpKTsKQEAgLTEyNjcsNjAgKzEyNjIsNDIgQEAgc3RhdGljIGJvb2wgZmFzdERvY3VtZW50
VGVhcmRvd25FbmFibGVkKCkKIH0KIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotKyAo
V2ViSW5zcGVjdG9yU2VydmVyICopc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyCi17Ci0gICAgc3Rh
dGljIFdlYkluc3BlY3RvclNlcnZlciAqc2hhcmVkU2VydmVyID0gW1tXZWJJbnNwZWN0b3JTZXJ2
ZXIgYWxsb2NdIGluaXRdOwotICAgIHJldHVybiBzaGFyZWRTZXJ2ZXI7Ci19Ci0KICsgKHZvaWQp
X2VuYWJsZVJlbW90ZUluc3BlY3RvcgogewotICAgIFtbV2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0
b3JTZXJ2ZXJdIHN0YXJ0XTsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGEgbmV3IEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyIGludGVyZmFjZSBvciByZW1vdmUgaXQuCiB9CiAK
ICsgKHZvaWQpX2Rpc2FibGVSZW1vdGVJbnNwZWN0b3IKIHsKLSAgICBbW1dlYlZpZXcgc2hhcmVk
V2ViSW5zcGVjdG9yU2VydmVyXSBzdG9wXTsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIGEg
bmV3IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyIGludGVyZmFjZSBvciByZW1vdmUg
aXQuCiB9CiAKICsgKHZvaWQpX2Rpc2FibGVBdXRvU3RhcnRSZW1vdGVJbnNwZWN0b3IKIHsKLSAg
ICBhdXRvU3RhcnRSZW1vdGVJbnNwZWN0b3IgPSBOTzsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlz
IHRvIGEgbmV3IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyIGludGVyZmFjZSBvciBy
ZW1vdmUgaXQuCiB9CiAKICsgKEJPT0wpX2lzUmVtb3RlSW5zcGVjdG9yRW5hYmxlZAogewotICAg
IHJldHVybiBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBpc0VuYWJsZWRdOwor
ICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JTZXJ2ZXIgaW50ZXJmYWNlIG9yIHJlbW92ZSBpdC4KKyAgICByZXR1cm4gTk87CiB9CiAKICsg
KEJPT0wpX2hhc1JlbW90ZUluc3BlY3RvclNlc3Npb24KIHsKLSAgICByZXR1cm4gW1tXZWJWaWV3
IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gaGFzQWN0aXZlRGVidWdTZXNzaW9uXTsKLX0KLQot
LSAoQk9PTCljYW5CZVJlbW90ZWx5SW5zcGVjdGVkCi17Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAg
ICBpZiAoIVtbc2VsZiBwcmVmZXJlbmNlc10gZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZF0pCi0gICAg
ICAgIHJldHVybiBOTzsKLSNlbmRpZgotCi0gICAgcmV0dXJuIFtzZWxmIGFsbG93c1JlbW90ZUlu
c3BlY3Rpb25dOworICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gYSBuZXcgSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3JTZXJ2ZXIgaW50ZXJmYWNlIG9yIHJlbW92ZSBpdC4KKyAgICByZXR1cm4g
Tk87CiB9CiAKIC0gKEJPT0wpYWxsb3dzUmVtb3RlSW5zcGVjdGlvbgogewotICAgIHJldHVybiBf
cHJpdmF0ZS0+YWxsb3dzUmVtb3RlSW5zcGVjdGlvbjsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlz
IHRvIGEgbmV3IEFQSS4KKyAgICByZXR1cm4gTk87CiB9CiAKIC0gKHZvaWQpc2V0QWxsb3dzUmVt
b3RlSW5zcGVjdGlvbjooQk9PTClhbGxvdwogewotICAgIGlmIChfcHJpdmF0ZS0+YWxsb3dzUmVt
b3RlSW5zcGVjdGlvbiA9PSBhbGxvdykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX3ByaXZhdGUt
PmFsbG93c1JlbW90ZUluc3BlY3Rpb24gPSBhbGxvdzsKLQotICAgIFtbV2ViVmlldyBzaGFyZWRX
ZWJJbnNwZWN0b3JTZXJ2ZXJdIHB1c2hMaXN0aW5nXTsKKyAgICAvLyBGSVhNRTogTW92ZSB0aGlz
IHRvIGEgbmV3IEFQSS4KIH0KIAogLSAodm9pZClzZXRJbmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVj
dG9yOihCT09MKWVuYWJsZWQKQEAgLTEzNDAsMjkgKzEzMTcsMTUgQEAgc3RhdGljIGJvb2wgZmFz
dERvY3VtZW50VGVhcmRvd25FbmFibGVkKCkKICAgICAgICAgX3ByaXZhdGUtPmluZGljYXRlTGF5
ZXIgPSBuaWw7CiAgICAgfQogI2Vsc2UKLSAgICAvLyBGSVhNRTogTmVlZHMgaW1wbGVtZW50YXRp
b24uCisgICAgLy8gRklYTUU6IE5lZWRzIGltcGxlbWVudGF0aW9uIG9yIHB1dCBhbiBpbXBsZW1l
bnRhdGlvbiBpbiBXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5LgogI2VuZGlmCiB9CiAKLS0gKHZv
aWQpc2V0UmVtb3RlSW5zcGVjdG9yVXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvCi17
Ci0gICAgaWYgKFtfcHJpdmF0ZS0+cmVtb3RlSW5zcGVjdG9yVXNlckluZm8gaXNFcXVhbFRvRGlj
dGlvbmFyeTp1c2VySW5mb10pCi0gICAgICAgIHJldHVybjsKLQotICAgIFtfcHJpdmF0ZS0+cmVt
b3RlSW5zcGVjdG9yVXNlckluZm8gcmVsZWFzZV07Ci0gICAgX3ByaXZhdGUtPnJlbW90ZUluc3Bl
Y3RvclVzZXJJbmZvID0gW3VzZXJJbmZvIGNvcHldOwotCi0gICAgW1tXZWJWaWV3IHNoYXJlZFdl
Ykluc3BlY3RvclNlcnZlcl0gcHVzaExpc3RpbmddOwotfQotCi0tIChOU0RpY3Rpb25hcnkgKily
ZW1vdGVJbnNwZWN0b3JVc2VySW5mbwotewotICAgIHJldHVybiBfcHJpdmF0ZS0+cmVtb3RlSW5z
cGVjdG9yVXNlckluZm87Ci19Ci0KICNpZiBQTEFURk9STShJT1MpCiAtICh2b2lkKXNldEhvc3RB
cHBsaWNhdGlvbkJ1bmRsZUlkOihOU1N0cmluZyAqKWJ1bmRsZUlkIG5hbWU6KE5TU3RyaW5nICop
bmFtZQogeworICAgIC8vIEZJWE1FOiBUaGlzIGhhcyBub3QgeWV0IGJlZW4gcG9ydGVkIHRvIElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyLgorCiAgICAgaWYgKCFbX3ByaXZhdGUtPmhv
c3RBcHBsaWNhdGlvbkJ1bmRsZUlkIGlzRXF1YWxUb1N0cmluZzpidW5kbGVJZF0pIHsKICAgICAg
ICAgW19wcml2YXRlLT5ob3N0QXBwbGljYXRpb25CdW5kbGVJZCByZWxlYXNlXTsKICAgICAgICAg
X3ByaXZhdGUtPmhvc3RBcHBsaWNhdGlvbkJ1bmRsZUlkID0gW2J1bmRsZUlkIGNvcHldOwpAQCAt
MjExOCw5ICsyMDgxLDYgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBz
KQogICAgIGlmIChmcmFtZSA9PSBbc2VsZiBtYWluRnJhbWVdKQogICAgICAgICBbc2VsZiBfZGlk
Q2hhbmdlVmFsdWVGb3JLZXk6IF9XZWJNYWluRnJhbWVVUkxLZXldOwogICAgIFtOU0FwcCBzZXRX
aW5kb3dzTmVlZFVwZGF0ZTpZRVNdOwotI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAg
IFtbV2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIHB1c2hMaXN0aW5nXTsKLSNlbmRp
ZgogfQogCiAtICh2b2lkKV9kaWRGaW5pc2hMb2FkRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCAyNDU0MTU4Li40YzI2
NzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCkBAIC0yMDgsOCAr
MjA4LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
Ci0gICAgQk9PTCBhbGxvd3NSZW1vdGVJbnNwZWN0aW9uOwotICAgIE5TRGljdGlvbmFyeSAqcmVt
b3RlSW5zcGVjdG9yVXNlckluZm87CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdlYkluZGljYXRl
TGF5ZXIgKmluZGljYXRlTGF5ZXI7CiAgICAgTlNTdHJpbmcgKmhvc3RBcHBsaWNhdGlvbkJ1bmRs
ZUlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KaW5kZXggMDM0M2E5
Yy4uZWIwYmNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
RGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCkBA
IC05OSwxMCArOTksNiBAQCBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmlld0xheWVy
Rmx1c2hTY2hlZHVsZXIoTGF5ZXJGbHVzaENvbnRyb2xsZXIqIGZsdQogICAgIGRhc2hib2FyZEJl
aGF2aW9yQWxsb3dXaGVlbFNjcm9sbGluZyA9IFlFUzsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCi0gICAgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbiA9IFlFUzsKLSNlbmRp
ZgotCiAgICAgc2hvdWxkQ2xvc2VXaXRoV2luZG93ID0gb2JqY19jb2xsZWN0aW5nRW5hYmxlZCgp
OwogCiAgICAgcGx1Z2luRGF0YWJhc2VDbGllbnRDb3VudCsrOwpAQCAtMTM1LDcgKzEzMSw2IEBA
IFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcihM
YXllckZsdXNoQ29udHJvbGxlciogZmx1CiAgICAgW21lZGlhU3R5bGUgcmVsZWFzZV07CiAKICNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBbcmVtb3RlSW5zcGVjdG9yVXNlckluZm8g
cmVsZWFzZV07CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFtpbmRpY2F0ZUxheWVyIHJlbGVhc2Vd
OwogICAgIFtob3N0QXBwbGljYXRpb25CdW5kbGVJZCByZWxlYXNlXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDI2Yzg5ODYuLmNkNTRmMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtNjEsOSAr
NjEsNiBAQCBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiBAY2xhc3MgV2ViQmFzZVBsdWdp
blBhY2thZ2U7CiBAY2xhc3MgV2ViRG93bmxvYWQ7CiBAY2xhc3MgV2ViTm9kZUhpZ2hsaWdodDsK
LSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLUBjbGFzcyBXZWJJbnNwZWN0b3JTZXJ2ZXI7
Ci0jZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiAKQEAgLTIxNywxMCArMjE0LDYgQEAgT0JK
Q19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiAtICh2b2lkKV9mdWxsU2NyZWVuUmVuZGVyZXJD
aGFuZ2VkOihXZWJDb3JlOjpSZW5kZXJCb3gqKXJlbmRlcmVyOwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKLSsgKFdlYkluc3BlY3RvclNlcnZlciAqKXNoYXJlZFdlYklu
c3BlY3RvclNlcnZlcjsKLSNlbmRpZgotCiAvLyBDb252ZXJzaW9uIGZ1bmN0aW9ucyBiZXR3ZWVu
IFdlYkNvcmUgcm9vdCB2aWV3IGNvb3JkaW5hdGVzIGFuZCB3ZWIgdmlldyBjb29yZGluYXRlcy4K
IC0gKE5TUG9pbnQpX2NvbnZlcnRQb2ludEZyb21Sb290VmlldzooTlNQb2ludClwb2ludDsKIC0g
KE5TUmVjdClfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6KE5TUmVjdClyZWN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDJkZGZkZWQuLjUwMWY5YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKQEAgLTc3LDYg
Kzc3LDcgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJFbGVtZW50SXNJblNjcm9sbEJhcktleTsKIGV4
dGVybiBOU1N0cmluZyAqX1dlYlZpZXdEaWRTdGFydEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdOb3Rp
ZmljYXRpb247CiAKICNpZiBFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUgorLy8gRklYTUU6IExlZ2Fj
eSwgcmVtb3ZlIHRoaXMsIHN3aXRjaCB0byBzb21ldGhpbmcgZnJvbSBKYXZhU2NyaXB0Q29yZSBJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlci4KIC8vIE5vdGlmaWNhdGlvbiB3aGVuIHRo
ZSBudW1iZXIgb2YgaW5zcGVjdG9yIHNlc3Npb25zIGJlY29tZXMgbm9uLXplcm8gb3IgcmV0dXJu
cyB0byAwLgogLy8gQ2hlY2sgdGhlIGN1cnJlbnQgc3RhdGUgdmlhIC1bV2ViVmlldyBfaGFzUmVt
b3RlSW5zcGVjdG9yU2Vzc2lvbl0uCiBleHRlcm4gTlNTdHJpbmcgKl9XZWJWaWV3UmVtb3RlSW5z
cGVjdG9ySGFzU2Vzc2lvbkNoYW5nZWROb3RpZmljYXRpb247CkBAIC0yNjMsMTUgKzI2NCw2IEBA
IHR5cGVkZWYgZW51bSB7CiArIChCT09MKV9oYXNSZW1vdGVJbnNwZWN0b3JTZXNzaW9uOwogCiAv
KiEKLSAgICBAbWV0aG9kIGNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQKLSAgICBAcmVzdWx0IExvb2tz
IGF0IGFsbCB0aGUgZmFjdG9ycyBvZiB0aGlzIFdlYlZpZXcgYW5kIHJldHVybnMgd2hldGhlciBv
ciBub3QKLSAgICB0aGlzIFdlYlZpZXcgc2hvdWxkIGFsbG93IGEgUmVtb3RlIFdlYiBJbnNwZWN0
b3IgdG8gYXR0YWNoIHRvIGl0LiBUaGlzIHRha2VzCi0gICAgaW50byBhY2NvdW50IC1hbGxvd3NS
ZW1vdGVJbnNwZWN0aW9uLCBQcml2YXRlIEJyb3dzaW5nLCBhbmQgcG90ZW50aWFsbHkgb3RoZXIK
LSAgICBmYWN0b3JzLgotKi8KLS0gKEJPT0wpY2FuQmVSZW1vdGVseUluc3BlY3RlZDsKLQotLyoh
CiAgICAgQG1ldGhvZCBhbGxvd3NSZW1vdGVJbnNwZWN0aW9uCiAgICAgQHJlc3VsdCBSZXR1cm5z
IHdoZXRoZXIgb3Igbm90IHRoaXMgV2ViVmlldyB3aWxsIGFsbG93IGEgUmVtb3RlIFdlYiBJbnNw
ZWN0b3IKICAgICB0byBhdHRhY2ggdG8gaXQuCkBAIC0yOTIsMjEgKzI4NCw2IEBAIHR5cGVkZWYg
ZW51bSB7CiAgICAgQGFic3RyYWN0IGluZGljYXRlIHRoaXMgV2ViVmlldyBvbiBzY3JlZW4gZm9y
IGEgcmVtb3RlIGluc3BlY3Rvci4KICovCiAtICh2b2lkKXNldEluZGljYXRpbmdGb3JSZW1vdGVJ
bnNwZWN0b3I6KEJPT0wpZW5hYmxlZDsKLQotLyoKLSAgICBAbWV0aG9kIHNldFJlbW90ZUluc3Bl
Y3RvclVzZXJJbmZvCi0gICAgQHBhcmFtIHRhZyBUaGUgZGljdGlvbmFyeSB0byBiZSBhc3NvY2lh
dGVkIHdpdGggdGhlIFdlYlZpZXcuCi0gICAgQGFic3RyYWN0IERldmVsb3BlciBzcGVjaWZpZWQg
ZGljdGlvbmFyeSBmb3IgdGhlIFdlYlZpZXcgdGhhdCB3aWxsIGJlCi0gICAgc2VudCB0byB0aGUg
UmVtb3RlIERlYnVnZ2VyLiBUaGUgZGljdGlvbmFyeSBtdXN0IGNvbnRhaW4gcHJvcGVydHkKLSAg
ICBsaXN0IHNlcmlhbGl6YWJsZSB2YWx1ZXMuCi0qLwotLSAodm9pZClzZXRSZW1vdGVJbnNwZWN0
b3JVc2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87Ci0KLS8qIQotICAgIEBtZXRob2Qg
cmVtb3RlSW5zcGVjdG9yVXNlckluZm8KLSAgICBAcmVzdWx0IFJldHVybnMgdGhlIGRpY3Rpb25h
cnkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgV2ViVmlldy4KLSovCi0tIChOU0RpY3Rpb25hcnkgKily
ZW1vdGVJbnNwZWN0b3JVc2VySW5mbzsKICNlbmRpZgogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA2
NjdmM2ViLi42MjYwMmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMt
MTItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5lY3Rpb24g
bWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1v
dGh5IEhhdGNoZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuaDoKKwogMjAxMy0xMS0yNSAgcGVhdm9Ab3V0bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNv
bT4KIAogICAgICAgICBbV2luXSBXZWJLaXQgdmVyc2lvbiBpbiB1c2VyIGFnZW50IHN0cmluZyBp
cyBpbmNvcnJlY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IGU1ZGNiN2EuLjE5MGUwNzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
CkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRp
bmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VMaXN0ZW5lci5oPgogI2luY2x1ZGUgPHdp
bmRvd3MuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKaW5kZXggZDQ1NGMyMy4uZGM5YTZmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93
aW5jZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMi0wMyAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFB1c2gg
UmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGludG8gSmF2
YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdpbkNFLmg6CisKIDIwMTMtMTEt
MDQgIFpodWFuZyBaaGlnYW5nICA8emh1YW5nemdAY24uZnVqaXRzdS5jb20+CiAKICAgICAgICAg
Q2hhbmdlIHN0cnVjdHVyZSBvZiBmcmFtZSB0cmVlIGluIFdJTkNFIHBvcnQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdpbkNF
LmggYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdp
bkNFLmgKaW5kZXggMmFmMjZjOC4uZWRkY2Q2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXaW5DRS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2luQ0UuaApAQCAtMjYs
NyArMjYsNyBAQAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRXaW5DRV9oCiAKICNpbmNsdWRlICJJ
bnNwZWN0b3JDbGllbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JGb3J3YXJkaW5nLmgiCiAKIGNsYXNzIFdlYlZpZXc7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAyODUzOGExLi5hNDdlM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTMtMTItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5l
Y3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3IuY3BwOgorICAgICAgICBVcGRhdGVkIGluY2x1ZGVzLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpX
ZWJQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmlu
OgorICAgICAgICBBbGxvdyB0aGUgV2ViUHJvY2VzcyB0byBhY2Nlc3MgdGhlICJjb20uYXBwbGUu
d2ViaW5zcGVjdG9yIiBuYW1lZAorICAgICAgICBYUEMgc2VydmljZSB0byBleHBvc2UgaXRzIFdl
YkNvcmU6OlBhZ2UncyB0byByZW1vdGUgZGVidWdnZXJzLgorCiAyMDEzLTEyLTAzICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG9sZCBXZWJL
aXQ6OkFQSUNsaWVudCBjcnVmdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggM2VlMmVh
OC4uNGQ3YWQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0zMSw3ICszMSw3IEBA
CiAjaW5jbHVkZSAiUGFnZU92ZXJsYXkuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
Q2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCA2NGQ5OTU1Li5hODkwZjVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNw
ZWN0b3JDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZvcndhcmRpbmcuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9NYWluRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyOWYxZWEzLi5iMTY2OGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC0zNDUsNiArMzQ1LDEwIEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIFdlYkNvcmU6OnBy
b3ZpZGVEZXZpY2VQcm94aW1pdHlUbyhtX3BhZ2UuZ2V0KCksIG5ldyBXZWJEZXZpY2VQcm94aW1p
dHlDbGllbnQodGhpcykpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
KyAgICBtX3BhZ2UtPnNldFJlbW90ZUluc3BlY3Rpb25BbGxvd2VkKHRydWUpOworI2VuZGlmCisK
ICAgICBtX3BhZ2UtPnNldENhblN0YXJ0TWVkaWEoZmFsc2UpOwogICAgIG1fbWF5U3RhcnRNZWRp
YVdoZW5JbldpbmRvdyA9IHBhcmFtZXRlcnMubWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdzsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vz
cy5zYi5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Mu
c2IuaW4KaW5kZXggOTBiYjBlNi4uYzQ3MmMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCkBAIC0xMzksNiArMTM5LDEw
IEBACiAKICNlbmRpZgogCis7OyBSZW1vdGUgV2ViIEluc3BlY3RvcgorKGFsbG93IG1hY2gtbG9v
a3VwCisgICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUud2ViaW5zcGVjdG9yIikpCisKIDs7
IFZhcmlvdXMgc2VydmljZXMgcmVxdWlyZWQgYnkgQXBwS2l0IGFuZCBvdGhlciBmcmFtZXdvcmtz
CiAoYWxsb3cgbWFjaC1sb29rdXAKICAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5EaXNr
QXJiaXRyYXRpb24uZGlza2FyYml0cmF0aW9uZCIpCg==
</data>
<flag name="commit-queue"
          id="241806"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>