<?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>203420</bug_id>
          
          <creation_ts>2019-10-25 09:35:32 -0700</creation_ts>
          <short_desc>Use CF prefs direct mode in the WebContent process</short_desc>
          <delta_ts>2020-10-01 10:59:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=217183</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>212697</dependson>
          <blocked>209765</blocked>
    
    <blocked>210647</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1583862</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2019-10-25 09:35:32 -0700</bug_when>
    <thetext>Enable CF prefs direct mode, in order to avoid connecting to the CF prefs daemon in the WebContent process. In direct mode, the prefs files will be accessed directly, and not through the CF prefs daemon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583873</commentid>
    <comment_count>1</comment_count>
      <attachid>381935</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2019-10-25 09:52:42 -0700</bug_when>
    <thetext>Created attachment 381935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583902</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-10-25 10:56:55 -0700</bug_when>
    <thetext>I&apos;d suggest doing a PLT5 A/B test on this before landing; in the past, loading a CF pref .plist into each WebContent process was a significant slowdown to process startup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583933</commentid>
    <comment_count>3</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2019-10-25 11:39:35 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #2)
&gt; I&apos;d suggest doing a PLT5 A/B test on this before landing; in the past,
&gt; loading a CF pref .plist into each WebContent process was a significant
&gt; slowdown to process startup.

That&apos;s a good point! Perhaps we also should run a memory benchmark?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583996</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-10-25 13:54:14 -0700</bug_when>
    <thetext>(In reply to Per Arne Vollan from comment #3)
&gt; (In reply to Geoffrey Garen from comment #2)
&gt; &gt; I&apos;d suggest doing a PLT5 A/B test on this before landing; in the past,
&gt; &gt; loading a CF pref .plist into each WebContent process was a significant
&gt; &gt; slowdown to process startup.
&gt; 
&gt; That&apos;s a good point! Perhaps we also should run a memory benchmark?

I think it&apos;s OK to rely on our standard bots for memory.

Two more tests you should try, though:

OpenSource/PerformanceTests/LaunchTime/new_tab.py
OpenSource/PerformanceTests/LaunchTime/startup.py

These specifically isolate process startup time. 

(You may need to enable osascript in Terminal to run these, since it is disabled by default now.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584001</commentid>
    <comment_count>5</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2019-10-25 14:03:25 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #4)
&gt; (In reply to Per Arne Vollan from comment #3)
&gt; &gt; (In reply to Geoffrey Garen from comment #2)
&gt; &gt; &gt; I&apos;d suggest doing a PLT5 A/B test on this before landing; in the past,
&gt; &gt; &gt; loading a CF pref .plist into each WebContent process was a significant
&gt; &gt; &gt; slowdown to process startup.
&gt; &gt; 
&gt; &gt; That&apos;s a good point! Perhaps we also should run a memory benchmark?
&gt; 
&gt; I think it&apos;s OK to rely on our standard bots for memory.
&gt; 
&gt; Two more tests you should try, though:
&gt; 
&gt; OpenSource/PerformanceTests/LaunchTime/new_tab.py
&gt; OpenSource/PerformanceTests/LaunchTime/startup.py
&gt; 
&gt; These specifically isolate process startup time. 
&gt; 
&gt; (You may need to enable osascript in Terminal to run these, since it is
&gt; disabled by default now.)

 Sounds good! I will perform these tests :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587480</commentid>
    <comment_count>6</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2019-11-05 11:31:21 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #4)
&gt; (In reply to Per Arne Vollan from comment #3)
&gt; &gt; (In reply to Geoffrey Garen from comment #2)
&gt; &gt; &gt; I&apos;d suggest doing a PLT5 A/B test on this before landing; in the past,
&gt; &gt; &gt; loading a CF pref .plist into each WebContent process was a significant
&gt; &gt; &gt; slowdown to process startup.
&gt; &gt; 
&gt; &gt; That&apos;s a good point! Perhaps we also should run a memory benchmark?
&gt; 
&gt; I think it&apos;s OK to rely on our standard bots for memory.
&gt; 
&gt; Two more tests you should try, though:
&gt; 
&gt; OpenSource/PerformanceTests/LaunchTime/new_tab.py
&gt; OpenSource/PerformanceTests/LaunchTime/startup.py
&gt; 
&gt; These specifically isolate process startup time. 
&gt; 
&gt; (You may need to enable osascript in Terminal to run these, since it is
&gt; disabled by default now.)

This patch appears to be PLT neutral on iOS and macOS. I will test launch time next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611110</commentid>
    <comment_count>7</comment_count>
      <attachid>388788</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-01-25 15:23:25 -0800</bug_when>
    <thetext>Created attachment 388788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611111</commentid>
    <comment_count>8</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-01-25 15:23:53 -0800</bug_when>
    <thetext>(In reply to Per Arne Vollan from comment #7)
&gt; Created attachment 388788 [details]
&gt; Patch

WIP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611125</commentid>
    <comment_count>9</comment_count>
      <attachid>388794</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-01-25 19:04:17 -0800</bug_when>
    <thetext>Created attachment 388794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611179</commentid>
    <comment_count>10</comment_count>
      <attachid>388794</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-26 10:58:22 -0800</bug_when>
    <thetext>Comment on attachment 388794
Patch

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

&gt; Source/WTF/wtf/Platform.h:196
&gt; +#define ENABLE_CFPREFS_DIRECT_MODE 1

This should probably be more specific, since this is presumably only for WebKit helper services and say, would not apply to WebKit 1.  Also, as this is an ENABLE, it should go in PlatformEnable.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611481</commentid>
    <comment_count>11</comment_count>
      <attachid>388874</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-01-27 11:06:27 -0800</bug_when>
    <thetext>Created attachment 388874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611485</commentid>
    <comment_count>12</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-01-27 11:10:46 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #10)
&gt; Comment on attachment 388794 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388794&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/Platform.h:196
&gt; &gt; +#define ENABLE_CFPREFS_DIRECT_MODE 1
&gt; 
&gt; This should probably be more specific, since this is presumably only for
&gt; WebKit helper services and say, would not apply to WebKit 1.  Also, as this
&gt; is an ENABLE, it should go in PlatformEnable.h

Made define more specific, and changed to a USE macro.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611496</commentid>
    <comment_count>13</comment_count>
      <attachid>388878</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-01-27 11:46:50 -0800</bug_when>
    <thetext>Created attachment 388878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611783</commentid>
    <comment_count>14</comment_count>
      <attachid>388878</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-27 19:54:44 -0800</bug_when>
    <thetext>Comment on attachment 388878
Patch

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

&gt; Source/WTF/wtf/Platform.h:197
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101400) || PLATFORM(IOS_FAMILY)
&gt; +#define USE_CFPREFS_DIRECT_MODE_IN_WEBCONTENT_PROCESS 1
&gt; +#endif

Use macros should go in PlatformUse.h!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611915</commentid>
    <comment_count>15</comment_count>
      <attachid>388992</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-01-28 07:42:13 -0800</bug_when>
    <thetext>Created attachment 388992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611916</commentid>
    <comment_count>16</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-01-28 07:42:47 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #14)
&gt; Comment on attachment 388878 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388878&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/Platform.h:197
&gt; &gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101400) || PLATFORM(IOS_FAMILY)
&gt; &gt; +#define USE_CFPREFS_DIRECT_MODE_IN_WEBCONTENT_PROCESS 1
&gt; &gt; +#endif
&gt; 
&gt; Use macros should go in PlatformUse.h!

Fixed.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611931</commentid>
    <comment_count>17</comment_count>
      <attachid>388998</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-01-28 08:27:12 -0800</bug_when>
    <thetext>Created attachment 388998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612434</commentid>
    <comment_count>18</comment_count>
      <attachid>389136</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-01-29 07:30:08 -0800</bug_when>
    <thetext>Created attachment 389136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612582</commentid>
    <comment_count>19</comment_count>
      <attachid>389136</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-01-29 11:22:17 -0800</bug_when>
    <thetext>Comment on attachment 389136
Patch

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

&gt; Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:858
&gt; +void WebProcess::notifyPreferencesChanged(const String&amp; domain)
&gt; +{
&gt; +    _CFPreferencesFlushCachesForIdentifier(domain.createCFString().get(), kCFPreferencesCurrentUser);
&gt; +}

Is this approach sufficient? My understanding is that, after a preference changes, the change is not written to disk immediately. Therefore, flushing the cache may trigger a re-read from disk, but the re-read may not see the new value. (I thought we were going to address this by setting the new preference explicitly in the WebContent process. Did our plan change?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612593</commentid>
    <comment_count>20</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-01-29 11:38:32 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #19)
&gt; Comment on attachment 389136 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=389136&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:858
&gt; &gt; +void WebProcess::notifyPreferencesChanged(const String&amp; domain)
&gt; &gt; +{
&gt; &gt; +    _CFPreferencesFlushCachesForIdentifier(domain.createCFString().get(), kCFPreferencesCurrentUser);
&gt; &gt; +}
&gt; 
&gt; Is this approach sufficient? My understanding is that, after a preference
&gt; changes, the change is not written to disk immediately. Therefore, flushing
&gt; the cache may trigger a re-read from disk, but the re-read may not see the
&gt; new value. (I thought we were going to address this by setting the new
&gt; preference explicitly in the WebContent process. Did our plan change?)

That is a good point. I thought this would be sufficient, but I think you are right in that the new preference value might not be on disk yet. I will update the patch.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616589</commentid>
    <comment_count>21</comment_count>
      <attachid>390179</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-02-08 13:28:41 -0800</bug_when>
    <thetext>Created attachment 390179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616762</commentid>
    <comment_count>22</comment_count>
      <attachid>390179</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-09 20:58:11 -0800</bug_when>
    <thetext>Comment on attachment 390179
Patch

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

I see multiple problems here, but I don’t know the entire background.

&gt; Source/WTF/wtf/PlatformUse.h:313
&gt; +#if PLATFORM(MAC) || PLATFORM(IOS_FAMILY)
&gt; +#define USE_CFPREFS_DIRECT_MODE_IN_WEBCONTENT_PROCESS 1
&gt; +#endif

This seems unnecessary. It’s true on all Cocoa platforms, and the only place it’s used is in a Cocoa-only source file.

&gt; Source/WebCore/testing/Internals.cpp:5464
&gt; +long Internals::readPreferenceInteger(const String&amp; domain, const String&amp; key)

long in IDL is the same as &quot;int&quot; in .h/.cpp so this should be int, not long

&gt; Source/WebCore/testing/Internals.h:936
&gt; +    long readPreferenceInteger(const String&amp; domain, const String&amp; key);

long in IDL is the same as &quot;int&quot; in .h/.cpp so this should be int, not long

&gt; Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:39
&gt; +extern &quot;C&quot; void _CFPrefsSetDirectModeEnabled(BOOL enabled);

This should be in an SPI header, rather than right here.

&gt; Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:121
&gt; +#if USE(CFPREFS_DIRECT_MODE_IN_WEBCONTENT_PROCESS)

This conditional seems unnecessary. This is a Cocoa-only source file.

&gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:28
&gt; +@interface NSObject (PrivateKVOMethods)

This should be in an SPI header instead of here.

&gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:37
&gt; +- (void)_notifyObserversOfChangeFromValuesForKeys:(NSDictionary&lt;NSString *, id&gt; *)oldValues toValuesForKeys:(NSDictionary&lt;NSString *, id&gt; *)newValues;

I don’t think this needs to be declared. It’s part of the implementation, not the interface.

&gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:39
&gt; +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary&lt;NSKeyValueChangeKey, id&gt; *)change context:(void *)context;

Ditto. Overridding something in the inherited class isn’t normally needed.

&gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:44
&gt; +@implementation WKUserDefaults

Why is the class implementation in a header file? I don’t think it should be.

&gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:46
&gt; +- (void)_notifyObserversOfChangeFromValuesForKeys:(NSDictionary&lt;NSString *, id&gt; *)oldValues toValuesForKeys:(NSDictionary&lt;NSString *, id&gt; *)newValues

Is this a good technique, allocating a subclass of NSUserDefaults? Is it guaranteed to work?

&gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:70
&gt; +        for (auto* processPool : WebKit::WebProcessPool::allProcessPools())

Each process pool is going to have its own WKPreferenceObserver. Each WKPreferenceObserver is going to have its own sets of many WKUserDefaults objects. But all of them are going to call out to all process pools. Does this mean we are getting multiple notifyPreferencesChanged calls? I don’t think this is right.

&gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:71
&gt; +            processPool-&gt;notifyPreferencesChanged(m_suiteName, String(key), String(encodedString));

Should not need to explicitly write String() here.

&gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:95
&gt; +@implementation WKPreferenceObserver

Why is the class implementation in a header file? I don’t think it should be.

&gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:190
&gt; +        [userDefaults.get() addObserver:userDefaults.get() forKeyPath:@&quot;testkey&quot; options:NSKeyValueObservingOptionNew context:nil];

What is this about? Why are we observing a single test key in each defaults object? This is the kind of non-obvious code that needs comments explaining why it works.

The technique here is very difficult to understand and I don’t see sufficient test coverage, just one test.

&gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:561
&gt; +#if PLATFORM(COCOA)

Should not need #if PLATFORM(COCOA) in a file named ...Cocoa.mm

&gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:741
&gt; +        process-&gt;send(Messages::WebProcess::NotifyPreferencesChanged(domain, key, encodedValue), 0);
&gt; +
&gt; +}

Extra blank line here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617072</commentid>
    <comment_count>23</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-02-10 13:35:39 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #22)
&gt; Comment on attachment 390179 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=390179&amp;action=review
&gt; 
&gt; I see multiple problems here, but I don’t know the entire background.
&gt; 
&gt; &gt; Source/WTF/wtf/PlatformUse.h:313
&gt; &gt; +#if PLATFORM(MAC) || PLATFORM(IOS_FAMILY)
&gt; &gt; +#define USE_CFPREFS_DIRECT_MODE_IN_WEBCONTENT_PROCESS 1
&gt; &gt; +#endif
&gt; 
&gt; This seems unnecessary. It’s true on all Cocoa platforms, and the only place
&gt; it’s used is in a Cocoa-only source file.
&gt; 
&gt; &gt; Source/WebCore/testing/Internals.cpp:5464
&gt; &gt; +long Internals::readPreferenceInteger(const String&amp; domain, const String&amp; key)
&gt; 
&gt; long in IDL is the same as &quot;int&quot; in .h/.cpp so this should be int, not long
&gt; 
&gt; &gt; Source/WebCore/testing/Internals.h:936
&gt; &gt; +    long readPreferenceInteger(const String&amp; domain, const String&amp; key);
&gt; 
&gt; long in IDL is the same as &quot;int&quot; in .h/.cpp so this should be int, not long
&gt; 
&gt; &gt; Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:39
&gt; &gt; +extern &quot;C&quot; void _CFPrefsSetDirectModeEnabled(BOOL enabled);
&gt; 
&gt; This should be in an SPI header, rather than right here.
&gt; 
&gt; &gt; Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:121
&gt; &gt; +#if USE(CFPREFS_DIRECT_MODE_IN_WEBCONTENT_PROCESS)
&gt; 
&gt; This conditional seems unnecessary. This is a Cocoa-only source file.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:28
&gt; &gt; +@interface NSObject (PrivateKVOMethods)
&gt; 
&gt; This should be in an SPI header instead of here.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:37
&gt; &gt; +- (void)_notifyObserversOfChangeFromValuesForKeys:(NSDictionary&lt;NSString *, id&gt; *)oldValues toValuesForKeys:(NSDictionary&lt;NSString *, id&gt; *)newValues;
&gt; 
&gt; I don’t think this needs to be declared. It’s part of the implementation,
&gt; not the interface.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:39
&gt; &gt; +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary&lt;NSKeyValueChangeKey, id&gt; *)change context:(void *)context;
&gt; 
&gt; Ditto. Overridding something in the inherited class isn’t normally needed.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:44
&gt; &gt; +@implementation WKUserDefaults
&gt; 
&gt; Why is the class implementation in a header file? I don’t think it should be.
&gt; 

I will create an implementation file, PreferenceObserver.mm.

&gt; &gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:46
&gt; &gt; +- (void)_notifyObserversOfChangeFromValuesForKeys:(NSDictionary&lt;NSString *, id&gt; *)oldValues toValuesForKeys:(NSDictionary&lt;NSString *, id&gt; *)newValues
&gt; 
&gt; Is this a good technique, allocating a subclass of NSUserDefaults? Is it
&gt; guaranteed to work?
&gt; 

I am not aware of any issues doing this and believe it should be safe, but I will investigate and double-check to make sure.


&gt; &gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:70
&gt; &gt; +        for (auto* processPool : WebKit::WebProcessPool::allProcessPools())
&gt; 
&gt; Each process pool is going to have its own WKPreferenceObserver. Each
&gt; WKPreferenceObserver is going to have its own sets of many WKUserDefaults
&gt; objects. But all of them are going to call out to all process pools. Does
&gt; this mean we are getting multiple notifyPreferencesChanged calls? I don’t
&gt; think this is right.
&gt; 

Ah, good point! I think I will create a static NeverDestroyed&lt;PreferenceObserver&gt;.

&gt; &gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:71
&gt; &gt; +            processPool-&gt;notifyPreferencesChanged(m_suiteName, String(key), String(encodedString));
&gt; 
&gt; Should not need to explicitly write String() here.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:95
&gt; &gt; +@implementation WKPreferenceObserver
&gt; 
&gt; Why is the class implementation in a header file? I don’t think it should be.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:190
&gt; &gt; +        [userDefaults.get() addObserver:userDefaults.get() forKeyPath:@&quot;testkey&quot; options:NSKeyValueObservingOptionNew context:nil];
&gt; 
&gt; What is this about? Why are we observing a single test key in each defaults
&gt; object? This is the kind of non-obvious code that needs comments explaining
&gt; why it works.
&gt; 
&gt; The technique here is very difficult to understand and I don’t see
&gt; sufficient test coverage, just one test.
&gt; 

This is to make the preference daemon become aware of our NSUserDefaults instances, so that we get the KVO notifications. I will add a comment in the code.

&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:561
&gt; &gt; +#if PLATFORM(COCOA)
&gt; 
&gt; Should not need #if PLATFORM(COCOA) in a file named ...Cocoa.mm
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:741
&gt; &gt; +        process-&gt;send(Messages::WebProcess::NotifyPreferencesChanged(domain, key, encodedValue), 0);
&gt; &gt; +
&gt; &gt; +}
&gt; 
&gt; Extra blank line here.

Thanks for reviewing! I will update the patch accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617078</commentid>
    <comment_count>24</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-02-10 13:42:09 -0800</bug_when>
    <thetext>(In reply to Per Arne Vollan from comment #23)
&gt; (In reply to Darin Adler from comment #22)
&gt; &gt; Comment on attachment 390179 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=390179&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.h:190
&gt; &gt; &gt; +        [userDefaults.get() addObserver:userDefaults.get() forKeyPath:@&quot;testkey&quot; options:NSKeyValueObservingOptionNew context:nil];
&gt; &gt; 
&gt; &gt; What is this about? Why are we observing a single test key in each defaults
&gt; &gt; object? This is the kind of non-obvious code that needs comments explaining
&gt; &gt; why it works.
&gt; &gt; 
&gt; &gt; The technique here is very difficult to understand and I don’t see
&gt; &gt; sufficient test coverage, just one test.
&gt; &gt; 
&gt; 
&gt; This is to make the preference daemon become aware of our NSUserDefaults
&gt; instances, so that we get the KVO notifications. I will add a comment in the
&gt; code.
&gt; 

We cannot use normal KVO techniques here, since we are looking for _any_ changes in a preference domain. For normal KVO techniques to work, we need to provide the specific key(s) we want to observe, but that set of keys is unknown to us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618312</commentid>
    <comment_count>25</comment_count>
      <attachid>390589</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-02-12 16:47:03 -0800</bug_when>
    <thetext>Created attachment 390589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618319</commentid>
    <comment_count>26</comment_count>
      <attachid>390593</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-02-12 17:05:44 -0800</bug_when>
    <thetext>Created attachment 390593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618339</commentid>
    <comment_count>27</comment_count>
      <attachid>390601</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-02-12 17:47:46 -0800</bug_when>
    <thetext>Created attachment 390601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618530</commentid>
    <comment_count>28</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-02-13 09:23:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/58493414&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618693</commentid>
    <comment_count>29</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-02-13 13:45:50 -0800</bug_when>
    <thetext>I have tested on iOS and macOS now, and have not encountered any issues with the notification mechanism so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619561</commentid>
    <comment_count>30</comment_count>
      <attachid>390601</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-02-16 20:12:31 -0800</bug_when>
    <thetext>Comment on attachment 390601
Patch

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

r=me

&gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.mm:90
&gt; +    std::initializer_list&lt;NSString*&gt; domains = {

Do we have a way to identify other domains we will need to access if some are missing from this list?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619723</commentid>
    <comment_count>31</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-02-17 10:35:27 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #30)
&gt; Comment on attachment 390601 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=390601&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/PreferenceObserver.mm:90
&gt; &gt; +    std::initializer_list&lt;NSString*&gt; domains = {
&gt; 
&gt; Do we have a way to identify other domains we will need to access if some
&gt; are missing from this list?

Yes, I believe that whenever we need to expand the WebContent sandbox with read privileges to a new preference domain, we also need to add the domain to this list.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619769</commentid>
    <comment_count>32</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-02-17 11:52:24 -0800</bug_when>
    <thetext>Committed r256756: &lt;https://trac.webkit.org/changeset/256756/webkit&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381935</attachid>
            <date>2019-10-25 09:52:42 -0700</date>
            <delta_ts>2020-01-25 19:04:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203420-20191025095241.patch</filename>
            <type>text/plain</type>
            <size>4923</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTE1OTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE5LTEwLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4g
dGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIEVOQUJMRSBkZWZpbmUgZm9yIENGIHByZWZzIGRpcmVjdCBtb2Rl
LgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTktMTAtMjMgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBGaWd1cmUgb3V0IG1pc3Np
bmcgcHJlcGFyZUNhbGxPcGVyYXRpb24KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMjUxNTcy
KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTY1Niwz
ICsxNjU2LDcgQEAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTUwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9S
TShJT1NfRkFNSUxZX1NJTVVMQVRPUikpCiAjZGVmaW5lIEhBVkVfTkVBUl9GSUVMRCAxCiAjZW5k
aWYKKworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQorI2RlZmluZSBFTkFCTEVfQ0ZQ
UkVGU19ESVJFQ1RfTU9ERSAxCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTE1OTQp
CisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIx
IEBACisyMDE5LTEwLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDIw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxl
IENGIHByZWZzIGRpcmVjdCBtb2RlLCBpbiBvcmRlciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRo
ZSBDRiBwcmVmcyBkYWVtb24gaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKyAgICAgICAgSW4g
ZGlyZWN0IG1vZGUsIHRoZSBwcmVmcyBmaWxlcyB3aWxsIGJlIGFjY2Vzc2VkIGRpcmVjdGx5LCBh
bmQgbm90IHRocm91Z2ggdGhlIENGIHByZWZzIGRhZW1vbi4gVGhlIHNhbmRib3gKKyAgICAgICAg
aGFzIGJlZW4gbW9kaWZpZWQgdG8gc2VuZCBTSUdLSUxMIGlmIHRoZSBDRiBwcmVmcyBkYWVtb24g
aXMgYmVpbmcgY29ubmVjdGVkIHRvLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMv
aW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjoKKyAgICAgICAgKiBTaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tOgorICAg
ICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlTWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb20u
YXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjoKKwogMjAxOS0xMC0yNSAgeW91ZW5uIGZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgbXA0IHZpZGVvIGVsZW1lbnQgYnJva2VuIHdpdGgg
c2VydmljZSB3b3JrZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9m
aWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktp
dC5XZWJDb250ZW50LnNiCShyZXZpc2lvbiAyNTE1NzIpCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291
cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgko
d29ya2luZyBjb3B5KQpAQCAtOTA5LDYgKzkwOSw5IEBACiAKIChhbGxvdyBtYWNoLWxvb2t1cCAo
ZXh0ZW5zaW9uICJjb20uYXBwbGUud2Via2l0LmV4dGVuc2lvbi5tYWNoIikpCiAKKyhkZW55IG1h
Y2gtbG9va3VwICh3aXRoIHNlbmQtc2lnbmFsIFNJR0tJTEwpCisgICAgKGdsb2JhbC1uYW1lICJj
b20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIikpCisKIDs7IFRoZXNlIHNlcnZpY2VzIGhhdmUgYmVl
biBpZGVudGlmaWVkIGFzIHVudXNlZCBkdXJpbmcgbGl2aW5nLW9uLgogOzsgVGhpcyBsaXN0IG92
ZXJyaWRlcyBzb21lIGRlZmluaXRpb25zIGFib3ZlIGFuZCBpbiBjb21tb24uc2IuCiA7OyBGSVhN
RTogcmVtb3ZlIG92ZXJyaWRkZW4gcnVsZXMgb25jZSB0aGUgZmluYWwgbGlzdCBoYXMgYmVlbgpJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5t
bQkocmV2aXNpb24gMjUxNTcyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0
aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw2ICszNiw4IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0FwcGxpY2F0aW9uU1BJ
Lmg+CiAjZW5kaWYKIAorZXh0ZXJuICJDIiB2b2lkIF9DRlByZWZzU2V0RGlyZWN0TW9kZUVuYWJs
ZWQoQk9PTCBlbmFibGVkKTsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyB2b2lkIFhQ
Q1NlcnZpY2VFdmVudEhhbmRsZXIoeHBjX2Nvbm5lY3Rpb25fdCBwZWVyKQpAQCAtMTAzLDYgKzEw
NSwxMSBAQCBpbnQgWFBDU2VydmljZU1haW4oaW50LCBjb25zdCBjaGFyKiopCiAgICAgfSk7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShDRlBSRUZTX0RJUkVDVF9NT0RFKQorICAgIC8vIEVuYWJsZSBD
RiBwcmVmcyBkaXJlY3QgbW9kZSB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBDRiBwcmVmcyBk
YWVtb24uCisgICAgX0NGUHJlZnNTZXREaXJlY3RNb2RlRW5hYmxlZChZRVMpOworI2VuZGlmCisK
ICAgICBpZiAoYm9vdHN0cmFwKSB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBpZiAoY29u
c3QgY2hhciogd2ViS2l0QnVuZGxlVmVyc2lvbiA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmco
Ym9vdHN0cmFwLmdldCgpLCAiV2ViS2l0QnVuZGxlVmVyc2lvbiIpKSB7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCShy
ZXZpc2lvbiAyNTE1NzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldl
YlByb2Nlc3Muc2IuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU4Nyw2ICs1ODcsOSBAQAogKGFsbG93
IG1hY2gtbG9va3VwCiAgICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUud2ViaW5zcGVjdG9y
IikpCiAKKyhkZW55IG1hY2gtbG9va3VwICh3aXRoIHNlbmQtc2lnbmFsIFNJR0tJTEwpCisgICAg
KGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIikpCisKIDs7IFZhcmlvdXMg
c2VydmljZXMgcmVxdWlyZWQgYnkgQXBwS2l0IGFuZCBvdGhlciBmcmFtZXdvcmtzCiAoYWxsb3cg
bWFjaC1sb29rdXAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNDAw
CkBAIC02MDEsNyArNjA0LDYgQEAKICAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5hdWRp
by5hdWRpb2hhbGQiKQogICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmF3ZGQiKQogICAg
ICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNmcHJlZnNkLmFnZW50IikKLSAgICAgICAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS5jZnByZWZzZC5kYWVtb24iKQogICAgICAgIChnbG9iYWwtbmFt
ZSAiY29tLmFwcGxlLmNtaW8ucmVnaXN0ZXJhc3Npc3RhbnRzZXJ2aWNlIikgOzsgTmVlZGVkIGJ5
IENvcmVNZWRpYSBmb3IgcGx1Z2luIGRyaXZlcnMKICAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5h
cHBsZS5jb29raWVkIikKICAgICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jb3Jlc2Vydmlj
ZXMubGF1bmNoc2VydmljZXNkIikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388788</attachid>
            <date>2020-01-25 15:23:25 -0800</date>
            <delta_ts>2020-01-25 19:04:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203420-20200125152324.patch</filename>
            <type>text/plain</type>
            <size>17647</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTUwODApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4g
dGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIEVOQUJMRSBkZWZpbmUgZm9yIENGIHByZWZzIGRpcmVjdCBtb2Rl
LgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMjAtMDEtMjQgIEpvbmF0aGFuIEJl
ZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFdURjogUmVtb3ZlIG9sZCBpT1Mg
dmVyc2lvbiBtYWNyb3MKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMjU1MDgwKQorKysgU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDMgKzE5MSw3IEBA
CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShBQ0NFU1NJQklMSVRZKQogI2RlZmluZSBV
U0VfQUNDRVNTSUJJTElUWV9DT05URVhUX01FTlVTIDEKICNlbmRpZgorCisjaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBM
QVRGT1JNKElPU19GQU1JTFkpCisjZGVmaW5lIEVOQUJMRV9DRlBSRUZTX0RJUkVDVF9NT0RFIDEK
KyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZVdGlsaXRpZXNT
UEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRlV0aWxp
dGllc1NQSS5oCShyZXZpc2lvbiAyNTUwODApCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jZi9DRlV0aWxpdGllc1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw0ICs1OCw2IEBAIENG
RGljdGlvbmFyeVJlZiBfQ0ZXZWJTZXJ2aWNlc0NvcHlQcm92aWQKIAogdm9pZCBfX0NGUnVuTG9v
cFNldE9wdGlvbnNSZWFzb24oX19DRlJ1bkxvb3BPcHRpb25zIG9wdHMsIENGU3RyaW5nUmVmIHJl
YXNvbik7CiAKK3ZvaWQgX0NGUHJlZmVyZW5jZXNGbHVzaENhY2hlc0ZvcklkZW50aWZpZXIoQ0ZT
dHJpbmdSZWYgYXBwbGljYXRpb25JRCwgQ0ZTdHJpbmdSZWYgdXNlck5hbWUpOworCiBXVEZfRVhU
RVJOX0NfRU5ECkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU1MTI1KQorKysgU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOCBAQAorMjAyMC0wMS0yNSAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENGIHBy
ZWZzIGRpcmVjdCBtb2RlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQyMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBDRiBwcmVmcyBkaXJlY3Qg
bW9kZSwgaW4gb3JkZXIgdG8gYXZvaWQgY29ubmVjdGluZyB0byB0aGUgQ0YgcHJlZnMgZGFlbW9u
IGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisgICAgICAgIEluIGRpcmVjdCBtb2RlLCB0aGUg
cHJlZnMgZmlsZXMgd2lsbCBiZSBhY2Nlc3NlZCBkaXJlY3RseSwgYW5kIG5vdCB0aHJvdWdoIHRo
ZSBDRiBwcmVmcyBkYWVtb24uIEEgcHJlZmVyZW5jZQorICAgICAgICBvYnNlcnZlciBpcyBhZGRl
ZCBpbiB0aGUgVUkgcHJvY2Vzcywgd2hpY2ggd2lsbCBub3RpZnkgdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcyBhYm91dCBwcmVmZXJlbmNlcyBjaGFuZ2VzIHRvIGEKKyAgICAgICAgZG9tYWluLiBBZnRl
ciBhIHByZWZlcmVuY2UgY2hhbmdlLCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHdpbGwgZmx1c2gg
dGhlIHByZWZlcmVuY2UgY2FjaGUgZm9yIHRoZSBjaGFuZ2VkCisgICAgICAgIGRvbWFpbi4KKwor
ICAgICAgICBBUEkgdGVzdDogV2ViS2l0LlByZWZlcmVuY2VzCisKKyAgICAgICAgKiBSZXNvdXJj
ZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2I6Cisg
ICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENT
ZXJ2aWNlTWFpbi5tbToKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZU1haW4pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIuaDogQWRkZWQuCisgICAgICAg
ICgtW1dLVXNlckRlZmF1bHRzIF9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JL
ZXlzOnRvVmFsdWVzRm9yS2V5czpdKToKKyAgICAgICAgKC1bV0tVc2VyRGVmYXVsdHMgb2JzZXJ2
ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKC1b
V0tVc2VyRGVmYXVsdHMgaW5pdFdpdGhTdWl0ZU5hbWU6XSk6CisgICAgICAgICgtW1dLUHJlZmVy
ZW5jZU9ic2VydmVyIGluaXRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVy
Tm90aWZpY2F0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bm90aWZ5UHJl
ZmVyZW5jZXNDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9j
ZXNzLnNiLmluOgorCiAyMDIwLTAxLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ29jb2FdIE1lZGlhIG1pbWUgdHlwZXMgbWFwIHNob3VsZCBiZSBj
cmVhdGVkIGluIHRoZSBVSSBwcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9T
YW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkocmV2aXNpb24gMjU1MDgwKQorKysgU291cmNlL1dl
YktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNv
bnRlbnQuc2IJKHdvcmtpbmcgY29weSkKQEAgLTYwMCw3ICs2MDAsNyBAQAogKGFsbG93IG1hY2gt
bG9va3VwCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUubG9nZCIpCiAgICAgKGdsb2JhbC1u
YW1lICJjb20uYXBwbGUubG9nZC5ldmVudHMiKQotICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxl
LmNmcHJlZnNkLmRhZW1vbiIpKQorKQogCiAoYWxsb3cgbWFjaC1sb29rdXAgKHdpdGggcmVwb3J0
KSAod2l0aCB0ZWxlbWV0cnkpCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuYWdncmVnYXRl
ZCIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29h
L1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VN
YWluLm1tCShyZXZpc2lvbiAyNTUwODApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDYgKzM2LDggQEAKICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TQXBwbGljYXRp
b25TUEkuaD4KICNlbmRpZgogCitleHRlcm4gIkMiIHZvaWQgX0NGUHJlZnNTZXREaXJlY3RNb2Rl
RW5hYmxlZChCT09MIGVuYWJsZWQpOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIHZv
aWQgWFBDU2VydmljZUV2ZW50SGFuZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIpCkBAIC0xMTYs
NiArMTE4LDExIEBAIGludCBYUENTZXJ2aWNlTWFpbihpbnQsIGNvbnN0IGNoYXIqKikKICAgICB9
KTsKICNlbmRpZgogCisjaWYgRU5BQkxFKENGUFJFRlNfRElSRUNUX01PREUpCisgICAgLy8gRW5h
YmxlIENGIHByZWZzIGRpcmVjdCBtb2RlIHRvIGF2b2lkIGNvbm5lY3RpbmcgdG8gdGhlIENGIHBy
ZWZzIGRhZW1vbi4KKyAgICBfQ0ZQcmVmc1NldERpcmVjdE1vZGVFbmFibGVkKFlFUyk7CisjZW5k
aWYKKwogICAgIGlmIChib290c3RyYXApIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIGlm
IChjb25zdCBjaGFyKiB3ZWJLaXRCdW5kbGVWZXJzaW9uID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0
cmluZyhib290c3RyYXAuZ2V0KCksICJXZWJLaXRCdW5kbGVWZXJzaW9uIikpIHsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMjU1MDgwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5
KQpAQCAtNzIsNiArNzIsNyBAQCBPQkpDX0NMQVNTIE5TTXV0YWJsZURpY3Rpb25hcnk7CiBPQkpD
X0NMQVNTIE5TT2JqZWN0OwogT0JKQ19DTEFTUyBOU1NldDsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7
CitPQkpDX0NMQVNTIFdLUHJlZmVyZW5jZU9ic2VydmVyOwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKQEAgLTU0
MCw2ICs1NDEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29y
a2VyUHJvY2Vzcyhib29sKTsKICAgICBib29sIHVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nl
c3MoKSBjb25zdCB7IHJldHVybiBtX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3M7IH0K
IAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgbm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYgZG9tYWluKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTgwMSw2ICs4MDYsMTAgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1faXNEZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERpc2FibGVkIHsgZmFsc2UgfTsKICNlbmRp
ZgogICAgIGJvb2wgbV91c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzIHsgZmFsc2UgfTsK
KworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxXS1ByZWZlcmVuY2VPYnNlcnZl
cj4gbV9wcmVmZXJlbmNlT2JzZXJ2ZXI7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJl
bmNlT2JzZXJ2ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNSBA
QAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21h
IG9uY2UKKworQGludGVyZmFjZSBOU09iamVjdCAoUHJpdmF0ZUtWT01ldGhvZHMpCistICh2b2lk
KV9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgaWQ+ICopb2xkVmFsdWVzIHRvVmFsdWVzRm9yS2V5czooTlNEaWN0aW9uYXJ5
PE5TU3RyaW5nICosIGlkPiAqKW5ld1ZhbHVlczsKK0BlbmQKKworQGludGVyZmFjZSBXS1VzZXJE
ZWZhdWx0cyA6IE5TVXNlckRlZmF1bHRzIHsKK0Bwcml2YXRlCisgICAgU3RyaW5nIG1fc3VpdGVO
YW1lOworfQorCistICh2b2lkKV9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JL
ZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopb2xkVmFsdWVzIHRvVmFsdWVzRm9y
S2V5czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKW5ld1ZhbHVlczsKKworLSAodm9p
ZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlk
KW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeTxOU0tleVZhbHVlQ2hhbmdlS2V5LCBpZD4gKilj
aGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQ7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFN1aXRlTmFtZTooTlNTdHJpbmcgKilzdWl0ZW5hbWU7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBXS1VzZXJEZWZhdWx0cworCistICh2b2lkKV9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21W
YWx1ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopb2xkVmFsdWVzIHRv
VmFsdWVzRm9yS2V5czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKW5ld1ZhbHVlcwor
eworICAgIFtzdXBlciBfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VGcm9tVmFsdWVzRm9yS2V5czpv
bGRWYWx1ZXMgdG9WYWx1ZXNGb3JLZXlzOm5ld1ZhbHVlc107CisKKyAgICBpZiAoW29sZFZhbHVl
cyBpc0VxdWFsVG9EaWN0aW9uYXJ5Om5ld1ZhbHVlc10pCisgICAgICAgIHJldHVybjsKKworICAg
IGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjphbGxQcm9j
ZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPm5vdGlmeVByZWZlcmVuY2VzQ2hhbmdl
ZChtX3N1aXRlTmFtZSk7CisKKyAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gbmV3VmFsdWVzKSB7
CisgICAgICAgIGlkIHZhbHVlID0gbmV3VmFsdWVzW2tleV07CisgICAgICAgIE5TTG9nKEAiVmFs
dWU6ICVAIGZvciBrZXk6ICVAIiwgdmFsdWUsIGtleSk7CisgICAgfQorfQorCistICh2b2lkKW9i
c2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2Jq
ZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5PE5TS2V5VmFsdWVDaGFuZ2VLZXksIGlkPiAqKWNoYW5n
ZSBjb250ZXh0Oih2b2lkICopY29udGV4dAoreworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhTdWl0ZU5hbWU6KE5TU3RyaW5nICopc3VpdGVuYW1lCit7CisgICAgbV9zdWl0ZU5hbWUgPSBz
dWl0ZW5hbWU7CisgICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aFN1aXRlTmFtZTpzdWl0ZW5hbWVd
OworfQorCitAZW5kCisKK0BpbnRlcmZhY2UgV0tQcmVmZXJlbmNlT2JzZXJ2ZXIgOiBOU09iamVj
dCB7CitAcHJpdmF0ZQorICAgIFZlY3RvcjxSZXRhaW5QdHI8V0tVc2VyRGVmYXVsdHM+PiBtX3Vz
ZXJEZWZhdWx0czsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXQ7CitAZW5kCisKK0BpbXBsZW1l
bnRhdGlvbiBXS1ByZWZlcmVuY2VPYnNlcnZlcgorCistIChpbnN0YW5jZXR5cGUpaW5pdAorewor
ICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxOU1N0cmluZyo+IGRvbWFpbnMgPSB7CisgICAgICAg
IEAiY29tLmFwcGxlLkFjY2Vzc2liaWxpdHkiLAorICAgICAgICBAImNvbS5hcHBsZS5BZExpYiIs
CisgICAgICAgIEAiY29tLmFwcGxlLkNGTmV0d29yayIsCisgICAgICAgIEAiY29tLmFwcGxlLkZv
bnRQYXJzZXIiLAorICAgICAgICBAImNvbS5hcHBsZS5JbWFnZUlPIiwKKyAgICAgICAgQCJjb20u
YXBwbGUuTWV0YWwiLAorICAgICAgICBAImNvbS5hcHBsZS5VSUtpdCIsCisgICAgICAgIEAiY29t
LmFwcGxlLldlYkZvdW5kYXRpb24iLAorICAgICAgICBAImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudCIsCisgICAgICAgIEAiY29tLmFwcGxlLmFwcGxlanBlZyIsCisgICAgICAgIEAiY29tLmFw
cGxlLmF1ZGlvLnZpcnR1YWxhdWRpbyIsCisgICAgICAgIEAiY29tLmFwcGxlLmF2ZmF1ZGlvIiwK
KyAgICAgICAgQCJjb20uYXBwbGUuYXZmb3VuZGF0aW9uIiwKKyAgICAgICAgQCJjb20uYXBwbGUu
YXZmb3VuZGF0aW9uLnZpZGVvcGVyZm9ybWFuY2VodWQiLAorICAgICAgICBAImNvbS5hcHBsZS5j
b3JlYXVkaW8iLAorICAgICAgICBAImNvbS5hcHBsZS5jb3JlbWVkaWEiLAorICAgICAgICBAImNv
bS5hcHBsZS5jb3JldmlkZW8iLAorICAgICAgICBAImNvbS5hcHBsZS5sb29rdXAuc2hhcmVkIiwK
KyAgICAgICAgQCJjb20uYXBwbGUubWVkaWFhY2Nlc3NpYmlsaXR5IiwKKyAgICB9OworICAgIGZv
ciAoYXV0byBkb21haW4gOiBkb21haW5zKSB7CisgICAgICAgIGF1dG8gdXNlckRlZmF1bHRzID0g
YWRvcHROUyhbW1dLVXNlckRlZmF1bHRzIGFsbG9jXSBpbml0V2l0aFN1aXRlTmFtZTpkb21haW5d
KTsKKyAgICAgICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBhZGRPYnNlcnZlcjp1c2VyRGVmYXVsdHMu
Z2V0KCkgZm9yS2V5UGF0aDpAInRlc3RrZXkiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09w
dGlvbk5ldyBjb250ZXh0Om5pbF07CisgICAgICAgIG1fdXNlckRlZmF1bHRzLmFwcGVuZCh1c2Vy
RGVmYXVsdHMpOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCitAZW5kCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0JKHJldmlzaW9uIDI1NTA4MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIk5ldHdv
cmtQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCisjaW1w
b3J0ICJQcmVmZXJlbmNlT2JzZXJ2ZXIuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIK
ICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCiAjaW1wb3J0ICJVc2VySW50ZXJmYWNlSWRpb20uaCIK
QEAgLTU2NCw2ICs1NjUsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJOb3RpZmlj
YXRpbwogICAgIH1dOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKICNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1fcHJlZmVyZW5jZU9i
c2VydmVyID0gYWRvcHROUyhbW1dLUHJlZmVyZW5jZU9ic2VydmVyIGFsbG9jXSBpbml0XSk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9i
c2VydmVycygpCkBAIC03MzYsNCArNzQxLDExIEBAIE5TU2V0ICpXZWJQcm9jZXNzUG9vbDo6YWxs
b3dlZENsYXNzZXNGb3IKICAgICByZXR1cm4gbV9jbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXIuZ2V0
KCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChj
b25zdCBTdHJpbmcmIGRvbWFpbikKK3sKKyAgICBmb3IgKGF1dG8gcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpOb3RpZnlQ
cmVmZXJlbmNlc0NoYW5nZWQoZG9tYWluKSwgMCk7CisKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI1NTA4MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ4NzIsNiArNDg3Miw3IEBACiAJ
CUMxMUE5RUQwMjE0MDNCNDAwMENGQjIwQSAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzExRTE2OTIyMTJCODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3Bs
YXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tNb2NrRGlzcGxheS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTFFMTY5MzIxMkI4N0M1MDA5ODVGRjYgLyog
V0tNb2NrRGlzcGxheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
S01vY2tEaXNwbGF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzE0NUNDMEUy
M0RDQTQyNzAwM0E1RUVCIC8qIFByZWZlcmVuY2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cmVmZXJlbmNlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4
MDIyMjM0MUM2MDAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzE0OTM4MDMyMjM0MURGNzAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0Ns
aWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTQ5MzgwQTIyMzg1M0JFMDAwQ0Q3MDcg
LyogV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5OTQsNiArNTk5
NSw3IEBACiAJCQkJQ0RBMjlBMUUxQ0JFQjVGQjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eS5oICovLAogCQkJCUNEQTI5QTIyMUNCRUI2MUEwMDkwMUNDRiAvKiBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0RBMjlBMUYxQ0JFQjVG
QjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSAqLywKKwkJCQlDMTQ1
Q0MwRTIzRENBNDI3MDAzQTVFRUIgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggKi8sCiAJCQkJNUNC
N0FGREQyM0M1MjczRDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZERlbGVnYXRlLmggKi8sCiAJCQkJ
NUNCN0FGREUyM0M1MjczRDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZERlbGVnYXRlLm1tICovLAog
CQkJCTVDQTk4NTRCMjEwQkVCNzMwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2Eu
bW0gKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9u
IDI1NTA4MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5OCw2ICsyOTgsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIHNldE1lZGlhTUlNRVR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+KTsKKyAg
ICB2b2lkIG5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbik7CiAj
ZW5kaWYKIAogICAgIGJvb2wgYXJlQWxsUGFnZXNUaHJvdHRsZWFibGUoKSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAyNTUwODApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTY5LDQgKzE2OSw4IEBAIG1lc3NhZ2VzIC0+
IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm8KICAgICBHcmFudEFjY2Vzc1RvQXNzZXRTZXJ2
aWNlcyhXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtb2JpbGVBc3NldEhhbmRsZSwg
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbW9iaWxlQXNzZXRWMkhhbmRsZSkKICAg
ICBSZXZva2VBY2Nlc3NUb0Fzc2V0U2VydmljZXMoKQogI2VuZGlmCisKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBOb3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoU3RyaW5nIGRvbWFpbikKKyNlbmRp
ZgogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNz
LnNiLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUu
V2ViUHJvY2Vzcy5zYi5pbgkocmV2aXNpb24gMjU1MDgwKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCSh3b3JraW5nIGNvcHkpCkBAIC02NDks
NyArNjQ5LDYgQEAKICAgICAod2l0aCByZXBvcnQpICh3aXRoIHRlbGVtZXRyeSkKICNlbmRpZgog
ICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLlBvd2VyTWFuYWdlbWVudC5jb250cm9sIikKLSAg
ICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jZnByZWZzZC5kYWVtb24iKQogICAgIChnbG9iYWwt
bmFtZSAiY29tLmFwcGxlLmNvcmVzZXJ2aWNlcy5sYXVuY2hzZXJ2aWNlc2QiKQogICAgIChnbG9i
YWwtbmFtZSAiY29tLmFwcGxlLmxzZC5tYXBkYiIpCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBw
bGUudGNjZCIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI1NTA4MSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2
ICsxMjQsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9TeXN0ZW1CYXR0ZXJ5Lmg+CiAjZW5kaWYKIAor
I2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgorCiAjaWYgSEFWRShDU0NIRUNL
RklYRElTQUJMRSkKIGV4dGVybiAiQyIgdm9pZCBfQ1NDaGVja0ZpeERpc2FibGUoKTsKICNlbmRp
ZgpAQCAtMTU3LDYgKzE1OSw5IEBAIHN0YXRpYyBpZCBOU0FwcGxpY2F0aW9uQWNjZXNzaWJpbGl0
eUZvY3UKIAogdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CisgICAgQm9vbGVhbiBr
ZXlFeGlzdHNBbmRIYXNWYWxpZEZvcm1hdCA9IGZhbHNlOworICAgIGludCBwcmVmVmFsdWUgPSBD
RlByZWZlcmVuY2VzR2V0QXBwSW50ZWdlclZhbHVlKENGU1RSKCJ0ZXN0a2V5IiksIENGU1RSKCJj
b20uYXBwbGUuY29yZW1lZGlhIiksICZrZXlFeGlzdHNBbmRIYXNWYWxpZEZvcm1hdCk7CisgICAg
cHJpbnRmKCIlZCIsIHByZWZWYWx1ZSk7CiAjaWYgIUxPR19ESVNBQkxFRCB8fCAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBXZWJDb3JlOjppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2Fy
eShwYXJhbWV0ZXJzLndlYkNvcmVMb2dnaW5nQ2hhbm5lbHMpOwogICAgIFdlYktpdDo6aW5pdGlh
bGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkocGFyYW1ldGVycy53ZWJLaXRMb2dnaW5nQ2hhbm5l
bHMpOwpAQCAtODQ4LDYgKzg1MywxNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldE1lZGlhTUlNRVR5
cGVzKGNvbnN0CiAgICAgICAgIGNhY2hlLmFkZFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKIH0KIAor
dm9pZCBXZWJQcm9jZXNzOjpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29uc3QgU3RyaW5nJiBk
b21haW4pCit7CisgICAgaW50IHIgPSBzYW5kYm94X2NoZWNrKGdldHBpZCgpLCAibWFjaC1sb29r
dXAiLCBzdGF0aWNfY2FzdDxlbnVtIHNhbmRib3hfZmlsdGVyX3R5cGU+KFNBTkRCT1hfRklMVEVS
X0dMT0JBTF9OQU1FIHwgU0FOREJPWF9DSEVDS19OT19SRVBPUlQpLCAiY29tLmFwcGxlLnByZWZz
ZC5kYWVtb24iKTsKKyAgICBCb29sZWFuIGtleUV4aXN0c0FuZEhhc1ZhbGlkRm9ybWF0ID0gZmFs
c2U7CisgICAgaW50IHByZWZWYWx1ZSA9IENGUHJlZmVyZW5jZXNHZXRBcHBJbnRlZ2VyVmFsdWUo
Q0ZTVFIoInRlc3RrZXkiKSwgQ0ZTVFIoImNvbS5hcHBsZS5jb3JlbWVkaWEiKSwgJmtleUV4aXN0
c0FuZEhhc1ZhbGlkRm9ybWF0KTsKKworICAgIF9DRlByZWZlcmVuY2VzRmx1c2hDYWNoZXNGb3JJ
ZGVudGlmaWVyKGRvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1
cnJlbnRVc2VyKTsKKyAgICBpbnQgcHJlZlZhbHVlMiA9IENGUHJlZmVyZW5jZXNHZXRBcHBJbnRl
Z2VyVmFsdWUoQ0ZTVFIoInRlc3RrZXkiKSwgQ0ZTVFIoImNvbS5hcHBsZS5jb3JlbWVkaWEiKSwg
JmtleUV4aXN0c0FuZEhhc1ZhbGlkRm9ybWF0KTsKKyAgICBwcmludGYoIiVkJWQlZCIsIHByZWZW
YWx1ZSwgcHJlZlZhbHVlMiwgcik7Cit9CisKICNpZiBQTEFURk9STShJT1MpCiB2b2lkIFdlYlBy
b2Nlc3M6OmdyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYgbW9iaWxlQXNzZXRIYW5kbGUsICBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYmIG1vYmlsZUFzc2V0VjJIYW5kbGUpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388794</attachid>
            <date>2020-01-25 19:04:17 -0800</date>
            <delta_ts>2020-01-27 11:06:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203420-20200125190416.patch</filename>
            <type>text/plain</type>
            <size>26535</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTUwODApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4g
dGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIEVOQUJMRSBkZWZpbmUgZm9yIENGIHByZWZzIGRpcmVjdCBtb2Rl
LgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMjAtMDEtMjQgIEpvbmF0aGFuIEJl
ZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFdURjogUmVtb3ZlIG9sZCBpT1Mg
dmVyc2lvbiBtYWNyb3MKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMjU1MDgwKQorKysgU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDMgKzE5MSw3IEBA
CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShBQ0NFU1NJQklMSVRZKQogI2RlZmluZSBV
U0VfQUNDRVNTSUJJTElUWV9DT05URVhUX01FTlVTIDEKICNlbmRpZgorCisjaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IFBM
QVRGT1JNKElPU19GQU1JTFkpCisjZGVmaW5lIEVOQUJMRV9DRlBSRUZTX0RJUkVDVF9NT0RFIDEK
KyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjU1MDgxKQorKysgU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDEtMjUg
IFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBDRiBw
cmVmcyBkaXJlY3QgbW9kZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaW50ZXJuYWxzIGZ1bmN0aW9u
IHRvIHJlYWQgaW50ZWdlciBwcmVmZXJlbmNlLgorCisgICAgICAgIEFQSSB0ZXN0OiBXZWJLaXQu
UHJlZmVyZW5jZXMKKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6cmVhZFByZWZlcmVuY2VJbnRlZ2VyKToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwog
MjAyMC0wMS0yNCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NTA1MC4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZwkocmV2aXNpb24gMjU1MTI2KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI1ICBQZXIgQXJuZSBWb2xsYW4g
IDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUg
aW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uIHRvIGZsdXNoIHBy
ZWZlcmVuY2UgY2FjaGUgZm9yIGEgZG9tYWluLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRlV0
aWxpdGllc1NQSS5oOgorCiAyMDIwLTAxLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgc29tZSB1bm5lZWRlZCBkZWZpbml0aW9ucyBmcm9tIFBsYXRm
b3JtLmggZmFtaWx5IGhlYWRlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nm
L0NGVXRpbGl0aWVzU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY2YvQ0ZVdGlsaXRpZXNTUEkuaAkocmV2aXNpb24gMjU1MDgwKQorKysgU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY2YvQ0ZVdGlsaXRpZXNTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtNTgs
NCArNTgsNiBAQCBDRkRpY3Rpb25hcnlSZWYgX0NGV2ViU2VydmljZXNDb3B5UHJvdmlkCiAKIHZv
aWQgX19DRlJ1bkxvb3BTZXRPcHRpb25zUmVhc29uKF9fQ0ZSdW5Mb29wT3B0aW9ucyBvcHRzLCBD
RlN0cmluZ1JlZiByZWFzb24pOwogCit2b2lkIF9DRlByZWZlcmVuY2VzRmx1c2hDYWNoZXNGb3JJ
ZGVudGlmaWVyKENGU3RyaW5nUmVmIGFwcGxpY2F0aW9uSUQsIENGU3RyaW5nUmVmIHVzZXJOYW1l
KTsKKwogV1RGX0VYVEVSTl9DX0VORApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAkocmV2aXNpb24gMjU1MDgxKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDQwLDQgKzU0NDAsMTQgQEAgYm9vbCBJbnRlcm5h
bHM6OnN5c3RlbUhhc0JhdHRlcnkoKSBjb25zdAogI2VuZGlmCiB9CiAKK2xvbmcgSW50ZXJuYWxz
OjpyZWFkUHJlZmVyZW5jZUludGVnZXIoY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmlu
ZyYga2V5KQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEJvb2xlYW4ga2V5RXhpc3RzQW5k
SGFzVmFsaWRGb3JtYXQgPSBmYWxzZTsKKyAgICByZXR1cm4gQ0ZQcmVmZXJlbmNlc0dldEFwcElu
dGVnZXJWYWx1ZShrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZG9tYWluLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksICZrZXlFeGlzdHNBbmRIYXNWYWxpZEZvcm1hdCk7CisjZWxzZQorICAgIHJl
dHVybiAtMTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDI1NTA4MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzMCw2ICs5MzAsOCBA
QCBwdWJsaWM6CiAKICAgICBib29sIHN5c3RlbUhhc0JhdHRlcnkoKSBjb25zdDsKIAorICAgIGxv
bmcgcmVhZFByZWZlcmVuY2VJbnRlZ2VyKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJp
bmcmIGtleSk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Jik7
CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjU1MDgxKQorKysgU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC04MzcsNCArODM3LDYg
QEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAgICAgRE9NU3RyaW5nIHN5c3RlbUNvbG9yRm9y
Q1NTVmFsdWUoRE9NU3RyaW5nIGNzc1ZhbHVlLCBib29sZWFuIHVzZURhcmtNb2RlQXBwZWFyYW5j
ZSwgYm9vbGVhbiB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCk7CiAKICAgICBib29sZWFu
IHN5c3RlbUhhc0JhdHRlcnkoKTsKKworICAgIGxvbmcgcmVhZFByZWZlcmVuY2VJbnRlZ2VyKERP
TVN0cmluZyBkb21haW4sIERPTVN0cmluZyBrZXkpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNTUxMjUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDM4IEBACisyMDIwLTAxLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxl
LmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4gdGhlIFdlYkNvbnRl
bnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRW5hYmxlIENGIHByZWZzIGRpcmVjdCBtb2RlLCBpbiBvcmRlciB0byBhdm9pZCBjb25uZWN0
aW5nIHRvIHRoZSBDRiBwcmVmcyBkYWVtb24gaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKyAg
ICAgICAgSW4gZGlyZWN0IG1vZGUsIHRoZSBwcmVmcyBmaWxlcyB3aWxsIGJlIGFjY2Vzc2VkIGRp
cmVjdGx5LCBhbmQgbm90IHRocm91Z2ggdGhlIENGIHByZWZzIGRhZW1vbi4gQSBwcmVmZXJlbmNl
CisgICAgICAgIG9ic2VydmVyIGlzIGFkZGVkIGluIHRoZSBVSSBwcm9jZXNzLCB3aGljaCB3aWxs
IG5vdGlmeSB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGFib3V0IHByZWZlcmVuY2VzIGNoYW5nZXMg
dG8gYQorICAgICAgICBkb21haW4uIEFmdGVyIGEgcHJlZmVyZW5jZSBjaGFuZ2UsIHRoZSBXZWJD
b250ZW50IHByb2Nlc3Mgd2lsbCBmbHVzaCB0aGUgcHJlZmVyZW5jZSBjYWNoZSBmb3IgdGhlIGNo
YW5nZWQKKyAgICAgICAgZG9tYWluLgorCisgICAgICAgIEFQSSB0ZXN0OiBXZWJLaXQuUHJlZmVy
ZW5jZXMKKworICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBs
ZS5XZWJLaXQuV2ViQ29udGVudC5zYjoKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAoV2ViS2l0
OjpYUENTZXJ2aWNlTWFpbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VP
YnNlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKC1bV0tVc2VyRGVmYXVsdHMgX25vdGlmeU9ic2Vy
dmVyc09mQ2hhbmdlRnJvbVZhbHVlc0ZvcktleXM6dG9WYWx1ZXNGb3JLZXlzOl0pOgorICAgICAg
ICAoLVtXS1VzZXJEZWZhdWx0cyBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5n
ZTpjb250ZXh0Ol0pOgorICAgICAgICAoLVtXS1VzZXJEZWZhdWx0cyBpbml0V2l0aFN1aXRlTmFt
ZTpdKToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlT2JzZXJ2ZXIgaW5pdF0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW46CisKIDIwMjAtMDEtMjUgIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gTWVkaWEg
bWltZSB0eXBlcyBtYXAgc2hvdWxkIGJlIGNyZWF0ZWQgaW4gdGhlIFVJIHByb2Nlc3MKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldl
YktpdC5XZWJDb250ZW50LnNiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVzb3VyY2Vz
L1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCShyZXZp
c2lvbiAyNTUwODApCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMv
aW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkod29ya2luZyBjb3B5KQpAQCAtNjAw
LDcgKzYwMCw3IEBACiAoYWxsb3cgbWFjaC1sb29rdXAKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5h
cHBsZS5sb2dkIikKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5sb2dkLmV2ZW50cyIpCi0g
ICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIikpCispCiAKIChhbGxv
dyBtYWNoLWxvb2t1cCAod2l0aCByZXBvcnQpICh3aXRoIHRlbGVtZXRyeSkKICAgICAoZ2xvYmFs
LW5hbWUgImNvbS5hcHBsZS5hZ2dyZWdhdGVkIikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0Nv
Y29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0JKHJldmlzaW9uIDI1NTA4MCkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9Y
UENTZXJ2aWNlTWFpbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQAogI2ltcG9y
dCA8cGFsL3NwaS9tYWMvTlNBcHBsaWNhdGlvblNQSS5oPgogI2VuZGlmCiAKK2V4dGVybiAiQyIg
dm9pZCBfQ0ZQcmVmc1NldERpcmVjdE1vZGVFbmFibGVkKEJPT0wgZW5hYmxlZCk7CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdm9pZCBYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKHhwY19j
b25uZWN0aW9uX3QgcGVlcikKQEAgLTExNiw2ICsxMTgsMTEgQEAgaW50IFhQQ1NlcnZpY2VNYWlu
KGludCwgY29uc3QgY2hhcioqKQogICAgIH0pOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ0ZQUkVG
U19ESVJFQ1RfTU9ERSkKKyAgICAvLyBFbmFibGUgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgdG8gYXZv
aWQgY29ubmVjdGluZyB0byB0aGUgQ0YgcHJlZnMgZGFlbW9uLgorICAgIF9DRlByZWZzU2V0RGly
ZWN0TW9kZUVuYWJsZWQoWUVTKTsKKyNlbmRpZgorCiAgICAgaWYgKGJvb3RzdHJhcCkgewogI2lm
IFBMQVRGT1JNKE1BQykKICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIHdlYktpdEJ1bmRsZVZlcnNp
b24gPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGJvb3RzdHJhcC5nZXQoKSwgIldlYktpdEJ1
bmRsZVZlcnNpb24iKSkgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCShyZXZpc2lvbiAyNTUwODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIE9CSkNfQ0xBU1Mg
TlNNdXRhYmxlRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNPYmplY3Q7CiBPQkpDX0NMQVNTIE5T
U2V0OwogT0JKQ19DTEFTUyBOU1N0cmluZzsKK09CSkNfQ0xBU1MgV0tQcmVmZXJlbmNlT2JzZXJ2
ZXI7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lO
RE9XU0VSVkVSX0JMT0NLSU5HKQpAQCAtNTQwLDYgKzU0MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wpOwogICAgIGJvb2wgdXNl
U2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlU2VwYXJh
dGVTZXJ2aWNlV29ya2VyUHJvY2VzczsgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9p
ZCBub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4pOworI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIApAQCAtODAxLDYg
KzgwNiwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0RlbGF5ZWRXZWJQcm9jZXNzTGF1bmNo
RGlzYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgYm9vbCBtX3VzZVNlcGFyYXRlU2Vydmlj
ZVdvcmtlclByb2Nlc3MgeyBmYWxzZSB9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0
YWluUHRyPFdLUHJlZmVyZW5jZU9ic2VydmVyPiBtX3ByZWZlcmVuY2VPYnNlcnZlcjsKKyNlbmRp
ZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEwIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyovCisKKyNwcmFnbWEgb25jZQorCitAaW50ZXJmYWNlIE5TT2JqZWN0IChQ
cml2YXRlS1ZPTWV0aG9kcykKKy0gKHZvaWQpX25vdGlmeU9ic2VydmVyc09mQ2hhbmdlRnJvbVZh
bHVlc0ZvcktleXM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilvbGRWYWx1ZXMgdG9W
YWx1ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopbmV3VmFsdWVzOwor
QGVuZAorCitAaW50ZXJmYWNlIFdLVXNlckRlZmF1bHRzIDogTlNVc2VyRGVmYXVsdHMgeworQHBy
aXZhdGUKKyAgICBTdHJpbmcgbV9zdWl0ZU5hbWU7Cit9CisKKy0gKHZvaWQpX25vdGlmeU9ic2Vy
dmVyc09mQ2hhbmdlRnJvbVZhbHVlc0ZvcktleXM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBp
ZD4gKilvbGRWYWx1ZXMgdG9WYWx1ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwg
aWQ+ICopbmV3VmFsdWVzOworCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3Ry
aW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5PE5T
S2V5VmFsdWVDaGFuZ2VLZXksIGlkPiAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dDsK
KworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU3VpdGVOYW1lOihOU1N0cmluZyAqKXN1aXRlbmFt
ZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLVXNlckRlZmF1bHRzCisKKy0gKHZvaWQpX25v
dGlmeU9ic2VydmVyc09mQ2hhbmdlRnJvbVZhbHVlc0ZvcktleXM6KE5TRGljdGlvbmFyeTxOU1N0
cmluZyAqLCBpZD4gKilvbGRWYWx1ZXMgdG9WYWx1ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgaWQ+ICopbmV3VmFsdWVzCit7CisgICAgW3N1cGVyIF9ub3RpZnlPYnNlcnZlcnNP
ZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOm9sZFZhbHVlcyB0b1ZhbHVlc0ZvcktleXM6bmV3VmFs
dWVzXTsKKworICAgIGlmIChbb2xkVmFsdWVzIGlzRXF1YWxUb0RpY3Rpb25hcnk6bmV3VmFsdWVz
XSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9v
bC0+bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKG1fc3VpdGVOYW1lKTsKK30KKworLSAodm9pZClv
YnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9i
amVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeTxOU0tleVZhbHVlQ2hhbmdlS2V5LCBpZD4gKiljaGFu
Z2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQKK3sKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoU3VpdGVOYW1lOihOU1N0cmluZyAqKXN1aXRlbmFtZQoreworICAgIG1fc3VpdGVOYW1lID0g
c3VpdGVuYW1lOworICAgIHJldHVybiBbc3VwZXIgaW5pdFdpdGhTdWl0ZU5hbWU6c3VpdGVuYW1l
XTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIFdLUHJlZmVyZW5jZU9ic2VydmVyIDogTlNPYmpl
Y3QgeworQHByaXZhdGUKKyAgICBWZWN0b3I8UmV0YWluUHRyPFdLVXNlckRlZmF1bHRzPj4gbV91
c2VyRGVmYXVsdHM7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0OworQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gV0tQcmVmZXJlbmNlT2JzZXJ2ZXIKKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sK
KyAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8TlNTdHJpbmcqPiBkb21haW5zID0geworICAgICAg
ICBAImNvbS5hcHBsZS5BY2Nlc3NpYmlsaXR5IiwKKyAgICAgICAgQCJjb20uYXBwbGUuQWRMaWIi
LAorICAgICAgICBAImNvbS5hcHBsZS5DRk5ldHdvcmsiLAorICAgICAgICBAImNvbS5hcHBsZS5G
b250UGFyc2VyIiwKKyAgICAgICAgQCJjb20uYXBwbGUuSW1hZ2VJTyIsCisgICAgICAgIEAiY29t
LmFwcGxlLk1ldGFsIiwKKyAgICAgICAgQCJjb20uYXBwbGUuVUlLaXQiLAorICAgICAgICBAImNv
bS5hcHBsZS5XZWJGb3VuZGF0aW9uIiwKKyAgICAgICAgQCJjb20uYXBwbGUuV2ViS2l0LldlYkNv
bnRlbnQiLAorICAgICAgICBAImNvbS5hcHBsZS5hcHBsZWpwZWciLAorICAgICAgICBAImNvbS5h
cHBsZS5hdWRpby52aXJ0dWFsYXVkaW8iLAorICAgICAgICBAImNvbS5hcHBsZS5hdmZhdWRpbyIs
CisgICAgICAgIEAiY29tLmFwcGxlLmF2Zm91bmRhdGlvbiIsCisgICAgICAgIEAiY29tLmFwcGxl
LmF2Zm91bmRhdGlvbi52aWRlb3BlcmZvcm1hbmNlaHVkIiwKKyAgICAgICAgQCJjb20uYXBwbGUu
Y29yZWF1ZGlvIiwKKyAgICAgICAgQCJjb20uYXBwbGUuY29yZW1lZGlhIiwKKyAgICAgICAgQCJj
b20uYXBwbGUuY29yZXZpZGVvIiwKKyAgICAgICAgQCJjb20uYXBwbGUubG9va3VwLnNoYXJlZCIs
CisgICAgICAgIEAiY29tLmFwcGxlLm1lZGlhYWNjZXNzaWJpbGl0eSIsCisgICAgfTsKKyAgICBm
b3IgKGF1dG8gZG9tYWluIDogZG9tYWlucykgeworICAgICAgICBhdXRvIHVzZXJEZWZhdWx0cyA9
IGFkb3B0TlMoW1tXS1VzZXJEZWZhdWx0cyBhbGxvY10gaW5pdFdpdGhTdWl0ZU5hbWU6ZG9tYWlu
XSk7CisgICAgICAgIFt1c2VyRGVmYXVsdHMuZ2V0KCkgYWRkT2JzZXJ2ZXI6dXNlckRlZmF1bHRz
LmdldCgpIGZvcktleVBhdGg6QCJ0ZXN0a2V5IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdP
cHRpb25OZXcgY29udGV4dDpuaWxdOworICAgICAgICBtX3VzZXJEZWZhdWx0cy5hcHBlbmQodXNl
ckRlZmF1bHRzKTsKKyAgICB9CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworQGVuZApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tCShyZXZpc2lvbiAyNTUwODEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJOZXR3
b3JrUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgorI2lt
cG9ydCAiUHJlZmVyZW5jZU9ic2VydmVyLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJUZXh0Q2hlY2tlci5oIgogI2ltcG9ydCAiVXNlckludGVyZmFjZUlkaW9tLmgi
CkBAIC01NjQsNiArNTY1LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyTm90aWZp
Y2F0aW8KICAgICB9XTsKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAjZW5kaWYgLy8gIVBMQVRG
T1JNKElPU19GQU1JTFkpCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtX3ByZWZlcmVuY2VP
YnNlcnZlciA9IGFkb3B0TlMoW1tXS1ByZWZlcmVuY2VPYnNlcnZlciBhbGxvY10gaW5pdF0pOwor
I2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJOb3RpZmljYXRpb25P
YnNlcnZlcnMoKQpAQCAtNzM2LDQgKzc0MSwxMSBAQCBOU1NldCAqV2ViUHJvY2Vzc1Bvb2w6OmFs
bG93ZWRDbGFzc2VzRm9yCiAgICAgcmV0dXJuIG1fY2xhc3Nlc0ZvclBhcmFtZXRlckNvZGVyLmdl
dCgpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQo
Y29uc3QgU3RyaW5nJiBkb21haW4pCit7CisgICAgZm9yIChhdXRvIHByb2Nlc3MgOiBtX3Byb2Nl
c3NlcykKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Tm90aWZ5
UHJlZmVyZW5jZXNDaGFuZ2VkKGRvbWFpbiksIDApOworCit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyNTUwODApCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODcyLDYgKzQ4NzIsNyBAQAog
CQlDMTFBOUVEMDIxNDAzQjQwMDBDRkIyMEEgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUMxMUUxNjkyMjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNw
bGF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTW9ja0Rpc3BsYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzExRTE2OTMyMTJCODdDNTAwOTg1RkY2IC8q
IFdLTW9ja0Rpc3BsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tNb2NrRGlzcGxheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNDVDQzBF
MjNEQ0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHJlZmVyZW5jZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNDkz
ODAyMjIzNDFDNjAwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMxNDkzODAzMjIzNDFERjcwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXND
bGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MEEyMjM4NTNCRTAwMENENzA3
IC8qIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTk0LDYgKzU5
OTUsNyBAQAogCQkJCUNEQTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkuaCAqLywKIAkJCQlDREEyOUEyMjFDQkVCNjFBMDA5MDFDQ0YgLyogUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCUNEQTI5QTFGMUNCRUI1
RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gKi8sCisJCQkJQzE0
NUNDMEUyM0RDQTQyNzAwM0E1RUVCIC8qIFByZWZlcmVuY2VPYnNlcnZlci5oICovLAogCQkJCTVD
QjdBRkREMjNDNTI3M0QwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovLAogCQkJ
CTVDQjdBRkRFMjNDNTI3M0QwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLywK
IAkJCQk1Q0E5ODU0QjIxMEJFQjczMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZ0NvY29h
Lm1tICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lv
biAyNTUwODApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTgsNiArMjk4LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdm9pZCBzZXRNZWRpYU1JTUVUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPik7Cisg
ICAgdm9pZCBub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4pOwog
I2VuZGlmCiAKICAgICBib29sIGFyZUFsbFBhZ2VzVGhyb3R0bGVhYmxlKCkgY29uc3Q7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMjU1MDgwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE2OSw0ICsxNjksOCBAQCBtZXNzYWdlcyAt
PiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vCiAgICAgR3JhbnRBY2Nlc3NUb0Fzc2V0U2Vy
dmljZXMoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbW9iaWxlQXNzZXRIYW5kbGUs
IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1vYmlsZUFzc2V0VjJIYW5kbGUpCiAg
ICAgUmV2b2tlQWNjZXNzVG9Bc3NldFNlcnZpY2VzKCkKICNlbmRpZgorCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgTm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKFN0cmluZyBkb21haW4pCisjZW5k
aWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vz
cy5zYi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxl
LldlYlByb2Nlc3Muc2IuaW4JKHJldmlzaW9uIDI1NTA4MCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkod29ya2luZyBjb3B5KQpAQCAtNjQ5
LDcgKzY0OSw2IEBACiAgICAgKHdpdGggcmVwb3J0KSAod2l0aCB0ZWxlbWV0cnkpCiAjZW5kaWYK
ICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5Qb3dlck1hbmFnZW1lbnQuY29udHJvbCIpCi0g
ICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIikKICAgICAoZ2xvYmFs
LW5hbWUgImNvbS5hcHBsZS5jb3Jlc2VydmljZXMubGF1bmNoc2VydmljZXNkIikKICAgICAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS5sc2QubWFwZGIiKQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFw
cGxlLnRjY2QiKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNTUwODEpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQs
NiArMTI0LDggQEAKICNpbXBvcnQgPFdlYkNvcmUvU3lzdGVtQmF0dGVyeS5oPgogI2VuZGlmCiAK
KyNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KKwogI2lmIEhBVkUoQ1NDSEVD
S0ZJWERJU0FCTEUpCiBleHRlcm4gIkMiIHZvaWQgX0NTQ2hlY2tGaXhEaXNhYmxlKCk7CiAjZW5k
aWYKQEAgLTg0OCw2ICs4NTAsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRNZWRpYU1JTUVUeXBl
cyhjb25zdAogICAgICAgICBjYWNoZS5hZGRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CiB9CiAKK3Zv
aWQgV2ViUHJvY2Vzczo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0cmluZyYgZG9t
YWluKQoreworICAgIF9DRlByZWZlcmVuY2VzRmx1c2hDYWNoZXNGb3JJZGVudGlmaWVyKGRvbWFp
bi5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRVc2VyKTsKK30K
KwogI2lmIFBMQVRGT1JNKElPUykKIHZvaWQgV2ViUHJvY2Vzczo6Z3JhbnRBY2Nlc3NUb0Fzc2V0
U2VydmljZXMoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBtb2JpbGVBc3NldEhh
bmRsZSwgIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgbW9iaWxlQXNzZXRWMkhh
bmRsZSkKIHsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI1NTEyNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFu
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4gdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9QcmVmZXJlbmNl
cy5tbTogQWRkZWQuCisgICAgICAgIChURVNUKToKKwogMjAyMC0wMS0yNSAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHNvbWUgdGVzdHMgZm9yIGR5bmFtaWNh
bGx5IGFsbG9jYXRlZCBTdGF0aWNTdHJpbmdJbXBscy4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyNTUwODEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODYyLDYgKzg2
Miw3IEBACiAJCUMwQURCRTk2MTJGQ0E3OUIwMEQyQzEyOSAvKiBzaW1wbGUtZm9ybS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQURC
RTg0MTJGQ0E2QjYwMEQyQzEyOSAvKiBzaW1wbGUtZm9ybS5odG1sICovOyB9OwogCQlDMEJENjY5
RjEzMUQzQ0ZGMDBFMThGMkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9C
dW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzBCRDY2OUUxMzFEM0NGRjAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJl
RWFybHlfQnVuZGxlLmNwcCAqLzsgfTsKIAkJQzBDNUQzQzYxNDU5OTEyOTAwQTgwMkE2IC8qIEdl
dEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMEM1RDNCRDE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2lu
Z1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAqLzsgfTsKKwkJQzE0NUNDMTIyM0REMkQ2NjAwM0E1RUVC
IC8qIFByZWZlcmVuY2VzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzE0NUNDMTEyM0REMkQ2NjAwM0E1RUVCIC8qIFByZWZlcmVuY2VzLm1tICovOyB9
OwogCQlDMTY5MkRDQTIzRDEwREFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNjkyREM5MjNEMTBEQUUwMDZFODhG
NyAvKiBCYXR0ZXJ5Lm1tICovOyB9OwogCQlDMjBGODhBNzIyOTVCOTY3MDBENjEwRkEgLyogQ29y
ZVRleHQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzIwRjg4QTYyMjk1Qjk2NzAwRDYxMEZBIC8qIENvcmVUZXh0LmZyYW1ld29yayAq
LzsgfTsKIAkJQzIyRkEzMkIyMjhGODcwODAwOUQ3OTg4IC8qIFRleHRXaWR0aC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMkZBMzJBMjI4Rjg3MDgw
MDlENzk4OCAvKiBUZXh0V2lkdGgubW0gKi87IH07CkBAIC0yMzg1LDYgKzIzODYsNyBAQAogCQlD
MEJENjY5RTEzMUQzQ0ZGMDBFMThGMkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVF
YXJseV9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVz
cG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMEM1RDNCQzE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1Nj
YWxlRmFjdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2V0
QmFja2luZ1NjYWxlRmFjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEM1
RDNCRDE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZh
Y3Rvcl9CdW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNDVDQzExMjNE
RDJENjYwMDNBNUVFQiAvKiBQcmVmZXJlbmNlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBy
ZWZlcmVuY2VzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTY5MkRDOTIzRDEw
REFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJhdHRlcnku
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRDhFRTIxMjAyOEU4RTMwMDhFQjE0
MSAvKiBXZWJQcm9jZXNzVGVybWluYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViUHJvY2Vzc1Rlcm1pbmF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzIwRjg4QTYyMjk1Qjk2NzAwRDYxMEZBIC8qIENvcmVUZXh0LmZyYW1ld29yayAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIu
ZnJhbWV3b3JrOyBuYW1lID0gQ29yZVRleHQuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlVGV4dC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9
OwpAQCAtMjgyNiw2ICsyODI4LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJQzE2OTJEQzkyM0QxMERBRTAwNkU4OEY3IC8qIEJhdHRlcnkubW0gKi8sCisJCQkJ
QzE0NUNDMTEyM0REMkQ2NjAwM0E1RUVCIC8qIFByZWZlcmVuY2VzLm1tICovLAogCQkJCTBGMTM5
RTc1MUE0MjNBNTMwMEY1OTBGNSAvKiBXZWFrT2JqQ1B0ci5tbSAqLywKIAkJCSk7CiAJCQluYW1l
ID0gY29jb2E7CkBAIC00ODU3LDYgKzQ4NjAsNyBAQAogCQkJCTdDQ0U3RUE2MUE0MTFBMEYwMDQ0
N0M0QyAvKiBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RUE3MUE0MTFBMTMwMDQ0N0M0QyAvKiBQbGF0Zm9ybVdlYlZpZXdNYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk4M0JBRUU4RDFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGlj
aWVzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQzE0NUNDMTIyM0REMkQ2NjAwM0E1RUVCIC8qIFBy
ZWZlcmVuY2VzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMjYxQTQxMUFGNjAwNDQ3QzRD
IC8qIFByZWZlcmVuY2VzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QyMjdFNDQyMTFBNEQ1RDAw
RDI4NUFGIC8qIFByZWZlcnJlZEF1ZGlvQnVmZmVyU2l6ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUY0OEQ2QzEwMjI0QjM3NzAwMEUzRTJGQiAvKiBQcmVmZXJyZWRDb250ZW50TW9kZS5tbSBpbiBT
b3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUHJlZmVy
ZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
UHJlZmVyZW5jZXMubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdLX0hBVkVfQ19TUEkKKwor
I2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIK
KworVEVTVChXZWJLaXQsIFByZWZlcmVuY2VzKQoreworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBW
YWx1ZShDRlNUUigidGVzdGtleSIpLCBDRlNUUigiMSIpLCBDRlNUUigiY29tLmFwcGxlLmNvcmVt
ZWRpYSIpKTsKKworICAgIEVYUEVDVF9FUSgxLCBDRlByZWZlcmVuY2VzR2V0QXBwSW50ZWdlclZh
bHVlKENGU1RSKCJ0ZXN0a2V5IiksIENGU1RSKCJjb20uYXBwbGUuY29yZW1lZGlhIiksIG51bGxw
dHIpKTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBj
b250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5q
ZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7CisgICAgY29u
ZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCA9IChXS1Byb2Nlc3NQb29sICopY29udGV4dC5n
ZXQoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisKKyAgICBhdXRvIHByZWZlcmVu
Y2VWYWx1ZSA9IFsmXSB7CisgICAgICAgIHJldHVybiBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAid2luZG93LmludGVybmFscy5yZWFkUHJlZmVyZW5jZUludGVnZXIoXCJj
b20uYXBwbGUuY29yZW1lZGlhXCIsIFwidGVzdGtleVwiKSJdLmludFZhbHVlOworICAgIH07CisK
KyAgICBFWFBFQ1RfRVEocHJlZmVyZW5jZVZhbHVlKCksIDEpOworCisgICAgQ0ZQcmVmZXJlbmNl
c1NldEFwcFZhbHVlKENGU1RSKCJ0ZXN0a2V5IiksIENGU1RSKCIyIiksIENGU1RSKCJjb20uYXBw
bGUuY29yZW1lZGlhIikpOworCisgICAgRVhQRUNUX0VRKHByZWZlcmVuY2VWYWx1ZSgpLCAyKTsK
K30KKworI2VuZGlmIC8vIFdLX0hBVkVfQ19TUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388874</attachid>
            <date>2020-01-27 11:06:27 -0800</date>
            <delta_ts>2020-01-27 11:46:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203420-20200127110626.patch</filename>
            <type>text/plain</type>
            <size>29897</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI3ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4g
dGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFVTRSBkZWZpbmUgZm9yIENGIHByZWZzIGRpcmVjdCBtb2RlIGlu
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwog
MjAyMC0wMS0yNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFr
ZSBnZXRWVGFibGVQb2ludGVyKCkgYW4gaW5saW5lIGZ1bmN0aW9uIHRvIGJlIGNvbXBsaWFudCB3
aXRoIFdlYktpdCBzdHlsZSBndWlkZWxpbmVzLgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAy
NTUxNTQpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTEsMyArMTkxLDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEFDQ0VTU0lCSUxJ
VFkpCiAjZGVmaW5lIFVTRV9BQ0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMgMQogI2VuZGlmCisK
KyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNkZWZpbmUgVVNFX0NGUFJFRlNfRElS
RUNUX01PREVfSU5fV0VCQ09OVEVOVF9QUk9DRVNTIDEKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDEtMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xs
YW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBDRiBwcmVmcyBkaXJlY3QgbW9kZSBpbiB0aGUg
V2ViQ29udGVudCBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgaW50ZXJuYWxzIGZ1bmN0aW9uIHRvIHJlYWQgaW50ZWdlciBwcmVmZXJl
bmNlLgorCisgICAgICAgIEFQSSB0ZXN0OiBXZWJLaXQuUHJlZmVyZW5jZXMKKworICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVh
ZFByZWZlcmVuY2VJbnRlZ2VyKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAyMC0wMS0yNyAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ29ycmVjdCBWVFQgQ3VlIFN0eWxlIGhh
bmRsaW5nIHRvIG1hdGNoIHRoZSBzcGVjaWZpY2F0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI1NTE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMS0yNSAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENGIHByZWZzIGRpcmVjdCBtb2RlIGlu
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiB0byBmbHVzaCBwcmVm
ZXJlbmNlIGNhY2hlIGZvciBhIGRvbWFpbi4KKworICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZVdGls
aXRpZXNTUEkuaDoKKwogMjAyMC0wMS0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgdW5uZWVkZWQgZGVmaW5pdGlvbnMgZnJvbSBQbGF0Zm9y
bS5oIGZhbWlseSBoZWFkZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9D
RlV0aWxpdGllc1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NmL0NGVXRpbGl0aWVzU1BJLmgJKHJldmlzaW9uIDI1NTE1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NmL0NGVXRpbGl0aWVzU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDQg
KzU4LDYgQEAgQ0ZEaWN0aW9uYXJ5UmVmIF9DRldlYlNlcnZpY2VzQ29weVByb3ZpZAogCiB2b2lk
IF9fQ0ZSdW5Mb29wU2V0T3B0aW9uc1JlYXNvbihfX0NGUnVuTG9vcE9wdGlvbnMgb3B0cywgQ0ZT
dHJpbmdSZWYgcmVhc29uKTsKIAordm9pZCBfQ0ZQcmVmZXJlbmNlc0ZsdXNoQ2FjaGVzRm9ySWRl
bnRpZmllcihDRlN0cmluZ1JlZiBhcHBsaWNhdGlvbklELCBDRlN0cmluZ1JlZiB1c2VyTmFtZSk7
CisKIFdURl9FWFRFUk5fQ19FTkQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAJKHJldmlzaW9uIDI1NTE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ0MSw2ICs1NDQxLDE2IEBAIGJvb2wgSW50ZXJuYWxz
OjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgY29uc3QKICNlbmRpZgogfQogCitsb25nIEludGVybmFsczo6
cmVhZFByZWZlcmVuY2VJbnRlZ2VyKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcm
IGtleSkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBCb29sZWFuIGtleUV4aXN0c0FuZEhh
c1ZhbGlkRm9ybWF0ID0gZmFsc2U7CisgICAgcmV0dXJuIENGUHJlZmVyZW5jZXNHZXRBcHBJbnRl
Z2VyVmFsdWUoa2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRvbWFpbi5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCAma2V5RXhpc3RzQW5kSGFzVmFsaWRGb3JtYXQpOworI2Vsc2UKKyAgICByZXR1
cm4gLTE7CisjZW5kaWYKK30KKwogU3RyaW5nIEludGVybmFsczo6bWVkaWFNSU1FVHlwZUZvckV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICByZXR1cm4gTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0TWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOwpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MzAsNiArOTMw
LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBzeXN0ZW1IYXNCYXR0ZXJ5KCkgY29uc3Q7CiAKKyAg
ICBsb25nIHJlYWRQcmVmZXJlbmNlSW50ZWdlcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
U3RyaW5nJiBrZXkpOworCiAgICAgU3RyaW5nIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBleHRlbnNpb24pOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC04MzgsNSArODM4LDcgQEAgZW51
bSBDb21wb3NpdGluZ1BvbGljeSB7CiAKICAgICBib29sZWFuIHN5c3RlbUhhc0JhdHRlcnkoKTsK
IAorICAgIGxvbmcgcmVhZFByZWZlcmVuY2VJbnRlZ2VyKERPTVN0cmluZyBkb21haW4sIERPTVN0
cmluZyBrZXkpOworCiAgICAgRE9NU3RyaW5nIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oRE9N
U3RyaW5nIGV4dGVuc2lvbik7CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTE1NCkKKysr
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAK
KzIwMjAtMDEtMjcgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBDRiBwcmVmcyBkaXJlY3QgbW9kZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0MjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgQ0Yg
cHJlZnMgZGlyZWN0IG1vZGUsIGluIG9yZGVyIHRvIGF2b2lkIGNvbm5lY3RpbmcgdG8gdGhlIENG
IHByZWZzIGRhZW1vbiBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzLgorICAgICAgICBJbiBkaXJl
Y3QgbW9kZSwgdGhlIHByZWZzIGZpbGVzIHdpbGwgYmUgYWNjZXNzZWQgZGlyZWN0bHksIGFuZCBu
b3QgdGhyb3VnaCB0aGUgQ0YgcHJlZnMgZGFlbW9uLiBBIHByZWZlcmVuY2UKKyAgICAgICAgb2Jz
ZXJ2ZXIgaXMgYWRkZWQgaW4gdGhlIFVJIHByb2Nlc3MsIHdoaWNoIHdpbGwgbm90aWZ5IHRoZSBX
ZWJDb250ZW50IHByb2Nlc3MgYWJvdXQgcHJlZmVyZW5jZXMgY2hhbmdlcyB0byBhCisgICAgICAg
IGRvbWFpbi4gQWZ0ZXIgYSBwcmVmZXJlbmNlIGNoYW5nZSwgdGhlIFdlYkNvbnRlbnQgcHJvY2Vz
cyB3aWxsIGZsdXNoIHRoZSBwcmVmZXJlbmNlIGNhY2hlIGZvciB0aGUgY2hhbmdlZAorICAgICAg
ICBkb21haW4uCisKKyAgICAgICAgQVBJIHRlc3Q6IFdlYktpdC5QcmVmZXJlbmNlcworCisgICAg
ICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50LnNiOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQ
Q1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VN
YWluKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLmg6IEFk
ZGVkLgorICAgICAgICAoLVtXS1VzZXJEZWZhdWx0cyBfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VG
cm9tVmFsdWVzRm9yS2V5czp0b1ZhbHVlc0ZvcktleXM6XSk6CisgICAgICAgICgtW1dLVXNlckRl
ZmF1bHRzIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6
CisgICAgICAgICgtW1dLVXNlckRlZmF1bHRzIGluaXRXaXRoU3VpdGVOYW1lOl0pOgorICAgICAg
ICAoLVtXS1ByZWZlcmVuY2VPYnNlcnZlciBpbml0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpyZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBs
ZS5XZWJQcm9jZXNzLnNiLmluOgorCiAyMDIwLTAxLTI3ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRk
YWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTUxMzEu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Jl
c291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5z
YgkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFBy
b2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IJKHdvcmtpbmcgY29weSkK
QEAgLTYwMCw3ICs2MDAsNyBAQAogKGFsbG93IG1hY2gtbG9va3VwCiAgICAgKGdsb2JhbC1uYW1l
ICJjb20uYXBwbGUubG9nZCIpCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUubG9nZC5ldmVu
dHMiKQotICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNmcHJlZnNkLmRhZW1vbiIpKQorKQog
CiAoYWxsb3cgbWFjaC1sb29rdXAgKHdpdGggcmVwb3J0KSAod2l0aCB0ZWxlbWV0cnkpCiAgICAg
KGdsb2JhbC1uYW1lICJjb20uYXBwbGUuYWdncmVnYXRlZCIpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1h
aW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCShyZXZpc2lvbiAyNTUxNTQp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZU1haW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAK
ICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TQXBwbGljYXRpb25TUEkuaD4KICNlbmRpZgogCitleHRl
cm4gIkMiIHZvaWQgX0NGUHJlZnNTZXREaXJlY3RNb2RlRW5hYmxlZChCT09MIGVuYWJsZWQpOwor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIHZvaWQgWFBDU2VydmljZUV2ZW50SGFuZGxl
cih4cGNfY29ubmVjdGlvbl90IHBlZXIpCkBAIC0xMTYsNiArMTE4LDExIEBAIGludCBYUENTZXJ2
aWNlTWFpbihpbnQsIGNvbnN0IGNoYXIqKikKICAgICB9KTsKICNlbmRpZgogCisjaWYgVVNFKENG
UFJFRlNfRElSRUNUX01PREVfSU5fV0VCQ09OVEVOVF9QUk9DRVNTKQorICAgIC8vIEVuYWJsZSBD
RiBwcmVmcyBkaXJlY3QgbW9kZSB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBDRiBwcmVmcyBk
YWVtb24uCisgICAgX0NGUHJlZnNTZXREaXJlY3RNb2RlRW5hYmxlZChZRVMpOworI2VuZGlmCisK
ICAgICBpZiAoYm9vdHN0cmFwKSB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBpZiAoY29u
c3QgY2hhciogd2ViS2l0QnVuZGxlVmVyc2lvbiA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmco
Ym9vdHN0cmFwLmdldCgpLCAiV2ViS2l0QnVuZGxlVmVyc2lvbiIpKSB7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI1NTE1NCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDYgKzcyLDcgQEAgT0JKQ19DTEFTUyBOU011dGFibGVEaWN0aW9uYXJ5OwogT0JKQ19DTEFT
UyBOU09iamVjdDsKIE9CSkNfQ0xBU1MgTlNTZXQ7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOworT0JK
Q19DTEFTUyBXS1ByZWZlcmVuY2VPYnNlcnZlcjsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCkBAIC01NDAsNiAr
NTQxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclBy
b2Nlc3MoYm9vbCk7CiAgICAgYm9vbCB1c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzOyB9CiAKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIG5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25z
dCBTdHJpbmcmIGRvbWFpbik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZSgpOwogCkBAIC04MDEsNiArODA2LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzRGVsYXllZFdlYlByb2Nlc3NMYXVuY2hEaXNhYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKICAg
ICBib29sIG1fdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyB7IGZhbHNlIH07CisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8V0tQcmVmZXJlbmNlT2JzZXJ2ZXI+IG1f
cHJlZmVyZW5jZU9ic2VydmVyOworI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9i
c2VydmVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UHJlZmVyZW5jZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTAgQEAKKy8q
CisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisq
CisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisq
CisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNl
CisKK0BpbnRlcmZhY2UgTlNPYmplY3QgKFByaXZhdGVLVk9NZXRob2RzKQorLSAodm9pZClfbm90
aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VGcm9tVmFsdWVzRm9yS2V5czooTlNEaWN0aW9uYXJ5PE5TU3Ry
aW5nICosIGlkPiAqKW9sZFZhbHVlcyB0b1ZhbHVlc0ZvcktleXM6KE5TRGljdGlvbmFyeTxOU1N0
cmluZyAqLCBpZD4gKiluZXdWYWx1ZXM7CitAZW5kCisKK0BpbnRlcmZhY2UgV0tVc2VyRGVmYXVs
dHMgOiBOU1VzZXJEZWZhdWx0cyB7CitAcHJpdmF0ZQorICAgIFN0cmluZyBtX3N1aXRlTmFtZTsK
K30KKworLSAodm9pZClfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VGcm9tVmFsdWVzRm9yS2V5czoo
TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKW9sZFZhbHVlcyB0b1ZhbHVlc0ZvcktleXM6
KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKiluZXdWYWx1ZXM7CisKKy0gKHZvaWQpb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmpl
Y3QgY2hhbmdlOihOU0RpY3Rpb25hcnk8TlNLZXlWYWx1ZUNoYW5nZUtleSwgaWQ+ICopY2hhbmdl
IGNvbnRleHQ6KHZvaWQgKiljb250ZXh0OworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTdWl0
ZU5hbWU6KE5TU3RyaW5nICopc3VpdGVuYW1lOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tV
c2VyRGVmYXVsdHMKKworLSAodm9pZClfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VGcm9tVmFsdWVz
Rm9yS2V5czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKW9sZFZhbHVlcyB0b1ZhbHVl
c0ZvcktleXM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKiluZXdWYWx1ZXMKK3sKKyAg
ICBbc3VwZXIgX25vdGlmeU9ic2VydmVyc09mQ2hhbmdlRnJvbVZhbHVlc0ZvcktleXM6b2xkVmFs
dWVzIHRvVmFsdWVzRm9yS2V5czpuZXdWYWx1ZXNdOworCisgICAgaWYgKFtvbGRWYWx1ZXMgaXNF
cXVhbFRvRGljdGlvbmFyeTpuZXdWYWx1ZXNdKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3Ig
KGF1dG8qIHByb2Nlc3NQb29sIDogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bv
b2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5ub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQobV9z
dWl0ZU5hbWUpOworfQorCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5n
ICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5PE5TS2V5
VmFsdWVDaGFuZ2VLZXksIGlkPiAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAorewor
fQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTdWl0ZU5hbWU6KE5TU3RyaW5nICopc3VpdGVu
YW1lCit7CisgICAgbV9zdWl0ZU5hbWUgPSBzdWl0ZW5hbWU7CisgICAgcmV0dXJuIFtzdXBlciBp
bml0V2l0aFN1aXRlTmFtZTpzdWl0ZW5hbWVdOworfQorCitAZW5kCisKK0BpbnRlcmZhY2UgV0tQ
cmVmZXJlbmNlT2JzZXJ2ZXIgOiBOU09iamVjdCB7CitAcHJpdmF0ZQorICAgIFZlY3RvcjxSZXRh
aW5QdHI8V0tVc2VyRGVmYXVsdHM+PiBtX3VzZXJEZWZhdWx0czsKK30KKworLSAoaW5zdGFuY2V0
eXBlKWluaXQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1ByZWZlcmVuY2VPYnNlcnZlcgor
CistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxOU1N0
cmluZyo+IGRvbWFpbnMgPSB7CisgICAgICAgIEAiY29tLmFwcGxlLkFjY2Vzc2liaWxpdHkiLAor
ICAgICAgICBAImNvbS5hcHBsZS5BZExpYiIsCisgICAgICAgIEAiY29tLmFwcGxlLkNGTmV0d29y
ayIsCisgICAgICAgIEAiY29tLmFwcGxlLkZvbnRQYXJzZXIiLAorICAgICAgICBAImNvbS5hcHBs
ZS5JbWFnZUlPIiwKKyAgICAgICAgQCJjb20uYXBwbGUuTWV0YWwiLAorICAgICAgICBAImNvbS5h
cHBsZS5VSUtpdCIsCisgICAgICAgIEAiY29tLmFwcGxlLldlYkZvdW5kYXRpb24iLAorICAgICAg
ICBAImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCIsCisgICAgICAgIEAiY29tLmFwcGxlLmFw
cGxlanBlZyIsCisgICAgICAgIEAiY29tLmFwcGxlLmF1ZGlvLnZpcnR1YWxhdWRpbyIsCisgICAg
ICAgIEAiY29tLmFwcGxlLmF2ZmF1ZGlvIiwKKyAgICAgICAgQCJjb20uYXBwbGUuYXZmb3VuZGF0
aW9uIiwKKyAgICAgICAgQCJjb20uYXBwbGUuYXZmb3VuZGF0aW9uLnZpZGVvcGVyZm9ybWFuY2Vo
dWQiLAorICAgICAgICBAImNvbS5hcHBsZS5jb3JlYXVkaW8iLAorICAgICAgICBAImNvbS5hcHBs
ZS5jb3JlbWVkaWEiLAorICAgICAgICBAImNvbS5hcHBsZS5jb3JldmlkZW8iLAorICAgICAgICBA
ImNvbS5hcHBsZS5sb29rdXAuc2hhcmVkIiwKKyAgICAgICAgQCJjb20uYXBwbGUubWVkaWFhY2Nl
c3NpYmlsaXR5IiwKKyAgICB9OworICAgIGZvciAoYXV0byBkb21haW4gOiBkb21haW5zKSB7Cisg
ICAgICAgIGF1dG8gdXNlckRlZmF1bHRzID0gYWRvcHROUyhbW1dLVXNlckRlZmF1bHRzIGFsbG9j
XSBpbml0V2l0aFN1aXRlTmFtZTpkb21haW5dKTsKKyAgICAgICAgW3VzZXJEZWZhdWx0cy5nZXQo
KSBhZGRPYnNlcnZlcjp1c2VyRGVmYXVsdHMuZ2V0KCkgZm9yS2V5UGF0aDpAInRlc3RrZXkiIG9w
dGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07CisgICAgICAg
IG1fdXNlckRlZmF1bHRzLmFwcGVuZCh1c2VyRGVmYXVsdHMpOworICAgIH0KKyAgICByZXR1cm4g
W3N1cGVyIGluaXRdOworfQorCitAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI1NTE1NCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNz
TWVzc2FnZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIlBs
dWdpblByb2Nlc3NNYW5hZ2VyLmgiCisjaW1wb3J0ICJQcmVmZXJlbmNlT2JzZXJ2ZXIuaCIKICNp
bXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCiAjaW1w
b3J0ICJVc2VySW50ZXJmYWNlSWRpb20uaCIKQEAgLTU2Niw2ICs1NjcsMTAgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cmVnaXN0ZXJOb3RpZmljYXRpbwogICAgIH1dOwogI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIG1fcHJlZmVyZW5jZU9ic2VydmVyID0gYWRvcHROUyhbW1dLUHJlZmVyZW5j
ZU9ic2VydmVyIGFsbG9jXSBpbml0XSk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9v
bDo6dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygpCkBAIC03MzgsNCArNzQzLDExIEBA
IE5TU2V0ICpXZWJQcm9jZXNzUG9vbDo6YWxsb3dlZENsYXNzZXNGb3IKICAgICByZXR1cm4gbV9j
bGFzc2VzRm9yUGFyYW1ldGVyQ29kZXIuZ2V0KCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbikKK3sKKyAgICBm
b3IgKGF1dG8gcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpOb3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoZG9tYWluKSwgMCk7
CisKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1NTE1NCkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4NzQsNiArNDg3NCw3IEBACiAJCUMxMUE5RUQwMjE0MDNCNDAwMENGQjIwQSAvKiBX
ZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU3dpdGNoaW5n
R1BVQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzExRTE2OTIyMTJC
ODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tNb2NrRGlzcGxheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MTFFMTY5MzIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS01vY2tEaXNwbGF5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzE0NUNDMEUyM0RDQTQyNzAwM0E1RUVCIC8qIFByZWZlcmVuY2VP
YnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmVmZXJlbmNlT2JzZXJ2ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MDIyMjM0MUM2MDAwMENENzA3IC8qIFdlYlNwZWVj
aFN5bnRoZXNpc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MDMyMjM0MURGNzAwMENE
NzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMTQ5MzgwQTIyMzg1M0JFMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTU5OTcsNiArNTk5OCw3IEBACiAJCQkJQ0RBMjlBMUUxQ0JFQjVGQjAw
OTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oICovLAogCQkJCUNEQTI5QTIy
MUNCRUI2MUEwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4gKi8sCiAJCQkJQ0RBMjlBMUYxQ0JFQjVGQjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eS5tbSAqLywKKwkJCQlDMTQ1Q0MwRTIzRENBNDI3MDAzQTVFRUIgLyogUHJlZmVy
ZW5jZU9ic2VydmVyLmggKi8sCiAJCQkJNUNCN0FGREQyM0M1MjczRDAwRTQ5Q0YzIC8qIFJlc291
cmNlTG9hZERlbGVnYXRlLmggKi8sCiAJCQkJNUNCN0FGREUyM0M1MjczRDAwRTQ5Q0YzIC8qIFJl
c291cmNlTG9hZERlbGVnYXRlLm1tICovLAogCQkJCTVDQTk4NTRCMjEwQkVCNzMwMDU3RUI2QiAv
KiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI1NTE1NCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw2ICsyOTgsNyBAQCBw
dWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldE1lZGlhTUlNRVR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+KTsKKyAgICB2b2lkIG5vdGlmeVByZWZlcmVuY2VzQ2hhbmdl
ZChjb25zdCBTdHJpbmcmIGRvbWFpbik7CiAjZW5kaWYKIAogICAgIGJvb2wgYXJlQWxsUGFnZXNU
aHJvdHRsZWFibGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MTY5LDQgKzE2OSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm8K
ICAgICBHcmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyhXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBtb2JpbGVBc3NldEhhbmRsZSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgbW9iaWxlQXNzZXRWMkhhbmRsZSkKICAgICBSZXZva2VBY2Nlc3NUb0Fzc2V0U2VydmljZXMo
KQogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBOb3RpZnlQcmVmZXJlbmNlc0No
YW5nZWQoU3RyaW5nIGRvbWFpbikKKyNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkocmV2aXNpb24gMjU1
MTU0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNi
LmluCSh3b3JraW5nIGNvcHkpCkBAIC02NDksNyArNjQ5LDYgQEAKICAgICAod2l0aCByZXBvcnQp
ICh3aXRoIHRlbGVtZXRyeSkKICNlbmRpZgogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLlBv
d2VyTWFuYWdlbWVudC5jb250cm9sIikKLSAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jZnBy
ZWZzZC5kYWVtb24iKQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVzZXJ2aWNlcy5s
YXVuY2hzZXJ2aWNlc2QiKQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmxzZC5tYXBkYiIp
CiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUudGNjZCIpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI1
NTE1NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9T
eXN0ZW1CYXR0ZXJ5Lmg+CiAjZW5kaWYKIAorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJv
eFNQSS5oPgorCiAjaWYgSEFWRShDU0NIRUNLRklYRElTQUJMRSkKIGV4dGVybiAiQyIgdm9pZCBf
Q1NDaGVja0ZpeERpc2FibGUoKTsKICNlbmRpZgpAQCAtODUyLDYgKzg1NCwxMSBAQCB2b2lkIFdl
YlByb2Nlc3M6OnNldE1lZGlhTUlNRVR5cGVzKGNvbnN0CiAgICAgICAgIGNhY2hlLmFkZFN1cHBv
cnRlZFR5cGVzKHR5cGVzKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjpub3RpZnlQcmVmZXJlbmNl
c0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4pCit7CisgICAgX0NGUHJlZmVyZW5jZXNGbHVz
aENhY2hlc0ZvcklkZW50aWZpZXIoZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlBy
ZWZlcmVuY2VzQ3VycmVudFVzZXIpOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQogdm9pZCBXZWJQ
cm9jZXNzOjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyhXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmIG1vYmlsZUFzc2V0SGFuZGxlLCAgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiBtb2JpbGVBc3NldFYySGFuZGxlKQogewpJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU1MTU0KQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDEtMjUg
IFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBDRiBw
cmVmcyBkaXJlY3QgbW9kZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VzLm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1QpOgor
CiAyMDIwLTAxLTI3ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTUxMzEuCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjU1MTU0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg2Miw3
ICs4NjIsMTIgQEAKIAkJQzBBREJFOTYxMkZDQTc5QjAwRDJDMTI5IC8qIHNpbXBsZS1mb3JtLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzBBREJFODQxMkZDQTZCNjAwRDJDMTI5IC8qIHNpbXBsZS1mb3JtLmh0bWwgKi87IH07CiAJCUMw
QkQ2NjlGMTMxRDNDRkYwMEUxOEYyQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVh
cmx5X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMEJENjY5RTEzMUQzQ0ZGMDBFMThGMkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNu
dEZpcmVFYXJseV9CdW5kbGUuY3BwICovOyB9OwogCQlDMEM1RDNDNjE0NTk5MTI5MDBBODAyQTYg
LyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQzVEM0JEMTQ1OThCNkYwMEE4MDJBNiAvKiBHZXRC
YWNraW5nU2NhbGVGYWN0b3JfQnVuZGxlLm1tICovOyB9OworPDw8PDw8PCAubWluZQorCQlDMTQ1
Q0MxMjIzREQyRDY2MDAzQTVFRUIgLyogUHJlZmVyZW5jZXMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ1Q0MxMTIzREQyRDY2MDAzQTVFRUIgLyog
UHJlZmVyZW5jZXMubW0gKi87IH07Cit8fHx8fHx8IC5yMjU1MDgxCis9PT09PT09CiAJCUMxNDVD
QzBDMjNEQTVBMUYwMDNBNUVFQiAvKiBNaW1lVHlwZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ1Q0MwQjIzREE1QTBGMDAzQTVFRUIgLyogTWlt
ZVR5cGVzLm1tICovOyB9OworPj4+Pj4+PiAucjI1NTE0NAogCQlDMTY5MkRDQTIzRDEwREFFMDA2
RTg4RjcgLyogQmF0dGVyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMxNjkyREM5MjNEMTBEQUUwMDZFODhGNyAvKiBCYXR0ZXJ5Lm1tICovOyB9Owog
CQlDMjBGODhBNzIyOTVCOTY3MDBENjEwRkEgLyogQ29yZVRleHQuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIwRjg4QTYyMjk1Qjk2
NzAwRDYxMEZBIC8qIENvcmVUZXh0LmZyYW1ld29yayAqLzsgfTsKIAkJQzIyRkEzMkIyMjhGODcw
ODAwOUQ3OTg4IC8qIFRleHRXaWR0aC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyMkZBMzJBMjI4Rjg3MDgwMDlENzk4OCAvKiBUZXh0V2lkdGgubW0g
Ki87IH07CkBAIC0yMzg2LDcgKzIzOTEsMTIgQEAKIAkJQzBCRDY2OUUxMzFEM0NGRjAwRTE4RjJB
IC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlfQnVuZGxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRG
aXJlRWFybHlfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBDNUQz
QkMxNDU5OEI2RjAwQTgwMkE2IC8qIEdldEJhY2tpbmdTY2FsZUZhY3Rvci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rvci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBDNUQzQkQxNDU5OEI2RjAwQTgwMkE2IC8q
IEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBHZXRCYWNraW5nU2NhbGVGYWN0b3JfQnVuZGxlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworPDw8PDw8PCAubWluZQorCQlDMTQ1Q0MxMTIzREQyRDY2MDAz
QTVFRUIgLyogUHJlZmVyZW5jZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVmZXJlbmNl
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKK3x8fHx8fHwgLnIyNTUwODEKKz09PT09
PT0KIAkJQzE0NUNDMEIyM0RBNUEwRjAwM0E1RUVCIC8qIE1pbWVUeXBlcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1pbWVUeXBlcy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKz4+Pj4+Pj4gLnIyNTUxNDQKIAkJQzE2OTJEQzkyM0QxMERBRTAwNkU4
OEY3IC8qIEJhdHRlcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCYXR0ZXJ5Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUQ4RUUyMTIwMjhFOEUzMDA4RUIxNDEgLyogV2Vi
UHJvY2Vzc1Rlcm1pbmF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYlByb2Nlc3NUZXJtaW5hdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyMEY4OEE2MjI5NUI5NjcwMEQ2MTBGQSAvKiBDb3JlVGV4dC5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgbmFtZSA9IENvcmVUZXh0LmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZVRleHQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKQEAgLTI4
MjcsOCArMjgzNywxMyBAQAogCQkwRjEzOUU3NDFBNDIzQTQ2MDBGNTkwRjUgLyogY29jb2EgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorPDw8PDw8PCAubWluZQor
fHx8fHx8fCAucjI1NTA4MQorPT09PT09PQorPj4+Pj4+PiAucjI1NTE0NAogCQkJCUMxNjkyREM5
MjNEMTBEQUUwMDZFODhGNyAvKiBCYXR0ZXJ5Lm1tICovLAogCQkJCUMxNDVDQzBCMjNEQTVBMEYw
MDNBNUVFQiAvKiBNaW1lVHlwZXMubW0gKi8sCisJCQkJQzE0NUNDMTEyM0REMkQ2NjAwM0E1RUVC
IC8qIFByZWZlcmVuY2VzLm1tICovLAogCQkJCTBGMTM5RTc1MUE0MjNBNTMwMEY1OTBGNSAvKiBX
ZWFrT2JqQ1B0ci5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gY29jb2E7CkBAIC00ODYxLDYgKzQ4
NzYsNyBAQAogCQkJCTdDQ0U3RUE2MUE0MTFBMEYwMDQ0N0M0QyAvKiBQbGF0Zm9ybVV0aWxpdGll
c01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUE3MUE0MTFBMTMwMDQ0N0M0QyAvKiBQ
bGF0Zm9ybVdlYlZpZXdNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk4M0JBRUU4RDFFRjQ2MjU1
MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJQzE0NUNDMTIyM0REMkQ2NjAwM0E1RUVCIC8qIFByZWZlcmVuY2VzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdGMjYxQTQxMUFGNjAwNDQ3QzRDIC8qIFByZWZlcmVuY2VzLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0QyMjdFNDQyMTFBNEQ1RDAwRDI4NUFGIC8qIFByZWZlcnJlZEF1ZGlv
QnVmZmVyU2l6ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0OEQ2QzEwMjI0QjM3NzAwMEUzRTJG
QiAvKiBQcmVmZXJyZWRDb250ZW50TW9kZS5tbSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWltZVR5cGVzLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01pbWVUeXBlcy5tbQkocmV2aXNpb24gMjU1
MTU0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTWltZVR5cGVzLm1tCShu
b25leGlzdGVudCkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2lmIFdLX0hBVkVfQ19TUEkKLQotI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKLSNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKLSNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVS
ZWdpc3RyeS5oPgotCi1URVNUKFdlYktpdCwgTWltZVR5cGVzKQotewotICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5h
bHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNz
UG9vbCA9IChXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKTsKLSAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9X
aW5kb3c6WUVTXSk7Ci0KLSAgICBmb3IgKGF1dG8mIHBhaXIgOiBXZWJDb3JlOjpjb21tb25NZWRp
YVR5cGVzKCkpIHsKLSAgICAgICAgQVNDSUlMaXRlcmFsIGV4dGVuc2lvbiA9IHBhaXIuZXh0ZW5z
aW9uOwotCi0gICAgICAgIGF1dG8ganMgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIndp
bmRvdy5pbnRlcm5hbHMubWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihcIiVzXCIpIiwgZXh0ZW5z
aW9uLmNoYXJhY3RlcnMoKV07Ci0KLSAgICAgICAgYXV0byBtaW1lVHlwZSA9IFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6anNdOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0
ZW5zaW9uKSA9PSBTdHJpbmcobWltZVR5cGUpKTsKLSAgICB9Ci19Ci0KLSNlbmRpZiAvLyBXS19I
QVZFX0NfU1BJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9QcmVmZXJl
bmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Q
cmVmZXJlbmNlcy5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9QcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgV0tfSEFWRV9DX1NQSQorCisj
aW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgor
CitURVNUKFdlYktpdCwgUHJlZmVyZW5jZXMpCit7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZh
bHVlKENGU1RSKCJ0ZXN0a2V5IiksIENGU1RSKCIxIiksIENGU1RSKCJjb20uYXBwbGUuY29yZW1l
ZGlhIikpOworCisgICAgRVhQRUNUX0VRKDEsIENGUHJlZmVyZW5jZXNHZXRBcHBJbnRlZ2VyVmFs
dWUoQ0ZTVFIoInRlc3RrZXkiKSwgQ0ZTVFIoImNvbS5hcHBsZS5jb3JlbWVkaWEiKSwgbnVsbHB0
cikpOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNv
bnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmpl
Y3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsKKyAgICBjb25m
aWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0Lmdl
dCgpOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIGF1dG8gcHJlZmVyZW5j
ZVZhbHVlID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJ3aW5kb3cuaW50ZXJuYWxzLnJlYWRQcmVmZXJlbmNlSW50ZWdlcihcImNv
bS5hcHBsZS5jb3JlbWVkaWFcIiwgXCJ0ZXN0a2V5XCIpIl0uaW50VmFsdWU7CisgICAgfTsKKwor
ICAgIEVYUEVDVF9FUShwcmVmZXJlbmNlVmFsdWUoKSwgMSk7CisKKyAgICBDRlByZWZlcmVuY2Vz
U2V0QXBwVmFsdWUoQ0ZTVFIoInRlc3RrZXkiKSwgQ0ZTVFIoIjIiKSwgQ0ZTVFIoImNvbS5hcHBs
ZS5jb3JlbWVkaWEiKSk7CisKKyAgICBFWFBFQ1RfRVEocHJlZmVyZW5jZVZhbHVlKCksIDIpOwor
fQorCisjZW5kaWYgLy8gV0tfSEFWRV9DX1NQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388878</attachid>
            <date>2020-01-27 11:46:50 -0800</date>
            <delta_ts>2020-01-28 07:42:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203420-20200127114650.patch</filename>
            <type>text/plain</type>
            <size>26603</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI3ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4g
dGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFVTRSBkZWZpbmUgZm9yIENGIHByZWZzIGRpcmVjdCBtb2RlIGlu
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwog
MjAyMC0wMS0yNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFr
ZSBnZXRWVGFibGVQb2ludGVyKCkgYW4gaW5saW5lIGZ1bmN0aW9uIHRvIGJlIGNvbXBsaWFudCB3
aXRoIFdlYktpdCBzdHlsZSBndWlkZWxpbmVzLgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAy
NTUxNTQpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTEsMyArMTkxLDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEFDQ0VTU0lCSUxJ
VFkpCiAjZGVmaW5lIFVTRV9BQ0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMgMQogI2VuZGlmCisK
KyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNkZWZpbmUgVVNFX0NGUFJFRlNfRElS
RUNUX01PREVfSU5fV0VCQ09OVEVOVF9QUk9DRVNTIDEKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDEtMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xs
YW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBDRiBwcmVmcyBkaXJlY3QgbW9kZSBpbiB0aGUg
V2ViQ29udGVudCBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgaW50ZXJuYWxzIGZ1bmN0aW9uIHRvIHJlYWQgaW50ZWdlciBwcmVmZXJl
bmNlLgorCisgICAgICAgIEFQSSB0ZXN0OiBXZWJLaXQuUHJlZmVyZW5jZXMKKworICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVh
ZFByZWZlcmVuY2VJbnRlZ2VyKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAyMC0wMS0yNyAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ29ycmVjdCBWVFQgQ3VlIFN0eWxlIGhh
bmRsaW5nIHRvIG1hdGNoIHRoZSBzcGVjaWZpY2F0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI1NTE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMS0yNSAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENGIHByZWZzIGRpcmVjdCBtb2RlIGlu
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiB0byBmbHVzaCBwcmVm
ZXJlbmNlIGNhY2hlIGZvciBhIGRvbWFpbi4KKworICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZVdGls
aXRpZXNTUEkuaDoKKwogMjAyMC0wMS0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgdW5uZWVkZWQgZGVmaW5pdGlvbnMgZnJvbSBQbGF0Zm9y
bS5oIGZhbWlseSBoZWFkZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9D
RlV0aWxpdGllc1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NmL0NGVXRpbGl0aWVzU1BJLmgJKHJldmlzaW9uIDI1NTE1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NmL0NGVXRpbGl0aWVzU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDQg
KzU4LDYgQEAgQ0ZEaWN0aW9uYXJ5UmVmIF9DRldlYlNlcnZpY2VzQ29weVByb3ZpZAogCiB2b2lk
IF9fQ0ZSdW5Mb29wU2V0T3B0aW9uc1JlYXNvbihfX0NGUnVuTG9vcE9wdGlvbnMgb3B0cywgQ0ZT
dHJpbmdSZWYgcmVhc29uKTsKIAordm9pZCBfQ0ZQcmVmZXJlbmNlc0ZsdXNoQ2FjaGVzRm9ySWRl
bnRpZmllcihDRlN0cmluZ1JlZiBhcHBsaWNhdGlvbklELCBDRlN0cmluZ1JlZiB1c2VyTmFtZSk7
CisKIFdURl9FWFRFUk5fQ19FTkQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAJKHJldmlzaW9uIDI1NTE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ0MSw2ICs1NDQxLDE2IEBAIGJvb2wgSW50ZXJuYWxz
OjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgY29uc3QKICNlbmRpZgogfQogCitsb25nIEludGVybmFsczo6
cmVhZFByZWZlcmVuY2VJbnRlZ2VyKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcm
IGtleSkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBCb29sZWFuIGtleUV4aXN0c0FuZEhh
c1ZhbGlkRm9ybWF0ID0gZmFsc2U7CisgICAgcmV0dXJuIENGUHJlZmVyZW5jZXNHZXRBcHBJbnRl
Z2VyVmFsdWUoa2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRvbWFpbi5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCAma2V5RXhpc3RzQW5kSGFzVmFsaWRGb3JtYXQpOworI2Vsc2UKKyAgICByZXR1
cm4gLTE7CisjZW5kaWYKK30KKwogU3RyaW5nIEludGVybmFsczo6bWVkaWFNSU1FVHlwZUZvckV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICByZXR1cm4gTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0TWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOwpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MzAsNiArOTMw
LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBzeXN0ZW1IYXNCYXR0ZXJ5KCkgY29uc3Q7CiAKKyAg
ICBsb25nIHJlYWRQcmVmZXJlbmNlSW50ZWdlcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
U3RyaW5nJiBrZXkpOworCiAgICAgU3RyaW5nIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBleHRlbnNpb24pOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC04MzgsNSArODM4LDcgQEAgZW51
bSBDb21wb3NpdGluZ1BvbGljeSB7CiAKICAgICBib29sZWFuIHN5c3RlbUhhc0JhdHRlcnkoKTsK
IAorICAgIGxvbmcgcmVhZFByZWZlcmVuY2VJbnRlZ2VyKERPTVN0cmluZyBkb21haW4sIERPTVN0
cmluZyBrZXkpOworCiAgICAgRE9NU3RyaW5nIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oRE9N
U3RyaW5nIGV4dGVuc2lvbik7CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTE1NCkKKysr
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAK
KzIwMjAtMDEtMjcgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBDRiBwcmVmcyBkaXJlY3QgbW9kZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0MjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgQ0Yg
cHJlZnMgZGlyZWN0IG1vZGUsIGluIG9yZGVyIHRvIGF2b2lkIGNvbm5lY3RpbmcgdG8gdGhlIENG
IHByZWZzIGRhZW1vbiBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzLgorICAgICAgICBJbiBkaXJl
Y3QgbW9kZSwgdGhlIHByZWZzIGZpbGVzIHdpbGwgYmUgYWNjZXNzZWQgZGlyZWN0bHksIGFuZCBu
b3QgdGhyb3VnaCB0aGUgQ0YgcHJlZnMgZGFlbW9uLiBBIHByZWZlcmVuY2UKKyAgICAgICAgb2Jz
ZXJ2ZXIgaXMgYWRkZWQgaW4gdGhlIFVJIHByb2Nlc3MsIHdoaWNoIHdpbGwgbm90aWZ5IHRoZSBX
ZWJDb250ZW50IHByb2Nlc3MgYWJvdXQgcHJlZmVyZW5jZXMgY2hhbmdlcyB0byBhCisgICAgICAg
IGRvbWFpbi4gQWZ0ZXIgYSBwcmVmZXJlbmNlIGNoYW5nZSwgdGhlIFdlYkNvbnRlbnQgcHJvY2Vz
cyB3aWxsIGZsdXNoIHRoZSBwcmVmZXJlbmNlIGNhY2hlIGZvciB0aGUgY2hhbmdlZAorICAgICAg
ICBkb21haW4uCisKKyAgICAgICAgQVBJIHRlc3Q6IFdlYktpdC5QcmVmZXJlbmNlcworCisgICAg
ICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50LnNiOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQ
Q1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VN
YWluKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLmg6IEFk
ZGVkLgorICAgICAgICAoLVtXS1VzZXJEZWZhdWx0cyBfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VG
cm9tVmFsdWVzRm9yS2V5czp0b1ZhbHVlc0ZvcktleXM6XSk6CisgICAgICAgICgtW1dLVXNlckRl
ZmF1bHRzIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6
CisgICAgICAgICgtW1dLVXNlckRlZmF1bHRzIGluaXRXaXRoU3VpdGVOYW1lOl0pOgorICAgICAg
ICAoLVtXS1ByZWZlcmVuY2VPYnNlcnZlciBpbml0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpyZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBs
ZS5XZWJQcm9jZXNzLnNiLmluOgorCiAyMDIwLTAxLTI3ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRk
YWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTUxMzEu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Jl
c291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5z
YgkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFBy
b2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IJKHdvcmtpbmcgY29weSkK
QEAgLTYwMCw3ICs2MDAsNyBAQAogKGFsbG93IG1hY2gtbG9va3VwCiAgICAgKGdsb2JhbC1uYW1l
ICJjb20uYXBwbGUubG9nZCIpCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUubG9nZC5ldmVu
dHMiKQotICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNmcHJlZnNkLmRhZW1vbiIpKQorKQog
CiAoYWxsb3cgbWFjaC1sb29rdXAgKHdpdGggcmVwb3J0KSAod2l0aCB0ZWxlbWV0cnkpCiAgICAg
KGdsb2JhbC1uYW1lICJjb20uYXBwbGUuYWdncmVnYXRlZCIpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1h
aW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCShyZXZpc2lvbiAyNTUxNTQp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZU1haW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAK
ICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TQXBwbGljYXRpb25TUEkuaD4KICNlbmRpZgogCitleHRl
cm4gIkMiIHZvaWQgX0NGUHJlZnNTZXREaXJlY3RNb2RlRW5hYmxlZChCT09MIGVuYWJsZWQpOwor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIHZvaWQgWFBDU2VydmljZUV2ZW50SGFuZGxl
cih4cGNfY29ubmVjdGlvbl90IHBlZXIpCkBAIC0xMTYsNiArMTE4LDExIEBAIGludCBYUENTZXJ2
aWNlTWFpbihpbnQsIGNvbnN0IGNoYXIqKikKICAgICB9KTsKICNlbmRpZgogCisjaWYgVVNFKENG
UFJFRlNfRElSRUNUX01PREVfSU5fV0VCQ09OVEVOVF9QUk9DRVNTKQorICAgIC8vIEVuYWJsZSBD
RiBwcmVmcyBkaXJlY3QgbW9kZSB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBDRiBwcmVmcyBk
YWVtb24uCisgICAgX0NGUHJlZnNTZXREaXJlY3RNb2RlRW5hYmxlZChZRVMpOworI2VuZGlmCisK
ICAgICBpZiAoYm9vdHN0cmFwKSB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBpZiAoY29u
c3QgY2hhciogd2ViS2l0QnVuZGxlVmVyc2lvbiA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmco
Ym9vdHN0cmFwLmdldCgpLCAiV2ViS2l0QnVuZGxlVmVyc2lvbiIpKSB7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI1NTE1NCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDYgKzcyLDcgQEAgT0JKQ19DTEFTUyBOU011dGFibGVEaWN0aW9uYXJ5OwogT0JKQ19DTEFT
UyBOU09iamVjdDsKIE9CSkNfQ0xBU1MgTlNTZXQ7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOworT0JK
Q19DTEFTUyBXS1ByZWZlcmVuY2VPYnNlcnZlcjsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCkBAIC01NDAsNiAr
NTQxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclBy
b2Nlc3MoYm9vbCk7CiAgICAgYm9vbCB1c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzOyB9CiAKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIG5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25z
dCBTdHJpbmcmIGRvbWFpbik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZSgpOwogCkBAIC04MDEsNiArODA2LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzRGVsYXllZFdlYlByb2Nlc3NMYXVuY2hEaXNhYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKICAg
ICBib29sIG1fdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyB7IGZhbHNlIH07CisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8V0tQcmVmZXJlbmNlT2JzZXJ2ZXI+IG1f
cHJlZmVyZW5jZU9ic2VydmVyOworI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9i
c2VydmVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UHJlZmVyZW5jZU9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTAgQEAKKy8q
CisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisq
CisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisq
CisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNl
CisKK0BpbnRlcmZhY2UgTlNPYmplY3QgKFByaXZhdGVLVk9NZXRob2RzKQorLSAodm9pZClfbm90
aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VGcm9tVmFsdWVzRm9yS2V5czooTlNEaWN0aW9uYXJ5PE5TU3Ry
aW5nICosIGlkPiAqKW9sZFZhbHVlcyB0b1ZhbHVlc0ZvcktleXM6KE5TRGljdGlvbmFyeTxOU1N0
cmluZyAqLCBpZD4gKiluZXdWYWx1ZXM7CitAZW5kCisKK0BpbnRlcmZhY2UgV0tVc2VyRGVmYXVs
dHMgOiBOU1VzZXJEZWZhdWx0cyB7CitAcHJpdmF0ZQorICAgIFN0cmluZyBtX3N1aXRlTmFtZTsK
K30KKworLSAodm9pZClfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VGcm9tVmFsdWVzRm9yS2V5czoo
TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKW9sZFZhbHVlcyB0b1ZhbHVlc0ZvcktleXM6
KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKiluZXdWYWx1ZXM7CisKKy0gKHZvaWQpb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmpl
Y3QgY2hhbmdlOihOU0RpY3Rpb25hcnk8TlNLZXlWYWx1ZUNoYW5nZUtleSwgaWQ+ICopY2hhbmdl
IGNvbnRleHQ6KHZvaWQgKiljb250ZXh0OworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTdWl0
ZU5hbWU6KE5TU3RyaW5nICopc3VpdGVuYW1lOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tV
c2VyRGVmYXVsdHMKKworLSAodm9pZClfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VGcm9tVmFsdWVz
Rm9yS2V5czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKW9sZFZhbHVlcyB0b1ZhbHVl
c0ZvcktleXM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKiluZXdWYWx1ZXMKK3sKKyAg
ICBbc3VwZXIgX25vdGlmeU9ic2VydmVyc09mQ2hhbmdlRnJvbVZhbHVlc0ZvcktleXM6b2xkVmFs
dWVzIHRvVmFsdWVzRm9yS2V5czpuZXdWYWx1ZXNdOworCisgICAgaWYgKFtvbGRWYWx1ZXMgaXNF
cXVhbFRvRGljdGlvbmFyeTpuZXdWYWx1ZXNdKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3Ig
KGF1dG8qIHByb2Nlc3NQb29sIDogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bv
b2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5ub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQobV9z
dWl0ZU5hbWUpOworfQorCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5n
ICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5PE5TS2V5
VmFsdWVDaGFuZ2VLZXksIGlkPiAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAorewor
fQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTdWl0ZU5hbWU6KE5TU3RyaW5nICopc3VpdGVu
YW1lCit7CisgICAgbV9zdWl0ZU5hbWUgPSBzdWl0ZW5hbWU7CisgICAgcmV0dXJuIFtzdXBlciBp
bml0V2l0aFN1aXRlTmFtZTpzdWl0ZW5hbWVdOworfQorCitAZW5kCisKK0BpbnRlcmZhY2UgV0tQ
cmVmZXJlbmNlT2JzZXJ2ZXIgOiBOU09iamVjdCB7CitAcHJpdmF0ZQorICAgIFZlY3RvcjxSZXRh
aW5QdHI8V0tVc2VyRGVmYXVsdHM+PiBtX3VzZXJEZWZhdWx0czsKK30KKworLSAoaW5zdGFuY2V0
eXBlKWluaXQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1ByZWZlcmVuY2VPYnNlcnZlcgor
CistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxOU1N0
cmluZyo+IGRvbWFpbnMgPSB7CisgICAgICAgIEAiY29tLmFwcGxlLkFjY2Vzc2liaWxpdHkiLAor
ICAgICAgICBAImNvbS5hcHBsZS5BZExpYiIsCisgICAgICAgIEAiY29tLmFwcGxlLkNGTmV0d29y
ayIsCisgICAgICAgIEAiY29tLmFwcGxlLkZvbnRQYXJzZXIiLAorICAgICAgICBAImNvbS5hcHBs
ZS5JbWFnZUlPIiwKKyAgICAgICAgQCJjb20uYXBwbGUuTWV0YWwiLAorICAgICAgICBAImNvbS5h
cHBsZS5VSUtpdCIsCisgICAgICAgIEAiY29tLmFwcGxlLldlYkZvdW5kYXRpb24iLAorICAgICAg
ICBAImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCIsCisgICAgICAgIEAiY29tLmFwcGxlLmFw
cGxlanBlZyIsCisgICAgICAgIEAiY29tLmFwcGxlLmF1ZGlvLnZpcnR1YWxhdWRpbyIsCisgICAg
ICAgIEAiY29tLmFwcGxlLmF2ZmF1ZGlvIiwKKyAgICAgICAgQCJjb20uYXBwbGUuYXZmb3VuZGF0
aW9uIiwKKyAgICAgICAgQCJjb20uYXBwbGUuYXZmb3VuZGF0aW9uLnZpZGVvcGVyZm9ybWFuY2Vo
dWQiLAorICAgICAgICBAImNvbS5hcHBsZS5jb3JlYXVkaW8iLAorICAgICAgICBAImNvbS5hcHBs
ZS5jb3JlbWVkaWEiLAorICAgICAgICBAImNvbS5hcHBsZS5jb3JldmlkZW8iLAorICAgICAgICBA
ImNvbS5hcHBsZS5sb29rdXAuc2hhcmVkIiwKKyAgICAgICAgQCJjb20uYXBwbGUubWVkaWFhY2Nl
c3NpYmlsaXR5IiwKKyAgICB9OworICAgIGZvciAoYXV0byBkb21haW4gOiBkb21haW5zKSB7Cisg
ICAgICAgIGF1dG8gdXNlckRlZmF1bHRzID0gYWRvcHROUyhbW1dLVXNlckRlZmF1bHRzIGFsbG9j
XSBpbml0V2l0aFN1aXRlTmFtZTpkb21haW5dKTsKKyAgICAgICAgW3VzZXJEZWZhdWx0cy5nZXQo
KSBhZGRPYnNlcnZlcjp1c2VyRGVmYXVsdHMuZ2V0KCkgZm9yS2V5UGF0aDpAInRlc3RrZXkiIG9w
dGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07CisgICAgICAg
IG1fdXNlckRlZmF1bHRzLmFwcGVuZCh1c2VyRGVmYXVsdHMpOworICAgIH0KKyAgICByZXR1cm4g
W3N1cGVyIGluaXRdOworfQorCitAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI1NTE1NCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNz
TWVzc2FnZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIlBs
dWdpblByb2Nlc3NNYW5hZ2VyLmgiCisjaW1wb3J0ICJQcmVmZXJlbmNlT2JzZXJ2ZXIuaCIKICNp
bXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCiAjaW1w
b3J0ICJVc2VySW50ZXJmYWNlSWRpb20uaCIKQEAgLTU2Niw2ICs1NjcsMTAgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cmVnaXN0ZXJOb3RpZmljYXRpbwogICAgIH1dOwogI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIG1fcHJlZmVyZW5jZU9ic2VydmVyID0gYWRvcHROUyhbW1dLUHJlZmVyZW5j
ZU9ic2VydmVyIGFsbG9jXSBpbml0XSk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9v
bDo6dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygpCkBAIC03MzgsNCArNzQzLDExIEBA
IE5TU2V0ICpXZWJQcm9jZXNzUG9vbDo6YWxsb3dlZENsYXNzZXNGb3IKICAgICByZXR1cm4gbV9j
bGFzc2VzRm9yUGFyYW1ldGVyQ29kZXIuZ2V0KCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbikKK3sKKyAgICBm
b3IgKGF1dG8gcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpOb3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoZG9tYWluKSwgMCk7
CisKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1NTE1NCkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4NzQsNiArNDg3NCw3IEBACiAJCUMxMUE5RUQwMjE0MDNCNDAwMENGQjIwQSAvKiBX
ZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU3dpdGNoaW5n
R1BVQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzExRTE2OTIyMTJC
ODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tNb2NrRGlzcGxheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MTFFMTY5MzIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS01vY2tEaXNwbGF5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzE0NUNDMEUyM0RDQTQyNzAwM0E1RUVCIC8qIFByZWZlcmVuY2VP
YnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmVmZXJlbmNlT2JzZXJ2ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MDIyMjM0MUM2MDAwMENENzA3IC8qIFdlYlNwZWVj
aFN5bnRoZXNpc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MDMyMjM0MURGNzAwMENE
NzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMTQ5MzgwQTIyMzg1M0JFMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTU5OTcsNiArNTk5OCw3IEBACiAJCQkJQ0RBMjlBMUUxQ0JFQjVGQjAw
OTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oICovLAogCQkJCUNEQTI5QTIy
MUNCRUI2MUEwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4gKi8sCiAJCQkJQ0RBMjlBMUYxQ0JFQjVGQjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eS5tbSAqLywKKwkJCQlDMTQ1Q0MwRTIzRENBNDI3MDAzQTVFRUIgLyogUHJlZmVy
ZW5jZU9ic2VydmVyLmggKi8sCiAJCQkJNUNCN0FGREQyM0M1MjczRDAwRTQ5Q0YzIC8qIFJlc291
cmNlTG9hZERlbGVnYXRlLmggKi8sCiAJCQkJNUNCN0FGREUyM0M1MjczRDAwRTQ5Q0YzIC8qIFJl
c291cmNlTG9hZERlbGVnYXRlLm1tICovLAogCQkJCTVDQTk4NTRCMjEwQkVCNzMwMDU3RUI2QiAv
KiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI1NTE1NCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw2ICsyOTgsNyBAQCBw
dWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldE1lZGlhTUlNRVR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+KTsKKyAgICB2b2lkIG5vdGlmeVByZWZlcmVuY2VzQ2hhbmdl
ZChjb25zdCBTdHJpbmcmIGRvbWFpbik7CiAjZW5kaWYKIAogICAgIGJvb2wgYXJlQWxsUGFnZXNU
aHJvdHRsZWFibGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MTY5LDQgKzE2OSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm8K
ICAgICBHcmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyhXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBtb2JpbGVBc3NldEhhbmRsZSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgbW9iaWxlQXNzZXRWMkhhbmRsZSkKICAgICBSZXZva2VBY2Nlc3NUb0Fzc2V0U2VydmljZXMo
KQogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBOb3RpZnlQcmVmZXJlbmNlc0No
YW5nZWQoU3RyaW5nIGRvbWFpbikKKyNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkocmV2aXNpb24gMjU1
MTU0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNi
LmluCSh3b3JraW5nIGNvcHkpCkBAIC02NDksNyArNjQ5LDYgQEAKICAgICAod2l0aCByZXBvcnQp
ICh3aXRoIHRlbGVtZXRyeSkKICNlbmRpZgogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLlBv
d2VyTWFuYWdlbWVudC5jb250cm9sIikKLSAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jZnBy
ZWZzZC5kYWVtb24iKQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVzZXJ2aWNlcy5s
YXVuY2hzZXJ2aWNlc2QiKQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmxzZC5tYXBkYiIp
CiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUudGNjZCIpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI1
NTE1NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9T
eXN0ZW1CYXR0ZXJ5Lmg+CiAjZW5kaWYKIAorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJv
eFNQSS5oPgorCiAjaWYgSEFWRShDU0NIRUNLRklYRElTQUJMRSkKIGV4dGVybiAiQyIgdm9pZCBf
Q1NDaGVja0ZpeERpc2FibGUoKTsKICNlbmRpZgpAQCAtODUyLDYgKzg1NCwxMSBAQCB2b2lkIFdl
YlByb2Nlc3M6OnNldE1lZGlhTUlNRVR5cGVzKGNvbnN0CiAgICAgICAgIGNhY2hlLmFkZFN1cHBv
cnRlZFR5cGVzKHR5cGVzKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjpub3RpZnlQcmVmZXJlbmNl
c0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4pCit7CisgICAgX0NGUHJlZmVyZW5jZXNGbHVz
aENhY2hlc0ZvcklkZW50aWZpZXIoZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlBy
ZWZlcmVuY2VzQ3VycmVudFVzZXIpOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQogdm9pZCBXZWJQ
cm9jZXNzOjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyhXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmIG1vYmlsZUFzc2V0SGFuZGxlLCAgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiBtb2JpbGVBc3NldFYySGFuZGxlKQogewpJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU1MTU0KQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDEtMjUg
IFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBDRiBw
cmVmcyBkaXJlY3QgbW9kZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VzLm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1QpOgor
CiAyMDIwLTAxLTI3ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTUxMzEuCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjU1MTU0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg2Miw2
ICs4NjIsNyBAQAogCQlDMEFEQkU5NjEyRkNBNzlCMDBEMkMxMjkgLyogc2ltcGxlLWZvcm0uaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MEFEQkU4NDEyRkNBNkI2MDBEMkMxMjkgLyogc2ltcGxlLWZvcm0uaHRtbCAqLzsgfTsKIAkJQzBC
RDY2OUYxMzFEM0NGRjAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFy
bHlfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMwQkQ2NjlFMTMxRDNDRkYwMEUxOEYyQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250
RmlyZUVhcmx5X0J1bmRsZS5jcHAgKi87IH07CiAJCUMwQzVEM0M2MTQ1OTkxMjkwMEE4MDJBNiAv
KiBHZXRCYWNraW5nU2NhbGVGYWN0b3JfQnVuZGxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBDNUQzQkQxNDU5OEI2RjAwQTgwMkE2IC8qIEdldEJh
Y2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW0gKi87IH07CisJCUMxMDc3RDMyMjNERjcyRkMwMDUw
NjY3MSAvKiBQcmVmZXJlbmNlcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMxMDc3RDMxMjNERjcyRUYwMDUwNjY3MSAvKiBQcmVmZXJlbmNlcy5tbSAq
LzsgfTsKIAkJQzE0NUNDMEMyM0RBNUExRjAwM0E1RUVCIC8qIE1pbWVUeXBlcy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDVDQzBCMjNEQTVBMEYw
MDNBNUVFQiAvKiBNaW1lVHlwZXMubW0gKi87IH07CiAJCUMxNjkyRENBMjNEMTBEQUUwMDZFODhG
NyAvKiBCYXR0ZXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzE2OTJEQzkyM0QxMERBRTAwNkU4OEY3IC8qIEJhdHRlcnkubW0gKi87IH07CiAJCUMy
MEY4OEE3MjI5NUI5NjcwMEQ2MTBGQSAvKiBDb3JlVGV4dC5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjBGODhBNjIyOTVCOTY3MDBE
NjEwRkEgLyogQ29yZVRleHQuZnJhbWV3b3JrICovOyB9OwpAQCAtMjM4Niw2ICsyMzg3LDcgQEAK
IAkJQzBCRDY2OUUxMzFEM0NGRjAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRG
aXJlRWFybHlfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlfQnVuZGxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBDNUQzQkMxNDU5OEI2RjAwQTgwMkE2IC8qIEdldEJhY2tp
bmdTY2FsZUZhY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEdldEJhY2tpbmdTY2FsZUZhY3Rvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzBDNUQzQkQxNDU5OEI2RjAwQTgwMkE2IC8qIEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHZXRCYWNraW5nU2Nh
bGVGYWN0b3JfQnVuZGxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTA3N0Qz
MTIzREY3MkVGMDA1MDY2NzEgLyogUHJlZmVyZW5jZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQcmVmZXJlbmNlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzE0NUNDMEIyM0RBNUEwRjAwM0E1RUVCIC8qIE1pbWVUeXBlcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1pbWVUeXBlcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE2OTJEQzkyM0QxMERBRTAwNkU4OEY3IC8qIEJhdHRlcnku
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCYXR0ZXJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMUQ4RUUyMTIwMjhFOEUzMDA4RUIxNDEgLyogV2ViUHJvY2Vzc1Rlcm1pbmF0
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NU
ZXJtaW5hdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODI5LDYgKzI4MzEs
NyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQzE2OTJEQzkyM0QxMERBRTAwNkU4OEY3IC8qIEJh
dHRlcnkubW0gKi8sCiAJCQkJQzE0NUNDMEIyM0RBNUEwRjAwM0E1RUVCIC8qIE1pbWVUeXBlcy5t
bSAqLywKKwkJCQlDMTA3N0QzMTIzREY3MkVGMDA1MDY2NzEgLyogUHJlZmVyZW5jZXMubW0gKi8s
CiAJCQkJMEYxMzlFNzUxQTQyM0E1MzAwRjU5MEY1IC8qIFdlYWtPYmpDUHRyLm1tICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBjb2NvYTsKQEAgLTQ4NjEsNiArNDg2NCw3IEBACiAJCQkJN0NDRTdFQTYx
QTQxMUEwRjAwNDQ3QzRDIC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdFQTcxQTQxMUExMzAwNDQ3QzRDIC8qIFBsYXRmb3JtV2ViVmlld01hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTgzQkFFRThEMUVGNDYyNTUwMERERTg5NCAvKiBQbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMTA3N0QzMjIzREY3MkZDMDA1
MDY2NzEgLyogUHJlZmVyZW5jZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyNjFBNDEx
QUY2MDA0NDdDNEMgLyogUHJlZmVyZW5jZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDIyN0U0
NDIxMUE0RDVEMDBEMjg1QUYgLyogUHJlZmVycmVkQXVkaW9CdWZmZXJTaXplLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjQ4RDZDMTAyMjRCMzc3MDAwRTNFMkZCIC8qIFByZWZlcnJlZENvbnRlbnRN
b2RlLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9QcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9QcmVmZXJlbmNlcy5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9QcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgV0tfSEFW
RV9DX1NQSQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdL
V2ViVmlldy5oIgorCitURVNUKFdlYktpdCwgUHJlZmVyZW5jZXMpCit7CisgICAgQ0ZQcmVmZXJl
bmNlc1NldEFwcFZhbHVlKENGU1RSKCJ0ZXN0a2V5IiksIENGU1RSKCIxIiksIENGU1RSKCJjb20u
YXBwbGUuY29yZW1lZGlhIikpOworCisgICAgRVhQRUNUX0VRKDEsIENGUHJlZmVyZW5jZXNHZXRB
cHBJbnRlZ2VyVmFsdWUoQ0ZTVFIoInRlc3RrZXkiKSwgQ0ZTVFIoImNvbS5hcHBsZS5jb3JlbWVk
aWEiKSwgbnVsbHB0cikpOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBXS1JldGFpblB0cjxXS0Nv
bnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNv
bnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIp
KTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wg
Kiljb250ZXh0LmdldCgpOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIGF1
dG8gcHJlZmVyZW5jZVZhbHVlID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cuaW50ZXJuYWxzLnJlYWRQcmVmZXJlbmNl
SW50ZWdlcihcImNvbS5hcHBsZS5jb3JlbWVkaWFcIiwgXCJ0ZXN0a2V5XCIpIl0uaW50VmFsdWU7
CisgICAgfTsKKworICAgIEVYUEVDVF9FUShwcmVmZXJlbmNlVmFsdWUoKSwgMSk7CisKKyAgICBD
RlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoQ0ZTVFIoInRlc3RrZXkiKSwgQ0ZTVFIoIjIiKSwgQ0ZT
VFIoImNvbS5hcHBsZS5jb3JlbWVkaWEiKSk7CisKKyAgICBFWFBFQ1RfRVEocHJlZmVyZW5jZVZh
bHVlKCksIDIpOworfQorCisjZW5kaWYgLy8gV0tfSEFWRV9DX1NQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388992</attachid>
            <date>2020-01-28 07:42:13 -0800</date>
            <delta_ts>2020-01-28 08:27:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203420-20200128074212.patch</filename>
            <type>text/plain</type>
            <size>26570</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI3ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4g
dGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFVTRSBkZWZpbmUgZm9yIENGIHByZWZzIGRpcmVjdCBtb2RlIGlu
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDoK
KwogMjAyMC0wMS0yNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
TWFrZSBnZXRWVGFibGVQb2ludGVyKCkgYW4gaW5saW5lIGZ1bmN0aW9uIHRvIGJlIGNvbXBsaWFu
dCB3aXRoIFdlYktpdCBzdHlsZSBndWlkZWxpbmVzLgpJbmRleDogU291cmNlL1dURi93dGYvUGxh
dGZvcm1Vc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCShy
ZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDcsMyArMzA3LDcgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAo
IShkZWZpbmVkKFVTRV9TWVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExPQykgJiYgKE9T
KExJTlVYKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpKSkpCiAjZGVmaW5lIFVT
RV9CTUFMTE9DX01FTU9SWV9GT09UUFJJTlRfQVBJIDEKICNlbmRpZgorCisjaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQorI2RlZmluZSBVU0VfQ0ZQUkVGU19ESVJFQ1Rf
TU9ERV9JTl9XRUJDT05URU5UX1BST0NFU1MgMQorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMS0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIENGIHByZWZzIGRpcmVjdCBtb2RlIGluIHRoZSBXZWJD
b250ZW50IHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMzQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBpbnRlcm5hbHMgZnVuY3Rpb24gdG8gcmVhZCBpbnRlZ2VyIHByZWZlcmVuY2Uu
CisKKyAgICAgICAgQVBJIHRlc3Q6IFdlYktpdC5QcmVmZXJlbmNlcworCisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZWFkUHJl
ZmVyZW5jZUludGVnZXIpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIwLTAxLTI3ICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBDb3JyZWN0IFZUVCBDdWUgU3R5bGUgaGFuZGxp
bmcgdG8gbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2
aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4gdGhl
IFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uIHRvIGZsdXNoIHByZWZlcmVu
Y2UgY2FjaGUgZm9yIGEgZG9tYWluLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRlV0aWxpdGll
c1NQSS5oOgorCiAyMDIwLTAxLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgc29tZSB1bm5lZWRlZCBkZWZpbml0aW9ucyBmcm9tIFBsYXRmb3JtLmgg
ZmFtaWx5IGhlYWRlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGVXRp
bGl0aWVzU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2Yv
Q0ZVdGlsaXRpZXNTUEkuaAkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY2YvQ0ZVdGlsaXRpZXNTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNCArNTgs
OCBAQCBDRkRpY3Rpb25hcnlSZWYgX0NGV2ViU2VydmljZXNDb3B5UHJvdmlkCiAKIHZvaWQgX19D
RlJ1bkxvb3BTZXRPcHRpb25zUmVhc29uKF9fQ0ZSdW5Mb29wT3B0aW9ucyBvcHRzLCBDRlN0cmlu
Z1JlZiByZWFzb24pOwogCit2b2lkIF9DRlByZWZlcmVuY2VzRmx1c2hDYWNoZXNGb3JJZGVudGlm
aWVyKENGU3RyaW5nUmVmIGFwcGxpY2F0aW9uSUQsIENGU3RyaW5nUmVmIHVzZXJOYW1lKTsKKwor
dm9pZCBfQ0ZQcmVmc1NldERpcmVjdE1vZGVFbmFibGVkKEJPT0wgZW5hYmxlZCk7CisKIFdURl9F
WFRFUk5fQ19FTkQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlz
aW9uIDI1NTE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTQ0MSw2ICs1NDQxLDE2IEBAIGJvb2wgSW50ZXJuYWxzOjpzeXN0ZW1I
YXNCYXR0ZXJ5KCkgY29uc3QKICNlbmRpZgogfQogCitsb25nIEludGVybmFsczo6cmVhZFByZWZl
cmVuY2VJbnRlZ2VyKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSkKK3sK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBCb29sZWFuIGtleUV4aXN0c0FuZEhhc1ZhbGlkRm9y
bWF0ID0gZmFsc2U7CisgICAgcmV0dXJuIENGUHJlZmVyZW5jZXNHZXRBcHBJbnRlZ2VyVmFsdWUo
a2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCAma2V5RXhpc3RzQW5kSGFzVmFsaWRGb3JtYXQpOworI2Vsc2UKKyAgICByZXR1cm4gLTE7Cisj
ZW5kaWYKK30KKwogU3RyaW5nIEludGVybmFsczo6bWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0TWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOwpJbmRleDogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MzAsNiArOTMwLDggQEAgcHVi
bGljOgogCiAgICAgYm9vbCBzeXN0ZW1IYXNCYXR0ZXJ5KCkgY29uc3Q7CiAKKyAgICBsb25nIHJl
YWRQcmVmZXJlbmNlSW50ZWdlcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBr
ZXkpOworCiAgICAgU3RyaW5nIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBleHRlbnNpb24pOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC04MzgsNSArODM4LDcgQEAgZW51bSBDb21wb3Np
dGluZ1BvbGljeSB7CiAKICAgICBib29sZWFuIHN5c3RlbUhhc0JhdHRlcnkoKTsKIAorICAgIGxv
bmcgcmVhZFByZWZlcmVuY2VJbnRlZ2VyKERPTVN0cmluZyBkb21haW4sIERPTVN0cmluZyBrZXkp
OworCiAgICAgRE9NU3RyaW5nIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oRE9NU3RyaW5nIGV4
dGVuc2lvbik7CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTE1NCkKKysrIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjAtMDEt
MjcgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBD
RiBwcmVmcyBkaXJlY3QgbW9kZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0MjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgQ0YgcHJlZnMgZGly
ZWN0IG1vZGUsIGluIG9yZGVyIHRvIGF2b2lkIGNvbm5lY3RpbmcgdG8gdGhlIENGIHByZWZzIGRh
ZW1vbiBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzLgorICAgICAgICBJbiBkaXJlY3QgbW9kZSwg
dGhlIHByZWZzIGZpbGVzIHdpbGwgYmUgYWNjZXNzZWQgZGlyZWN0bHksIGFuZCBub3QgdGhyb3Vn
aCB0aGUgQ0YgcHJlZnMgZGFlbW9uLiBBIHByZWZlcmVuY2UKKyAgICAgICAgb2JzZXJ2ZXIgaXMg
YWRkZWQgaW4gdGhlIFVJIHByb2Nlc3MsIHdoaWNoIHdpbGwgbm90aWZ5IHRoZSBXZWJDb250ZW50
IHByb2Nlc3MgYWJvdXQgcHJlZmVyZW5jZXMgY2hhbmdlcyB0byBhCisgICAgICAgIGRvbWFpbi4g
QWZ0ZXIgYSBwcmVmZXJlbmNlIGNoYW5nZSwgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyB3aWxsIGZs
dXNoIHRoZSBwcmVmZXJlbmNlIGNhY2hlIGZvciB0aGUgY2hhbmdlZAorICAgICAgICBkb21haW4u
CisKKyAgICAgICAgQVBJIHRlc3Q6IFdlYktpdC5QcmVmZXJlbmNlcworCisgICAgICAgICogUmVz
b3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNi
OgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2Uv
WFBDU2VydmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VNYWluKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLmg6IEFkZGVkLgorICAg
ICAgICAoLVtXS1VzZXJEZWZhdWx0cyBfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VGcm9tVmFsdWVz
Rm9yS2V5czp0b1ZhbHVlc0ZvcktleXM6XSk6CisgICAgICAgICgtW1dLVXNlckRlZmF1bHRzIG9i
c2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAg
ICgtW1dLVXNlckRlZmF1bHRzIGluaXRXaXRoU3VpdGVOYW1lOl0pOgorICAgICAgICAoLVtXS1By
ZWZlcmVuY2VPYnNlcnZlciBpbml0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZWdp
c3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dl
YlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bm90aWZ5UHJl
ZmVyZW5jZXNDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9j
ZXNzLnNiLmluOgorCiAyMDIwLTAxLTI3ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTUxMzEuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudC5zYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9T
YW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkocmV2aXNp
b24gMjU1MTU0KQorKysgU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lv
cy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IJKHdvcmtpbmcgY29weSkKQEAgLTYwMCw3
ICs2MDAsNyBAQAogKGFsbG93IG1hY2gtbG9va3VwCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBw
bGUubG9nZCIpCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUubG9nZC5ldmVudHMiKQotICAg
IChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNmcHJlZnNkLmRhZW1vbiIpKQorKQogCiAoYWxsb3cg
bWFjaC1sb29rdXAgKHdpdGggcmVwb3J0KSAod2l0aCB0ZWxlbWV0cnkpCiAgICAgKGdsb2JhbC1u
YW1lICJjb20uYXBwbGUuYWdncmVnYXRlZCIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2Nv
YS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCShyZXZpc2lvbiAyNTUxNTQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBD
U2VydmljZU1haW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKICNpbXBvcnQg
PHBhbC9zcGkvbWFjL05TQXBwbGljYXRpb25TUEkuaD4KICNlbmRpZgogCisjaW1wb3J0IDxwYWwv
c3BpL2NmL0NGVXRpbGl0aWVzU1BJLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMg
dm9pZCBYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKHhwY19jb25uZWN0aW9uX3QgcGVlcikKQEAgLTEx
Niw2ICsxMTgsMTEgQEAgaW50IFhQQ1NlcnZpY2VNYWluKGludCwgY29uc3QgY2hhcioqKQogICAg
IH0pOwogI2VuZGlmCiAKKyNpZiBVU0UoQ0ZQUkVGU19ESVJFQ1RfTU9ERV9JTl9XRUJDT05URU5U
X1BST0NFU1MpCisgICAgLy8gRW5hYmxlIENGIHByZWZzIGRpcmVjdCBtb2RlIHRvIGF2b2lkIGNv
bm5lY3RpbmcgdG8gdGhlIENGIHByZWZzIGRhZW1vbi4KKyAgICBfQ0ZQcmVmc1NldERpcmVjdE1v
ZGVFbmFibGVkKFlFUyk7CisjZW5kaWYKKwogICAgIGlmIChib290c3RyYXApIHsKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgICAgIGlmIChjb25zdCBjaGFyKiB3ZWJLaXRCdW5kbGVWZXJzaW9uID0g
eHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhib290c3RyYXAuZ2V0KCksICJXZWJLaXRCdW5kbGVW
ZXJzaW9uIikpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBPQkpDX0NMQVNTIE5TTXV0
YWJsZURpY3Rpb25hcnk7CiBPQkpDX0NMQVNTIE5TT2JqZWN0OwogT0JKQ19DTEFTUyBOU1NldDsK
IE9CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpDX0NMQVNTIFdLUHJlZmVyZW5jZU9ic2VydmVyOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NF
UlZFUl9CTE9DS0lORykKQEAgLTU0MCw2ICs1NDEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhib29sKTsKICAgICBib29sIHVzZVNlcGFy
YXRlU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3VzZVNlcGFyYXRlU2Vy
dmljZVdvcmtlclByb2Nlc3M7IH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgbm90
aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0cmluZyYgZG9tYWluKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTgwMSw2ICs4MDYs
MTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNEZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERpc2Fi
bGVkIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIGJvb2wgbV91c2VTZXBhcmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzIHsgZmFsc2UgfTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0
cjxXS1ByZWZlcmVuY2VPYnNlcnZlcj4gbV9wcmVmZXJlbmNlT2JzZXJ2ZXI7CisjZW5kaWYKIH07
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDExMCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBh
cmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKworQGludGVyZmFjZSBOU09iamVjdCAoUHJpdmF0
ZUtWT01ldGhvZHMpCistICh2b2lkKV9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNG
b3JLZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopb2xkVmFsdWVzIHRvVmFsdWVz
Rm9yS2V5czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKW5ld1ZhbHVlczsKK0BlbmQK
KworQGludGVyZmFjZSBXS1VzZXJEZWZhdWx0cyA6IE5TVXNlckRlZmF1bHRzIHsKK0Bwcml2YXRl
CisgICAgU3RyaW5nIG1fc3VpdGVOYW1lOworfQorCistICh2b2lkKV9ub3RpZnlPYnNlcnZlcnNP
ZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICop
b2xkVmFsdWVzIHRvVmFsdWVzRm9yS2V5czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAq
KW5ld1ZhbHVlczsKKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAq
KWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeTxOU0tleVZh
bHVlQ2hhbmdlS2V5LCBpZD4gKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQ7CisKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFN1aXRlTmFtZTooTlNTdHJpbmcgKilzdWl0ZW5hbWU7CitA
ZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1VzZXJEZWZhdWx0cworCistICh2b2lkKV9ub3RpZnlP
YnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQ+ICopb2xkVmFsdWVzIHRvVmFsdWVzRm9yS2V5czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5n
ICosIGlkPiAqKW5ld1ZhbHVlcworeworICAgIFtzdXBlciBfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFu
Z2VGcm9tVmFsdWVzRm9yS2V5czpvbGRWYWx1ZXMgdG9WYWx1ZXNGb3JLZXlzOm5ld1ZhbHVlc107
CisKKyAgICBpZiAoW29sZFZhbHVlcyBpc0VxdWFsVG9EaWN0aW9uYXJ5Om5ld1ZhbHVlc10pCisg
ICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wgOiBXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPm5v
dGlmeVByZWZlcmVuY2VzQ2hhbmdlZChtX3N1aXRlTmFtZSk7Cit9CisKKy0gKHZvaWQpb2JzZXJ2
ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3Qg
Y2hhbmdlOihOU0RpY3Rpb25hcnk8TlNLZXlWYWx1ZUNoYW5nZUtleSwgaWQ+ICopY2hhbmdlIGNv
bnRleHQ6KHZvaWQgKiljb250ZXh0Cit7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFN1
aXRlTmFtZTooTlNTdHJpbmcgKilzdWl0ZW5hbWUKK3sKKyAgICBtX3N1aXRlTmFtZSA9IHN1aXRl
bmFtZTsKKyAgICByZXR1cm4gW3N1cGVyIGluaXRXaXRoU3VpdGVOYW1lOnN1aXRlbmFtZV07Cit9
CisKK0BlbmQKKworQGludGVyZmFjZSBXS1ByZWZlcmVuY2VPYnNlcnZlciA6IE5TT2JqZWN0IHsK
K0Bwcml2YXRlCisgICAgVmVjdG9yPFJldGFpblB0cjxXS1VzZXJEZWZhdWx0cz4+IG1fdXNlckRl
ZmF1bHRzOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdDsKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIFdLUHJlZmVyZW5jZU9ic2VydmVyCisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAg
c3RkOjppbml0aWFsaXplcl9saXN0PE5TU3RyaW5nKj4gZG9tYWlucyA9IHsKKyAgICAgICAgQCJj
b20uYXBwbGUuQWNjZXNzaWJpbGl0eSIsCisgICAgICAgIEAiY29tLmFwcGxlLkFkTGliIiwKKyAg
ICAgICAgQCJjb20uYXBwbGUuQ0ZOZXR3b3JrIiwKKyAgICAgICAgQCJjb20uYXBwbGUuRm9udFBh
cnNlciIsCisgICAgICAgIEAiY29tLmFwcGxlLkltYWdlSU8iLAorICAgICAgICBAImNvbS5hcHBs
ZS5NZXRhbCIsCisgICAgICAgIEAiY29tLmFwcGxlLlVJS2l0IiwKKyAgICAgICAgQCJjb20uYXBw
bGUuV2ViRm91bmRhdGlvbiIsCisgICAgICAgIEAiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50
IiwKKyAgICAgICAgQCJjb20uYXBwbGUuYXBwbGVqcGVnIiwKKyAgICAgICAgQCJjb20uYXBwbGUu
YXVkaW8udmlydHVhbGF1ZGlvIiwKKyAgICAgICAgQCJjb20uYXBwbGUuYXZmYXVkaW8iLAorICAg
ICAgICBAImNvbS5hcHBsZS5hdmZvdW5kYXRpb24iLAorICAgICAgICBAImNvbS5hcHBsZS5hdmZv
dW5kYXRpb24udmlkZW9wZXJmb3JtYW5jZWh1ZCIsCisgICAgICAgIEAiY29tLmFwcGxlLmNvcmVh
dWRpbyIsCisgICAgICAgIEAiY29tLmFwcGxlLmNvcmVtZWRpYSIsCisgICAgICAgIEAiY29tLmFw
cGxlLmNvcmV2aWRlbyIsCisgICAgICAgIEAiY29tLmFwcGxlLmxvb2t1cC5zaGFyZWQiLAorICAg
ICAgICBAImNvbS5hcHBsZS5tZWRpYWFjY2Vzc2liaWxpdHkiLAorICAgIH07CisgICAgZm9yIChh
dXRvIGRvbWFpbiA6IGRvbWFpbnMpIHsKKyAgICAgICAgYXV0byB1c2VyRGVmYXVsdHMgPSBhZG9w
dE5TKFtbV0tVc2VyRGVmYXVsdHMgYWxsb2NdIGluaXRXaXRoU3VpdGVOYW1lOmRvbWFpbl0pOwor
ICAgICAgICBbdXNlckRlZmF1bHRzLmdldCgpIGFkZE9ic2VydmVyOnVzZXJEZWZhdWx0cy5nZXQo
KSBmb3JLZXlQYXRoOkAidGVzdGtleSIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9u
TmV3IGNvbnRleHQ6bmlsXTsKKyAgICAgICAgbV91c2VyRGVmYXVsdHMuYXBwZW5kKHVzZXJEZWZh
dWx0cyk7CisgICAgfQorICAgIHJldHVybiBbc3VwZXIgaW5pdF07Cit9CisKK0BlbmQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBA
QAogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKKyNpbXBvcnQg
IlByZWZlcmVuY2VPYnNlcnZlci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2lt
cG9ydCAiVGV4dENoZWNrZXIuaCIKICNpbXBvcnQgIlVzZXJJbnRlcmZhY2VJZGlvbS5oIgpAQCAt
NTY2LDYgKzU2NywxMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3Rlck5vdGlmaWNhdGlv
CiAgICAgfV07CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogI2VuZGlmIC8vICFQTEFURk9STShJ
T1NfRkFNSUxZKQorCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV9wcmVmZXJlbmNlT2JzZXJ2
ZXIgPSBhZG9wdE5TKFtbV0tQcmVmZXJlbmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRdKTsKKyNlbmRp
ZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2
ZXJzKCkKQEAgLTczOCw0ICs3NDMsMTEgQEAgTlNTZXQgKldlYlByb2Nlc3NQb29sOjphbGxvd2Vk
Q2xhc3Nlc0ZvcgogICAgIHJldHVybiBtX2NsYXNzZXNGb3JQYXJhbWV0ZXJDb2Rlci5nZXQoKTsK
IH0KIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0
IFN0cmluZyYgZG9tYWluKQoreworICAgIGZvciAoYXV0byBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6Ok5vdGlmeVByZWZl
cmVuY2VzQ2hhbmdlZChkb21haW4pLCAwKTsKKworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDg3NCw2ICs0ODc0LDcgQEAKIAkJQzEx
QTlFRDAyMTQwM0I0MDAwQ0ZCMjBBIC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMTFFMTY5MjIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS01vY2tEaXNwbGF5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxMUUxNjkzMjEyQjg3QzUwMDk4NUZGNiAvKiBXS01v
Y2tEaXNwbGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLTW9j
a0Rpc3BsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTQ1Q0MwRTIzRENB
NDI3MDAzQTVFRUIgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByZWZl
cmVuY2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTQ5MzgwMjIy
MzQxQzYwMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMTQ5MzgwMzIyMzQxREY3MDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNDkzODBBMjIzODUzQkUwMDBDRDcwNyAvKiBX
ZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVz
aXNWb2ljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTk5Nyw2ICs1OTk4LDcg
QEAKIAkJCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5LmggKi8sCiAJCQkJQ0RBMjlBMjIxQ0JFQjYxQTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQlDREEyOUExRjFDQkVCNUZCMDA5
MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tICovLAorCQkJCUMxNDVDQzBF
MjNEQ0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAqLywKIAkJCQk1Q0I3QUZE
RDIzQzUyNzNEMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCAqLywKIAkJCQk1Q0I3
QUZERTIzQzUyNzNEMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8sCiAJCQkJ
NUNBOTg1NEIyMTBCRUI3MzAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSAq
LywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjU1
MTU0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMjk4LDYgKzI5OCw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZvaWQgc2V0TWVkaWFNSU1FVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4pOworICAgIHZv
aWQgbm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0cmluZyYgZG9tYWluKTsKICNlbmRp
ZgogCiAgICAgYm9vbCBhcmVBbGxQYWdlc1Rocm90dGxlYWJsZSgpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDI1NTE1NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNCArMTY5LDggQEAgbWVzc2FnZXMgLT4gV2Vi
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciBObwogICAgIEdyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2Vz
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1vYmlsZUFzc2V0SGFuZGxlLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtb2JpbGVBc3NldFYySGFuZGxlKQogICAgIFJl
dm9rZUFjY2Vzc1RvQXNzZXRTZXJ2aWNlcygpCiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIE5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChTdHJpbmcgZG9tYWluKQorI2VuZGlmCiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2Iu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQ
cm9jZXNzLnNiLmluCShyZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4JKHdvcmtpbmcgY29weSkKQEAgLTY0OSw3ICs2
NDksNiBAQAogICAgICh3aXRoIHJlcG9ydCkgKHdpdGggdGVsZW1ldHJ5KQogI2VuZGlmCiAgICAg
KGdsb2JhbC1uYW1lICJjb20uYXBwbGUuUG93ZXJNYW5hZ2VtZW50LmNvbnRyb2wiKQotICAgIChn
bG9iYWwtbmFtZSAiY29tLmFwcGxlLmNmcHJlZnNkLmRhZW1vbiIpCiAgICAgKGdsb2JhbC1uYW1l
ICJjb20uYXBwbGUuY29yZXNlcnZpY2VzLmxhdW5jaHNlcnZpY2VzZCIpCiAgICAgKGdsb2JhbC1u
YW1lICJjb20uYXBwbGUubHNkLm1hcGRiIikKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS50
Y2NkIikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtODUyLDYgKzg1
MiwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldE1lZGlhTUlNRVR5cGVzKGNvbnN0CiAgICAgICAg
IGNhY2hlLmFkZFN1cHBvcnRlZFR5cGVzKHR5cGVzKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjpu
b3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4pCit7CisgICAgX0NG
UHJlZmVyZW5jZXNGbHVzaENhY2hlc0ZvcklkZW50aWZpZXIoZG9tYWluLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudFVzZXIpOworfQorCiAjaWYgUExBVEZPUk0o
SU9TKQogdm9pZCBXZWJQcm9jZXNzOjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyhXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIG1vYmlsZUFzc2V0SGFuZGxlLCAgV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBtb2JpbGVBc3NldFYySGFuZGxlKQogewpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjU1MTU0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDEtMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBDRiBwcmVmcyBkaXJlY3QgbW9kZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0MjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tOiBBZGRl
ZC4KKyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTAxLTI3ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRk
YWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTUxMzEu
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjU1MTU0KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTg2Miw2ICs4NjIsNyBAQAogCQlDMEFEQkU5NjEyRkNBNzlCMDBEMkMx
MjkgLyogc2ltcGxlLWZvcm0uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMEFEQkU4NDEyRkNBNkI2MDBEMkMxMjkgLyogc2ltcGxlLWZv
cm0uaHRtbCAqLzsgfTsKIAkJQzBCRDY2OUYxMzFEM0NGRjAwRTE4RjJBIC8qIFJlc3BvbnNpdmVu
ZXNzVGltZXJEb2VzbnRGaXJlRWFybHlfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQkQ2NjlFMTMxRDNDRkYwMEUxOEYyQSAvKiBSZXNw
b25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5X0J1bmRsZS5jcHAgKi87IH07CiAJCUMwQzVE
M0M2MTQ1OTkxMjkwMEE4MDJBNiAvKiBHZXRCYWNraW5nU2NhbGVGYWN0b3JfQnVuZGxlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBDNUQzQkQxNDU5
OEI2RjAwQTgwMkE2IC8qIEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW0gKi87IH07CisJ
CUMxMDc3RDMyMjNERjcyRkMwMDUwNjY3MSAvKiBQcmVmZXJlbmNlQ2hhbmdlcy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMDc3RDMxMjNERjcyRUYw
MDUwNjY3MSAvKiBQcmVmZXJlbmNlQ2hhbmdlcy5tbSAqLzsgfTsKIAkJQzE0NUNDMEMyM0RBNUEx
RjAwM0E1RUVCIC8qIE1pbWVUeXBlcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMxNDVDQzBCMjNEQTVBMEYwMDNBNUVFQiAvKiBNaW1lVHlwZXMubW0g
Ki87IH07CiAJCUMxNjkyRENBMjNEMTBEQUUwMDZFODhGNyAvKiBCYXR0ZXJ5Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE2OTJEQzkyM0QxMERBRTAw
NkU4OEY3IC8qIEJhdHRlcnkubW0gKi87IH07CiAJCUMyMEY4OEE3MjI5NUI5NjcwMEQ2MTBGQSAv
KiBDb3JlVGV4dC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjBGODhBNjIyOTVCOTY3MDBENjEwRkEgLyogQ29yZVRleHQuZnJhbWV3
b3JrICovOyB9OwpAQCAtMjM4Niw2ICsyMzg3LDcgQEAKIAkJQzBCRDY2OUUxMzFEM0NGRjAwRTE4
RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlfQnVuZGxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGltZXJEb2Vz
bnRGaXJlRWFybHlfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBD
NUQzQkMxNDU5OEI2RjAwQTgwMkE2IC8qIEdldEJhY2tpbmdTY2FsZUZhY3Rvci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rvci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBDNUQzQkQxNDU5OEI2RjAwQTgwMkE2
IC8qIEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBHZXRCYWNraW5nU2NhbGVGYWN0b3JfQnVuZGxlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTA3N0QzMTIzREY3MkVGMDA1MDY2NzEgLyogUHJl
ZmVyZW5jZUNoYW5nZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBQcmVmZXJlbmNlQ2hhbmdlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0
NUNDMEIyM0RBNUEwRjAwM0E1RUVCIC8qIE1pbWVUeXBlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1pbWVUeXBlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzE2OTJEQzkyM0QxMERBRTAwNkU4OEY3IC8qIEJhdHRlcnkubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBCYXR0ZXJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MUQ4RUUyMTIwMjhFOEUzMDA4RUIxNDEgLyogV2ViUHJvY2Vzc1Rlcm1pbmF0ZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NUZXJtaW5hdGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODI5LDYgKzI4MzEsNyBAQAogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJQzE2OTJEQzkyM0QxMERBRTAwNkU4OEY3IC8qIEJhdHRlcnkubW0gKi8s
CiAJCQkJQzE0NUNDMEIyM0RBNUEwRjAwM0E1RUVCIC8qIE1pbWVUeXBlcy5tbSAqLywKKwkJCQlD
MTA3N0QzMTIzREY3MkVGMDA1MDY2NzEgLyogUHJlZmVyZW5jZUNoYW5nZXMubW0gKi8sCiAJCQkJ
MEYxMzlFNzUxQTQyM0E1MzAwRjU5MEY1IC8qIFdlYWtPYmpDUHRyLm1tICovLAogCQkJKTsKIAkJ
CW5hbWUgPSBjb2NvYTsKQEAgLTQ4NjEsNiArNDg2NCw3IEBACiAJCQkJN0NDRTdFQTYxQTQxMUEw
RjAwNDQ3QzRDIC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdFQTcxQTQxMUExMzAwNDQ3QzRDIC8qIFBsYXRmb3JtV2ViVmlld01hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTgzQkFFRThEMUVGNDYyNTUwMERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50
UG9saWNpZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMTA3N0QzMjIzREY3MkZDMDA1MDY2NzEg
LyogUHJlZmVyZW5jZUNoYW5nZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyNjFBNDEx
QUY2MDA0NDdDNEMgLyogUHJlZmVyZW5jZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDIyN0U0
NDIxMUE0RDVEMDBEMjg1QUYgLyogUHJlZmVycmVkQXVkaW9CdWZmZXJTaXplLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjQ4RDZDMTAyMjRCMzc3MDAwRTNFMkZCIC8qIFByZWZlcnJlZENvbnRlbnRN
b2RlLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9QcmVmZXJlbmNlQ2hhbmdlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9QcmVmZXJlbmNlQ2hhbmdlcy5tbQkobm9uZXhpc3RlbnQpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9QcmVmZXJlbmNlQ2hhbmdlcy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgV0tfSEFWRV9DX1NQSQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorCitURVNUKFdlYktpdCwgUHJlZmVyZW5jZUNo
YW5nZXMpCit7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKENGU1RSKCJ0ZXN0a2V5Iiks
IENGU1RSKCIxIiksIENGU1RSKCJjb20uYXBwbGUuY29yZW1lZGlhIikpOworCisgICAgRVhQRUNU
X0VRKDEsIENGUHJlZmVyZW5jZXNHZXRBcHBJbnRlZ2VyVmFsdWUoQ0ZTVFIoInRlc3RrZXkiKSwg
Q0ZTVFIoImNvbS5hcHBsZS5jb3JlbWVkaWEiKSwgbnVsbHB0cikpOworCisgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVy
bmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nl
c3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRU
b1dpbmRvdzpZRVNdKTsKKworICAgIGF1dG8gcHJlZmVyZW5jZVZhbHVlID0gWyZdIHsKKyAgICAg
ICAgcmV0dXJuIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cu
aW50ZXJuYWxzLnJlYWRQcmVmZXJlbmNlSW50ZWdlcihcImNvbS5hcHBsZS5jb3JlbWVkaWFcIiwg
XCJ0ZXN0a2V5XCIpIl0uaW50VmFsdWU7CisgICAgfTsKKworICAgIEVYUEVDVF9FUShwcmVmZXJl
bmNlVmFsdWUoKSwgMSk7CisKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoQ0ZTVFIoInRl
c3RrZXkiKSwgQ0ZTVFIoIjIiKSwgQ0ZTVFIoImNvbS5hcHBsZS5jb3JlbWVkaWEiKSk7CisKKyAg
ICBFWFBFQ1RfRVEocHJlZmVyZW5jZVZhbHVlKCksIDIpOworfQorCisjZW5kaWYgLy8gV0tfSEFW
RV9DX1NQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388998</attachid>
            <date>2020-01-28 08:27:12 -0800</date>
            <delta_ts>2020-01-29 07:30:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203420-20200128082710.patch</filename>
            <type>text/plain</type>
            <size>26540</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI3ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4g
dGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFVTRSBkZWZpbmUgZm9yIENGIHByZWZzIGRpcmVjdCBtb2RlIGlu
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDoK
KwogMjAyMC0wMS0yNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
TWFrZSBnZXRWVGFibGVQb2ludGVyKCkgYW4gaW5saW5lIGZ1bmN0aW9uIHRvIGJlIGNvbXBsaWFu
dCB3aXRoIFdlYktpdCBzdHlsZSBndWlkZWxpbmVzLgpJbmRleDogU291cmNlL1dURi93dGYvUGxh
dGZvcm1Vc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCShy
ZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDcsMyArMzA3LDcgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAo
IShkZWZpbmVkKFVTRV9TWVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExPQykgJiYgKE9T
KExJTlVYKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpKSkpCiAjZGVmaW5lIFVT
RV9CTUFMTE9DX01FTU9SWV9GT09UUFJJTlRfQVBJIDEKICNlbmRpZgorCisjaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQorI2RlZmluZSBVU0VfQ0ZQUkVGU19ESVJFQ1Rf
TU9ERV9JTl9XRUJDT05URU5UX1BST0NFU1MgMQorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMS0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIENGIHByZWZzIGRpcmVjdCBtb2RlIGluIHRoZSBXZWJD
b250ZW50IHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMzQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBpbnRlcm5hbHMgZnVuY3Rpb24gdG8gcmVhZCBpbnRlZ2VyIHByZWZlcmVuY2Uu
CisKKyAgICAgICAgQVBJIHRlc3Q6IFdlYktpdC5QcmVmZXJlbmNlcworCisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZWFkUHJl
ZmVyZW5jZUludGVnZXIpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIwLTAxLTI3ICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBDb3JyZWN0IFZUVCBDdWUgU3R5bGUgaGFuZGxp
bmcgdG8gbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2
aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4gdGhl
IFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uIHRvIGZsdXNoIHByZWZlcmVu
Y2UgY2FjaGUgZm9yIGEgZG9tYWluLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRlV0aWxpdGll
c1NQSS5oOgorCiAyMDIwLTAxLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgc29tZSB1bm5lZWRlZCBkZWZpbml0aW9ucyBmcm9tIFBsYXRmb3JtLmgg
ZmFtaWx5IGhlYWRlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGVXRp
bGl0aWVzU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2Yv
Q0ZVdGlsaXRpZXNTUEkuaAkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY2YvQ0ZVdGlsaXRpZXNTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNCArNTgs
NiBAQCBDRkRpY3Rpb25hcnlSZWYgX0NGV2ViU2VydmljZXNDb3B5UHJvdmlkCiAKIHZvaWQgX19D
RlJ1bkxvb3BTZXRPcHRpb25zUmVhc29uKF9fQ0ZSdW5Mb29wT3B0aW9ucyBvcHRzLCBDRlN0cmlu
Z1JlZiByZWFzb24pOwogCit2b2lkIF9DRlByZWZlcmVuY2VzRmx1c2hDYWNoZXNGb3JJZGVudGlm
aWVyKENGU3RyaW5nUmVmIGFwcGxpY2F0aW9uSUQsIENGU3RyaW5nUmVmIHVzZXJOYW1lKTsKKwog
V1RGX0VYVEVSTl9DX0VORApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAko
cmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NDQxLDYgKzU0NDEsMTYgQEAgYm9vbCBJbnRlcm5hbHM6OnN5
c3RlbUhhc0JhdHRlcnkoKSBjb25zdAogI2VuZGlmCiB9CiAKK2xvbmcgSW50ZXJuYWxzOjpyZWFk
UHJlZmVyZW5jZUludGVnZXIoY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYga2V5
KQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEJvb2xlYW4ga2V5RXhpc3RzQW5kSGFzVmFs
aWRGb3JtYXQgPSBmYWxzZTsKKyAgICByZXR1cm4gQ0ZQcmVmZXJlbmNlc0dldEFwcEludGVnZXJW
YWx1ZShrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksICZrZXlFeGlzdHNBbmRIYXNWYWxpZEZvcm1hdCk7CisjZWxzZQorICAgIHJldHVybiAt
MTsKKyNlbmRpZgorfQorCiBTdHJpbmcgSW50ZXJuYWxzOjptZWRpYU1JTUVUeXBlRm9yRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDI1NTE1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzMCw2ICs5MzAsOCBA
QCBwdWJsaWM6CiAKICAgICBib29sIHN5c3RlbUhhc0JhdHRlcnkoKSBjb25zdDsKIAorICAgIGxv
bmcgcmVhZFByZWZlcmVuY2VJbnRlZ2VyKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJp
bmcmIGtleSk7CisKICAgICBTdHJpbmcgbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbik7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCShyZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTgzOCw1ICs4MzgsNyBAQCBlbnVtIENv
bXBvc2l0aW5nUG9saWN5IHsKIAogICAgIGJvb2xlYW4gc3lzdGVtSGFzQmF0dGVyeSgpOwogCisg
ICAgbG9uZyByZWFkUHJlZmVyZW5jZUludGVnZXIoRE9NU3RyaW5nIGRvbWFpbiwgRE9NU3RyaW5n
IGtleSk7CisKICAgICBET01TdHJpbmcgbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihET01TdHJp
bmcgZXh0ZW5zaW9uKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU1MTU0KQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAy
MC0wMS0yNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIENGIHByZWZzIGRpcmVjdCBtb2RlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQyMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBDRiBwcmVm
cyBkaXJlY3QgbW9kZSwgaW4gb3JkZXIgdG8gYXZvaWQgY29ubmVjdGluZyB0byB0aGUgQ0YgcHJl
ZnMgZGFlbW9uIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisgICAgICAgIEluIGRpcmVjdCBt
b2RlLCB0aGUgcHJlZnMgZmlsZXMgd2lsbCBiZSBhY2Nlc3NlZCBkaXJlY3RseSwgYW5kIG5vdCB0
aHJvdWdoIHRoZSBDRiBwcmVmcyBkYWVtb24uIEEgcHJlZmVyZW5jZQorICAgICAgICBvYnNlcnZl
ciBpcyBhZGRlZCBpbiB0aGUgVUkgcHJvY2Vzcywgd2hpY2ggd2lsbCBub3RpZnkgdGhlIFdlYkNv
bnRlbnQgcHJvY2VzcyBhYm91dCBwcmVmZXJlbmNlcyBjaGFuZ2VzIHRvIGEKKyAgICAgICAgZG9t
YWluLiBBZnRlciBhIHByZWZlcmVuY2UgY2hhbmdlLCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHdp
bGwgZmx1c2ggdGhlIHByZWZlcmVuY2UgY2FjaGUgZm9yIHRoZSBjaGFuZ2VkCisgICAgICAgIGRv
bWFpbi4KKworICAgICAgICBBUEkgdGVzdDogV2ViS2l0LlByZWZlcmVuY2VzCisKKyAgICAgICAg
KiBSZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRl
bnQuc2I6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vy
dmljZS9YUENTZXJ2aWNlTWFpbi5tbToKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZU1haW4p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIuaDogQWRkZWQu
CisgICAgICAgICgtW1dLVXNlckRlZmF1bHRzIF9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21W
YWx1ZXNGb3JLZXlzOnRvVmFsdWVzRm9yS2V5czpdKToKKyAgICAgICAgKC1bV0tVc2VyRGVmYXVs
dHMgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAg
ICAgICAgKC1bV0tVc2VyRGVmYXVsdHMgaW5pdFdpdGhTdWl0ZU5hbWU6XSk6CisgICAgICAgICgt
W1dLUHJlZmVyZW5jZU9ic2VydmVyIGluaXRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29j
b2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpub3Rp
ZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29tLmFwcGxlLldl
YlByb2Nlc3Muc2IuaW46CisKIDIwMjAtMDEtMjcgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NTEzMS4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxl
LldlYktpdC5XZWJDb250ZW50LnNiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVzb3Vy
Y2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCShy
ZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmls
ZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkod29ya2luZyBjb3B5KQpAQCAt
NjAwLDcgKzYwMCw3IEBACiAoYWxsb3cgbWFjaC1sb29rdXAKICAgICAoZ2xvYmFsLW5hbWUgImNv
bS5hcHBsZS5sb2dkIikKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5sb2dkLmV2ZW50cyIp
Ci0gICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIikpCispCiAKIChh
bGxvdyBtYWNoLWxvb2t1cCAod2l0aCByZXBvcnQpICh3aXRoIHRlbGVtZXRyeSkKICAgICAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS5hZ2dyZWdhdGVkIikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0JKHJldmlzaW9uIDI1NTE1NCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vydmlj
ZS9YUENTZXJ2aWNlTWFpbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQAogI2lt
cG9ydCA8cGFsL3NwaS9tYWMvTlNBcHBsaWNhdGlvblNQSS5oPgogI2VuZGlmCiAKK2V4dGVybiAi
QyIgdm9pZCBfQ0ZQcmVmc1NldERpcmVjdE1vZGVFbmFibGVkKEJPT0wgZW5hYmxlZCk7CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdm9pZCBYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKHhw
Y19jb25uZWN0aW9uX3QgcGVlcikKQEAgLTExNiw2ICsxMTgsMTEgQEAgaW50IFhQQ1NlcnZpY2VN
YWluKGludCwgY29uc3QgY2hhcioqKQogICAgIH0pOwogI2VuZGlmCiAKKyNpZiBVU0UoQ0ZQUkVG
U19ESVJFQ1RfTU9ERV9JTl9XRUJDT05URU5UX1BST0NFU1MpCisgICAgLy8gRW5hYmxlIENGIHBy
ZWZzIGRpcmVjdCBtb2RlIHRvIGF2b2lkIGNvbm5lY3RpbmcgdG8gdGhlIENGIHByZWZzIGRhZW1v
bi4KKyAgICBfQ0ZQcmVmc1NldERpcmVjdE1vZGVFbmFibGVkKFlFUyk7CisjZW5kaWYKKwogICAg
IGlmIChib290c3RyYXApIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIGlmIChjb25zdCBj
aGFyKiB3ZWJLaXRCdW5kbGVWZXJzaW9uID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhib290
c3RyYXAuZ2V0KCksICJXZWJLaXRCdW5kbGVWZXJzaW9uIikpIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNzIs
NiArNzIsNyBAQCBPQkpDX0NMQVNTIE5TTXV0YWJsZURpY3Rpb25hcnk7CiBPQkpDX0NMQVNTIE5T
T2JqZWN0OwogT0JKQ19DTEFTUyBOU1NldDsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpDX0NM
QVNTIFdLUHJlZmVyZW5jZU9ic2VydmVyOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpICYm
IEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKQEAgLTU0MCw2ICs1NDEs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
cyhib29sKTsKICAgICBib29sIHVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25z
dCB7IHJldHVybiBtX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3M7IH0KIAorI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIHZvaWQgbm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0
cmluZyYgZG9tYWluKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKCk7CiAKQEAgLTgwMSw2ICs4MDYsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNE
ZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERpc2FibGVkIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIGJv
b2wgbV91c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzIHsgZmFsc2UgfTsKKworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxXS1ByZWZlcmVuY2VPYnNlcnZlcj4gbV9wcmVm
ZXJlbmNlT2JzZXJ2ZXI7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVm
ZXJlbmNlT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMCBAQAorLyoKKyog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKwor
QGludGVyZmFjZSBOU09iamVjdCAoUHJpdmF0ZUtWT01ldGhvZHMpCistICh2b2lkKV9ub3RpZnlP
YnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQ+ICopb2xkVmFsdWVzIHRvVmFsdWVzRm9yS2V5czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5n
ICosIGlkPiAqKW5ld1ZhbHVlczsKK0BlbmQKKworQGludGVyZmFjZSBXS1VzZXJEZWZhdWx0cyA6
IE5TVXNlckRlZmF1bHRzIHsKK0Bwcml2YXRlCisgICAgU3RyaW5nIG1fc3VpdGVOYW1lOworfQor
CistICh2b2lkKV9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOihOU0Rp
Y3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopb2xkVmFsdWVzIHRvVmFsdWVzRm9yS2V5czooTlNE
aWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKW5ld1ZhbHVlczsKKworLSAodm9pZClvYnNlcnZl
VmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBj
aGFuZ2U6KE5TRGljdGlvbmFyeTxOU0tleVZhbHVlQ2hhbmdlS2V5LCBpZD4gKiljaGFuZ2UgY29u
dGV4dDoodm9pZCAqKWNvbnRleHQ7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFN1aXRlTmFt
ZTooTlNTdHJpbmcgKilzdWl0ZW5hbWU7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1VzZXJE
ZWZhdWx0cworCistICh2b2lkKV9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JL
ZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopb2xkVmFsdWVzIHRvVmFsdWVzRm9y
S2V5czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKW5ld1ZhbHVlcworeworICAgIFtz
dXBlciBfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VGcm9tVmFsdWVzRm9yS2V5czpvbGRWYWx1ZXMg
dG9WYWx1ZXNGb3JLZXlzOm5ld1ZhbHVlc107CisKKyAgICBpZiAoW29sZFZhbHVlcyBpc0VxdWFs
VG9EaWN0aW9uYXJ5Om5ld1ZhbHVlc10pCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0
byogcHJvY2Vzc1Bvb2wgOiBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMo
KSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPm5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChtX3N1aXRl
TmFtZSk7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilr
ZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnk8TlNLZXlWYWx1
ZUNoYW5nZUtleSwgaWQ+ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Cit7Cit9CisK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aFN1aXRlTmFtZTooTlNTdHJpbmcgKilzdWl0ZW5hbWUK
K3sKKyAgICBtX3N1aXRlTmFtZSA9IHN1aXRlbmFtZTsKKyAgICByZXR1cm4gW3N1cGVyIGluaXRX
aXRoU3VpdGVOYW1lOnN1aXRlbmFtZV07Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBXS1ByZWZl
cmVuY2VPYnNlcnZlciA6IE5TT2JqZWN0IHsKK0Bwcml2YXRlCisgICAgVmVjdG9yPFJldGFpblB0
cjxXS1VzZXJEZWZhdWx0cz4+IG1fdXNlckRlZmF1bHRzOworfQorCistIChpbnN0YW5jZXR5cGUp
aW5pdDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLUHJlZmVyZW5jZU9ic2VydmVyCisKKy0g
KGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgc3RkOjppbml0aWFsaXplcl9saXN0PE5TU3RyaW5n
Kj4gZG9tYWlucyA9IHsKKyAgICAgICAgQCJjb20uYXBwbGUuQWNjZXNzaWJpbGl0eSIsCisgICAg
ICAgIEAiY29tLmFwcGxlLkFkTGliIiwKKyAgICAgICAgQCJjb20uYXBwbGUuQ0ZOZXR3b3JrIiwK
KyAgICAgICAgQCJjb20uYXBwbGUuRm9udFBhcnNlciIsCisgICAgICAgIEAiY29tLmFwcGxlLklt
YWdlSU8iLAorICAgICAgICBAImNvbS5hcHBsZS5NZXRhbCIsCisgICAgICAgIEAiY29tLmFwcGxl
LlVJS2l0IiwKKyAgICAgICAgQCJjb20uYXBwbGUuV2ViRm91bmRhdGlvbiIsCisgICAgICAgIEAi
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50IiwKKyAgICAgICAgQCJjb20uYXBwbGUuYXBwbGVq
cGVnIiwKKyAgICAgICAgQCJjb20uYXBwbGUuYXVkaW8udmlydHVhbGF1ZGlvIiwKKyAgICAgICAg
QCJjb20uYXBwbGUuYXZmYXVkaW8iLAorICAgICAgICBAImNvbS5hcHBsZS5hdmZvdW5kYXRpb24i
LAorICAgICAgICBAImNvbS5hcHBsZS5hdmZvdW5kYXRpb24udmlkZW9wZXJmb3JtYW5jZWh1ZCIs
CisgICAgICAgIEAiY29tLmFwcGxlLmNvcmVhdWRpbyIsCisgICAgICAgIEAiY29tLmFwcGxlLmNv
cmVtZWRpYSIsCisgICAgICAgIEAiY29tLmFwcGxlLmNvcmV2aWRlbyIsCisgICAgICAgIEAiY29t
LmFwcGxlLmxvb2t1cC5zaGFyZWQiLAorICAgICAgICBAImNvbS5hcHBsZS5tZWRpYWFjY2Vzc2li
aWxpdHkiLAorICAgIH07CisgICAgZm9yIChhdXRvIGRvbWFpbiA6IGRvbWFpbnMpIHsKKyAgICAg
ICAgYXV0byB1c2VyRGVmYXVsdHMgPSBhZG9wdE5TKFtbV0tVc2VyRGVmYXVsdHMgYWxsb2NdIGlu
aXRXaXRoU3VpdGVOYW1lOmRvbWFpbl0pOworICAgICAgICBbdXNlckRlZmF1bHRzLmdldCgpIGFk
ZE9ic2VydmVyOnVzZXJEZWZhdWx0cy5nZXQoKSBmb3JLZXlQYXRoOkAidGVzdGtleSIgb3B0aW9u
czpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmlsXTsKKyAgICAgICAgbV91
c2VyRGVmYXVsdHMuYXBwZW5kKHVzZXJEZWZhdWx0cyk7CisgICAgfQorICAgIHJldHVybiBbc3Vw
ZXIgaW5pdF07Cit9CisKK0BlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjU1MTU0KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NNZXNz
YWdlcy5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiUGx1Z2lu
UHJvY2Vzc01hbmFnZXIuaCIKKyNpbXBvcnQgIlByZWZlcmVuY2VPYnNlcnZlci5oIgogI2ltcG9y
dCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXIuaCIKICNpbXBvcnQg
IlVzZXJJbnRlcmZhY2VJZGlvbS5oIgpAQCAtNTY2LDYgKzU2NywxMCBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZWdpc3Rlck5vdGlmaWNhdGlvCiAgICAgfV07CiAjZW5kaWYgLy8gUExBVEZPUk0o
SU9TKQogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQorCisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgbV9wcmVmZXJlbmNlT2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV0tQcmVmZXJlbmNlT2Jz
ZXJ2ZXIgYWxsb2NdIGluaXRdKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1
bnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKCkKQEAgLTczOCw0ICs3NDMsMTEgQEAgTlNT
ZXQgKldlYlByb2Nlc3NQb29sOjphbGxvd2VkQ2xhc3Nlc0ZvcgogICAgIHJldHVybiBtX2NsYXNz
ZXNGb3JQYXJhbWV0ZXJDb2Rlci5nZXQoKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6bm90
aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0cmluZyYgZG9tYWluKQoreworICAgIGZvciAo
YXV0byBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6Ok5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChkb21haW4pLCAwKTsKKwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtNDg3NCw2ICs0ODc0LDcgQEAKIAkJQzExQTlFRDAyMTQwM0I0MDAwQ0ZCMjBBIC8qIFdlYlN3
aXRjaGluZ0dQVUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTd2l0Y2hpbmdHUFVD
bGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTFFMTY5MjIxMkI4N0M1
MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS01vY2tEaXNwbGF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxMUUx
NjkzMjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLTW9ja0Rpc3BsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMTQ1Q0MwRTIzRENBNDI3MDAzQTVFRUIgLyogUHJlZmVyZW5jZU9ic2Vy
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByZWZlcmVuY2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMTQ5MzgwMjIyMzQxQzYwMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3lu
dGhlc2lzQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTQ5MzgwMzIyMzQxREY3MDAwQ0Q3MDcg
LyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNw
ZWVjaFN5bnRoZXNpc0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMx
NDkzODBBMjIzODUzQkUwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNTk5Nyw2ICs1OTk4LDcgQEAKIAkJCQlDREEyOUExRTFDQkVCNUZCMDA5MDFD
Q0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmggKi8sCiAJCQkJQ0RBMjlBMjIxQ0JF
QjYxQTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAq
LywKIAkJCQlDREEyOUExRjFDQkVCNUZCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1tICovLAorCQkJCUMxNDVDQzBFMjNEQ0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNl
T2JzZXJ2ZXIuaCAqLywKIAkJCQk1Q0I3QUZERDIzQzUyNzNEMDBFNDlDRjMgLyogUmVzb3VyY2VM
b2FkRGVsZWdhdGUuaCAqLywKIAkJCQk1Q0I3QUZERTIzQzUyNzNEMDBFNDlDRjMgLyogUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW0gKi8sCiAJCQkJNUNBOTg1NEIyMTBCRUI3MzAwNTdFQjZCIC8qIFNh
ZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjk4LDYgKzI5OCw3IEBAIHB1Ymxp
YzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgc2V0TWVkaWFNSU1FVHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4pOworICAgIHZvaWQgbm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNv
bnN0IFN0cmluZyYgZG9tYWluKTsKICNlbmRpZgogCiAgICAgYm9vbCBhcmVBbGxQYWdlc1Rocm90
dGxlYWJsZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1NTE1NCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNjks
NCArMTY5LDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciBObwogICAg
IEdyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIG1vYmlsZUFzc2V0SGFuZGxlLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBt
b2JpbGVBc3NldFYySGFuZGxlKQogICAgIFJldm9rZUFjY2Vzc1RvQXNzZXRTZXJ2aWNlcygpCiAj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE5vdGlmeVByZWZlcmVuY2VzQ2hhbmdl
ZChTdHJpbmcgZG9tYWluKQorI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCShyZXZpc2lvbiAyNTUxNTQp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTY0OSw3ICs2NDksNiBAQAogICAgICh3aXRoIHJlcG9ydCkgKHdp
dGggdGVsZW1ldHJ5KQogI2VuZGlmCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuUG93ZXJN
YW5hZ2VtZW50LmNvbnRyb2wiKQotICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNmcHJlZnNk
LmRhZW1vbiIpCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY29yZXNlcnZpY2VzLmxhdW5j
aHNlcnZpY2VzZCIpCiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUubHNkLm1hcGRiIikKICAg
ICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS50Y2NkIikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjU1MTU0
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtODUyLDYgKzg1MiwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldE1l
ZGlhTUlNRVR5cGVzKGNvbnN0CiAgICAgICAgIGNhY2hlLmFkZFN1cHBvcnRlZFR5cGVzKHR5cGVz
KTsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29uc3Qg
U3RyaW5nJiBkb21haW4pCit7CisgICAgX0NGUHJlZmVyZW5jZXNGbHVzaENhY2hlc0ZvcklkZW50
aWZpZXIoZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVu
dFVzZXIpOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQogdm9pZCBXZWJQcm9jZXNzOjpncmFudEFj
Y2Vzc1RvQXNzZXRTZXJ2aWNlcyhXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIG1v
YmlsZUFzc2V0SGFuZGxlLCAgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBtb2Jp
bGVBc3NldFYySGFuZGxlKQogewpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU1MTU0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDEtMjUgIFBlciBBcm5lIFZvbGxh
biAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBDRiBwcmVmcyBkaXJlY3QgbW9k
ZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L1ByZWZlcmVuY2VDaGFuZ2VzLm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTAx
LTI3ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTUxMzEuCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjU1MTU0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg2Miw2ICs4NjIsNyBA
QAogCQlDMEFEQkU5NjEyRkNBNzlCMDBEMkMxMjkgLyogc2ltcGxlLWZvcm0uaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEFEQkU4NDEy
RkNBNkI2MDBEMkMxMjkgLyogc2ltcGxlLWZvcm0uaHRtbCAqLzsgfTsKIAkJQzBCRDY2OUYxMzFE
M0NGRjAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlfQnVuZGxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQkQ2
NjlFMTMxRDNDRkYwMEUxOEYyQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5
X0J1bmRsZS5jcHAgKi87IH07CiAJCUMwQzVEM0M2MTQ1OTkxMjkwMEE4MDJBNiAvKiBHZXRCYWNr
aW5nU2NhbGVGYWN0b3JfQnVuZGxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzBDNUQzQkQxNDU5OEI2RjAwQTgwMkE2IC8qIEdldEJhY2tpbmdTY2Fs
ZUZhY3Rvcl9CdW5kbGUubW0gKi87IH07CisJCUMxMDc3RDMyMjNERjcyRkMwMDUwNjY3MSAvKiBQ
cmVmZXJlbmNlQ2hhbmdlcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMxMDc3RDMxMjNERjcyRUYwMDUwNjY3MSAvKiBQcmVmZXJlbmNlQ2hhbmdlcy5t
bSAqLzsgfTsKIAkJQzE0NUNDMEMyM0RBNUExRjAwM0E1RUVCIC8qIE1pbWVUeXBlcy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDVDQzBCMjNEQTVB
MEYwMDNBNUVFQiAvKiBNaW1lVHlwZXMubW0gKi87IH07CiAJCUMxNjkyRENBMjNEMTBEQUUwMDZF
ODhGNyAvKiBCYXR0ZXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzE2OTJEQzkyM0QxMERBRTAwNkU4OEY3IC8qIEJhdHRlcnkubW0gKi87IH07CiAJ
CUMyMEY4OEE3MjI5NUI5NjcwMEQ2MTBGQSAvKiBDb3JlVGV4dC5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjBGODhBNjIyOTVCOTY3
MDBENjEwRkEgLyogQ29yZVRleHQuZnJhbWV3b3JrICovOyB9OwpAQCAtMjM4Niw2ICsyMzg3LDcg
QEAKIAkJQzBCRDY2OUUxMzFEM0NGRjAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2Vz
bnRGaXJlRWFybHlfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlfQnVuZGxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBDNUQzQkMxNDU5OEI2RjAwQTgwMkE2IC8qIEdldEJh
Y2tpbmdTY2FsZUZhY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzBDNUQzQkQxNDU5OEI2RjAwQTgwMkE2IC8qIEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5k
bGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHZXRCYWNraW5n
U2NhbGVGYWN0b3JfQnVuZGxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTA3
N0QzMTIzREY3MkVGMDA1MDY2NzEgLyogUHJlZmVyZW5jZUNoYW5nZXMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVmZXJlbmNlQ2hhbmdlcy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0NUNDMEIyM0RBNUEwRjAwM0E1RUVCIC8qIE1pbWVU
eXBlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1pbWVUeXBl
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE2OTJEQzkyM0QxMERBRTAwNkU4
OEY3IC8qIEJhdHRlcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCYXR0ZXJ5Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMUQ4RUUyMTIwMjhFOEUzMDA4RUIxNDEgLyogV2Vi
UHJvY2Vzc1Rlcm1pbmF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYlByb2Nlc3NUZXJtaW5hdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yODI5LDYgKzI4MzEsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQzE2OTJEQzkyM0QxMERB
RTAwNkU4OEY3IC8qIEJhdHRlcnkubW0gKi8sCiAJCQkJQzE0NUNDMEIyM0RBNUEwRjAwM0E1RUVC
IC8qIE1pbWVUeXBlcy5tbSAqLywKKwkJCQlDMTA3N0QzMTIzREY3MkVGMDA1MDY2NzEgLyogUHJl
ZmVyZW5jZUNoYW5nZXMubW0gKi8sCiAJCQkJMEYxMzlFNzUxQTQyM0E1MzAwRjU5MEY1IC8qIFdl
YWtPYmpDUHRyLm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBjb2NvYTsKQEAgLTQ4NjEsNiArNDg2
NCw3IEBACiAJCQkJN0NDRTdFQTYxQTQxMUEwRjAwNDQ3QzRDIC8qIFBsYXRmb3JtVXRpbGl0aWVz
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQTcxQTQxMUExMzAwNDQ3QzRDIC8qIFBs
YXRmb3JtV2ViVmlld01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgzQkFFRThEMUVGNDYyNTUw
MERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gaW4gU291cmNlcyAqLywKKwkJ
CQlDMTA3N0QzMjIzREY3MkZDMDA1MDY2NzEgLyogUHJlZmVyZW5jZUNoYW5nZXMubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0YyNjFBNDExQUY2MDA0NDdDNEMgLyogUHJlZmVyZW5jZXMubW0g
aW4gU291cmNlcyAqLywKIAkJCQlDRDIyN0U0NDIxMUE0RDVEMDBEMjg1QUYgLyogUHJlZmVycmVk
QXVkaW9CdWZmZXJTaXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ4RDZDMTAyMjRCMzc3MDAw
RTNFMkZCIC8qIFByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9QcmVmZXJlbmNlQ2hhbmdlcy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9QcmVmZXJlbmNlQ2hh
bmdlcy5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9QcmVmZXJlbmNlQ2hhbmdlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgV0tfSEFWRV9DX1NQSQorCisj
aW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgor
CitURVNUKFdlYktpdCwgUHJlZmVyZW5jZUNoYW5nZXMpCit7CisgICAgQ0ZQcmVmZXJlbmNlc1Nl
dEFwcFZhbHVlKENGU1RSKCJ0ZXN0a2V5IiksIENGU1RSKCIxIiksIENGU1RSKCJjb20uYXBwbGUu
Y29yZW1lZGlhIikpOworCisgICAgRVhQRUNUX0VRKDEsIENGUHJlZmVyZW5jZXNHZXRBcHBJbnRl
Z2VyVmFsdWUoQ0ZTVFIoInRlc3RrZXkiKSwgQ0ZTVFIoImNvbS5hcHBsZS5jb3JlbWVkaWEiKSwg
bnVsbHB0cikpOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRS
ZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRG
b3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsKKyAg
ICBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250
ZXh0LmdldCgpOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIGF1dG8gcHJl
ZmVyZW5jZVZhbHVlID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cuaW50ZXJuYWxzLnJlYWRQcmVmZXJlbmNlSW50ZWdl
cihcImNvbS5hcHBsZS5jb3JlbWVkaWFcIiwgXCJ0ZXN0a2V5XCIpIl0uaW50VmFsdWU7CisgICAg
fTsKKworICAgIEVYUEVDVF9FUShwcmVmZXJlbmNlVmFsdWUoKSwgMSk7CisKKyAgICBDRlByZWZl
cmVuY2VzU2V0QXBwVmFsdWUoQ0ZTVFIoInRlc3RrZXkiKSwgQ0ZTVFIoIjIiKSwgQ0ZTVFIoImNv
bS5hcHBsZS5jb3JlbWVkaWEiKSk7CisKKyAgICBFWFBFQ1RfRVEocHJlZmVyZW5jZVZhbHVlKCks
IDIpOworfQorCisjZW5kaWYgLy8gV0tfSEFWRV9DX1NQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389136</attachid>
            <date>2020-01-29 07:30:08 -0800</date>
            <delta_ts>2020-02-08 13:28:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203420-20200129073007.patch</filename>
            <type>text/plain</type>
            <size>28555</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI3ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4g
dGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFVTRSBkZWZpbmUgZm9yIENGIHByZWZzIGRpcmVjdCBtb2RlIGlu
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDoK
KwogMjAyMC0wMS0yNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
TWFrZSBnZXRWVGFibGVQb2ludGVyKCkgYW4gaW5saW5lIGZ1bmN0aW9uIHRvIGJlIGNvbXBsaWFu
dCB3aXRoIFdlYktpdCBzdHlsZSBndWlkZWxpbmVzLgpJbmRleDogU291cmNlL1dURi93dGYvUGxh
dGZvcm1Vc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCShy
ZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDcsMyArMzA3LDcgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAo
IShkZWZpbmVkKFVTRV9TWVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExPQykgJiYgKE9T
KExJTlVYKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpKSkpCiAjZGVmaW5lIFVT
RV9CTUFMTE9DX01FTU9SWV9GT09UUFJJTlRfQVBJIDEKICNlbmRpZgorCisjaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQorI2RlZmluZSBVU0VfQ0ZQUkVGU19ESVJFQ1Rf
TU9ERV9JTl9XRUJDT05URU5UX1BST0NFU1MgMQorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMS0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIENGIHByZWZzIGRpcmVjdCBtb2RlIGluIHRoZSBXZWJD
b250ZW50IHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMzQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBpbnRlcm5hbHMgZnVuY3Rpb24gdG8gcmVhZCBpbnRlZ2VyIHByZWZlcmVuY2Uu
CisKKyAgICAgICAgQVBJIHRlc3Q6IFdlYktpdC5QcmVmZXJlbmNlcworCisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZWFkUHJl
ZmVyZW5jZUludGVnZXIpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIwLTAxLTI3ICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBDb3JyZWN0IFZUVCBDdWUgU3R5bGUgaGFuZGxp
bmcgdG8gbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2
aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4gdGhl
IFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uIHRvIGZsdXNoIHByZWZlcmVu
Y2UgY2FjaGUgZm9yIGEgZG9tYWluLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRlV0aWxpdGll
c1NQSS5oOgorCiAyMDIwLTAxLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgc29tZSB1bm5lZWRlZCBkZWZpbml0aW9ucyBmcm9tIFBsYXRmb3JtLmgg
ZmFtaWx5IGhlYWRlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGVXRp
bGl0aWVzU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2Yv
Q0ZVdGlsaXRpZXNTUEkuaAkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY2YvQ0ZVdGlsaXRpZXNTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNCArNTgs
NiBAQCBDRkRpY3Rpb25hcnlSZWYgX0NGV2ViU2VydmljZXNDb3B5UHJvdmlkCiAKIHZvaWQgX19D
RlJ1bkxvb3BTZXRPcHRpb25zUmVhc29uKF9fQ0ZSdW5Mb29wT3B0aW9ucyBvcHRzLCBDRlN0cmlu
Z1JlZiByZWFzb24pOwogCit2b2lkIF9DRlByZWZlcmVuY2VzRmx1c2hDYWNoZXNGb3JJZGVudGlm
aWVyKENGU3RyaW5nUmVmIGFwcGxpY2F0aW9uSUQsIENGU3RyaW5nUmVmIHVzZXJOYW1lKTsKKwog
V1RGX0VYVEVSTl9DX0VORApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAko
cmV2aXNpb24gMjU1MTU0KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NDQxLDYgKzU0NDEsMTYgQEAgYm9vbCBJbnRlcm5hbHM6OnN5
c3RlbUhhc0JhdHRlcnkoKSBjb25zdAogI2VuZGlmCiB9CiAKK2xvbmcgSW50ZXJuYWxzOjpyZWFk
UHJlZmVyZW5jZUludGVnZXIoY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYga2V5
KQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEJvb2xlYW4ga2V5RXhpc3RzQW5kSGFzVmFs
aWRGb3JtYXQgPSBmYWxzZTsKKyAgICByZXR1cm4gQ0ZQcmVmZXJlbmNlc0dldEFwcEludGVnZXJW
YWx1ZShrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksICZrZXlFeGlzdHNBbmRIYXNWYWxpZEZvcm1hdCk7CisjZWxzZQorICAgIHJldHVybiAt
MTsKKyNlbmRpZgorfQorCiBTdHJpbmcgSW50ZXJuYWxzOjptZWRpYU1JTUVUeXBlRm9yRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDI1NTE1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzMCw2ICs5MzAsOCBA
QCBwdWJsaWM6CiAKICAgICBib29sIHN5c3RlbUhhc0JhdHRlcnkoKSBjb25zdDsKIAorICAgIGxv
bmcgcmVhZFByZWZlcmVuY2VJbnRlZ2VyKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJp
bmcmIGtleSk7CisKICAgICBTdHJpbmcgbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbik7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCShyZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTgzOCw1ICs4MzgsNyBAQCBlbnVtIENv
bXBvc2l0aW5nUG9saWN5IHsKIAogICAgIGJvb2xlYW4gc3lzdGVtSGFzQmF0dGVyeSgpOwogCisg
ICAgbG9uZyByZWFkUHJlZmVyZW5jZUludGVnZXIoRE9NU3RyaW5nIGRvbWFpbiwgRE9NU3RyaW5n
IGtleSk7CisKICAgICBET01TdHJpbmcgbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihET01TdHJp
bmcgZXh0ZW5zaW9uKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU1MTU0KQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAy
MC0wMS0yNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIENGIHByZWZzIGRpcmVjdCBtb2RlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQyMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBDRiBwcmVm
cyBkaXJlY3QgbW9kZSwgaW4gb3JkZXIgdG8gYXZvaWQgY29ubmVjdGluZyB0byB0aGUgQ0YgcHJl
ZnMgZGFlbW9uIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisgICAgICAgIEluIGRpcmVjdCBt
b2RlLCB0aGUgcHJlZnMgZmlsZXMgd2lsbCBiZSBhY2Nlc3NlZCBkaXJlY3RseSwgYW5kIG5vdCB0
aHJvdWdoIHRoZSBDRiBwcmVmcyBkYWVtb24uIEEgcHJlZmVyZW5jZQorICAgICAgICBvYnNlcnZl
ciBpcyBhZGRlZCBpbiB0aGUgVUkgcHJvY2Vzcywgd2hpY2ggd2lsbCBub3RpZnkgdGhlIFdlYkNv
bnRlbnQgcHJvY2VzcyBhYm91dCBwcmVmZXJlbmNlcyBjaGFuZ2VzIHRvIGEKKyAgICAgICAgZG9t
YWluLiBBZnRlciBhIHByZWZlcmVuY2UgY2hhbmdlLCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHdp
bGwgZmx1c2ggdGhlIHByZWZlcmVuY2UgY2FjaGUgZm9yIHRoZSBjaGFuZ2VkCisgICAgICAgIGRv
bWFpbi4KKworICAgICAgICBBUEkgdGVzdDogV2ViS2l0LlByZWZlcmVuY2VzCisKKyAgICAgICAg
KiBSZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRl
bnQuc2I6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vy
dmljZS9YUENTZXJ2aWNlTWFpbi5tbToKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZU1haW4p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIuaDogQWRkZWQu
CisgICAgICAgICgtW1dLVXNlckRlZmF1bHRzIF9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21W
YWx1ZXNGb3JLZXlzOnRvVmFsdWVzRm9yS2V5czpdKToKKyAgICAgICAgKC1bV0tVc2VyRGVmYXVs
dHMgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAg
ICAgICAgKC1bV0tVc2VyRGVmYXVsdHMgaW5pdFdpdGhTdWl0ZU5hbWU6XSk6CisgICAgICAgICgt
W1dLUHJlZmVyZW5jZU9ic2VydmVyIGluaXRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29j
b2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpub3Rp
ZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29tLmFwcGxlLldl
YlByb2Nlc3Muc2IuaW46CisKIDIwMjAtMDEtMjcgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NTEzMS4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxl
LldlYktpdC5XZWJDb250ZW50LnNiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVzb3Vy
Y2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCShy
ZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmls
ZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkod29ya2luZyBjb3B5KQpAQCAt
NjAwLDcgKzYwMCw3IEBACiAoYWxsb3cgbWFjaC1sb29rdXAKICAgICAoZ2xvYmFsLW5hbWUgImNv
bS5hcHBsZS5sb2dkIikKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5sb2dkLmV2ZW50cyIp
Ci0gICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIikpCispCiAKIChh
bGxvdyBtYWNoLWxvb2t1cCAod2l0aCByZXBvcnQpICh3aXRoIHRlbGVtZXRyeSkKICAgICAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS5hZ2dyZWdhdGVkIikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0JKHJldmlzaW9uIDI1NTE1NCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vydmlj
ZS9YUENTZXJ2aWNlTWFpbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQAogI2lt
cG9ydCA8cGFsL3NwaS9tYWMvTlNBcHBsaWNhdGlvblNQSS5oPgogI2VuZGlmCiAKK2V4dGVybiAi
QyIgdm9pZCBfQ0ZQcmVmc1NldERpcmVjdE1vZGVFbmFibGVkKEJPT0wgZW5hYmxlZCk7CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdm9pZCBYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKHhw
Y19jb25uZWN0aW9uX3QgcGVlcikKQEAgLTExNiw2ICsxMTgsMTEgQEAgaW50IFhQQ1NlcnZpY2VN
YWluKGludCwgY29uc3QgY2hhcioqKQogICAgIH0pOwogI2VuZGlmCiAKKyNpZiBVU0UoQ0ZQUkVG
U19ESVJFQ1RfTU9ERV9JTl9XRUJDT05URU5UX1BST0NFU1MpCisgICAgLy8gRW5hYmxlIENGIHBy
ZWZzIGRpcmVjdCBtb2RlIHRvIGF2b2lkIGNvbm5lY3RpbmcgdG8gdGhlIENGIHByZWZzIGRhZW1v
bi4KKyAgICBfQ0ZQcmVmc1NldERpcmVjdE1vZGVFbmFibGVkKFlFUyk7CisjZW5kaWYKKwogICAg
IGlmIChib290c3RyYXApIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIGlmIChjb25zdCBj
aGFyKiB3ZWJLaXRCdW5kbGVWZXJzaW9uID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhib290
c3RyYXAuZ2V0KCksICJXZWJLaXRCdW5kbGVWZXJzaW9uIikpIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMjU1MTU0KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNzIs
NiArNzIsNyBAQCBPQkpDX0NMQVNTIE5TTXV0YWJsZURpY3Rpb25hcnk7CiBPQkpDX0NMQVNTIE5T
T2JqZWN0OwogT0JKQ19DTEFTUyBOU1NldDsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpDX0NM
QVNTIFdLUHJlZmVyZW5jZU9ic2VydmVyOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpICYm
IEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKQEAgLTU0MCw2ICs1NDEs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
cyhib29sKTsKICAgICBib29sIHVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25z
dCB7IHJldHVybiBtX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3M7IH0KIAorI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIHZvaWQgbm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0
cmluZyYgZG9tYWluKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKCk7CiAKQEAgLTgwMSw2ICs4MDYsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNE
ZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERpc2FibGVkIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIGJv
b2wgbV91c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzIHsgZmFsc2UgfTsKKworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxXS1ByZWZlcmVuY2VPYnNlcnZlcj4gbV9wcmVm
ZXJlbmNlT2JzZXJ2ZXI7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVm
ZXJlbmNlT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3OCBAQAorLyoKKyog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKwor
QGludGVyZmFjZSBOU09iamVjdCAoUHJpdmF0ZUtWT01ldGhvZHMpCistICh2b2lkKV9ub3RpZnlP
YnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQ+ICopb2xkVmFsdWVzIHRvVmFsdWVzRm9yS2V5czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5n
ICosIGlkPiAqKW5ld1ZhbHVlczsKK0BlbmQKKworQGludGVyZmFjZSBXS1VzZXJEZWZhdWx0cyA6
IE5TVXNlckRlZmF1bHRzIHsKK0Bwcml2YXRlCisgICAgU3RyaW5nIG1fc3VpdGVOYW1lOworfQor
CistICh2b2lkKV9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOihOU0Rp
Y3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopb2xkVmFsdWVzIHRvVmFsdWVzRm9yS2V5czooTlNE
aWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKW5ld1ZhbHVlczsKKworLSAodm9pZClvYnNlcnZl
VmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBj
aGFuZ2U6KE5TRGljdGlvbmFyeTxOU0tleVZhbHVlQ2hhbmdlS2V5LCBpZD4gKiljaGFuZ2UgY29u
dGV4dDoodm9pZCAqKWNvbnRleHQ7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFN1aXRlTmFt
ZTooTlNTdHJpbmcgKilzdWl0ZW5hbWU7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1VzZXJE
ZWZhdWx0cworCistICh2b2lkKV9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JL
ZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopb2xkVmFsdWVzIHRvVmFsdWVzRm9y
S2V5czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKW5ld1ZhbHVlcworeworICAgIFtz
dXBlciBfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VGcm9tVmFsdWVzRm9yS2V5czpvbGRWYWx1ZXMg
dG9WYWx1ZXNGb3JLZXlzOm5ld1ZhbHVlc107CisKKyAgICBpZiAoW29sZFZhbHVlcyBpc0VxdWFs
VG9EaWN0aW9uYXJ5Om5ld1ZhbHVlc10pCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0
byogcHJvY2Vzc1Bvb2wgOiBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMo
KSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPm5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChtX3N1aXRl
TmFtZSk7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilr
ZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnk8TlNLZXlWYWx1
ZUNoYW5nZUtleSwgaWQ+ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Cit7Cit9CisK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aFN1aXRlTmFtZTooTlNTdHJpbmcgKilzdWl0ZW5hbWUK
K3sKKyAgICBtX3N1aXRlTmFtZSA9IHN1aXRlbmFtZTsKKyAgICByZXR1cm4gW3N1cGVyIGluaXRX
aXRoU3VpdGVOYW1lOnN1aXRlbmFtZV07Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBXS1ByZWZl
cmVuY2VPYnNlcnZlciA6IE5TT2JqZWN0IHsKK0Bwcml2YXRlCisgICAgVmVjdG9yPFJldGFpblB0
cjxXS1VzZXJEZWZhdWx0cz4+IG1fdXNlckRlZmF1bHRzOworfQorCistIChpbnN0YW5jZXR5cGUp
aW5pdDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLUHJlZmVyZW5jZU9ic2VydmVyCisKKy0g
KGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgc3RkOjppbml0aWFsaXplcl9saXN0PE5TU3RyaW5n
Kj4gZG9tYWlucyA9IHsKKyAgICAgICAgQCJjb20uYXBwbGUuQWNjZXNzaWJpbGl0eSIsCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgQCJjb20uYXBwbGUuQWRMaWIiLAorICAgICAg
ICBAImNvbS5hcHBsZS5DRk5ldHdvcmsiLAorICAgICAgICBAImNvbS5hcHBsZS5FbW9qaVByZWZl
cmVuY2VzIiwKKyAgICAgICAgQCJjb20uYXBwbGUuRm9udFBhcnNlciIsCisgICAgICAgIEAiY29t
LmFwcGxlLkltYWdlSU8iLAorICAgICAgICBAImNvbS5hcHBsZS5JbnB1dE1vZGVQcmVmZXJlbmNl
cyIsCisjZWxzZQorICAgICAgICBAImNvbS5hcHBsZS5BVFMiLAorICAgICAgICBAImNvbS5hcHBs
ZS5Db3JlR3JhcGhpY3MiLAorICAgICAgICBAImNvbS5hcHBsZS5Eb3dubG9hZEFzc2Vzc21lbnQi
LAorICAgICAgICBAImNvbS5hcHBsZS5ISVRvb2xib3giLAorI2VuZGlmCisgICAgICAgIEAiY29t
LmFwcGxlLkxhdW5jaFNlcnZpY2VzIiwKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAg
ICBAImNvbS5hcHBsZS5NZXRhbCIsCisgICAgICAgIEAiY29tLmFwcGxlLk1vYmlsZUFzc2V0IiwK
KyAgICAgICAgQCJjb20uYXBwbGUuUHJlZmVyZW5jZXMiLAorICAgICAgICBAImNvbS5hcHBsZS5T
cGVha1NlbGVjdGlvbiIsCisgICAgICAgIEAiY29tLmFwcGxlLlVJS2l0IiwKKyAgICAgICAgQCJj
b20uYXBwbGUuVm9pY2VPdmVyVG91Y2giLAorI2Vsc2UKKyAgICAgICAgQCJjb20uYXBwbGUuTXVs
dGl0b3VjaFN1cHBvcnQiCisgICAgICAgIEAiY29tLmFwcGxlLlNlcnZpY2VzTWVudS5TZXJ2aWNl
cyIKKyAgICAgICAgQCJjb20uYXBwbGUuVmlld0JyaWRnZSIKKyNlbmRpZgorICAgICAgICBAImNv
bS5hcHBsZS5XZWJGb3VuZGF0aW9uIiwKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAg
ICBAImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCIsCisgICAgICAgIEAiY29tLmFwcGxlLldl
YlVJIiwKKyAgICAgICAgQCJjb20uYXBwbGUuYWlycGxheSIsCisgICAgICAgIEAiY29tLmFwcGxl
LmFwcGxlanBlZyIsCisgICAgICAgIEAiY29tLmFwcGxlLmF1ZGlvLnZpcnR1YWxhdWRpbyIsCisg
ICAgICAgIEAiY29tLmFwcGxlLmF2ZmF1ZGlvIiwKKyNlbmRpZgorICAgICAgICBAImNvbS5hcHBs
ZS5hdmZvdW5kYXRpb24iLAorICAgICAgICBAImNvbS5hcHBsZS5hdmZvdW5kYXRpb24uZnJlY2Vu
dHMiLAorICAgICAgICBAImNvbS5hcHBsZS5hdmZvdW5kYXRpb24udmlkZW9wZXJmb3JtYW5jZWh1
ZCIsCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgQCJjb20uYXBwbGUuYXZraXQi
LAorICAgICAgICBAImNvbS5hcHBsZS5jb3JlYW5pbWF0aW9uIiwKKyAgICAgICAgQCJjb20uYXBw
bGUuY29yZWF1ZGlvIiwKKyNlbmRpZgorICAgICAgICBAImNvbS5hcHBsZS5jb3JlbWVkaWEiLAor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIEAiY29tLmFwcGxlLmNvcmV2aWRlbyIs
CisgICAgICAgIEAiY29tLmFwcGxlLmRhIiwKKyAgICAgICAgQCJjb20uYXBwbGUuaGFuZ3RyYWNl
ciIsCisgICAgICAgIEAiY29tLmFwcGxlLmluZGlnbyIsCisgICAgICAgIEAiY29tLmFwcGxlLmlv
a2l0LklPTW9iaWxlR3JhcGhpY3NGYW1pbHkiLAorICAgICAgICBAImNvbS5hcHBsZS5pdHVuZXNz
dG9yZWQiLAorICAgICAgICBAImNvbS5hcHBsZS5rZXlib2FyZCIsCisjZWxzZQorICAgICAgICBA
ImNvbS5hcHBsZS5jcnlwdG8iLAorICAgICAgICBAImNvbS5hcHBsZS5kcml2ZXIuQXBwbGVCbHVl
dG9vdGhNdWx0aXRvdWNoLm1vdXNlIiwKKyAgICAgICAgQCJjb20uYXBwbGUuZHJpdmVyLkFwcGxl
Qmx1ZXRvb3RoTXVsdGl0b3VjaC50cmFja3BhZCIsCisgICAgICAgIEAiY29tLmFwcGxlLmRyaXZl
ci5BcHBsZUhJRE1vdXNlIgorI2VuZGlmCisgICAgICAgIEAiY29tLmFwcGxlLmxvb2t1cC5zaGFy
ZWQiLAorICAgICAgICBAImNvbS5hcHBsZS5tZWRpYWFjY2Vzc2liaWxpdHkiLAorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgICAgIEAiY29tLmFwcGxlLm1lZGlhYWNjZXNzaWJpbGl0eS5w
dWJsaWMiLAorICAgICAgICBAImNvbS5hcHBsZS5tZWRpYXJlbW90ZSIsCisgICAgICAgIEAiY29t
LmFwcGxlLm1vYmlsZWlwb2QiLAorICAgICAgICBAImNvbS5hcHBsZS5tdCIsCisjZWxzZQorICAg
ICAgICBAImNvbS5hcHBsZS5uZXR3b3JrQ29ubmVjdCIKKyNlbmRpZgorICAgICAgICBAImNvbS5h
cHBsZS5vcGVuZ2wiLAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIEAiY29tLmFw
cGxlLnByZWZlcmVuY2VzLnNvdW5kcyIsCisgICAgICAgIEAiY29tLmFwcGxlLnNlY3VyaXR5IiwK
KyAgICAgICAgQCJjb20uYXBwbGUudm9pY2VzZXJ2aWNlcyIsCisgICAgICAgIEAiY29tLmFwcGxl
LnZvaWNlc2VydmljZXMubG9nZ2luZyIsCisjZWxzZQorICAgICAgICBAImNvbS5hcHBsZS5zcGVl
Y2gudm9pY2UucHJlZnMiLAorICAgICAgICBAImNvbS5hcHBsZS5zeXN0ZW1zb3VuZCIsCisgICAg
ICAgIEAiY29tLmFwcGxlLnVuaXZlcnNhbGFjY2VzcyIsCisgICAgICAgIEAiY29tLm52aWRpYS5P
cGVuR0wiLAorICAgICAgICBAImVkdS5taXQuS2VyYmVyb3MiLAorI2VuZGlmCisgICAgICAgIEAi
a0NGUHJlZmVyZW5jZXNBbnlBcHBsaWNhdGlvbiIsCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgICAgIEAicGJzIiwKKyNlbmRpZgorICAgIH07CisKKyAgICBmb3IgKGF1dG8gZG9tYWlu
IDogZG9tYWlucykgeworICAgICAgICBhdXRvIHVzZXJEZWZhdWx0cyA9IGFkb3B0TlMoW1tXS1Vz
ZXJEZWZhdWx0cyBhbGxvY10gaW5pdFdpdGhTdWl0ZU5hbWU6ZG9tYWluXSk7CisgICAgICAgIFt1
c2VyRGVmYXVsdHMuZ2V0KCkgYWRkT2JzZXJ2ZXI6dXNlckRlZmF1bHRzLmdldCgpIGZvcktleVBh
dGg6QCJ0ZXN0a2V5IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4
dDpuaWxdOworICAgICAgICBtX3VzZXJEZWZhdWx0cy5hcHBlbmQodXNlckRlZmF1bHRzKTsKKyAg
ICB9CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworQGVuZApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShy
ZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0
ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc1Byb3h5
LmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgorI2ltcG9ydCAiUHJlZmVyZW5j
ZU9ic2VydmVyLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXh0
Q2hlY2tlci5oIgogI2ltcG9ydCAiVXNlckludGVyZmFjZUlkaW9tLmgiCkBAIC01NjYsNiArNTY3
LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyTm90aWZpY2F0aW8KICAgICB9XTsK
ICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkp
CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtX3ByZWZlcmVuY2VPYnNlcnZlciA9IGFkb3B0
TlMoW1tXS1ByZWZlcmVuY2VPYnNlcnZlciBhbGxvY10gaW5pdF0pOworI2VuZGlmCiB9CiAKIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKQpAQCAt
NzM4LDQgKzc0MywxMSBAQCBOU1NldCAqV2ViUHJvY2Vzc1Bvb2w6OmFsbG93ZWRDbGFzc2VzRm9y
CiAgICAgcmV0dXJuIG1fY2xhc3Nlc0ZvclBhcmFtZXRlckNvZGVyLmdldCgpOwogfQogCit2b2lk
IFdlYlByb2Nlc3NQb29sOjpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29uc3QgU3RyaW5nJiBk
b21haW4pCit7CisgICAgZm9yIChhdXRvIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Tm90aWZ5UHJlZmVyZW5jZXNDaGFu
Z2VkKGRvbWFpbiksIDApOworCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyNTUxNTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODc0LDYgKzQ4NzQsNyBAQAogCQlDMTFBOUVEMDIxNDAz
QjQwMDBDRkIyMEEgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMxMUUxNjkyMjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTW9ja0Rpc3BsYXkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzExRTE2OTMyMTJCODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tNb2NrRGlzcGxheS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNDVDQzBFMjNEQ0E0MjcwMDNBNUVF
QiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJlZmVyZW5jZU9ic2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNDkzODAyMjIzNDFDNjAwMDBD
RDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3Bl
ZWNoU3ludGhlc2lzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNDkz
ODAzMjIzNDFERjcwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MEEyMjM4NTNCRTAwMENENzA3IC8qIFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTk3LDYgKzU5OTgsNyBAQAogCQkJCUNE
QTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCAq
LywKIAkJCQlDREEyOUEyMjFDQkVCNjFBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCUNEQTI5QTFGMUNCRUI1RkIwMDkwMUNDRiAvKiBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gKi8sCisJCQkJQzE0NUNDMEUyM0RDQTQyNzAw
M0E1RUVCIC8qIFByZWZlcmVuY2VPYnNlcnZlci5oICovLAogCQkJCTVDQjdBRkREMjNDNTI3M0Qw
MEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovLAogCQkJCTVDQjdBRkRFMjNDNTI3
M0QwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLywKIAkJCQk1Q0E5ODU0QjIx
MEJFQjczMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tICovLApJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNTUxNTQpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTgsNiArMjk4LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBz
ZXRNZWRpYU1JTUVUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPik7CisgICAgdm9pZCBub3RpZnlQ
cmVmZXJlbmNlc0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4pOwogI2VuZGlmCiAKICAgICBi
b29sIGFyZUFsbFBhZ2VzVGhyb3R0bGVhYmxlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjU1MTU0
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTE2OSw0ICsxNjksOCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIE5vCiAgICAgR3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMoV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbW9iaWxlQXNzZXRIYW5kbGUsIFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIG1vYmlsZUFzc2V0VjJIYW5kbGUpCiAgICAgUmV2b2tlQWNjZXNz
VG9Bc3NldFNlcnZpY2VzKCkKICNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTm90
aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKFN0cmluZyBkb21haW4pCisjZW5kaWYKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2Iu
aW4JKHJldmlzaW9uIDI1NTE1NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBw
bGUuV2ViUHJvY2Vzcy5zYi5pbgkod29ya2luZyBjb3B5KQpAQCAtNjQ5LDcgKzY0OSw2IEBACiAg
ICAgKHdpdGggcmVwb3J0KSAod2l0aCB0ZWxlbWV0cnkpCiAjZW5kaWYKICAgICAoZ2xvYmFsLW5h
bWUgImNvbS5hcHBsZS5Qb3dlck1hbmFnZW1lbnQuY29udHJvbCIpCi0gICAgKGdsb2JhbC1uYW1l
ICJjb20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIikKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBs
ZS5jb3Jlc2VydmljZXMubGF1bmNoc2VydmljZXNkIikKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5h
cHBsZS5sc2QubWFwZGIiKQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLnRjY2QiKQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tCShyZXZpc2lvbiAyNTUxNTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NTIsNiArODUyLDExIEBAIHZv
aWQgV2ViUHJvY2Vzczo6c2V0TWVkaWFNSU1FVHlwZXMoY29uc3QKICAgICAgICAgY2FjaGUuYWRk
U3VwcG9ydGVkVHlwZXModHlwZXMpOwogfQogCit2b2lkIFdlYlByb2Nlc3M6Om5vdGlmeVByZWZl
cmVuY2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbikKK3sKKyAgICBfQ0ZQcmVmZXJlbmNl
c0ZsdXNoQ2FjaGVzRm9ySWRlbnRpZmllcihkb21haW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
a0NGUHJlZmVyZW5jZXNDdXJyZW50VXNlcik7Cit9CisKICNpZiBQTEFURk9STShJT1MpCiB2b2lk
IFdlYlByb2Nlc3M6OmdyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzKFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiYgbW9iaWxlQXNzZXRIYW5kbGUsICBXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmIG1vYmlsZUFzc2V0VjJIYW5kbGUpCiB7CkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTUxNTQpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0w
MS0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IENGIHByZWZzIGRpcmVjdCBtb2RlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQyMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvUHJlZmVyZW5jZUNoYW5nZXMubW06IEFkZGVkLgorICAgICAg
ICAoVEVTVCk6CisKIDIwMjAtMDEtMjcgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NTEzMS4KSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTUxNTQpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtODYyLDYgKzg2Miw3IEBACiAJCUMwQURCRTk2MTJGQ0E3OUIwMEQyQzEyOSAvKiBzaW1w
bGUtZm9ybS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMwQURCRTg0MTJGQ0E2QjYwMEQyQzEyOSAvKiBzaW1wbGUtZm9ybS5odG1sICov
OyB9OwogCQlDMEJENjY5RjEzMUQzQ0ZGMDBFMThGMkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRv
ZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzBCRDY2OUUxMzFEM0NGRjAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNz
VGltZXJEb2VzbnRGaXJlRWFybHlfQnVuZGxlLmNwcCAqLzsgfTsKIAkJQzBDNUQzQzYxNDU5OTEy
OTAwQTgwMkE2IC8qIEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEM1RDNCRDE0NTk4QjZGMDBBODAy
QTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAqLzsgfTsKKwkJQzEwNzdEMzIy
M0RGNzJGQzAwNTA2NjcxIC8qIFByZWZlcmVuY2VDaGFuZ2VzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEwNzdEMzEyM0RGNzJFRjAwNTA2NjcxIC8q
IFByZWZlcmVuY2VDaGFuZ2VzLm1tICovOyB9OwogCQlDMTQ1Q0MwQzIzREE1QTFGMDAzQTVFRUIg
LyogTWltZVR5cGVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzE0NUNDMEIyM0RBNUEwRjAwM0E1RUVCIC8qIE1pbWVUeXBlcy5tbSAqLzsgfTsKIAkJ
QzE2OTJEQ0EyM0QxMERBRTAwNkU4OEY3IC8qIEJhdHRlcnkubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTY5MkRDOTIzRDEwREFFMDA2RTg4RjcgLyog
QmF0dGVyeS5tbSAqLzsgfTsKIAkJQzIwRjg4QTcyMjk1Qjk2NzAwRDYxMEZBIC8qIENvcmVUZXh0
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyMEY4OEE2MjI5NUI5NjcwMEQ2MTBGQSAvKiBDb3JlVGV4dC5mcmFtZXdvcmsgKi87IH07
CkBAIC0yMzg2LDYgKzIzODcsNyBAQAogCQlDMEJENjY5RTEzMUQzQ0ZGMDBFMThGMkEgLyogUmVz
cG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJs
eV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEM1RDNCQzE0NTk4
QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMEM1RDNCRDE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFj
a2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMxMDc3RDMxMjNERjcyRUYwMDUwNjY3MSAvKiBQcmVmZXJlbmNlQ2hh
bmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByZWZlcmVu
Y2VDaGFuZ2VzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTQ1Q0MwQjIzREE1
QTBGMDAzQTVFRUIgLyogTWltZVR5cGVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gTWltZVR5cGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MTY5MkRDOTIzRDEwREFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEJhdHRlcnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxRDhFRTIxMjAy
OEU4RTMwMDhFQjE0MSAvKiBXZWJQcm9jZXNzVGVybWluYXRlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc1Rlcm1pbmF0ZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MjksNiArMjgzMSw3IEBACiAJCQljaGlsZHJlbiA9ICgK
IAkJCQlDMTY5MkRDOTIzRDEwREFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSAqLywKIAkJCQlDMTQ1
Q0MwQjIzREE1QTBGMDAzQTVFRUIgLyogTWltZVR5cGVzLm1tICovLAorCQkJCUMxMDc3RDMxMjNE
RjcyRUYwMDUwNjY3MSAvKiBQcmVmZXJlbmNlQ2hhbmdlcy5tbSAqLywKIAkJCQkwRjEzOUU3NTFB
NDIzQTUzMDBGNTkwRjUgLyogV2Vha09iakNQdHIubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IGNv
Y29hOwpAQCAtNDg2MSw2ICs0ODY0LDcgQEAKIAkJCQk3Q0NFN0VBNjFBNDExQTBGMDA0NDdDNEMg
LyogUGxhdGZvcm1VdGlsaXRpZXNNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VBNzFB
NDExQTEzMDA0NDdDNEMgLyogUGxhdGZvcm1XZWJWaWV3TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODNCQUVFOEQxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5t
bSBpbiBTb3VyY2VzICovLAorCQkJCUMxMDc3RDMyMjNERjcyRkMwMDUwNjY3MSAvKiBQcmVmZXJl
bmNlQ2hhbmdlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjI2MUE0MTFBRjYwMDQ0N0M0
QyAvKiBQcmVmZXJlbmNlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMjI3RTQ0MjExQTRENUQw
MEQyODVBRiAvKiBQcmVmZXJyZWRBdWRpb0J1ZmZlclNpemUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlGNDhENkMxMDIyNEIzNzcwMDBFM0UyRkIgLyogUHJlZmVycmVkQ29udGVudE1vZGUubW0gaW4g
U291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZl
cmVuY2VDaGFuZ2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBXS19IQVZFX0NfU1BJCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0
ICJUZXN0V0tXZWJWaWV3LmgiCisKK1RFU1QoV2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdlcykKK3sK
KyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoQ0ZTVFIoInRlc3RrZXkiKSwgQ0ZTVFIoIjEi
KSwgQ0ZTVFIoImNvbS5hcHBsZS5jb3JlbWVkaWEiKSk7CisKKyAgICBFWFBFQ1RfRVEoMSwgQ0ZQ
cmVmZXJlbmNlc0dldEFwcEludGVnZXJWYWx1ZShDRlNUUigidGVzdGtleSIpLCBDRlNUUigiY29t
LmFwcGxlLmNvcmVtZWRpYSIpLCBudWxscHRyKSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFdL
UmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6
VXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0
ZWRCdW5kbGVUZXN0IikpOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgPSAo
V0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAz
MDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllF
U10pOworCisgICAgYXV0byBwcmVmZXJlbmNlVmFsdWUgPSBbJl0geworICAgICAgICByZXR1cm4g
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5pbnRlcm5hbHMu
cmVhZFByZWZlcmVuY2VJbnRlZ2VyKFwiY29tLmFwcGxlLmNvcmVtZWRpYVwiLCBcInRlc3RrZXlc
IikiXS5pbnRWYWx1ZTsKKyAgICB9OworCisgICAgRVhQRUNUX0VRKHByZWZlcmVuY2VWYWx1ZSgp
LCAxKTsKKworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShDRlNUUigidGVzdGtleSIpLCBD
RlNUUigiMiIpLCBDRlNUUigiY29tLmFwcGxlLmNvcmVtZWRpYSIpKTsKKworICAgIEVYUEVDVF9F
UShwcmVmZXJlbmNlVmFsdWUoKSwgMik7Cit9CisKKyNlbmRpZiAvLyBXS19IQVZFX0NfU1BJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390179</attachid>
            <date>2020-02-08 13:28:41 -0800</date>
            <delta_ts>2020-02-12 16:47:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203420-20200208132840.patch</filename>
            <type>text/plain</type>
            <size>28924</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTYwOTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTI3ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4g
dGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFVTRSBkZWZpbmUgZm9yIENGIHByZWZzIGRpcmVjdCBtb2RlIGlu
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDoK
KwogMjAyMC0wMi0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEhhcmRlbiBIYXNoVGFibGUgSVBDIGRlY29kZXJzCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtVXNlLmgJKHJldmlzaW9uIDI1NTQyNCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw2ICszMDgsMTAgQEAKICNkZWZpbmUgVVNFX0JNQUxM
T0NfTUVNT1JZX0ZPT1RQUklOVF9BUEkgMQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpIHx8
IFBMQVRGT1JNKElPU19GQU1JTFkpCisjZGVmaW5lIFVTRV9DRlBSRUZTX0RJUkVDVF9NT0RFX0lO
X1dFQkNPTlRFTlRfUFJPQ0VTUyAxCisjZW5kaWYKKwogI2lmIE9TKERBUldJTikgJiYgIVVTRShQ
TEFURk9STV9SRUdJU1RFUlNfV0lUSF9QUk9GSUxFKSAmJiBDUFUoQVJNNjQpCiAjZGVmaW5lIFVT
RV9EQVJXSU5fUkVHSVNURVJfTUFDUk9TIDEKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMjU2MDkwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMjAtMDEtMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBw
bGUuY29tPgorCisgICAgICAgIFVzZSBDRiBwcmVmcyBkaXJlY3QgbW9kZSBpbiB0aGUgV2ViQ29u
dGVudCBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgaW50ZXJuYWxzIGZ1bmN0aW9uIHRvIHJlYWQgaW50ZWdlciBwcmVmZXJlbmNlLgor
CisgICAgICAgIEFQSSB0ZXN0OiBXZWJLaXQuUHJlZmVyZW5jZXMKKworICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVhZFByZWZl
cmVuY2VJbnRlZ2VyKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAyMC0wMi0wOCAgRG91ZyBLZWxseSAgPGRvdWdr
QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCBpbiBSZW5kZXJUcmVlQnVpbGRlcjo6VGFibGU6
OmZpbmRPckNyZWF0ZVBhcmVudEZvckNoaWxkIHdpdGggbXVsdGljb2wgc3Bhbm5lcgpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjU2MDkwKQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDYx
LDYgKzU0NjEsMTYgQEAgYm9vbCBJbnRlcm5hbHM6OnN5c3RlbUhhc0JhdHRlcnkoKSBjb25zdAog
I2VuZGlmCiB9CiAKK2xvbmcgSW50ZXJuYWxzOjpyZWFkUHJlZmVyZW5jZUludGVnZXIoY29uc3Qg
U3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYga2V5KQoreworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIEJvb2xlYW4ga2V5RXhpc3RzQW5kSGFzVmFsaWRGb3JtYXQgPSBmYWxzZTsKKyAgICBy
ZXR1cm4gQ0ZQcmVmZXJlbmNlc0dldEFwcEludGVnZXJWYWx1ZShrZXkuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwgZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksICZrZXlFeGlzdHNBbmRIYXNW
YWxpZEZvcm1hdCk7CisjZWxzZQorICAgIHJldHVybiAtMTsKKyNlbmRpZgorfQorCiBTdHJpbmcg
SW50ZXJuYWxzOjptZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uKQogewogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNZWRpYU1JTUVUeXBlRm9y
RXh0ZW5zaW9uKGV4dGVuc2lvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJ
KHJldmlzaW9uIDI1NjA5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkzMyw2ICs5MzMsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHN5
c3RlbUhhc0JhdHRlcnkoKSBjb25zdDsKIAorICAgIGxvbmcgcmVhZFByZWZlcmVuY2VJbnRlZ2Vy
KGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSk7CisKICAgICBTdHJpbmcg
bWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbik7CiAKICAg
ICBTdHJpbmcgZm9jdXNSaW5nQ29sb3IoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwJKHJldmlzaW9uIDI1NjA5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtODQyLDUgKzg0Miw3IEBAIGVudW0gQ29tcG9z
aXRpbmdQb2xpY3kgewogCiAgICAgYm9vbGVhbiBzeXN0ZW1IYXNCYXR0ZXJ5KCk7CiAKKyAgICBs
b25nIHJlYWRQcmVmZXJlbmNlSW50ZWdlcihET01TdHJpbmcgZG9tYWluLCBET01TdHJpbmcga2V5
KTsKKwogICAgIERPTVN0cmluZyBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKERPTVN0cmluZyBl
eHRlbnNpb24pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTYwOTApCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIwLTAx
LTI3ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
Q0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIENGIHByZWZzIGRp
cmVjdCBtb2RlLCBpbiBvcmRlciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBDRiBwcmVmcyBk
YWVtb24gaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKyAgICAgICAgSW4gZGlyZWN0IG1vZGUs
IHRoZSBwcmVmcyBmaWxlcyB3aWxsIGJlIGFjY2Vzc2VkIGRpcmVjdGx5LCBhbmQgbm90IHRocm91
Z2ggdGhlIENGIHByZWZzIGRhZW1vbi4gQSBwcmVmZXJlbmNlCisgICAgICAgIG9ic2VydmVyIGlz
IGFkZGVkIGluIHRoZSBVSSBwcm9jZXNzLCB3aGljaCB3aWxsIG5vdGlmeSB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzIGFib3V0IHByZWZlcmVuY2VzIGNoYW5nZXMgdG8gYQorICAgICAgICBkb21haW4u
IEFmdGVyIGEgcHJlZmVyZW5jZSBjaGFuZ2UsIHRoZSBXZWJDb250ZW50IHByb2Nlc3Mgd2lsbCBz
ZXQgdGhlIG5ldyBwcmVmZXJlbmNlIHZhbHVlIGZvciB0aGUgY2hhbmdlZAorICAgICAgICBrZXkv
ZG9tYWluLgorCisgICAgICAgIEFQSSB0ZXN0OiBXZWJLaXQuUHJlZmVyZW5jZXMKKworICAgICAg
ICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudC5zYjoKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlTWFp
bik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5oOiBBZGRl
ZC4KKyAgICAgICAgKC1bV0tVc2VyRGVmYXVsdHMgX25vdGlmeU9ic2VydmVyc09mQ2hhbmdlRnJv
bVZhbHVlc0ZvcktleXM6dG9WYWx1ZXNGb3JLZXlzOl0pOgorICAgICAgICAoLVtXS1VzZXJEZWZh
dWx0cyBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgor
ICAgICAgICAoLVtXS1VzZXJEZWZhdWx0cyBpbml0V2l0aFN1aXRlTmFtZTpdKToKKyAgICAgICAg
KC1bV0tQcmVmZXJlbmNlT2JzZXJ2ZXIgaW5pdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5v
dGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb20uYXBwbGUu
V2ViUHJvY2Vzcy5zYi5pbjoKKwogMjAyMC0wMi0wOCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IEhvbGQgb2Zm
IG5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIGRlbGV0aW9uIHVudGlsIGFuIGhvdXIgYWZ0ZXIgdXNl
ciBpbnRlcmFjdGlvbgpJbmRleDogU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2Zp
bGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQuc2IJKHJldmlzaW9uIDI1NjA5MCkKKysrIFNvdXJjZS9XZWJLaXQvUmVzb3Vy
Y2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCSh3
b3JraW5nIGNvcHkpCkBAIC02MDEsNyArNjAxLDcgQEAKIChhbGxvdyBtYWNoLWxvb2t1cAogICAg
IChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmxvZ2QiKQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFw
cGxlLmxvZ2QuZXZlbnRzIikKLSAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jZnByZWZzZC5k
YWVtb24iKSkKKykKIAogKGFsbG93IG1hY2gtbG9va3VwICh3aXRoIHJlcG9ydCkgKHdpdGggdGVs
ZW1ldHJ5KQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmRpc3RyaWJ1dGVkX25vdGlmaWNh
dGlvbnNAMXYzIikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBD
U2VydmljZU1haW4ubW0JKHJldmlzaW9uIDI1NjA5MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNB
cHBsaWNhdGlvblNQSS5oPgogI2VuZGlmCiAKK2V4dGVybiAiQyIgdm9pZCBfQ0ZQcmVmc1NldERp
cmVjdE1vZGVFbmFibGVkKEJPT0wgZW5hYmxlZCk7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBz
dGF0aWMgdm9pZCBYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKHhwY19jb25uZWN0aW9uX3QgcGVlcikK
QEAgLTExNiw2ICsxMTgsMTEgQEAgaW50IFhQQ1NlcnZpY2VNYWluKGludCwgY29uc3QgY2hhcioq
KQogICAgIH0pOwogI2VuZGlmCiAKKyNpZiBVU0UoQ0ZQUkVGU19ESVJFQ1RfTU9ERV9JTl9XRUJD
T05URU5UX1BST0NFU1MpCisgICAgLy8gRW5hYmxlIENGIHByZWZzIGRpcmVjdCBtb2RlIHRvIGF2
b2lkIGNvbm5lY3RpbmcgdG8gdGhlIENGIHByZWZzIGRhZW1vbi4KKyAgICBfQ0ZQcmVmc1NldERp
cmVjdE1vZGVFbmFibGVkKFlFUyk7CisjZW5kaWYKKwogICAgIGlmIChib290c3RyYXApIHsKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgICAgIGlmIChjb25zdCBjaGFyKiB3ZWJLaXRCdW5kbGVWZXJz
aW9uID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhib290c3RyYXAuZ2V0KCksICJXZWJLaXRC
dW5kbGVWZXJzaW9uIikpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAkocmV2aXNpb24gMjU2MDkwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBPQkpDX0NMQVNT
IE5TTXV0YWJsZURpY3Rpb25hcnk7CiBPQkpDX0NMQVNTIE5TT2JqZWN0OwogT0JKQ19DTEFTUyBO
U1NldDsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpDX0NMQVNTIFdLUHJlZmVyZW5jZU9ic2Vy
dmVyOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJ
TkRPV1NFUlZFUl9CTE9DS0lORykKQEAgLTU0MCw2ICs1NDEsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhib29sKTsKICAgICBib29sIHVz
ZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3VzZVNlcGFy
YXRlU2VydmljZVdvcmtlclByb2Nlc3M7IH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZv
aWQgbm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBlbmNvZGVkVmFsdWUpOworI2VuZGlmCisKIHByaXZh
dGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIApAQCAtODAxLDYgKzgwNiwxMCBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0RlbGF5ZWRXZWJQcm9jZXNzTGF1bmNoRGlzYWJsZWQg
eyBmYWxzZSB9OwogI2VuZGlmCiAgICAgYm9vbCBtX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclBy
b2Nlc3MgeyBmYWxzZSB9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPFdL
UHJlZmVyZW5jZU9ic2VydmVyPiBtX3ByZWZlcmVuY2VPYnNlcnZlcjsKKyNlbmRpZgogfTsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1ByZWZlcmVuY2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTk2IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBt
ZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyovCisKKyNwcmFnbWEgb25jZQorCitAaW50ZXJmYWNlIE5TT2JqZWN0IChQcml2YXRlS1ZP
TWV0aG9kcykKKy0gKHZvaWQpX25vdGlmeU9ic2VydmVyc09mQ2hhbmdlRnJvbVZhbHVlc0Zvcktl
eXM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilvbGRWYWx1ZXMgdG9WYWx1ZXNGb3JL
ZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopbmV3VmFsdWVzOworQGVuZAorCitA
aW50ZXJmYWNlIFdLVXNlckRlZmF1bHRzIDogTlNVc2VyRGVmYXVsdHMgeworQHByaXZhdGUKKyAg
ICBTdHJpbmcgbV9zdWl0ZU5hbWU7Cit9CisKKy0gKHZvaWQpX25vdGlmeU9ic2VydmVyc09mQ2hh
bmdlRnJvbVZhbHVlc0ZvcktleXM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilvbGRW
YWx1ZXMgdG9WYWx1ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopbmV3
VmFsdWVzOworCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5
UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5PE5TS2V5VmFsdWVD
aGFuZ2VLZXksIGlkPiAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dDsKKworLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoU3VpdGVOYW1lOihOU1N0cmluZyAqKXN1aXRlbmFtZTsKK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFdLVXNlckRlZmF1bHRzCisKKy0gKHZvaWQpX25vdGlmeU9ic2Vy
dmVyc09mQ2hhbmdlRnJvbVZhbHVlc0ZvcktleXM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBp
ZD4gKilvbGRWYWx1ZXMgdG9WYWx1ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwg
aWQ+ICopbmV3VmFsdWVzCit7CisgICAgW3N1cGVyIF9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZy
b21WYWx1ZXNGb3JLZXlzOm9sZFZhbHVlcyB0b1ZhbHVlc0ZvcktleXM6bmV3VmFsdWVzXTsKKwor
ICAgIGlmIChbb2xkVmFsdWVzIGlzRXF1YWxUb0RpY3Rpb25hcnk6bmV3VmFsdWVzXSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZm9yIChOU1N0cmluZyAqa2V5IGluIG9sZFZhbHVlcykgeworICAg
ICAgICBpZCBvbGRWYWx1ZSA9IG9sZFZhbHVlc1trZXldOworICAgICAgICBpZCBuZXdWYWx1ZSA9
IG5ld1ZhbHVlc1trZXldOworICAgICAgICBpZiAoW29sZFZhbHVlIGlzRXF1YWw6bmV3VmFsdWVd
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghW1tuZXdWYWx1ZSBjbGFzc10g
c3VwcG9ydHNTZWN1cmVDb2RpbmddKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGF1
dG8gYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVxdWly
aW5nU2VjdXJlQ29kaW5nOllFU10pOworICAgICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0Om5l
d1ZhbHVlIGZvcktleTpAInZhbHVlIl07CisgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBbYXJj
aGl2ZXIgZW5jb2RlZERhdGFdOworICAgICAgICBhdXRvIGVuY29kZWRTdHJpbmcgPSBbZW5jb2Rl
ZERhdGEgYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdOworCisjaWYgQVNTRVJUX0VO
QUJMRUQKKyAgICAgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdp
dGhCYXNlNjRFbmNvZGVkU3RyaW5nOmVuY29kZWRTdHJpbmcgb3B0aW9uczowXSk7CisgICAgICAg
IEFTU0VSVChbZW5jb2RlZERhdGEgaXNFcXVhbFRvRGF0YTpkYXRhLmdldCgpXSk7CisjZW5kaWYK
KworICAgICAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgICAgICBwcm9jZXNzUG9vbC0+bm90aWZ5UHJl
ZmVyZW5jZXNDaGFuZ2VkKG1fc3VpdGVOYW1lLCBTdHJpbmcoa2V5KSwgU3RyaW5nKGVuY29kZWRT
dHJpbmcpKTsKKyAgICB9Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNT
dHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnk8
TlNLZXlWYWx1ZUNoYW5nZUtleSwgaWQ+ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0
Cit7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFN1aXRlTmFtZTooTlNTdHJpbmcgKilz
dWl0ZW5hbWUKK3sKKyAgICBtX3N1aXRlTmFtZSA9IHN1aXRlbmFtZTsKKyAgICByZXR1cm4gW3N1
cGVyIGluaXRXaXRoU3VpdGVOYW1lOnN1aXRlbmFtZV07Cit9CisKK0BlbmQKKworQGludGVyZmFj
ZSBXS1ByZWZlcmVuY2VPYnNlcnZlciA6IE5TT2JqZWN0IHsKK0Bwcml2YXRlCisgICAgVmVjdG9y
PFJldGFpblB0cjxXS1VzZXJEZWZhdWx0cz4+IG1fdXNlckRlZmF1bHRzOworfQorCistIChpbnN0
YW5jZXR5cGUpaW5pdDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLUHJlZmVyZW5jZU9ic2Vy
dmVyCisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgc3RkOjppbml0aWFsaXplcl9saXN0
PE5TU3RyaW5nKj4gZG9tYWlucyA9IHsKKyAgICAgICAgQCJjb20uYXBwbGUuQWNjZXNzaWJpbGl0
eSIsCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgQCJjb20uYXBwbGUuQWRMaWIi
LAorICAgICAgICBAImNvbS5hcHBsZS5DRk5ldHdvcmsiLAorICAgICAgICBAImNvbS5hcHBsZS5F
bW9qaVByZWZlcmVuY2VzIiwKKyAgICAgICAgQCJjb20uYXBwbGUuRm9udFBhcnNlciIsCisgICAg
ICAgIEAiY29tLmFwcGxlLkltYWdlSU8iLAorICAgICAgICBAImNvbS5hcHBsZS5JbnB1dE1vZGVQ
cmVmZXJlbmNlcyIsCisjZWxzZQorICAgICAgICBAImNvbS5hcHBsZS5BVFMiLAorICAgICAgICBA
ImNvbS5hcHBsZS5Db3JlR3JhcGhpY3MiLAorICAgICAgICBAImNvbS5hcHBsZS5Eb3dubG9hZEFz
c2Vzc21lbnQiLAorICAgICAgICBAImNvbS5hcHBsZS5ISVRvb2xib3giLAorI2VuZGlmCisgICAg
ICAgIEAiY29tLmFwcGxlLkxhdW5jaFNlcnZpY2VzIiwKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgICAgICBAImNvbS5hcHBsZS5NZXRhbCIsCisgICAgICAgIEAiY29tLmFwcGxlLk1vYmls
ZUFzc2V0IiwKKyAgICAgICAgQCJjb20uYXBwbGUuUHJlZmVyZW5jZXMiLAorICAgICAgICBAImNv
bS5hcHBsZS5TcGVha1NlbGVjdGlvbiIsCisgICAgICAgIEAiY29tLmFwcGxlLlVJS2l0IiwKKyAg
ICAgICAgQCJjb20uYXBwbGUuVm9pY2VPdmVyVG91Y2giLAorI2Vsc2UKKyAgICAgICAgQCJjb20u
YXBwbGUuTXVsdGl0b3VjaFN1cHBvcnQiCisgICAgICAgIEAiY29tLmFwcGxlLlNlcnZpY2VzTWVu
dS5TZXJ2aWNlcyIKKyAgICAgICAgQCJjb20uYXBwbGUuVmlld0JyaWRnZSIKKyNlbmRpZgorICAg
ICAgICBAImNvbS5hcHBsZS5XZWJGb3VuZGF0aW9uIiwKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgICAgICBAImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCIsCisgICAgICAgIEAiY29t
LmFwcGxlLldlYlVJIiwKKyAgICAgICAgQCJjb20uYXBwbGUuYWlycGxheSIsCisgICAgICAgIEAi
Y29tLmFwcGxlLmFwcGxlanBlZyIsCisgICAgICAgIEAiY29tLmFwcGxlLmF1ZGlvLnZpcnR1YWxh
dWRpbyIsCisgICAgICAgIEAiY29tLmFwcGxlLmF2ZmF1ZGlvIiwKKyNlbmRpZgorICAgICAgICBA
ImNvbS5hcHBsZS5hdmZvdW5kYXRpb24iLAorICAgICAgICBAImNvbS5hcHBsZS5hdmZvdW5kYXRp
b24uZnJlY2VudHMiLAorICAgICAgICBAImNvbS5hcHBsZS5hdmZvdW5kYXRpb24udmlkZW9wZXJm
b3JtYW5jZWh1ZCIsCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgQCJjb20uYXBw
bGUuYXZraXQiLAorICAgICAgICBAImNvbS5hcHBsZS5jb3JlYW5pbWF0aW9uIiwKKyAgICAgICAg
QCJjb20uYXBwbGUuY29yZWF1ZGlvIiwKKyNlbmRpZgorICAgICAgICBAImNvbS5hcHBsZS5jb3Jl
bWVkaWEiLAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIEAiY29tLmFwcGxlLmNv
cmV2aWRlbyIsCisgICAgICAgIEAiY29tLmFwcGxlLmRhIiwKKyAgICAgICAgQCJjb20uYXBwbGUu
aGFuZ3RyYWNlciIsCisgICAgICAgIEAiY29tLmFwcGxlLmluZGlnbyIsCisgICAgICAgIEAiY29t
LmFwcGxlLmlva2l0LklPTW9iaWxlR3JhcGhpY3NGYW1pbHkiLAorICAgICAgICBAImNvbS5hcHBs
ZS5pdHVuZXNzdG9yZWQiLAorICAgICAgICBAImNvbS5hcHBsZS5rZXlib2FyZCIsCisjZWxzZQor
ICAgICAgICBAImNvbS5hcHBsZS5jcnlwdG8iLAorICAgICAgICBAImNvbS5hcHBsZS5kcml2ZXIu
QXBwbGVCbHVldG9vdGhNdWx0aXRvdWNoLm1vdXNlIiwKKyAgICAgICAgQCJjb20uYXBwbGUuZHJp
dmVyLkFwcGxlQmx1ZXRvb3RoTXVsdGl0b3VjaC50cmFja3BhZCIsCisgICAgICAgIEAiY29tLmFw
cGxlLmRyaXZlci5BcHBsZUhJRE1vdXNlIgorI2VuZGlmCisgICAgICAgIEAiY29tLmFwcGxlLmxv
b2t1cC5zaGFyZWQiLAorICAgICAgICBAImNvbS5hcHBsZS5tZWRpYWFjY2Vzc2liaWxpdHkiLAor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIEAiY29tLmFwcGxlLm1lZGlhYWNjZXNz
aWJpbGl0eS5wdWJsaWMiLAorICAgICAgICBAImNvbS5hcHBsZS5tZWRpYXJlbW90ZSIsCisgICAg
ICAgIEAiY29tLmFwcGxlLm1vYmlsZWlwb2QiLAorICAgICAgICBAImNvbS5hcHBsZS5tdCIsCisj
ZWxzZQorICAgICAgICBAImNvbS5hcHBsZS5uZXR3b3JrQ29ubmVjdCIKKyNlbmRpZgorICAgICAg
ICBAImNvbS5hcHBsZS5vcGVuZ2wiLAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAg
IEAiY29tLmFwcGxlLnByZWZlcmVuY2VzLnNvdW5kcyIsCisgICAgICAgIEAiY29tLmFwcGxlLnNl
Y3VyaXR5IiwKKyAgICAgICAgQCJjb20uYXBwbGUudm9pY2VzZXJ2aWNlcyIsCisgICAgICAgIEAi
Y29tLmFwcGxlLnZvaWNlc2VydmljZXMubG9nZ2luZyIsCisjZWxzZQorICAgICAgICBAImNvbS5h
cHBsZS5zcGVlY2gudm9pY2UucHJlZnMiLAorICAgICAgICBAImNvbS5hcHBsZS5zeXN0ZW1zb3Vu
ZCIsCisgICAgICAgIEAiY29tLmFwcGxlLnVuaXZlcnNhbGFjY2VzcyIsCisgICAgICAgIEAiY29t
Lm52aWRpYS5PcGVuR0wiLAorICAgICAgICBAImVkdS5taXQuS2VyYmVyb3MiLAorI2VuZGlmCisg
ICAgICAgIEAia0NGUHJlZmVyZW5jZXNBbnlBcHBsaWNhdGlvbiIsCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgICAgIEAicGJzIiwKKyNlbmRpZgorICAgIH07CisKKyAgICBmb3IgKGF1
dG8gZG9tYWluIDogZG9tYWlucykgeworICAgICAgICBhdXRvIHVzZXJEZWZhdWx0cyA9IGFkb3B0
TlMoW1tXS1VzZXJEZWZhdWx0cyBhbGxvY10gaW5pdFdpdGhTdWl0ZU5hbWU6ZG9tYWluXSk7Cisg
ICAgICAgIFt1c2VyRGVmYXVsdHMuZ2V0KCkgYWRkT2JzZXJ2ZXI6dXNlckRlZmF1bHRzLmdldCgp
IGZvcktleVBhdGg6QCJ0ZXN0a2V5IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25O
ZXcgY29udGV4dDpuaWxdOworICAgICAgICBtX3VzZXJEZWZhdWx0cy5hcHBlbmQodXNlckRlZmF1
bHRzKTsKKyAgICB9CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworQGVuZApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCShyZXZpc2lvbiAyNTYwOTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgorI2ltcG9ydCAi
UHJlZmVyZW5jZU9ic2VydmVyLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJUZXh0Q2hlY2tlci5oIgogI2ltcG9ydCAiVXNlckludGVyZmFjZUlkaW9tLmgiCkBAIC01
NTYsNiArNTU3LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyTm90aWZpY2F0aW8K
ICAgICB9XTsKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElP
U19GQU1JTFkpCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtX3ByZWZlcmVuY2VPYnNlcnZl
ciA9IGFkb3B0TlMoW1tXS1ByZWZlcmVuY2VPYnNlcnZlciBhbGxvY10gaW5pdF0pOworI2VuZGlm
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZl
cnMoKQpAQCAtNzI4LDQgKzczMywxMSBAQCBOU1NldCAqV2ViUHJvY2Vzc1Bvb2w6OmFsbG93ZWRD
bGFzc2VzRm9yCiAgICAgcmV0dXJuIG1fY2xhc3Nlc0ZvclBhcmFtZXRlckNvZGVyLmdldCgpOwog
fQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29uc3Qg
U3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIGVuY29kZWRW
YWx1ZSkKK3sKKyAgICBmb3IgKGF1dG8gcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpOb3RpZnlQcmVmZXJlbmNlc0NoYW5n
ZWQoZG9tYWluLCBrZXksIGVuY29kZWRWYWx1ZSksIDApOworCit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAyNTYwOTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODY4LDYgKzQ4NjgsNyBA
QAogCQlDMTFBOUVEMDIxNDAzQjQwMDBDRkIyMEEgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxMUUxNjkyMjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tE
aXNwbGF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTW9ja0Rpc3BsYXku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzExRTE2OTMyMTJCODdDNTAwOTg1RkY2
IC8qIFdLTW9ja0Rpc3BsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0tNb2NrRGlzcGxheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNDVD
QzBFMjNEQ0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUHJlZmVyZW5jZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMx
NDkzODAyMjIzNDFDNjAwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMxNDkzODAzMjIzNDFERjcwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVz
aXNDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MEEyMjM4NTNCRTAwMENE
NzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTg5LDYg
KzU5OTAsNyBAQAogCQkJCUNEQTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkuaCAqLywKIAkJCQlDREEyOUEyMjFDQkVCNjFBMDA5MDFDQ0YgLyogUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCUNEQTI5QTFGMUNC
RUI1RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gKi8sCisJCQkJ
QzE0NUNDMEUyM0RDQTQyNzAwM0E1RUVCIC8qIFByZWZlcmVuY2VPYnNlcnZlci5oICovLAogCQkJ
CTVDQjdBRkREMjNDNTI3M0QwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovLAog
CQkJCTVDQjdBRkRFMjNDNTI3M0QwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAq
LywKIAkJCQk1Q0E5ODU0QjIxMEJFQjczMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZp
c2lvbiAyNTYwOTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdm9pZCBzZXRNZWRpYU1JTUVUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPik7
CisgICAgdm9pZCBub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4s
IGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIGVuY29kZWRWYWx1ZSk7CiAjZW5kaWYK
IAogICAgIGJvb2wgYXJlQWxsUGFnZXNUaHJvdHRsZWFibGUoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lv
biAyNTYwOTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTY4LDQgKzE2OCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm8KICAgICBHcmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyhX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtb2JpbGVBc3NldEhhbmRsZSwgV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbW9iaWxlQXNzZXRWMkhhbmRsZSkKICAgICBSZXZv
a2VBY2Nlc3NUb0Fzc2V0U2VydmljZXMoKQogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBOb3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoU3RyaW5nIGRvbWFpbiwgU3RyaW5nIGtleSwg
U3RyaW5nIGVuY29kZWRWYWx1ZSkKKyNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkocmV2aXNpb24gMjU2
MDkwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNi
LmluCSh3b3JraW5nIGNvcHkpCkBAIC02NDksNyArNjQ5LDYgQEAKICAgICAod2l0aCByZXBvcnQp
ICh3aXRoIHRlbGVtZXRyeSkKICNlbmRpZgogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLlBv
d2VyTWFuYWdlbWVudC5jb250cm9sIikKLSAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jZnBy
ZWZzZC5kYWVtb24iKQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVzZXJ2aWNlcy5s
YXVuY2hzZXJ2aWNlc2QiKQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmxzZC5tYXBkYiIp
CiAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUudGNjZCIpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI1
NjA5MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTkwOCw2ICs5MDgsMjAgQEAgdm9pZCBXZWJQcm9jZXNzOjpz
ZXRNZWRpYU1JTUVUeXBlcyhjb25zdAogICAgICAgICBjYWNoZS5hZGRTdXBwb3J0ZWRUeXBlcyh0
eXBlcyk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNv
bnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBlbmNv
ZGVkVmFsdWUpCit7CisgICAgYXV0byBlbmNvZGVkRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxs
b2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzplbmNvZGVkVmFsdWUgb3B0aW9uczowXSk7
CisgICAgaWYgKCFlbmNvZGVkRGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIE5TRXJyb3IgKmVy
ciA9IG5pbDsKKyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2
ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6ZW5jb2RlZERhdGEuZ2V0KCkgZXJyb3I6
JmVycl0pOworICAgIGF1dG8gb2JqZWN0ID0gYWRvcHROUyhbdW5hcmNoaXZlciBkZWNvZGVPYmpl
Y3RGb3JLZXk6QCJ2YWx1ZSJdKTsKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gZGVmYXVsdHMgPSBhZG9wdE5TKFtbTlNVc2VyRGVmYXVsdHMgYWxsb2NdIGluaXRX
aXRoU3VpdGVOYW1lOmRvbWFpbl0pOworICAgIFtkZWZhdWx0cyBzZXRPYmplY3Q6b2JqZWN0Lmdl
dCgpIGZvcktleTprZXldOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQogdm9pZCBXZWJQcm9jZXNz
OjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyhXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYmIG1vYmlsZUFzc2V0SGFuZGxlLCAgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJiBtb2JpbGVBc3NldFYySGFuZGxlKQogewpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU2MDkwKQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDEtMjUgIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBDRiBwcmVmcyBk
aXJlY3QgbW9kZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0MjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1QpOgor
CiAyMDIwLTAyLTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNldmVyYWwgaU9TIEFQSSB0ZXN0cyB0aGF0IGNhbGwgLW1ha2VLZXlXaW5kb3cgYXNz
ZXJ0IGFmdGVyIHIyNTU5MDcKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
NTYwOTApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODc0LDYgKzg3NCw3IEBACiAJCUMwQURC
RTk2MTJGQ0E3OUIwMEQyQzEyOSAvKiBzaW1wbGUtZm9ybS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQURCRTg0MTJGQ0E2QjYwMEQy
QzEyOSAvKiBzaW1wbGUtZm9ybS5odG1sICovOyB9OwogCQlDMEJENjY5RjEzMUQzQ0ZGMDBFMThG
MkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBCRDY2OUUxMzFEM0NG
RjAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlfQnVuZGxlLmNw
cCAqLzsgfTsKIAkJQzBDNUQzQzYxNDU5OTEyOTAwQTgwMkE2IC8qIEdldEJhY2tpbmdTY2FsZUZh
Y3Rvcl9CdW5kbGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMEM1RDNCRDE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1
bmRsZS5tbSAqLzsgfTsKKwkJQzEwNzdEMzIyM0RGNzJGQzAwNTA2NjcxIC8qIFByZWZlcmVuY2VD
aGFuZ2VzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzEwNzdEMzEyM0RGNzJFRjAwNTA2NjcxIC8qIFByZWZlcmVuY2VDaGFuZ2VzLm1tICovOyB9Owog
CQlDMTQ1Q0MwQzIzREE1QTFGMDAzQTVFRUIgLyogTWltZVR5cGVzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0NUNDMEIyM0RBNUEwRjAwM0E1RUVC
IC8qIE1pbWVUeXBlcy5tbSAqLzsgfTsKIAkJQzE2OTJEQ0EyM0QxMERBRTAwNkU4OEY3IC8qIEJh
dHRlcnkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MTY5MkRDOTIzRDEwREFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSAqLzsgfTsKIAkJQzIwRjg4QTcy
Mjk1Qjk2NzAwRDYxMEZBIC8qIENvcmVUZXh0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMEY4OEE2MjI5NUI5NjcwMEQ2MTBGQSAv
KiBDb3JlVGV4dC5mcmFtZXdvcmsgKi87IH07CkBAIC0yNDIxLDYgKzI0MjIsNyBAQAogCQlDMEJE
NjY5RTEzMUQzQ0ZGMDBFMThGMkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJs
eV9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzcG9u
c2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMEM1RDNCQzE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxl
RmFjdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2V0QmFj
a2luZ1NjYWxlRmFjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEM1RDNC
RDE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rv
cl9CdW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxMDc3RDMxMjNERjcy
RUYwMDUwNjY3MSAvKiBQcmVmZXJlbmNlQ2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFByZWZlcmVuY2VDaGFuZ2VzLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMTQ1Q0MwQjIzREE1QTBGMDAzQTVFRUIgLyogTWltZVR5cGVzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWltZVR5cGVzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTY5MkRDOTIzRDEwREFFMDA2RTg4RjcgLyogQmF0
dGVyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJhdHRlcnkubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMxRDhFRTIxMjAyOEU4RTMwMDhFQjE0MSAvKiBXZWJQcm9jZXNzVGVy
bWluYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJv
Y2Vzc1Rlcm1pbmF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjUsNiAr
Mjg2Nyw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlDMTY5MkRDOTIzRDEwREFFMDA2RTg4Rjcg
LyogQmF0dGVyeS5tbSAqLywKIAkJCQlDMTQ1Q0MwQjIzREE1QTBGMDAzQTVFRUIgLyogTWltZVR5
cGVzLm1tICovLAorCQkJCUMxMDc3RDMxMjNERjcyRUYwMDUwNjY3MSAvKiBQcmVmZXJlbmNlQ2hh
bmdlcy5tbSAqLywKIAkJCQkwRjEzOUU3NTFBNDIzQTUzMDBGNTkwRjUgLyogV2Vha09iakNQdHIu
bW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IGNvY29hOwpAQCAtNDkxMiw2ICs0OTE1LDcgQEAKIAkJ
CQk3Q0NFN0VBNjFBNDExQTBGMDA0NDdDNEMgLyogUGxhdGZvcm1VdGlsaXRpZXNNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VBNzFBNDExQTEzMDA0NDdDNEMgLyogUGxhdGZvcm1XZWJW
aWV3TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODNCQUVFOEQxRUY0NjI1NTAwRERFODk0IC8q
IFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMxMDc3RDMy
MjNERjcyRkMwMDUwNjY3MSAvKiBQcmVmZXJlbmNlQ2hhbmdlcy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RjI2MUE0MTFBRjYwMDQ0N0M0QyAvKiBQcmVmZXJlbmNlcy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEMjI3RTQ0MjExQTRENUQwMEQyODVBRiAvKiBQcmVmZXJyZWRBdWRpb0J1ZmZl
clNpemUubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDhENkMxMDIyNEIzNzcwMDBFM0UyRkIgLyog
UHJlZmVycmVkQ29udGVudE1vZGUubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tCShu
b25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVu
Y2VDaGFuZ2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBXS19IQVZFX0NfU1BJCisKKyNpbXBvcnQgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisKK1RFU1QoV2Vi
S2l0LCBQcmVmZXJlbmNlQ2hhbmdlcykKK3sKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUo
Q0ZTVFIoInRlc3RrZXkiKSwgQ0ZTVFIoIjEiKSwgQ0ZTVFIoImNvbS5hcHBsZS5jb3JlbWVkaWEi
KSk7CisKKyAgICBFWFBFQ1RfRVEoMSwgQ0ZQcmVmZXJlbmNlc0dldEFwcEludGVnZXJWYWx1ZShD
RlNUUigidGVzdGtleSIpLCBDRlNUUigiY29tLmFwcGxlLmNvcmVtZWRpYSIpLCBudWxscHRyKSk7
CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4
dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVk
QnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5kbGVUZXN0IikpOworICAgIGNvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgPSAoV0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCk7
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOworCisgICAgYXV0byBwcmVmZXJlbmNlVmFs
dWUgPSBbJl0geworICAgICAgICByZXR1cm4gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAIndpbmRvdy5pbnRlcm5hbHMucmVhZFByZWZlcmVuY2VJbnRlZ2VyKFwiY29tLmFw
cGxlLmNvcmVtZWRpYVwiLCBcInRlc3RrZXlcIikiXS5pbnRWYWx1ZTsKKyAgICB9OworCisgICAg
RVhQRUNUX0VRKHByZWZlcmVuY2VWYWx1ZSgpLCAxKTsKKworICAgIENGUHJlZmVyZW5jZXNTZXRB
cHBWYWx1ZShDRlNUUigidGVzdGtleSIpLCBDRlNUUigiMiIpLCBDRlNUUigiY29tLmFwcGxlLmNv
cmVtZWRpYSIpKTsKKworICAgIEVYUEVDVF9FUShwcmVmZXJlbmNlVmFsdWUoKSwgMik7Cit9CisK
KyNlbmRpZiAvLyBXS19IQVZFX0NfU1BJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390589</attachid>
            <date>2020-02-12 16:47:03 -0800</date>
            <delta_ts>2020-02-12 17:05:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203420-20200212164702.patch</filename>
            <type>text/plain</type>
            <size>46961</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NjQ5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAyLTEyICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGly
ZWN0IG1vZGUgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEludGVybmFscyBmdW5jdGlvbnMgdG8gcmVh
ZCBwcmVmZXJlbmNlcy4KKworICAgICAgICBBUEkgdGVzdHM6IFRlc3RzIGFkZGVkIGluIFByZWZl
cmVuY2VDaGFuZ2VzLm1tLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZWFkUHJlZmVyZW5jZUludGVnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjplbmNvZGVkUHJlZmVyZW5jZVZhbHVlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6ZW5jb2RlZFByZWZlcmVuY2VWYWx1ZSk6CisKIDIwMjAtMDItMTIgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIExpbmVCdWlsZGVyIHNo
b3VsZCBiZSBhYmxlIHRvIHRha2UgYSBwYXJ0aWFsIHRyYWlsaW5nIGlubGluZSB0ZXh0IGl0ZW0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjU2NDkyKQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAy
LTEyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
Q0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFNQSSB0byBlbmFibGUg
Q0YgcHJlZnMgZGlyZWN0IG1vZGUgYW5kIGRlY2xhcmUgbWV0aG9kIGNhbGxlZCB3aGVuIHByZWZl
cmVuY2UgYXJlIGNoYW5nZWQuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwYWwvc3BpL2NmL0NGVXRpbGl0aWVzU1BJLmg6CisgICAgICAgICog
cGFsL3NwaS9jb2NvYS9OU1VzZXJEZWZhdWx0c1NQSS5oOiBBZGRlZC4KKwogMjAyMC0wMi0xMiAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
Q1NTX0RFVklDRV9BREFQVEFUSU9OCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML1BB
TC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTE2OCw2ICsxNjgsNyBAQAogCQlBM0FCNkU2NTFGM0QyMTdGMDA5QzE0QjEgLyogU3lzdGVt
U2xlZXBMaXN0ZW5lck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEEzQUI2RTYzMUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVy
TWFjLm1tICovOyB9OwogCQlBM0M2NkNEQzFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQzY2Q0RB
MUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwICovOyB9OwogCQlBM0M2NkNERDFGNDYy
RDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBM0M2NkNEQjFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmgg
Ki87IH07CisJCUMxNUNCQjM1MjNGMzU0OEEwMDMwMENDNyAvKiBOU1VzZXJEZWZhdWx0c1NQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1Q0JCMzIy
M0YzNEExMjAwMzAwQ0M3IC8qIE5TVXNlckRlZmF1bHRzU1BJLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBQ0IzNjAyMzg3NDI1QjAwMThEN0NF
IC8qIE1lZGlhVG9vbGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQUNCMzVFMjM4NzNFNDgwMDE4RDdDRSAvKiBNZWRpYVRvb2xi
b3hTb2Z0TGluay5jcHAgKi87IH07CiAJCUNEQUNCMzYxMjM4NzQyNzQwMDE4RDdDRSAvKiBNZWRp
YVRvb2xib3hTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RBQ0IzNUYyMzg3M0U0ODAwMThEN0NFIC8qIE1lZGlhVG9vbGJveFNvZnRMaW5r
LmggKi87IH07CiAJCUNERjkxMTEzMjIwRTRFRUMwMDFFQTM5RSAvKiBDZWxlc3RpYWxTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjkxMTEyMjIw
RTRFRUMwMDFFQTM5RSAvKiBDZWxlc3RpYWxTUEkuaCAqLzsgfTsKQEAgLTM0OCw2ICszNDksNyBA
QAogCQlBM0FCNkU2MzFGM0QyMTdGMDA5QzE0QjEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbVNsZWVwTGlz
dGVuZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQzY2Q0RBMUY0NjJE
NkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2Vzc2lvbklELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTND
NjZDREIxRjQ2MkQ2QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZXNzaW9uSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzE1Q0JCMzIyM0YzNEExMjAwMzAwQ0M3IC8qIE5TVXNlckRlZmF1bHRzU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5TVXNlckRlZmF1bHRzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyMTQ3QTRBMUVGRDBBQTYwMDA1NkZBNSAvKiBDb3B5UEFMSGVhZGVycy54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBDb3B5UEFMSGVhZGVycy54Y2NvbmZpZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBQ0IzNUUyMzg3M0U0ODAwMThEN0NFIC8qIE1l
ZGlhVG9vbGJveFNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhVG9vbGJveFNv
ZnRMaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBQ0IzNUYyMzg3M0U0
ODAwMThEN0NFIC8qIE1lZGlhVG9vbGJveFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlh
VG9vbGJveFNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTAsNiAr
NDUyLDcgQEAKIAkJCQkwQzJEQTEzNjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNVUkxDb25uZWN0aW9u
U1BJLmggKi8sCiAJCQkJMEMyREExMzcxRjNCRUI0OTAwREJDMzE3IC8qIE5TVVJMRG93bmxvYWRT
UEkuaCAqLywKIAkJCQkwQzJEQTEzODFGM0JFQjQ5MDBEQkMzMTcgLyogTlNVUkxGaWxlVHlwZU1h
cHBpbmdzU1BJLmggKi8sCisJCQkJQzE1Q0JCMzIyM0YzNEExMjAwMzAwQ0M3IC8qIE5TVXNlckRl
ZmF1bHRzU1BJLmggKi8sCiAJCQkJNTcwQUI4RjgyMEFGNkUzRDAwQjhCRTg3IC8qIE5TWFBDQ29u
bmVjdGlvblNQSS5oICovLAogCQkJCUVCNzA3RkE0MjM5NzM3RjgwMDU5MDUzQSAvKiBPU1Zhcmlh
bnRTUEkuaCAqLywKIAkJCQkwQzJEQTEzOTFGM0JFQjQ5MDBEQkMzMTcgLyogUGFzc0tpdFNQSS5o
ICovLApAQCAtODE2LDYgKzgxOSw3IEBACiAJCQkJMEMyREExNTIxRjNCRUI0OTAwREJDMzE3IC8q
IE5TVVJMQ29ubmVjdGlvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNTMxRjNCRUI0
OTAwREJDMzE3IC8qIE5TVVJMRG93bmxvYWRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRB
MTU0MUYzQkVCNDkwMERCQzMxNyAvKiBOU1VSTEZpbGVUeXBlTWFwcGluZ3NTUEkuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUMxNUNCQjM1MjNGMzU0OEEwMDMwMENDNyAvKiBOU1VzZXJEZWZhdWx0c1NQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OUMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TVmll
d1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OUQxRjQ1MTMwRjAwRjRFQkI2IC8qIE5T
V2luZG93U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzBBQjhGOTIwQUY2RTNEMDBCOEJFODcg
LyogTlNYUENDb25uZWN0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NmL0NGVXRpbGl0aWVzU1BJLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZVdGlsaXRpZXNTUEkuaAkocmV2aXNpb24gMjU2NDkw
KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZVdGlsaXRpZXNTUEkuaAkod29y
a2luZyBjb3B5KQpAQCAtNTgsNCArNTgsNiBAQCBDRkRpY3Rpb25hcnlSZWYgX0NGV2ViU2Vydmlj
ZXNDb3B5UHJvdmlkCiAKIHZvaWQgX19DRlJ1bkxvb3BTZXRPcHRpb25zUmVhc29uKF9fQ0ZSdW5M
b29wT3B0aW9ucyBvcHRzLCBDRlN0cmluZ1JlZiByZWFzb24pOwogCit2b2lkIF9DRlByZWZzU2V0
RGlyZWN0TW9kZUVuYWJsZWQoYm9vbCBlbmFibGVkKTsKKwogV1RGX0VYVEVSTl9DX0VORApJbmRl
eDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNVc2VyRGVmYXVsdHNTUEkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU1VzZXJEZWZh
dWx0c1NQSS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nv
Y29hL05TVXNlckRlZmF1bHRzU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworQGludGVyZmFjZSBOU09iamVjdCAoUHJpdmF0ZUtWT01ldGhvZHMpCistICh2b2lkKV9u
b3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgaWQ+ICopb2xkVmFsdWVzIHRvVmFsdWVzRm9yS2V5czooTlNEaWN0aW9uYXJ5PE5T
U3RyaW5nICosIGlkPiAqKW5ld1ZhbHVlczsKK0BlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAJKHJldmlzaW9uIDI1NjQ5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ2MSw2ICs1NDYxLDIzIEBAIGJv
b2wgSW50ZXJuYWxzOjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgY29uc3QKICNlbmRpZgogfQogCitpbnQg
SW50ZXJuYWxzOjpyZWFkUHJlZmVyZW5jZUludGVnZXIoY29uc3QgU3RyaW5nJiBkb21haW4sIGNv
bnN0IFN0cmluZyYga2V5KQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEJvb2xlYW4ga2V5
RXhpc3RzQW5kSGFzVmFsaWRGb3JtYXQgPSBmYWxzZTsKKyAgICByZXR1cm4gQ0ZQcmVmZXJlbmNl
c0dldEFwcEludGVnZXJWYWx1ZShrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZG9tYWluLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksICZrZXlFeGlzdHNBbmRIYXNWYWxpZEZvcm1hdCk7CisjZWxz
ZQorICAgIHJldHVybiAtMTsKKyNlbmRpZgorfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQorU3Ry
aW5nIEludGVybmFsczo6ZW5jb2RlZFByZWZlcmVuY2VWYWx1ZShjb25zdCBTdHJpbmcmIGRvbWFp
biwgY29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9Cisj
ZW5kaWYKKwogU3RyaW5nIEludGVybmFsczo6bWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0
TWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOwpJbmRleDogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MzMsNiArOTMzLDkgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBzeXN0ZW1IYXNCYXR0ZXJ5KCkgY29uc3Q7CiAKKyAgICBpbnQgcmVhZFBy
ZWZlcmVuY2VJbnRlZ2VyKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSk7
CisgICAgU3RyaW5nIGVuY29kZWRQcmVmZXJlbmNlVmFsdWUoY29uc3QgU3RyaW5nJiBkb21haW4s
IGNvbnN0IFN0cmluZyYga2V5KTsKKwogICAgIFN0cmluZyBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKIAogICAgIFN0cmluZyBmb2N1c1JpbmdDb2xv
cigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjU2
NDkwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC04NDIsNSArODQyLDggQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAKICAgICBi
b29sZWFuIHN5c3RlbUhhc0JhdHRlcnkoKTsKIAorICAgIGxvbmcgcmVhZFByZWZlcmVuY2VJbnRl
Z2VyKERPTVN0cmluZyBkb21haW4sIERPTVN0cmluZyBrZXkpOworICAgIERPTVN0cmluZyBlbmNv
ZGVkUHJlZmVyZW5jZVZhbHVlKERPTVN0cmluZyBkb21haW4sIERPTVN0cmluZyBrZXkpOworCiAg
ICAgRE9NU3RyaW5nIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oRE9NU3RyaW5nIGV4dGVuc2lv
bik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0JKHJldmlzaW9uIDI1
NjQ5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC04OCw0ICs4OCwxNSBAQCBkb3VibGUgSW50ZXJuYWxzOjpwcml2YXRlUGxheWVyVm9s
dW1lKGNvCiB9CiAjZW5kaWYKIAorU3RyaW5nIEludGVybmFsczo6ZW5jb2RlZFByZWZlcmVuY2VW
YWx1ZShjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgYXV0
byB1c2VyRGVmYXVsdHMgPSBhZG9wdE5TKFtbTlNVc2VyRGVmYXVsdHMgYWxsb2NdIGluaXRXaXRo
U3VpdGVOYW1lOiBkb21haW5dKTsKKyAgICBpZCB2YWx1ZSA9IFt1c2VyRGVmYXVsdHMuZ2V0KCkg
b2JqZWN0Rm9yS2V5OmtleV07CisgICAgTlNFcnJvciAqZSA9IG5pbDsKKyAgICBhdXRvIGRhdGEg
PSBhZG9wdE5TKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6dmFs
dWUgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjomZV0pOworICAgIEFTU0VSVCghZSk7
CisgICAgYXV0byBlbmNvZGVkU3RyaW5nID0gW2RhdGEgYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhP
cHRpb25zOjBdOworICAgIHJldHVybiBlbmNvZGVkU3RyaW5nOworfQorCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjU2NDkwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAyMC0wMi0xMiAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENGIHByZWZzIGRpcmVjdCBtb2RlIGluIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMzQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEVuYWJsZSBDRiBwcmVmcyBkaXJlY3QgbW9kZSwgaW4gb3JkZXIgdG8gYXZv
aWQgY29ubmVjdGluZyB0byB0aGUgQ0YgcHJlZnMgZGFlbW9uIGluIHRoZSBXZWJDb250ZW50IHBy
b2Nlc3MuCisgICAgICAgIEluIGRpcmVjdCBtb2RlLCB0aGUgcHJlZnMgZmlsZXMgd2lsbCBiZSBh
Y2Nlc3NlZCBkaXJlY3RseSwgYW5kIG5vdCB0aHJvdWdoIHRoZSBDRiBwcmVmcyBkYWVtb24uIEEg
cHJlZmVyZW5jZQorICAgICAgICBvYnNlcnZlciBpcyBhZGRlZCBpbiB0aGUgVUkgcHJvY2Vzcywg
d2hpY2ggd2lsbCBub3RpZnkgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBhYm91dCBwcmVmZXJlbmNl
cyBjaGFuZ2VzIHRvIGEKKyAgICAgICAgZG9tYWluLiBBZnRlciBhIHByZWZlcmVuY2UgY2hhbmdl
LCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHdpbGwgc2V0IHRoZSBuZXcgcHJlZmVyZW5jZSB2YWx1
ZSBmb3IgdGhlIGNoYW5nZWQKKyAgICAgICAga2V5L2RvbWFpbi4KKworICAgICAgICBBUEkgdGVz
dHM6IFRlc3RzIGFkZGVkIGluIFByZWZlcmVuY2VDaGFuZ2VzLm1tLgorCisgICAgICAgICogUmVz
b3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNi
OgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2Uv
WFBDU2VydmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VNYWluKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLmg6IEFkZGVkLgorICAg
ICAgICAoX19hdHRyaWJ1dGVfXyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVu
Y2VPYnNlcnZlci5tbTogQWRkZWQuCisgICAgICAgICgtW1dLVXNlckRlZmF1bHRzIF9ub3RpZnlP
YnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOnRvVmFsdWVzRm9yS2V5czpdKToKKyAg
ICAgICAgKC1bV0tVc2VyRGVmYXVsdHMgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpj
aGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKC1bV0tVc2VyRGVmYXVsdHMgaW5pdFdpdGhTdWl0
ZU5hbWU6XSk6CisgICAgICAgICgrW1dLUHJlZmVyZW5jZU9ic2VydmVyIHNoYXJlZEluc3RhbmNl
XSk6CisgICAgICAgICgtW1dLUHJlZmVyZW5jZU9ic2VydmVyIGluaXRdKToKKyAgICAgICAgKC1b
V0tQcmVmZXJlbmNlT2JzZXJ2ZXIgcHJlZmVyZW5jZURpZENoYW5nZTprZXk6ZW5jb2RlZFZhbHVl
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpub3RpZnlQcmVmZXJlbmNl
c0NoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOgorCiAyMDIwLTAy
LTEyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIENv
bXBvc2l0aW9uIGhpZ2hsaWdodCByZWN0cyBzaG91bGQgYmUgcm91bmRlZCBhbmQgaW5zZXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxl
LldlYktpdC5XZWJDb250ZW50LnNiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVzb3Vy
Y2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCShy
ZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmls
ZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkod29ya2luZyBjb3B5KQpAQCAt
NTkzLDcgKzU5Myw3IEBACiAoYWxsb3cgbWFjaC1sb29rdXAKICAgICAoZ2xvYmFsLW5hbWUgImNv
bS5hcHBsZS5sb2dkIikKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5sb2dkLmV2ZW50cyIp
Ci0gICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIikpCispCiAKIChh
bGxvdyBtYWNoLWxvb2t1cCAod2l0aCByZXBvcnQpICh3aXRoIHRlbGVtZXRyeSkKICAgICAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS5kaXN0cmlidXRlZF9ub3RpZmljYXRpb25zQDF2MyIpKQpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2
aWNlL1hQQ1NlcnZpY2VNYWluLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQko
cmV2aXNpb24gMjU2NDkwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJYUENTZXJ2aWNlRW50cnlQb2ludC5oIgogCiAjaW1w
b3J0IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8cGFsL3NwaS9j
Zi9DRlV0aWxpdGllc1NQSS5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KQEAg
LTExNiw2ICsxMTcsOSBAQCBpbnQgWFBDU2VydmljZU1haW4oaW50LCBjb25zdCBjaGFyKiopCiAg
ICAgfSk7CiAjZW5kaWYKIAorICAgIC8vIEVuYWJsZSBDRiBwcmVmcyBkaXJlY3QgbW9kZSB0byBh
dm9pZCBjb25uZWN0aW5nIHRvIHRoZSBDRiBwcmVmcyBkYWVtb24uCisgICAgX0NGUHJlZnNTZXRE
aXJlY3RNb2RlRW5hYmxlZChZRVMpOworCiAgICAgaWYgKGJvb3RzdHJhcCkgewogI2lmIFBMQVRG
T1JNKE1BQykKICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIHdlYktpdEJ1bmRsZVZlcnNpb24gPSB4
cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGJvb3RzdHJhcC5nZXQoKSwgIldlYktpdEJ1bmRsZVZl
cnNpb24iKSkgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CShyZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIE9CSkNfQ0xBU1MgTlNNdXRh
YmxlRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNPYmplY3Q7CiBPQkpDX0NMQVNTIE5TU2V0Owog
T0JKQ19DTEFTUyBOU1N0cmluZzsKK09CSkNfQ0xBU1MgV0tQcmVmZXJlbmNlT2JzZXJ2ZXI7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VS
VkVSX0JMT0NLSU5HKQpAQCAtNTQwLDYgKzU0MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRV
c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wpOwogICAgIGJvb2wgdXNlU2VwYXJh
dGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlU2VwYXJhdGVTZXJ2
aWNlV29ya2VyUHJvY2VzczsgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBub3Rp
ZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiBlbmNvZGVkVmFsdWUpOworI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIApAQCAtODAxLDYgKzgwNiwx
MCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0RlbGF5ZWRXZWJQcm9jZXNzTGF1bmNoRGlzYWJs
ZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgYm9vbCBtX3VzZVNlcGFyYXRlU2VydmljZVdvcmtl
clByb2Nlc3MgeyBmYWxzZSB9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRy
PFdLUHJlZmVyZW5jZU9ic2VydmVyPiBtX3ByZWZlcmVuY2VPYnNlcnZlcjsKKyNlbmRpZgogfTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ByZWZlcmVuY2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJl
IG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNVc2Vy
RGVmYXVsdHNTUEkuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCitPQkpDX0NMQVNTIFdLUHJlZmVyZW5jZU9ic2VydmVyOworCitAaW50
ZXJmYWNlIFdLVXNlckRlZmF1bHRzIDogTlNVc2VyRGVmYXVsdHMgeworQHByaXZhdGUKKyAgICBO
U1N0cmluZyAqbV9zdWl0ZU5hbWU7CitAcHVibGljCisgICAgV0tQcmVmZXJlbmNlT2JzZXJ2ZXIg
Km1fb2JzZXJ2ZXI7Cit9CitAZW5kCisKK19fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1
bHQiKSkpCitAaW50ZXJmYWNlIFdLUHJlZmVyZW5jZU9ic2VydmVyIDogTlNPYmplY3QgeworQHBy
aXZhdGUKKyAgICBWZWN0b3I8UmV0YWluUHRyPFdLVXNlckRlZmF1bHRzPj4gbV91c2VyRGVmYXVs
dHM7Cit9CisrIChpZClzaGFyZWRJbnN0YW5jZTsKKy0gKHZvaWQpcHJlZmVyZW5jZURpZENoYW5n
ZTooTlNTdHJpbmcgKilkb21haW4ga2V5OihOU1N0cmluZyAqKWtleSBlbmNvZGVkVmFsdWU6KE5T
U3RyaW5nICopZW5jb2RlZFZhbHVlOworQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5tbQkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QcmVmZXJlbmNlT2JzZXJ2ZXIubW0JKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDAgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQcmVmZXJl
bmNlT2JzZXJ2ZXIuaCIKKworI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKKworQGltcGxlbWVu
dGF0aW9uIFdLVXNlckRlZmF1bHRzCisKKy0gKHZvaWQpX25vdGlmeU9ic2VydmVyc09mQ2hhbmdl
RnJvbVZhbHVlc0ZvcktleXM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilvbGRWYWx1
ZXMgdG9WYWx1ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopbmV3VmFs
dWVzCit7CisgICAgW3N1cGVyIF9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JL
ZXlzOm9sZFZhbHVlcyB0b1ZhbHVlc0ZvcktleXM6bmV3VmFsdWVzXTsKKworICAgIGlmIChbb2xk
VmFsdWVzIGlzRXF1YWxUb0RpY3Rpb25hcnk6bmV3VmFsdWVzXSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZm9yIChOU1N0cmluZyAqa2V5IGluIG9sZFZhbHVlcykgeworICAgICAgICBpZCBvbGRW
YWx1ZSA9IG9sZFZhbHVlc1trZXldOworICAgICAgICBpZCBuZXdWYWx1ZSA9IG5ld1ZhbHVlc1tr
ZXldOworCisgICAgICAgIGlmIChbb2xkVmFsdWUgaXNFcXVhbDpuZXdWYWx1ZV0pCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAobmV3VmFsdWUgJiYgIVtbbmV3VmFsdWUgY2xh
c3NdIHN1cHBvcnRzU2VjdXJlQ29kaW5nXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIE5TU3RyaW5nICplbmNvZGVkU3RyaW5nID0gbmlsOworCisgICAgICAgIGlmIChuZXdWYWx1
ZSkgeworICAgICAgICAgICAgTlNFcnJvciAqZSA9IG5pbDsKKyAgICAgICAgICAgIGF1dG8gZGF0
YSA9IHJldGFpblB0cihbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0
Om5ld1ZhbHVlIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6JmVdKTsKKyAgICAgICAg
ICAgIEFTU0VSVCghZSk7CisgICAgICAgICAgICBlbmNvZGVkU3RyaW5nID0gW2RhdGEgYmFzZTY0
RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1f
b2JzZXJ2ZXIpCisgICAgICAgICAgICBbbV9vYnNlcnZlciBwcmVmZXJlbmNlRGlkQ2hhbmdlOm1f
c3VpdGVOYW1lIGtleTprZXkgZW5jb2RlZFZhbHVlOmVuY29kZWRTdHJpbmddOworICAgIH0KK30K
KworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZP
YmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeTxOU0tleVZhbHVlQ2hhbmdlS2V5
LCBpZD4gKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQKK3sKK30KKworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoU3VpdGVOYW1lOihOU1N0cmluZyAqKXN1aXRlbmFtZQoreworICAgIG1f
c3VpdGVOYW1lID0gc3VpdGVuYW1lOworICAgIG1fb2JzZXJ2ZXIgPSBuaWw7CisgICAgcmV0dXJu
IFtzdXBlciBpbml0V2l0aFN1aXRlTmFtZTpzdWl0ZW5hbWVdOworfQorQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gV0tQcmVmZXJlbmNlT2JzZXJ2ZXIKKworKyAoaWQpc2hhcmVkSW5zdGFuY2UKK3sK
KyAgICBzdGF0aWMgV0tQcmVmZXJlbmNlT2JzZXJ2ZXIgKmluc3RhbmNlID0gbmlsOworCisgICAg
aWYgKCFpbnN0YW5jZSkKKyAgICAgICAgaW5zdGFuY2UgPSBbW1tzZWxmIGNsYXNzXSBhbGxvY10g
aW5pdF07CisKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0
Cit7CisgICAgc3RkOjppbml0aWFsaXplcl9saXN0PE5TU3RyaW5nKj4gZG9tYWlucyA9IHsKKyAg
ICAgICAgQCJjb20uYXBwbGUuQWNjZXNzaWJpbGl0eSIsCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICAgICAgQCJjb20uYXBwbGUuQWRMaWIiLAorICAgICAgICBAImNvbS5hcHBsZS5DRk5l
dHdvcmsiLAorICAgICAgICBAImNvbS5hcHBsZS5FbW9qaVByZWZlcmVuY2VzIiwKKyAgICAgICAg
QCJjb20uYXBwbGUuRm9udFBhcnNlciIsCisgICAgICAgIEAiY29tLmFwcGxlLkltYWdlSU8iLAor
ICAgICAgICBAImNvbS5hcHBsZS5JbnB1dE1vZGVQcmVmZXJlbmNlcyIsCisjZWxzZQorICAgICAg
ICBAImNvbS5hcHBsZS5BVFMiLAorICAgICAgICBAImNvbS5hcHBsZS5Db3JlR3JhcGhpY3MiLAor
ICAgICAgICBAImNvbS5hcHBsZS5Eb3dubG9hZEFzc2Vzc21lbnQiLAorICAgICAgICBAImNvbS5h
cHBsZS5ISVRvb2xib3giLAorI2VuZGlmCisgICAgICAgIEAiY29tLmFwcGxlLkxhdW5jaFNlcnZp
Y2VzIiwKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBAImNvbS5hcHBsZS5NZXRh
bCIsCisgICAgICAgIEAiY29tLmFwcGxlLk1vYmlsZUFzc2V0IiwKKyAgICAgICAgQCJjb20uYXBw
bGUuUHJlZmVyZW5jZXMiLAorICAgICAgICBAImNvbS5hcHBsZS5TcGVha1NlbGVjdGlvbiIsCisg
ICAgICAgIEAiY29tLmFwcGxlLlVJS2l0IiwKKyAgICAgICAgQCJjb20uYXBwbGUuVm9pY2VPdmVy
VG91Y2giLAorI2Vsc2UKKyAgICAgICAgQCJjb20uYXBwbGUuTXVsdGl0b3VjaFN1cHBvcnQiCisg
ICAgICAgIEAiY29tLmFwcGxlLlNlcnZpY2VzTWVudS5TZXJ2aWNlcyIKKyAgICAgICAgQCJjb20u
YXBwbGUuVmlld0JyaWRnZSIKKyNlbmRpZgorICAgICAgICBAImNvbS5hcHBsZS5XZWJGb3VuZGF0
aW9uIiwKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBAImNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudCIsCisgICAgICAgIEAiY29tLmFwcGxlLldlYlVJIiwKKyAgICAgICAgQCJj
b20uYXBwbGUuYWlycGxheSIsCisgICAgICAgIEAiY29tLmFwcGxlLmFwcGxlanBlZyIsCisgICAg
ICAgIEAiY29tLmFwcGxlLmF1ZGlvLnZpcnR1YWxhdWRpbyIsCisgICAgICAgIEAiY29tLmFwcGxl
LmF2ZmF1ZGlvIiwKKyNlbmRpZgorICAgICAgICBAImNvbS5hcHBsZS5hdmZvdW5kYXRpb24iLAor
ICAgICAgICBAImNvbS5hcHBsZS5hdmZvdW5kYXRpb24uZnJlY2VudHMiLAorICAgICAgICBAImNv
bS5hcHBsZS5hdmZvdW5kYXRpb24udmlkZW9wZXJmb3JtYW5jZWh1ZCIsCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICAgICAgQCJjb20uYXBwbGUuYXZraXQiLAorICAgICAgICBAImNvbS5h
cHBsZS5jb3JlYW5pbWF0aW9uIiwKKyAgICAgICAgQCJjb20uYXBwbGUuY29yZWF1ZGlvIiwKKyNl
bmRpZgorICAgICAgICBAImNvbS5hcHBsZS5jb3JlbWVkaWEiLAorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgICAgIEAiY29tLmFwcGxlLmNvcmV2aWRlbyIsCisgICAgICAgIEAiY29tLmFw
cGxlLmRhIiwKKyAgICAgICAgQCJjb20uYXBwbGUuaGFuZ3RyYWNlciIsCisgICAgICAgIEAiY29t
LmFwcGxlLmluZGlnbyIsCisgICAgICAgIEAiY29tLmFwcGxlLmlva2l0LklPTW9iaWxlR3JhcGhp
Y3NGYW1pbHkiLAorICAgICAgICBAImNvbS5hcHBsZS5pdHVuZXNzdG9yZWQiLAorICAgICAgICBA
ImNvbS5hcHBsZS5rZXlib2FyZCIsCisjZWxzZQorICAgICAgICBAImNvbS5hcHBsZS5jcnlwdG8i
LAorICAgICAgICBAImNvbS5hcHBsZS5kcml2ZXIuQXBwbGVCbHVldG9vdGhNdWx0aXRvdWNoLm1v
dXNlIiwKKyAgICAgICAgQCJjb20uYXBwbGUuZHJpdmVyLkFwcGxlQmx1ZXRvb3RoTXVsdGl0b3Vj
aC50cmFja3BhZCIsCisgICAgICAgIEAiY29tLmFwcGxlLmRyaXZlci5BcHBsZUhJRE1vdXNlIgor
I2VuZGlmCisgICAgICAgIEAiY29tLmFwcGxlLmxvb2t1cC5zaGFyZWQiLAorICAgICAgICBAImNv
bS5hcHBsZS5tZWRpYWFjY2Vzc2liaWxpdHkiLAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgICAgIEAiY29tLmFwcGxlLm1lZGlhYWNjZXNzaWJpbGl0eS5wdWJsaWMiLAorICAgICAgICBA
ImNvbS5hcHBsZS5tZWRpYXJlbW90ZSIsCisgICAgICAgIEAiY29tLmFwcGxlLm1vYmlsZWlwb2Qi
LAorICAgICAgICBAImNvbS5hcHBsZS5tdCIsCisjZWxzZQorICAgICAgICBAImNvbS5hcHBsZS5u
ZXR3b3JrQ29ubmVjdCIKKyNlbmRpZgorICAgICAgICBAImNvbS5hcHBsZS5vcGVuZ2wiLAorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIEAiY29tLmFwcGxlLnByZWZlcmVuY2VzLnNv
dW5kcyIsCisgICAgICAgIEAiY29tLmFwcGxlLnNlY3VyaXR5IiwKKyAgICAgICAgQCJjb20uYXBw
bGUudm9pY2VzZXJ2aWNlcyIsCisgICAgICAgIEAiY29tLmFwcGxlLnZvaWNlc2VydmljZXMubG9n
Z2luZyIsCisjZWxzZQorICAgICAgICBAImNvbS5hcHBsZS5zcGVlY2gudm9pY2UucHJlZnMiLAor
ICAgICAgICBAImNvbS5hcHBsZS5zeXN0ZW1zb3VuZCIsCisgICAgICAgIEAiY29tLmFwcGxlLnVu
aXZlcnNhbGFjY2VzcyIsCisgICAgICAgIEAiY29tLm52aWRpYS5PcGVuR0wiLAorICAgICAgICBA
ImVkdS5taXQuS2VyYmVyb3MiLAorI2VuZGlmCisgICAgICAgIEAia0NGUHJlZmVyZW5jZXNBbnlB
cHBsaWNhdGlvbiIsCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIEAicGJzIiwK
KyNlbmRpZgorICAgIH07CisKKyAgICBmb3IgKGF1dG8gZG9tYWluIDogZG9tYWlucykgeworICAg
ICAgICBhdXRvIHVzZXJEZWZhdWx0cyA9IGFkb3B0TlMoW1tXS1VzZXJEZWZhdWx0cyBhbGxvY10g
aW5pdFdpdGhTdWl0ZU5hbWU6ZG9tYWluXSk7CisgICAgICAgIHVzZXJEZWZhdWx0cy5nZXQoKS0+
bV9vYnNlcnZlciA9IHNlbGY7CisgICAgICAgIC8vIFN0YXJ0IG9ic2VydmluZyBhIGR1bW15IGtl
eSBpbiBvcmRlciB0byBtYWtlIHRoZSBwcmVmZXJlbmNlIGRhZW1vbiBiZWNvbWUgYXdhcmUgb2Yg
b3VyIE5TVXNlckRlZmF1bHRzIGluc3RhbmNlLgorICAgICAgICAvLyBUaGlzIGlzIHRvIG1ha2Ug
c3VyZSB3ZSByZWNlaXZlIEtWTyBub3RpZmljYXRpb25zLiBXZSBjYW5ub3QgdXNlIG5vcm1hbCBL
Vk8gdGVjaG5pcXVlcyBoZXJlLCBzaW5jZSB3ZSBhcmUgbG9va2luZworICAgICAgICAvLyBmb3Ig
X2FueV8gY2hhbmdlcyBpbiBhIHByZWZlcmVuY2UgZG9tYWluLiBGb3Igbm9ybWFsIEtWTyB0ZWNo
bmlxdWVzIHRvIHdvcmssIHdlIG5lZWQgdG8gcHJvdmlkZSB0aGUgc3BlY2lmaWMKKyAgICAgICAg
Ly8ga2V5KHMpIHdlIHdhbnQgdG8gb2JzZXJ2ZSwgYnV0IHRoYXQgc2V0IG9mIGtleXMgaXMgdW5r
bm93biB0byB1cy4KKyAgICAgICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBhZGRPYnNlcnZlcjp1c2Vy
RGVmYXVsdHMuZ2V0KCkgZm9yS2V5UGF0aDpAInRlc3RrZXkiIG9wdGlvbnM6TlNLZXlWYWx1ZU9i
c2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07CisgICAgICAgIG1fdXNlckRlZmF1bHRzLmFw
cGVuZCh1c2VyRGVmYXVsdHMpOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQor
CistICh2b2lkKXByZWZlcmVuY2VEaWRDaGFuZ2U6KE5TU3RyaW5nICopZG9tYWluIGtleTooTlNT
dHJpbmcgKilrZXkgZW5jb2RlZFZhbHVlOihOU1N0cmluZyAqKWVuY29kZWRWYWx1ZQoreworICAg
IE9wdGlvbmFsPFN0cmluZz4gZW5jb2RlZFN0cmluZzsKKyAgICBpZiAoZW5jb2RlZFZhbHVlKQor
ICAgICAgICBlbmNvZGVkU3RyaW5nID0gU3RyaW5nKGVuY29kZWRWYWx1ZSk7CisgICAgZm9yIChh
dXRvKiBwcm9jZXNzUG9vbCA6IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29s
cygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGRvbWFp
biwga2V5LCBlbmNvZGVkU3RyaW5nKTsKK30KK0BlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24g
MjU2NDkwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiTmV0d29y
a1Byb2Nlc3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogI2lt
cG9ydCAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKKyNpbXBvcnQgIlByZWZlcmVuY2VPYnNlcnZl
ci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXIu
aCIKICNpbXBvcnQgIlVzZXJJbnRlcmZhY2VJZGlvbS5oIgpAQCAtMzYzLDYgKzM2NCw5IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICAgICBwYXJhbWV0ZXJzLmNz
c1ZhbHVlVG9TeXN0ZW1Db2xvck1hcCA9IFJlbmRlclRoZW1lSU9TOjpjc3NWYWx1ZVRvU3lzdGVt
Q29sb3JNYXAoKTsKICAgICBwYXJhbWV0ZXJzLmZvY3VzUmluZ0NvbG9yID0gUmVuZGVyVGhlbWU6
OnNpbmdsZXRvbigpLmZvY3VzUmluZ0NvbG9yKE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25z
PigpKTsKICNlbmRpZgorCisgICAgLy8gU3RhcnQgb2JzZXJ2aW5nIHByZWZlcmVuY2UgY2hhbmdl
cy4KKyAgICBbV0tQcmVmZXJlbmNlT2JzZXJ2ZXIgc2hhcmVkSW5zdGFuY2VdOwogfQogCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTczMCw0ICs3MzQsMTAg
QEAgTlNTZXQgKldlYlByb2Nlc3NQb29sOjphbGxvd2VkQ2xhc3Nlc0ZvcgogICAgIHJldHVybiBt
X2NsYXNzZXNGb3JQYXJhbWV0ZXJDb2Rlci5nZXQoKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUG9v
bDo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgZW5jb2RlZFZhbHVlKQoreworICAg
IGZvciAoYXV0byBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlByb2Nlc3M6Ok5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChkb21haW4sIGtl
eSwgZW5jb2RlZFZhbHVlKSwgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNTY0OTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYyLDYgKzE2NjIsOCBAQAogCQlDMTFBOUVDQzIx
NDAzNUY4MDBDRkIyMEEgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTFBOUVDQjIxNDAzNUY4MDBDRkIyMEEg
LyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmggKi87IH07CiAJCUMxMUUxNjk0MjEyQjg3QzUwMDk4
NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMTFFMTY5MjIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxNDkz
ODA5MjIzNDcxMDQwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxNDkzODAyMjIzNDFDNjAw
MDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLzsgfTsKKwkJQzE1Q0JCMzYy
M0YzNzc3MTAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0NUNDMEUyM0RDQTQyNzAwM0E1RUVCIC8q
IFByZWZlcmVuY2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUMxNUNCQjM3MjNGMzdFQ0IwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2Jz
ZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MTVDQkIzMzIzRjM0QzM4MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tICovOyB9Owog
CQlDMTgxNzM2MTIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxheUxpbmsuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxODE3MzYwMjA1ODQyNDcwMERGREE2
NSAvKiBEaXNwbGF5TGluay5oICovOyB9OwogCQlDMUUxMjNCQTIwQTExNTczMDAyNjQ2RjQgLyog
UERGQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMxRTEyM0I5MjBBMTE1NzIwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oICovOyB9
OwogCQlDNTE3Mzg4MTEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MTczODgwMTJE
RjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oICovOyB9OwpAQCAtNDg3OSw5
ICs0ODgxLDExIEBACiAJCUMxMUE5RUQwMjE0MDNCNDAwMENGQjIwQSAvKiBXZWJTd2l0Y2hpbmdH
UFVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzExRTE2OTIyMTJCODdDNTAwOTg1RkY2
IC8qIFdLTW9ja0Rpc3BsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tN
b2NrRGlzcGxheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTFFMTY5MzIxMkI4
N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlzcGxheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXS01vY2tEaXNwbGF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzE0NUNDMEUyM0RDQTQyNzAwM0E1RUVCIC8qIFByZWZlcmVuY2VPYnNlcnZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcmVmZXJlbmNlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzE0OTM4MDIyMjM0MUM2MDAwMENENzA3IC8qIFdlYlNwZWVjaFN5bnRoZXNpc0Ns
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MDMyMjM0MURGNzAwMENENzA3IC8qIFdlYlNw
ZWVjaFN5bnRoZXNpc0NsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTcGVlY2hTeW50
aGVzaXNDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTQ5MzgwQTIy
Mzg1M0JFMDAwQ0Q3MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzE1Q0JCMzMyM0YzNEMzODAwMzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFByZWZlcmVuY2VPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzE4MTczNUUyMDU4MzlGNjAwREZEQTY1IC8qIERyYXdpbmdBcmVhTWFj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERyYXdpbmdBcmVhTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzE4MTczNjAyMDU4NDI0NzAwREZEQTY1IC8qIERpc3BsYXlMaW5r
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMxODE3MzYyMjA1ODQ0QTkwMERGREE2NSAvKiBEaXNwbGF5TGluay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEaXNwbGF5TGluay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MDEwLDYgKzYwMTQsOCBAQAogCQkJCUNEQTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCAqLywKIAkJCQlDREEyOUEyMjFDQkVCNjFBMDA5
MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJ
CUNEQTI5QTFGMUNCRUI1RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHku
bW0gKi8sCisJCQkJQzE0NUNDMEUyM0RDQTQyNzAwM0E1RUVCIC8qIFByZWZlcmVuY2VPYnNlcnZl
ci5oICovLAorCQkJCUMxNUNCQjMzMjNGMzRDMzgwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2
ZXIubW0gKi8sCiAJCQkJNUNCN0FGREQyM0M1MjczRDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZERl
bGVnYXRlLmggKi8sCiAJCQkJNUNCN0FGREUyM0M1MjczRDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9h
ZERlbGVnYXRlLm1tICovLAogCQkJCTVDQTk4NTRCMjEwQkVCNzMwMDU3RUI2QiAvKiBTYWZlQnJv
d3NpbmdXYXJuaW5nQ29jb2EubW0gKi8sCkBAIC02OTk3LDggKzcwMDMsOCBAQAogCQkJCTFBNDIy
RjhBMThCMjlCNTQwMEQ4Q0Q5NiAvKiBXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCAqLywKIAkJ
CQk1MUQxMjQ4NDFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUuaCAqLywKIAkJ
CQk1MUQxMjQ4NTFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gKi8sCi0J
CQkJREY0NjJFMEUyM0YyMkY1MzAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5o
ICovLAogCQkJCTUxRDEyNDg2MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZUlu
dGVybmFsLmggKi8sCisJCQkJREY0NjJFMEUyM0YyMkY1MzAwRUZGMzVGIC8qIFdLSFRUUENvb2tp
ZVN0b3JlUHJpdmF0ZS5oICovLAogCQkJCTFBQjQwRUUzMUJGNjc3RTMwMEJBODFCRSAvKiBXS01l
bnVJdGVtSWRlbnRpZmllcnMubW0gKi8sCiAJCQkJMUFCNDBFRTQxQkY2NzdFMzAwQkE4MUJFIC8q
IFdLTWVudUl0ZW1JZGVudGlmaWVyc1ByaXZhdGUuaCAqLywKIAkJCQkxQTVCMUM0RjE4OTg2MDZG
MDA0RkNGOUIgLyogV0tOYXZpZ2F0aW9uLmggKi8sCkBAIC0xMDI1NCw3ICsxMDI2MCw2IEBACiAJ
CQkJMkQ1ODc1QkYyMTlCNTMxNTAwNzBCOUFBIC8qIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMTA1RkU1NDE4RDdCOURFMDA4RjU3QTggLyogRWRpdGluZ1Jh
bmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE0MUFCNTEyQzAyRUM0MDAyQkU2N0IgLyogRWRp
dG9yU3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCURGNDYyRTEyMjNGMzM4QkUwMEVGRjM1RiAv
KiBXS0NvbnRlbnRXb3JsZFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyREE4MTBG
NDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUIxNUE4NTEz
ODQzQTM5MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQTU3NUZCMTQ5NkI1MjYwMEE0RUUwNiAvKiBFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTA0NzUsNiArMTA0ODAsNyBAQAogCQkJCTFBNkZCN0FGMTFFNjRCNjgwMERC
MTM3MSAvKiBQbHVnaW5WaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4MTIyQjM1MTVC
MDA4RDBFOEIgLyogUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4M0EwRUQzNTFGNzQ3Q0NGMDAzMjk5RUIgLyogUHJlY29ubmVjdFRhc2suaCBpbiBIZWFk
ZXJzICovLAorCQkJCUMxNUNCQjM2MjNGMzc3NzEwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBQjE0NUU2MjIzRjkzMTIwMEU0ODlEOCAvKiBQcmVm
ZXRjaENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUNDMUI5MDEyRDdFQURGMDA2MjU4Mzgg
LyogUHJpbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkY5NTM2NTE4RkY1OEY1MDAxREIy
RUYgLyogUHJvY2Vzc0Fzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDcyMSw3ICsxMDcy
Nyw2IEBACiAJCQkJRkVFNDNGRDMxRTY3QjAxODAwNzdENkQxIC8qIFdlYkluc3BlY3RvckludGVy
cnVwdERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFREJEQ0Q3MUU2OEQyMDUwMEE1
OUY4RiAvKiBXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDOEUyQTM2MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREY0NjJFMEYyM0YyMkY1NTAwRUZGMzVGIC8qIFdL
SFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI4MzQxMjc1
RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
Q0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUM4OTFENjYxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3Rv
clVJLmggaW4gSGVhZGVycyAqLywKQEAgLTEwOTM0LDYgKzEwOTM5LDcgQEAKIAkJCQkwRjA0MTU5
RTIzQzdDQzczMDA2MEEzRTIgLyogV0tDb250ZW50Vmlld01hYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTExMDY1RkMyM0VDOTU3MjAwNTQ0M0Q2IC8qIFdLQ29udGVudFdvcmxkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTEwNjVGRDIzRUM5NTdCMDA1NDQzRDYgLyogV0tDb250ZW50V29ybGRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJREY0NjJFMTIyM0YzMzhCRTAwRUZGMzVGIC8qIFdL
Q29udGVudFdvcmxkUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCOUUyNEIxMTIwRTE1
QzAwQTEzN0UwIC8qIFdLQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNTJGOTgxOTIw
MjY3MjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBNDQ1QkE1MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9uQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTExMDE3LDYgKzExMDIzLDcgQEAKIAkJCQkxQTQyMkY4
QjE4QjI5QjU0MDBEOENEOTYgLyogV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCNjJFNzMxMjE0MzA0N0IwMDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MUQxMjQ5OTFFNzYzQzAxMDAyQjI4MjAgLyogV0tIVFRQQ29v
a2llU3RvcmUuaCBpbiBIZWFkZXJzICovLAorCQkJCURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAv
KiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjZBNEI1
MjMyMDk2MjQwMEVBNEQ0NCAvKiBXS0hUVFBDb29raWVTdG9yZVJlZi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTExMEFFMEQxMzNDMTZDQjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTIzQ0YxQzEzM0QyNjBBMDA1NkY4MDAgLyogV0tJY29uRGF0YWJhc2VD
Ry5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjE3Niw2ICsxMjE4Myw3IEBACiAJCQkJMUE4RUZBNzAx
MjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdpblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDODI4NDREMTZCNTA4MUMwMEEyNzhGRSAvKiBQbHVnaW5TZXJ2aWNlRW50
cnlQb2ludC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEOTEzNDREMjEyQ0Y5RjAwMDEyOEFGRCAv
KiBQbHVnaW5WaWV3LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMxNUNCQjM3MjNGMzdFQ0IwMDMw
MENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDU0QzMx
QjIxMkY0REE2MDA0OUMxNzQgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNEMjg2NUVGMjI1NTU2MjAwMDYwNkFDNyAvKiBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXIu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDcyQTFGQTIxMkJGNDZFMDA1MTdBMjAgLyogUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjU2NDkwKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzA3LDYgKzMwNyw3
IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgc2V0TWVkaWFNSU1F
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4pOworICAgIHZvaWQgbm90aWZ5UHJlZmVyZW5jZXND
aGFuZ2VkKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgT3B0
aW9uYWw8U3RyaW5nPiYgZW5jb2RlZFZhbHVlKTsKICNlbmRpZgogCiAgICAgYm9vbCBhcmVBbGxQ
YWdlc1Rocm90dGxlYWJsZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1NjQ5MCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjgsNCArMTY4LDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciBObwogICAgIEdyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIG1vYmlsZUFzc2V0SGFuZGxlLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBtb2JpbGVBc3NldFYySGFuZGxlKQogICAgIFJldm9rZUFjY2Vzc1RvQXNzZXRTZXJ2
aWNlcygpCiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE5vdGlmeVByZWZlcmVu
Y2VzQ2hhbmdlZChTdHJpbmcgZG9tYWluLCBTdHJpbmcga2V5LCBPcHRpb25hbDxTdHJpbmc+IGVu
Y29kZWRWYWx1ZSkKKyNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
bS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkocmV2aXNpb24gMjU2NDkwKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NDgsNyArNjQ4LDYgQEAKICAgICAod2l0aCByZXBvcnQpICh3aXRoIHRl
bGVtZXRyeSkKICNlbmRpZgogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLlBvd2VyTWFuYWdl
bWVudC5jb250cm9sIikKLSAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5jZnByZWZzZC5kYWVt
b24iKQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmNvcmVzZXJ2aWNlcy5sYXVuY2hzZXJ2
aWNlc2QiKQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLmxzZC5tYXBkYiIpCiAgICAgKGds
b2JhbC1uYW1lICJjb20uYXBwbGUudGNjZCIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI1NjQ5MCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTkwOCw2ICs5MDgsMjQgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRNZWRpYU1J
TUVUeXBlcyhjb25zdAogICAgICAgICBjYWNoZS5hZGRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CiB9
CiAKK3ZvaWQgV2ViUHJvY2Vzczo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0IFN0cmlu
ZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgZW5j
b2RlZFZhbHVlKQoreworICAgIGF1dG8gZGVmYXVsdHMgPSBhZG9wdE5TKFtbTlNVc2VyRGVmYXVs
dHMgYWxsb2NdIGluaXRXaXRoU3VpdGVOYW1lOmRvbWFpbl0pOworICAgIGlmICghZW5jb2RlZFZh
bHVlLmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgW2RlZmF1bHRzIHNldE9iamVjdDpuaWwgZm9yS2V5
OmtleV07CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBlbmNvZGVkRGF0YSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzoqZW5jb2Rl
ZFZhbHVlIG9wdGlvbnM6MF0pOworICAgIGlmICghZW5jb2RlZERhdGEpCisgICAgICAgIHJldHVy
bjsKKyAgICBOU0Vycm9yICplcnIgPSBuaWw7CisgICAgYXV0byBvYmplY3QgPSByZXRhaW5QdHIo
W05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzOltOU09iamVjdCBjbGFz
c10gZnJvbURhdGE6ZW5jb2RlZERhdGEuZ2V0KCkgZXJyb3I6JmVycl0pOworICAgIEFTU0VSVCgh
ZXJyKTsKKyAgICBpZiAoZXJyKQorICAgICAgICByZXR1cm47CisgICAgW2RlZmF1bHRzIHNldE9i
amVjdDpvYmplY3QuZ2V0KCkgZm9yS2V5OmtleV07Cit9CisKICNpZiBQTEFURk9STShJT1MpCiB2
b2lkIFdlYlByb2Nlc3M6OmdyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYgbW9iaWxlQXNzZXRIYW5kbGUsICBXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmIG1vYmlsZUFzc2V0VjJIYW5kbGUpCiB7CkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTY0OTAp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAy
MC0wMi0xMSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAg
VXNlIENGIHByZWZzIGRpcmVjdCBtb2RlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQyMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUHJlZmVyZW5jZUNoYW5nZXMubW06IEFkZGVkLgorICAg
ICAgICAoVEVTVCk6CisKIDIwMjAtMDItMTIgIFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU2NDYzLgpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1NjQ5MCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC04NzQsNiArODc0LDcgQEAKIAkJQzBBREJFOTYxMkZDQTc5QjAwRDJDMTI5IC8qIHNp
bXBsZS1mb3JtLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzBBREJFODQxMkZDQTZCNjAwRDJDMTI5IC8qIHNpbXBsZS1mb3JtLmh0bWwg
Ki87IH07CiAJCUMwQkQ2NjlGMTMxRDNDRkYwMEUxOEYyQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVy
RG9lc250RmlyZUVhcmx5X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMEJENjY5RTEzMUQzQ0ZGMDBFMThGMkEgLyogUmVzcG9uc2l2ZW5l
c3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwICovOyB9OwogCQlDMEM1RDNDNjE0NTk5
MTI5MDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQzVEM0JEMTQ1OThCNkYwMEE4
MDJBNiAvKiBHZXRCYWNraW5nU2NhbGVGYWN0b3JfQnVuZGxlLm1tICovOyB9OworCQlDMTA3N0Qz
MjIzREY3MkZDMDA1MDY2NzEgLyogUHJlZmVyZW5jZUNoYW5nZXMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA3N0QzMTIzREY3MkVGMDA1MDY2NzEg
LyogUHJlZmVyZW5jZUNoYW5nZXMubW0gKi87IH07CiAJCUMxNDVDQzBDMjNEQTVBMUYwMDNBNUVF
QiAvKiBNaW1lVHlwZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMTQ1Q0MwQjIzREE1QTBGMDAzQTVFRUIgLyogTWltZVR5cGVzLm1tICovOyB9Owog
CQlDMTVDQkIzMDIzRjFGRjFBMDAzMDBDQzcgLyogQmFja2xpZ2h0TGV2ZWxOb3RpZmljYXRpb24u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTVDQkIy
RjIzRjFGRjFBMDAzMDBDQzcgLyogQmFja2xpZ2h0TGV2ZWxOb3RpZmljYXRpb24ubW0gKi87IH07
CiAJCUMxNjkyRENBMjNEMTBEQUUwMDZFODhGNyAvKiBCYXR0ZXJ5Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE2OTJEQzkyM0QxMERBRTAwNkU4OEY3
IC8qIEJhdHRlcnkubW0gKi87IH07CkBAIC0yNDIzLDYgKzI0MjQsNyBAQAogCQlDMEJENjY5RTEz
MUQzQ0ZGMDBFMThGMkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5k
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzcG9uc2l2ZW5l
c3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMEM1RDNCQzE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9y
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2V0QmFja2luZ1Nj
YWxlRmFjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEM1RDNCRDE0NTk4
QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5k
bGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxMDc3RDMxMjNERjcyRUYwMDUw
NjY3MSAvKiBQcmVmZXJlbmNlQ2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFByZWZlcmVuY2VDaGFuZ2VzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMTQ1Q0MwQjIzREE1QTBGMDAzQTVFRUIgLyogTWltZVR5cGVzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWltZVR5cGVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMTVDQkIyRjIzRjFGRjFBMDAzMDBDQzcgLyogQmFja2xpZ2h0
TGV2ZWxOb3RpZmljYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCYWNrbGlnaHRMZXZl
bE5vdGlmaWNhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE2OTJEQzky
M0QxMERBRTAwNkU4OEY3IC8qIEJhdHRlcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCYXR0
ZXJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg3MSw2ICsyODczLDcgQEAK
IAkJCQlDMTY5MkRDOTIzRDEwREFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSAqLywKIAkJCQlFMzk0
QUU2RTIzRjIzMDNFMDA1QjQ5MzYgLyogR3JhbnRBY2Nlc3NUb01vYmlsZUFzc2V0cy5tbSAqLywK
IAkJCQlDMTQ1Q0MwQjIzREE1QTBGMDAzQTVFRUIgLyogTWltZVR5cGVzLm1tICovLAorCQkJCUMx
MDc3RDMxMjNERjcyRUYwMDUwNjY3MSAvKiBQcmVmZXJlbmNlQ2hhbmdlcy5tbSAqLywKIAkJCQkw
RjEzOUU3NTFBNDIzQTUzMDBGNTkwRjUgLyogV2Vha09iakNQdHIubW0gKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IGNvY29hOwpAQCAtNDkyMCw2ICs0OTIzLDcgQEAKIAkJCQk3Q0NFN0VBNjFBNDExQTBG
MDA0NDdDNEMgLyogUGxhdGZvcm1VdGlsaXRpZXNNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0VBNzFBNDExQTEzMDA0NDdDNEMgLyogUGxhdGZvcm1XZWJWaWV3TWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODNCQUVFOEQxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQ
b2xpY2llcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMxMDc3RDMyMjNERjcyRkMwMDUwNjY3MSAv
KiBQcmVmZXJlbmNlQ2hhbmdlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjI2MUE0MTFB
RjYwMDQ0N0M0QyAvKiBQcmVmZXJlbmNlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMjI3RTQ0
MjExQTRENUQwMEQyODVBRiAvKiBQcmVmZXJyZWRBdWRpb0J1ZmZlclNpemUubW0gaW4gU291cmNl
cyAqLywKIAkJCQlGNDhENkMxMDIyNEIzNzcwMDBFM0UyRkIgLyogUHJlZmVycmVkQ29udGVudE1v
ZGUubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tCShub25leGlzdGVudCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1ByZWZlcmVuY2VPYnNlcnZlci5oPgorCitzdGF0aWMg
Ym9vbCBkb25lID0gZmFsc2U7CisKK0BpbnRlcmZhY2UgV0tUZXN0UHJlZmVyZW5jZU9ic2VydmVy
IDogV0tQcmVmZXJlbmNlT2JzZXJ2ZXIKKy0gKHZvaWQpcHJlZmVyZW5jZURpZENoYW5nZTooTlNT
dHJpbmcgKilkb21haW4ga2V5OihOU1N0cmluZyAqKWtleSBlbmNvZGVkVmFsdWU6KE5TU3RyaW5n
ICopZW5jb2RlZFZhbHVlOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tUZXN0UHJlZmVyZW5j
ZU9ic2VydmVyCistICh2b2lkKXByZWZlcmVuY2VEaWRDaGFuZ2U6KE5TU3RyaW5nICopZG9tYWlu
IGtleTooTlNTdHJpbmcgKilrZXkgZW5jb2RlZFZhbHVlOihOU1N0cmluZyAqKWVuY29kZWRWYWx1
ZQoreworICAgIGRvbmUgPSB0cnVlOworfQorQGVuZAorCitURVNUKFdlYktpdCwgUHJlZmVyZW5j
ZU9ic2VydmVyKQoreworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIENGUHJlZmVyZW5jZXNTZXRB
cHBWYWx1ZShDRlNUUigidGVzdGtleSIpLCBDRlNUUigiMSIpLCBDRlNUUigiY29tLmFwcGxlLmNv
cmVtZWRpYSIpKTsKKworICAgIGF1dG8gb2JzZXJ2ZXIgPSBhZG9wdE5TKFtbV0tUZXN0UHJlZmVy
ZW5jZU9ic2VydmVyIGFsbG9jXSBpbml0XSk7CisKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFs
dWUoQ0ZTVFIoInRlc3RrZXkiKSwgQ0ZTVFIoIjIiKSwgQ0ZTVFIoImNvbS5hcHBsZS5jb3JlbWVk
aWEiKSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNU
KFdlYktpdCwgUHJlZmVyZW5jZU9ic2VydmVyQXJyYXkpCit7CisgICAgZG9uZSA9IGZhbHNlOwor
CisgICAgTlNBcnJheSAqYXJyYXkgPSBAW0AxLCBAMiwgQDNdOworCisgICAgYXV0byB1c2VyRGVm
YXVsdHMgPSBhZG9wdE5TKFtbTlNVc2VyRGVmYXVsdHMgYWxsb2NdIGluaXRXaXRoU3VpdGVOYW1l
OkAiY29tLmFwcGxlLmNvcmVtZWRpYSJdKTsKKyAgICBbdXNlckRlZmF1bHRzLmdldCgpIHNldE9i
amVjdDphcnJheSBmb3JLZXk6QCJ0ZXN0a2V5Il07CisKKyAgICBhdXRvIG9ic2VydmVyID0gYWRv
cHROUyhbW1dLVGVzdFByZWZlcmVuY2VPYnNlcnZlciBhbGxvY10gaW5pdF0pOworCisgICAgTlNB
cnJheSAqY2hhbmdlZEFycmF5ID0gQFtAMywgQDIsIEAxXTsKKyAgICBbdXNlckRlZmF1bHRzLmdl
dCgpIHNldE9iamVjdDpjaGFuZ2VkQXJyYXkgZm9yS2V5OkAidGVzdGtleSJdOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChXZWJLaXQsIFByZWZlcmVu
Y2VDaGFuZ2VzKQoreworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShDRlNUUigidGVzdGtl
eSIpLCBDRlNUUigiMSIpLCBDRlNUUigiY29tLmFwcGxlLmNvcmVtZWRpYSIpKTsKKworICAgIEVY
UEVDVF9FUSgxLCBDRlByZWZlcmVuY2VzR2V0QXBwSW50ZWdlclZhbHVlKENGU1RSKCJ0ZXN0a2V5
IiksIENGU1RSKCJjb20uYXBwbGUuY29yZW1lZGlhIiksIG51bGxwdHIpKTsKKworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJ
bnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5w
cm9jZXNzUG9vbCA9IChXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkg
YWRkVG9XaW5kb3c6WUVTXSk7CisKKyAgICBhdXRvIHByZWZlcmVuY2VWYWx1ZSA9IFsmXSB7Cisg
ICAgICAgIHJldHVybiBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2lu
ZG93LmludGVybmFscy5yZWFkUHJlZmVyZW5jZUludGVnZXIoXCJjb20uYXBwbGUuY29yZW1lZGlh
XCIsIFwidGVzdGtleVwiKSJdLmludFZhbHVlOworICAgIH07CisKKyAgICBFWFBFQ1RfRVEocHJl
ZmVyZW5jZVZhbHVlKCksIDEpOworCisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKENGU1RS
KCJ0ZXN0a2V5IiksIENGU1RSKCIyIiksIENGU1RSKCJjb20uYXBwbGUuY29yZW1lZGlhIikpOwor
CisgICAgRVhQRUNUX0VRKHByZWZlcmVuY2VWYWx1ZSgpLCAyKTsKK30KKworVEVTVChXZWJLaXQs
IFByZWZlcmVuY2VDaGFuZ2VzQXJyYXkpCit7CisgICAgTlNBcnJheSAqYXJyYXkgPSBAW0AxLCBA
MiwgQDNdOworCisgICAgYXV0byB1c2VyRGVmYXVsdHMgPSBhZG9wdE5TKFtbTlNVc2VyRGVmYXVs
dHMgYWxsb2NdIGluaXRXaXRoU3VpdGVOYW1lOkAiY29tLmFwcGxlLmNvcmVtZWRpYSJdKTsKKyAg
ICBbdXNlckRlZmF1bHRzLmdldCgpIHNldE9iamVjdDphcnJheSBmb3JLZXk6QCJ0ZXN0a2V5Il07
CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4
dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVk
QnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5kbGVUZXN0IikpOworICAgIGNvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgPSAoV0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCk7
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOworCisgICAgYXV0byBwcmVmZXJlbmNlVmFs
dWUgPSBbJl0geworICAgICAgICByZXR1cm4gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAIndpbmRvdy5pbnRlcm5hbHMuZW5jb2RlZFByZWZlcmVuY2VWYWx1ZShcImNvbS5h
cHBsZS5jb3JlbWVkaWFcIiwgXCJ0ZXN0a2V5XCIpIl07CisgICAgfTsKKworICAgIHByZWZlcmVu
Y2VWYWx1ZSgpOworCisgICAgTlNBcnJheSAqY2hhbmdlZEFycmF5ID0gQFtAMywgQDIsIEAxXTsK
KyAgICBbdXNlckRlZmF1bHRzLmdldCgpIHNldE9iamVjdDpjaGFuZ2VkQXJyYXkgZm9yS2V5OkAi
dGVzdGtleSJdOworCisgICAgYXV0byBlbmNvZGVkU3RyaW5nID0gcHJlZmVyZW5jZVZhbHVlKCk7
CisgICAgYXV0byBlbmNvZGVkRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRo
QmFzZTY0RW5jb2RlZFN0cmluZzplbmNvZGVkU3RyaW5nIG9wdGlvbnM6MF0pOworICAgIEFTU0VS
VF9UUlVFKGVuY29kZWREYXRhKTsKKyAgICBOU0Vycm9yICplcnIgPSBuaWw7CisgICAgYXV0byBv
YmplY3QgPSByZXRhaW5QdHIoW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNs
YXNzOltOU09iamVjdCBjbGFzc10gZnJvbURhdGE6ZW5jb2RlZERhdGEuZ2V0KCkgZXJyb3I6JmVy
cl0pOworICAgIEFTU0VSVF9UUlVFKCFlcnIpOworICAgIEFTU0VSVF9UUlVFKG9iamVjdCk7Cisg
ICAgQVNTRVJUX1RSVUUoW29iamVjdCBpc0VxdWFsOmNoYW5nZWRBcnJheV0pOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390593</attachid>
            <date>2020-02-12 17:05:44 -0800</date>
            <delta_ts>2020-02-12 17:47:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203420-20200212170543.patch</filename>
            <type>text/plain</type>
            <size>47001</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NjQ5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAyLTEyICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGly
ZWN0IG1vZGUgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEludGVybmFscyBmdW5jdGlvbnMgdG8gcmVh
ZCBwcmVmZXJlbmNlcy4KKworICAgICAgICBBUEkgdGVzdHM6IFRlc3RzIGFkZGVkIGluIFByZWZl
cmVuY2VDaGFuZ2VzLm1tLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZWFkUHJlZmVyZW5jZUludGVnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjplbmNvZGVkUHJlZmVyZW5jZVZhbHVlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6ZW5jb2RlZFByZWZlcmVuY2VWYWx1ZSk6CisKIDIwMjAtMDItMTIgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIExpbmVCdWlsZGVyIHNo
b3VsZCBiZSBhYmxlIHRvIHRha2UgYSBwYXJ0aWFsIHRyYWlsaW5nIGlubGluZSB0ZXh0IGl0ZW0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjU2NDkyKQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAy
LTEyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
Q0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFNQSSB0byBlbmFibGUg
Q0YgcHJlZnMgZGlyZWN0IG1vZGUgYW5kIGRlY2xhcmUgbWV0aG9kIGNhbGxlZCB3aGVuIHByZWZl
cmVuY2UgYXJlIGNoYW5nZWQuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwYWwvc3BpL2NmL0NGVXRpbGl0aWVzU1BJLmg6CisgICAgICAgICog
cGFsL3NwaS9jb2NvYS9OU1VzZXJEZWZhdWx0c1NQSS5oOiBBZGRlZC4KKwogMjAyMC0wMi0xMiAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
Q1NTX0RFVklDRV9BREFQVEFUSU9OCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML1BB
TC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTE2OCw2ICsxNjgsNyBAQAogCQlBM0FCNkU2NTFGM0QyMTdGMDA5QzE0QjEgLyogU3lzdGVt
U2xlZXBMaXN0ZW5lck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEEzQUI2RTYzMUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVy
TWFjLm1tICovOyB9OwogCQlBM0M2NkNEQzFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQzY2Q0RB
MUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwICovOyB9OwogCQlBM0M2NkNERDFGNDYy
RDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBM0M2NkNEQjFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmgg
Ki87IH07CisJCUMxNUNCQjM1MjNGMzU0OEEwMDMwMENDNyAvKiBOU1VzZXJEZWZhdWx0c1NQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1Q0JCMzIy
M0YzNEExMjAwMzAwQ0M3IC8qIE5TVXNlckRlZmF1bHRzU1BJLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBQ0IzNjAyMzg3NDI1QjAwMThEN0NF
IC8qIE1lZGlhVG9vbGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQUNCMzVFMjM4NzNFNDgwMDE4RDdDRSAvKiBNZWRpYVRvb2xi
b3hTb2Z0TGluay5jcHAgKi87IH07CiAJCUNEQUNCMzYxMjM4NzQyNzQwMDE4RDdDRSAvKiBNZWRp
YVRvb2xib3hTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RBQ0IzNUYyMzg3M0U0ODAwMThEN0NFIC8qIE1lZGlhVG9vbGJveFNvZnRMaW5r
LmggKi87IH07CiAJCUNERjkxMTEzMjIwRTRFRUMwMDFFQTM5RSAvKiBDZWxlc3RpYWxTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjkxMTEyMjIw
RTRFRUMwMDFFQTM5RSAvKiBDZWxlc3RpYWxTUEkuaCAqLzsgfTsKQEAgLTM0OCw2ICszNDksNyBA
QAogCQlBM0FCNkU2MzFGM0QyMTdGMDA5QzE0QjEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbVNsZWVwTGlz
dGVuZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQzY2Q0RBMUY0NjJE
NkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2Vzc2lvbklELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTND
NjZDREIxRjQ2MkQ2QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZXNzaW9uSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzE1Q0JCMzIyM0YzNEExMjAwMzAwQ0M3IC8qIE5TVXNlckRlZmF1bHRzU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5TVXNlckRlZmF1bHRzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyMTQ3QTRBMUVGRDBBQTYwMDA1NkZBNSAvKiBDb3B5UEFMSGVhZGVycy54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBDb3B5UEFMSGVhZGVycy54Y2NvbmZpZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBQ0IzNUUyMzg3M0U0ODAwMThEN0NFIC8qIE1l
ZGlhVG9vbGJveFNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhVG9vbGJveFNv
ZnRMaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBQ0IzNUYyMzg3M0U0
ODAwMThEN0NFIC8qIE1lZGlhVG9vbGJveFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlh
VG9vbGJveFNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTAsNiAr
NDUyLDcgQEAKIAkJCQkwQzJEQTEzNjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNVUkxDb25uZWN0aW9u
U1BJLmggKi8sCiAJCQkJMEMyREExMzcxRjNCRUI0OTAwREJDMzE3IC8qIE5TVVJMRG93bmxvYWRT
UEkuaCAqLywKIAkJCQkwQzJEQTEzODFGM0JFQjQ5MDBEQkMzMTcgLyogTlNVUkxGaWxlVHlwZU1h
cHBpbmdzU1BJLmggKi8sCisJCQkJQzE1Q0JCMzIyM0YzNEExMjAwMzAwQ0M3IC8qIE5TVXNlckRl
ZmF1bHRzU1BJLmggKi8sCiAJCQkJNTcwQUI4RjgyMEFGNkUzRDAwQjhCRTg3IC8qIE5TWFBDQ29u
bmVjdGlvblNQSS5oICovLAogCQkJCUVCNzA3RkE0MjM5NzM3RjgwMDU5MDUzQSAvKiBPU1Zhcmlh
bnRTUEkuaCAqLywKIAkJCQkwQzJEQTEzOTFGM0JFQjQ5MDBEQkMzMTcgLyogUGFzc0tpdFNQSS5o
ICovLApAQCAtODE2LDYgKzgxOSw3IEBACiAJCQkJMEMyREExNTIxRjNCRUI0OTAwREJDMzE3IC8q
IE5TVVJMQ29ubmVjdGlvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNTMxRjNCRUI0
OTAwREJDMzE3IC8qIE5TVVJMRG93bmxvYWRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRB
MTU0MUYzQkVCNDkwMERCQzMxNyAvKiBOU1VSTEZpbGVUeXBlTWFwcGluZ3NTUEkuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUMxNUNCQjM1MjNGMzU0OEEwMDMwMENDNyAvKiBOU1VzZXJEZWZhdWx0c1NQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OUMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TVmll
d1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OUQxRjQ1MTMwRjAwRjRFQkI2IC8qIE5T
V2luZG93U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzBBQjhGOTIwQUY2RTNEMDBCOEJFODcg
LyogTlNYUENDb25uZWN0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NmL0NGVXRpbGl0aWVzU1BJLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZVdGlsaXRpZXNTUEkuaAkocmV2aXNpb24gMjU2NDkw
KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZVdGlsaXRpZXNTUEkuaAkod29y
a2luZyBjb3B5KQpAQCAtNTgsNCArNTgsNiBAQCBDRkRpY3Rpb25hcnlSZWYgX0NGV2ViU2Vydmlj
ZXNDb3B5UHJvdmlkCiAKIHZvaWQgX19DRlJ1bkxvb3BTZXRPcHRpb25zUmVhc29uKF9fQ0ZSdW5M
b29wT3B0aW9ucyBvcHRzLCBDRlN0cmluZ1JlZiByZWFzb24pOwogCit2b2lkIF9DRlByZWZzU2V0
RGlyZWN0TW9kZUVuYWJsZWQoYm9vbCBlbmFibGVkKTsKKwogV1RGX0VYVEVSTl9DX0VORApJbmRl
eDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNVc2VyRGVmYXVsdHNTUEkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU1VzZXJEZWZh
dWx0c1NQSS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nv
Y29hL05TVXNlckRlZmF1bHRzU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworQGludGVyZmFjZSBOU09iamVjdCAoUHJpdmF0ZUtWT01ldGhvZHMpCistICh2b2lkKV9u
b3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgaWQ+ICopb2xkVmFsdWVzIHRvVmFsdWVzRm9yS2V5czooTlNEaWN0aW9uYXJ5PE5T
U3RyaW5nICosIGlkPiAqKW5ld1ZhbHVlczsKK0BlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAJKHJldmlzaW9uIDI1NjQ5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ2MSw2ICs1NDYxLDIzIEBAIGJv
b2wgSW50ZXJuYWxzOjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgY29uc3QKICNlbmRpZgogfQogCitpbnQg
SW50ZXJuYWxzOjpyZWFkUHJlZmVyZW5jZUludGVnZXIoY29uc3QgU3RyaW5nJiBkb21haW4sIGNv
bnN0IFN0cmluZyYga2V5KQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEJvb2xlYW4ga2V5
RXhpc3RzQW5kSGFzVmFsaWRGb3JtYXQgPSBmYWxzZTsKKyAgICByZXR1cm4gQ0ZQcmVmZXJlbmNl
c0dldEFwcEludGVnZXJWYWx1ZShrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZG9tYWluLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksICZrZXlFeGlzdHNBbmRIYXNWYWxpZEZvcm1hdCk7CisjZWxz
ZQorICAgIHJldHVybiAtMTsKKyNlbmRpZgorfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQorU3Ry
aW5nIEludGVybmFsczo6ZW5jb2RlZFByZWZlcmVuY2VWYWx1ZShjb25zdCBTdHJpbmcmIGRvbWFp
biwgY29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9Cisj
ZW5kaWYKKwogU3RyaW5nIEludGVybmFsczo6bWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0
TWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOwpJbmRleDogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MzMsNiArOTMzLDkgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBzeXN0ZW1IYXNCYXR0ZXJ5KCkgY29uc3Q7CiAKKyAgICBpbnQgcmVhZFBy
ZWZlcmVuY2VJbnRlZ2VyKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSk7
CisgICAgU3RyaW5nIGVuY29kZWRQcmVmZXJlbmNlVmFsdWUoY29uc3QgU3RyaW5nJiBkb21haW4s
IGNvbnN0IFN0cmluZyYga2V5KTsKKwogICAgIFN0cmluZyBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKIAogICAgIFN0cmluZyBmb2N1c1JpbmdDb2xv
cigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjU2
NDkwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC04NDIsNSArODQyLDggQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAKICAgICBi
b29sZWFuIHN5c3RlbUhhc0JhdHRlcnkoKTsKIAorICAgIGxvbmcgcmVhZFByZWZlcmVuY2VJbnRl
Z2VyKERPTVN0cmluZyBkb21haW4sIERPTVN0cmluZyBrZXkpOworICAgIERPTVN0cmluZyBlbmNv
ZGVkUHJlZmVyZW5jZVZhbHVlKERPTVN0cmluZyBkb21haW4sIERPTVN0cmluZyBrZXkpOworCiAg
ICAgRE9NU3RyaW5nIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oRE9NU3RyaW5nIGV4dGVuc2lv
bik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0JKHJldmlzaW9uIDI1
NjQ5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC04OCw0ICs4OCwxNSBAQCBkb3VibGUgSW50ZXJuYWxzOjpwcml2YXRlUGxheWVyVm9s
dW1lKGNvCiB9CiAjZW5kaWYKIAorU3RyaW5nIEludGVybmFsczo6ZW5jb2RlZFByZWZlcmVuY2VW
YWx1ZShjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgYXV0
byB1c2VyRGVmYXVsdHMgPSBhZG9wdE5TKFtbTlNVc2VyRGVmYXVsdHMgYWxsb2NdIGluaXRXaXRo
U3VpdGVOYW1lOiBkb21haW5dKTsKKyAgICBpZCB2YWx1ZSA9IFt1c2VyRGVmYXVsdHMuZ2V0KCkg
b2JqZWN0Rm9yS2V5OmtleV07CisgICAgTlNFcnJvciAqZSA9IG5pbDsKKyAgICBhdXRvIGRhdGEg
PSBhZG9wdE5TKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6dmFs
dWUgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjomZV0pOworICAgIEFTU0VSVCghZSk7
CisgICAgYXV0byBlbmNvZGVkU3RyaW5nID0gW2RhdGEgYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhP
cHRpb25zOjBdOworICAgIHJldHVybiBlbmNvZGVkU3RyaW5nOworfQorCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjU2NDkwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAyMC0wMi0xMiAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENGIHByZWZzIGRpcmVjdCBtb2RlIGluIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMzQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEVuYWJsZSBDRiBwcmVmcyBkaXJlY3QgbW9kZSwgaW4gb3JkZXIgdG8gYXZv
aWQgY29ubmVjdGluZyB0byB0aGUgQ0YgcHJlZnMgZGFlbW9uIGluIHRoZSBXZWJDb250ZW50IHBy
b2Nlc3MuCisgICAgICAgIEluIGRpcmVjdCBtb2RlLCB0aGUgcHJlZnMgZmlsZXMgd2lsbCBiZSBh
Y2Nlc3NlZCBkaXJlY3RseSwgYW5kIG5vdCB0aHJvdWdoIHRoZSBDRiBwcmVmcyBkYWVtb24uIEEg
cHJlZmVyZW5jZQorICAgICAgICBvYnNlcnZlciBpcyBhZGRlZCBpbiB0aGUgVUkgcHJvY2Vzcywg
d2hpY2ggd2lsbCBub3RpZnkgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBhYm91dCBwcmVmZXJlbmNl
cyBjaGFuZ2VzIHRvIGEKKyAgICAgICAgZG9tYWluLiBBZnRlciBhIHByZWZlcmVuY2UgY2hhbmdl
LCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHdpbGwgc2V0IHRoZSBuZXcgcHJlZmVyZW5jZSB2YWx1
ZSBmb3IgdGhlIGNoYW5nZWQKKyAgICAgICAga2V5L2RvbWFpbi4KKworICAgICAgICBBUEkgdGVz
dHM6IFRlc3RzIGFkZGVkIGluIFByZWZlcmVuY2VDaGFuZ2VzLm1tLgorCisgICAgICAgICogUmVz
b3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNi
OgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2Uv
WFBDU2VydmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VNYWluKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLmg6IEFkZGVkLgorICAg
ICAgICAoX19hdHRyaWJ1dGVfXyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVu
Y2VPYnNlcnZlci5tbTogQWRkZWQuCisgICAgICAgICgtW1dLVXNlckRlZmF1bHRzIF9ub3RpZnlP
YnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOnRvVmFsdWVzRm9yS2V5czpdKToKKyAg
ICAgICAgKC1bV0tVc2VyRGVmYXVsdHMgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpj
aGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKC1bV0tVc2VyRGVmYXVsdHMgaW5pdFdpdGhTdWl0
ZU5hbWU6XSk6CisgICAgICAgICgrW1dLUHJlZmVyZW5jZU9ic2VydmVyIHNoYXJlZEluc3RhbmNl
XSk6CisgICAgICAgICgtW1dLUHJlZmVyZW5jZU9ic2VydmVyIGluaXRdKToKKyAgICAgICAgKC1b
V0tQcmVmZXJlbmNlT2JzZXJ2ZXIgcHJlZmVyZW5jZURpZENoYW5nZTprZXk6ZW5jb2RlZFZhbHVl
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpub3RpZnlQcmVmZXJlbmNl
c0NoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOgorCiAyMDIwLTAy
LTEyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIENv
bXBvc2l0aW9uIGhpZ2hsaWdodCByZWN0cyBzaG91bGQgYmUgcm91bmRlZCBhbmQgaW5zZXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxl
LldlYktpdC5XZWJDb250ZW50LnNiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVzb3Vy
Y2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCShy
ZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmls
ZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkod29ya2luZyBjb3B5KQpAQCAt
NTkzLDcgKzU5Myw3IEBACiAoYWxsb3cgbWFjaC1sb29rdXAKICAgICAoZ2xvYmFsLW5hbWUgImNv
bS5hcHBsZS5sb2dkIikKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5sb2dkLmV2ZW50cyIp
Ci0gICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIikpCispCiAKIChh
bGxvdyBtYWNoLWxvb2t1cCAod2l0aCByZXBvcnQpICh3aXRoIHRlbGVtZXRyeSkKICAgICAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS5kaXN0cmlidXRlZF9ub3RpZmljYXRpb25zQDF2MyIpKQpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2
aWNlL1hQQ1NlcnZpY2VNYWluLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQko
cmV2aXNpb24gMjU2NDkwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJYUENTZXJ2aWNlRW50cnlQb2ludC5oIgogCiAjaW1w
b3J0IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8cGFsL3NwaS9j
Zi9DRlV0aWxpdGllc1NQSS5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KQEAg
LTExNiw2ICsxMTcsOSBAQCBpbnQgWFBDU2VydmljZU1haW4oaW50LCBjb25zdCBjaGFyKiopCiAg
ICAgfSk7CiAjZW5kaWYKIAorICAgIC8vIEVuYWJsZSBDRiBwcmVmcyBkaXJlY3QgbW9kZSB0byBh
dm9pZCBjb25uZWN0aW5nIHRvIHRoZSBDRiBwcmVmcyBkYWVtb24uCisgICAgX0NGUHJlZnNTZXRE
aXJlY3RNb2RlRW5hYmxlZChZRVMpOworCiAgICAgaWYgKGJvb3RzdHJhcCkgewogI2lmIFBMQVRG
T1JNKE1BQykKICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIHdlYktpdEJ1bmRsZVZlcnNpb24gPSB4
cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGJvb3RzdHJhcC5nZXQoKSwgIldlYktpdEJ1bmRsZVZl
cnNpb24iKSkgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CShyZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIE9CSkNfQ0xBU1MgTlNNdXRh
YmxlRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNPYmplY3Q7CiBPQkpDX0NMQVNTIE5TU2V0Owog
T0JKQ19DTEFTUyBOU1N0cmluZzsKK09CSkNfQ0xBU1MgV0tQcmVmZXJlbmNlT2JzZXJ2ZXI7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VS
VkVSX0JMT0NLSU5HKQpAQCAtNTQwLDYgKzU0MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRV
c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wpOwogICAgIGJvb2wgdXNlU2VwYXJh
dGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlU2VwYXJhdGVTZXJ2
aWNlV29ya2VyUHJvY2VzczsgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBub3Rp
ZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiBlbmNvZGVkVmFsdWUpOworI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIApAQCAtODAxLDYgKzgwNiwx
MCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0RlbGF5ZWRXZWJQcm9jZXNzTGF1bmNoRGlzYWJs
ZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgYm9vbCBtX3VzZVNlcGFyYXRlU2VydmljZVdvcmtl
clByb2Nlc3MgeyBmYWxzZSB9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRy
PFdLUHJlZmVyZW5jZU9ic2VydmVyPiBtX3ByZWZlcmVuY2VPYnNlcnZlcjsKKyNlbmRpZgogfTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ByZWZlcmVuY2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJl
IG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNVc2Vy
RGVmYXVsdHNTUEkuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCitPQkpDX0NMQVNTIFdLUHJlZmVyZW5jZU9ic2VydmVyOworCitfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorQGludGVyZmFjZSBXS1VzZXJEZWZh
dWx0cyA6IE5TVXNlckRlZmF1bHRzIHsKK0Bwcml2YXRlCisgICAgTlNTdHJpbmcgKm1fc3VpdGVO
YW1lOworQHB1YmxpYworICAgIFdLUHJlZmVyZW5jZU9ic2VydmVyICptX29ic2VydmVyOworfQor
QGVuZAorCitfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorQGludGVyZmFj
ZSBXS1ByZWZlcmVuY2VPYnNlcnZlciA6IE5TT2JqZWN0IHsKK0Bwcml2YXRlCisgICAgVmVjdG9y
PFJldGFpblB0cjxXS1VzZXJEZWZhdWx0cz4+IG1fdXNlckRlZmF1bHRzOworfQorKyAoaWQpc2hh
cmVkSW5zdGFuY2U7CistICh2b2lkKXByZWZlcmVuY2VEaWRDaGFuZ2U6KE5TU3RyaW5nICopZG9t
YWluIGtleTooTlNTdHJpbmcgKilrZXkgZW5jb2RlZFZhbHVlOihOU1N0cmluZyAqKWVuY29kZWRW
YWx1ZTsKK0BlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVu
Y2VPYnNlcnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QcmVmZXJlbmNlT2JzZXJ2ZXIubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjAwIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6Cisq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUHJlZmVyZW5jZU9ic2VydmVyLmgiCisK
KyNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCisKK0BpbXBsZW1lbnRhdGlvbiBXS1VzZXJEZWZh
dWx0cworCistICh2b2lkKV9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlz
OihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopb2xkVmFsdWVzIHRvVmFsdWVzRm9yS2V5
czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKW5ld1ZhbHVlcworeworICAgIFtzdXBl
ciBfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VGcm9tVmFsdWVzRm9yS2V5czpvbGRWYWx1ZXMgdG9W
YWx1ZXNGb3JLZXlzOm5ld1ZhbHVlc107CisKKyAgICBpZiAoW29sZFZhbHVlcyBpc0VxdWFsVG9E
aWN0aW9uYXJ5Om5ld1ZhbHVlc10pCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoTlNTdHJp
bmcgKmtleSBpbiBvbGRWYWx1ZXMpIHsKKyAgICAgICAgaWQgb2xkVmFsdWUgPSBvbGRWYWx1ZXNb
a2V5XTsKKyAgICAgICAgaWQgbmV3VmFsdWUgPSBuZXdWYWx1ZXNba2V5XTsKKworICAgICAgICBp
ZiAoW29sZFZhbHVlIGlzRXF1YWw6bmV3VmFsdWVdKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgaWYgKG5ld1ZhbHVlICYmICFbW25ld1ZhbHVlIGNsYXNzXSBzdXBwb3J0c1NlY3Vy
ZUNvZGluZ10pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBOU1N0cmluZyAqZW5j
b2RlZFN0cmluZyA9IG5pbDsKKworICAgICAgICBpZiAobmV3VmFsdWUpIHsKKyAgICAgICAgICAg
IE5TRXJyb3IgKmUgPSBuaWw7CisgICAgICAgICAgICBhdXRvIGRhdGEgPSByZXRhaW5QdHIoW05T
S2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDpuZXdWYWx1ZSByZXF1aXJp
bmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOiZlXSk7CisgICAgICAgICAgICBBU1NFUlQoIWUpOwor
ICAgICAgICAgICAgZW5jb2RlZFN0cmluZyA9IFtkYXRhIGJhc2U2NEVuY29kZWRTdHJpbmdXaXRo
T3B0aW9uczowXTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX29ic2VydmVyKQorICAgICAg
ICAgICAgW21fb2JzZXJ2ZXIgcHJlZmVyZW5jZURpZENoYW5nZTptX3N1aXRlTmFtZSBrZXk6a2V5
IGVuY29kZWRWYWx1ZTplbmNvZGVkU3RyaW5nXTsKKyAgICB9Cit9CisKKy0gKHZvaWQpb2JzZXJ2
ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3Qg
Y2hhbmdlOihOU0RpY3Rpb25hcnk8TlNLZXlWYWx1ZUNoYW5nZUtleSwgaWQ+ICopY2hhbmdlIGNv
bnRleHQ6KHZvaWQgKiljb250ZXh0Cit7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFN1
aXRlTmFtZTooTlNTdHJpbmcgKilzdWl0ZW5hbWUKK3sKKyAgICBtX3N1aXRlTmFtZSA9IHN1aXRl
bmFtZTsKKyAgICBtX29ic2VydmVyID0gbmlsOworICAgIHJldHVybiBbc3VwZXIgaW5pdFdpdGhT
dWl0ZU5hbWU6c3VpdGVuYW1lXTsKK30KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLUHJlZmVy
ZW5jZU9ic2VydmVyCisKKysgKGlkKXNoYXJlZEluc3RhbmNlCit7CisgICAgc3RhdGljIFdLUHJl
ZmVyZW5jZU9ic2VydmVyICppbnN0YW5jZSA9IG5pbDsKKworICAgIGlmICghaW5zdGFuY2UpCisg
ICAgICAgIGluc3RhbmNlID0gW1tbc2VsZiBjbGFzc10gYWxsb2NdIGluaXRdOworCisgICAgcmV0
dXJuIGluc3RhbmNlOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxOU1N0cmluZyo+IGRvbWFpbnMgPSB7CisgICAgICAgIEAiY29tLmFwcGxl
LkFjY2Vzc2liaWxpdHkiLAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIEAiY29t
LmFwcGxlLkFkTGliIiwKKyAgICAgICAgQCJjb20uYXBwbGUuQ0ZOZXR3b3JrIiwKKyAgICAgICAg
QCJjb20uYXBwbGUuRW1vamlQcmVmZXJlbmNlcyIsCisgICAgICAgIEAiY29tLmFwcGxlLkZvbnRQ
YXJzZXIiLAorICAgICAgICBAImNvbS5hcHBsZS5JbWFnZUlPIiwKKyAgICAgICAgQCJjb20uYXBw
bGUuSW5wdXRNb2RlUHJlZmVyZW5jZXMiLAorI2Vsc2UKKyAgICAgICAgQCJjb20uYXBwbGUuQVRT
IiwKKyAgICAgICAgQCJjb20uYXBwbGUuQ29yZUdyYXBoaWNzIiwKKyAgICAgICAgQCJjb20uYXBw
bGUuRG93bmxvYWRBc3Nlc3NtZW50IiwKKyAgICAgICAgQCJjb20uYXBwbGUuSElUb29sYm94IiwK
KyNlbmRpZgorICAgICAgICBAImNvbS5hcHBsZS5MYXVuY2hTZXJ2aWNlcyIsCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgQCJjb20uYXBwbGUuTWV0YWwiLAorICAgICAgICBAImNv
bS5hcHBsZS5Nb2JpbGVBc3NldCIsCisgICAgICAgIEAiY29tLmFwcGxlLlByZWZlcmVuY2VzIiwK
KyAgICAgICAgQCJjb20uYXBwbGUuU3BlYWtTZWxlY3Rpb24iLAorICAgICAgICBAImNvbS5hcHBs
ZS5VSUtpdCIsCisgICAgICAgIEAiY29tLmFwcGxlLlZvaWNlT3ZlclRvdWNoIiwKKyNlbHNlCisg
ICAgICAgIEAiY29tLmFwcGxlLk11bHRpdG91Y2hTdXBwb3J0IgorICAgICAgICBAImNvbS5hcHBs
ZS5TZXJ2aWNlc01lbnUuU2VydmljZXMiCisgICAgICAgIEAiY29tLmFwcGxlLlZpZXdCcmlkZ2Ui
CisjZW5kaWYKKyAgICAgICAgQCJjb20uYXBwbGUuV2ViRm91bmRhdGlvbiIsCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgQCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQiLAor
ICAgICAgICBAImNvbS5hcHBsZS5XZWJVSSIsCisgICAgICAgIEAiY29tLmFwcGxlLmFpcnBsYXki
LAorICAgICAgICBAImNvbS5hcHBsZS5hcHBsZWpwZWciLAorICAgICAgICBAImNvbS5hcHBsZS5h
dWRpby52aXJ0dWFsYXVkaW8iLAorICAgICAgICBAImNvbS5hcHBsZS5hdmZhdWRpbyIsCisjZW5k
aWYKKyAgICAgICAgQCJjb20uYXBwbGUuYXZmb3VuZGF0aW9uIiwKKyAgICAgICAgQCJjb20uYXBw
bGUuYXZmb3VuZGF0aW9uLmZyZWNlbnRzIiwKKyAgICAgICAgQCJjb20uYXBwbGUuYXZmb3VuZGF0
aW9uLnZpZGVvcGVyZm9ybWFuY2VodWQiLAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
ICAgIEAiY29tLmFwcGxlLmF2a2l0IiwKKyAgICAgICAgQCJjb20uYXBwbGUuY29yZWFuaW1hdGlv
biIsCisgICAgICAgIEAiY29tLmFwcGxlLmNvcmVhdWRpbyIsCisjZW5kaWYKKyAgICAgICAgQCJj
b20uYXBwbGUuY29yZW1lZGlhIiwKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBA
ImNvbS5hcHBsZS5jb3JldmlkZW8iLAorICAgICAgICBAImNvbS5hcHBsZS5kYSIsCisgICAgICAg
IEAiY29tLmFwcGxlLmhhbmd0cmFjZXIiLAorICAgICAgICBAImNvbS5hcHBsZS5pbmRpZ28iLAor
ICAgICAgICBAImNvbS5hcHBsZS5pb2tpdC5JT01vYmlsZUdyYXBoaWNzRmFtaWx5IiwKKyAgICAg
ICAgQCJjb20uYXBwbGUuaXR1bmVzc3RvcmVkIiwKKyAgICAgICAgQCJjb20uYXBwbGUua2V5Ym9h
cmQiLAorI2Vsc2UKKyAgICAgICAgQCJjb20uYXBwbGUuY3J5cHRvIiwKKyAgICAgICAgQCJjb20u
YXBwbGUuZHJpdmVyLkFwcGxlQmx1ZXRvb3RoTXVsdGl0b3VjaC5tb3VzZSIsCisgICAgICAgIEAi
Y29tLmFwcGxlLmRyaXZlci5BcHBsZUJsdWV0b290aE11bHRpdG91Y2gudHJhY2twYWQiLAorICAg
ICAgICBAImNvbS5hcHBsZS5kcml2ZXIuQXBwbGVISURNb3VzZSIKKyNlbmRpZgorICAgICAgICBA
ImNvbS5hcHBsZS5sb29rdXAuc2hhcmVkIiwKKyAgICAgICAgQCJjb20uYXBwbGUubWVkaWFhY2Nl
c3NpYmlsaXR5IiwKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBAImNvbS5hcHBs
ZS5tZWRpYWFjY2Vzc2liaWxpdHkucHVibGljIiwKKyAgICAgICAgQCJjb20uYXBwbGUubWVkaWFy
ZW1vdGUiLAorICAgICAgICBAImNvbS5hcHBsZS5tb2JpbGVpcG9kIiwKKyAgICAgICAgQCJjb20u
YXBwbGUubXQiLAorI2Vsc2UKKyAgICAgICAgQCJjb20uYXBwbGUubmV0d29ya0Nvbm5lY3QiCisj
ZW5kaWYKKyAgICAgICAgQCJjb20uYXBwbGUub3BlbmdsIiwKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorICAgICAgICBAImNvbS5hcHBsZS5wcmVmZXJlbmNlcy5zb3VuZHMiLAorICAgICAgICBA
ImNvbS5hcHBsZS5zZWN1cml0eSIsCisgICAgICAgIEAiY29tLmFwcGxlLnZvaWNlc2VydmljZXMi
LAorICAgICAgICBAImNvbS5hcHBsZS52b2ljZXNlcnZpY2VzLmxvZ2dpbmciLAorI2Vsc2UKKyAg
ICAgICAgQCJjb20uYXBwbGUuc3BlZWNoLnZvaWNlLnByZWZzIiwKKyAgICAgICAgQCJjb20uYXBw
bGUuc3lzdGVtc291bmQiLAorICAgICAgICBAImNvbS5hcHBsZS51bml2ZXJzYWxhY2Nlc3MiLAor
ICAgICAgICBAImNvbS5udmlkaWEuT3BlbkdMIiwKKyAgICAgICAgQCJlZHUubWl0LktlcmJlcm9z
IiwKKyNlbmRpZgorICAgICAgICBAImtDRlByZWZlcmVuY2VzQW55QXBwbGljYXRpb24iLAorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBAInBicyIsCisjZW5kaWYKKyAgICB9Owor
CisgICAgZm9yIChhdXRvIGRvbWFpbiA6IGRvbWFpbnMpIHsKKyAgICAgICAgYXV0byB1c2VyRGVm
YXVsdHMgPSBhZG9wdE5TKFtbV0tVc2VyRGVmYXVsdHMgYWxsb2NdIGluaXRXaXRoU3VpdGVOYW1l
OmRvbWFpbl0pOworICAgICAgICB1c2VyRGVmYXVsdHMuZ2V0KCktPm1fb2JzZXJ2ZXIgPSBzZWxm
OworICAgICAgICAvLyBTdGFydCBvYnNlcnZpbmcgYSBkdW1teSBrZXkgaW4gb3JkZXIgdG8gbWFr
ZSB0aGUgcHJlZmVyZW5jZSBkYWVtb24gYmVjb21lIGF3YXJlIG9mIG91ciBOU1VzZXJEZWZhdWx0
cyBpbnN0YW5jZS4KKyAgICAgICAgLy8gVGhpcyBpcyB0byBtYWtlIHN1cmUgd2UgcmVjZWl2ZSBL
Vk8gbm90aWZpY2F0aW9ucy4gV2UgY2Fubm90IHVzZSBub3JtYWwgS1ZPIHRlY2huaXF1ZXMgaGVy
ZSwgc2luY2Ugd2UgYXJlIGxvb2tpbmcKKyAgICAgICAgLy8gZm9yIF9hbnlfIGNoYW5nZXMgaW4g
YSBwcmVmZXJlbmNlIGRvbWFpbi4gRm9yIG5vcm1hbCBLVk8gdGVjaG5pcXVlcyB0byB3b3JrLCB3
ZSBuZWVkIHRvIHByb3ZpZGUgdGhlIHNwZWNpZmljCisgICAgICAgIC8vIGtleShzKSB3ZSB3YW50
IHRvIG9ic2VydmUsIGJ1dCB0aGF0IHNldCBvZiBrZXlzIGlzIHVua25vd24gdG8gdXMuCisgICAg
ICAgIFt1c2VyRGVmYXVsdHMuZ2V0KCkgYWRkT2JzZXJ2ZXI6dXNlckRlZmF1bHRzLmdldCgpIGZv
cktleVBhdGg6QCJ0ZXN0a2V5IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcg
Y29udGV4dDpuaWxdOworICAgICAgICBtX3VzZXJEZWZhdWx0cy5hcHBlbmQodXNlckRlZmF1bHRz
KTsKKyAgICB9CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAodm9pZClwcmVmZXJl
bmNlRGlkQ2hhbmdlOihOU1N0cmluZyAqKWRvbWFpbiBrZXk6KE5TU3RyaW5nICopa2V5IGVuY29k
ZWRWYWx1ZTooTlNTdHJpbmcgKillbmNvZGVkVmFsdWUKK3sKKyAgICBPcHRpb25hbDxTdHJpbmc+
IGVuY29kZWRTdHJpbmc7CisgICAgaWYgKGVuY29kZWRWYWx1ZSkKKyAgICAgICAgZW5jb2RlZFN0
cmluZyA9IFN0cmluZyhlbmNvZGVkVmFsdWUpOworICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wg
OiBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJv
Y2Vzc1Bvb2wtPm5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChkb21haW4sIGtleSwgZW5jb2RlZFN0
cmluZyk7Cit9CitAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI1NjQ5MCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMu
aCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nl
c3NNYW5hZ2VyLmgiCisjaW1wb3J0ICJQcmVmZXJlbmNlT2JzZXJ2ZXIuaCIKICNpbXBvcnQgIlNh
bmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCiAjaW1wb3J0ICJVc2Vy
SW50ZXJmYWNlSWRpb20uaCIKQEAgLTM2Myw2ICszNjQsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybUluaXRpYWxpemVXCiAgICAgcGFyYW1ldGVycy5jc3NWYWx1ZVRvU3lzdGVtQ29s
b3JNYXAgPSBSZW5kZXJUaGVtZUlPUzo6Y3NzVmFsdWVUb1N5c3RlbUNvbG9yTWFwKCk7CiAgICAg
cGFyYW1ldGVycy5mb2N1c1JpbmdDb2xvciA9IFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5mb2N1
c1JpbmdDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4oKSk7CiAjZW5kaWYKKwor
ICAgIC8vIFN0YXJ0IG9ic2VydmluZyBwcmVmZXJlbmNlIGNoYW5nZXMuCisgICAgW1dLUHJlZmVy
ZW5jZU9ic2VydmVyIHNoYXJlZEluc3RhbmNlXTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6
cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC03MzAsNCArNzM0LDEwIEBAIE5TU2V0ICpXZWJQcm9j
ZXNzUG9vbDo6YWxsb3dlZENsYXNzZXNGb3IKICAgICByZXR1cm4gbV9jbGFzc2VzRm9yUGFyYW1l
dGVyQ29kZXIuZ2V0KCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5vdGlmeVByZWZlcmVu
Y2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IE9wdGlvbmFsPFN0cmluZz4mIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBmb3IgKGF1dG8gcHJvY2Vz
cyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpOb3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoZG9tYWluLCBrZXksIGVuY29kZWRWYWx1ZSks
IDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjU2NDkwKQorKysg
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTY2Miw2ICsxNjYyLDggQEAKIAkJQzExQTlFQ0MyMTQwMzVGODAwQ0ZCMjBBIC8q
IFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzExQTlFQ0IyMTQwMzVGODAwQ0ZCMjBBIC8qIFdlYlN3aXRjaGluZ0dQ
VUNsaWVudC5oICovOyB9OwogCQlDMTFFMTY5NDIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlz
cGxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEx
RTE2OTIyMTJCODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTQ5MzgwOTIyMzQ3MTA0MDAwQ0Q3
MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ5MzgwMjIyMzQxQzYwMDAwQ0Q3MDcgLyogV2ViU3Bl
ZWNoU3ludGhlc2lzQ2xpZW50LmggKi87IH07CisJCUMxNUNCQjM2MjNGMzc3NzEwMDMwMENDNyAv
KiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMxNDVDQzBFMjNEQ0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlD
MTVDQkIzNzIzRjM3RUNCMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1Q0JCMzMyM0YzNEMzODAw
MzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSAqLzsgfTsKIAkJQzE4MTczNjEyMDU4NDI0
NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMTgxNzM2MDIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxheUxpbmsu
aCAqLzsgfTsKIAkJQzFFMTIzQkEyMEExMTU3MzAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUUxMjNCOTIw
QTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLzsgfTsKIAkJQzUxNzM4ODExMkRG
OEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyog
RHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLzsgfTsKQEAgLTQ4NzksOSArNDg4MSwxMSBAQAogCQlD
MTFBOUVEMDIxNDAzQjQwMDBDRkIyMEEgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMxMUUxNjkyMjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTW9ja0Rpc3BsYXkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzExRTE2OTMyMTJCODdDNTAwOTg1RkY2IC8qIFdL
TW9ja0Rpc3BsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tN
b2NrRGlzcGxheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNDVDQzBFMjNE
Q0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJl
ZmVyZW5jZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNDkzODAy
MjIzNDFDNjAwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMxNDkzODAzMjIzNDFERjcwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGll
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MEEyMjM4NTNCRTAwMENENzA3IC8q
IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNUNCQjMzMjNGMzRD
MzgwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBQcmVmZXJlbmNlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMx
ODE3MzVFMjA1ODM5RjYwMERGREE2NSAvKiBEcmF3aW5nQXJlYU1hYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEcmF3aW5nQXJlYU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMxODE3MzYwMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEaXNwbGF5TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM2MjIw
NTg0NEE5MDBERkRBNjUgLyogRGlzcGxheUxpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlz
cGxheUxpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjAxMCw2ICs2MDE0
LDggQEAKIAkJCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5LmggKi8sCiAJCQkJQ0RBMjlBMjIxQ0JFQjYxQTAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQlDREEyOUExRjFDQkVCNUZC
MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tICovLAorCQkJCUMxNDVD
QzBFMjNEQ0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAqLywKKwkJCQlDMTVD
QkIzMzIzRjM0QzM4MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tICovLAogCQkJCTVD
QjdBRkREMjNDNTI3M0QwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovLAogCQkJ
CTVDQjdBRkRFMjNDNTI3M0QwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLywK
IAkJCQk1Q0E5ODU0QjIxMEJFQjczMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZ0NvY29h
Lm1tICovLApAQCAtNjk5Nyw4ICs3MDAzLDggQEAKIAkJCQkxQTQyMkY4QTE4QjI5QjU0MDBEOENE
OTYgLyogV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmggKi8sCiAJCQkJNTFEMTI0ODQxRTczNEFF
MzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLmggKi8sCiAJCQkJNTFEMTI0ODUxRTczNEFF
MzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tICovLAotCQkJCURGNDYyRTBFMjNGMjJG
NTMwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCAqLywKIAkJCQk1MUQxMjQ4
NjFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oICovLAorCQkJ
CURGNDYyRTBFMjNGMjJGNTMwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCAq
LywKIAkJCQkxQUI0MEVFMzFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJz
Lm1tICovLAogCQkJCTFBQjQwRUU0MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRp
ZmllcnNQcml2YXRlLmggKi8sCiAJCQkJMUE1QjFDNEYxODk4NjA2RjAwNEZDRjlCIC8qIFdLTmF2
aWdhdGlvbi5oICovLApAQCAtMTAyNTQsNyArMTAyNjAsNiBAQAogCQkJCTJENTg3NUJGMjE5QjUz
MTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBNDFBQjUxMkMwMkVDNDAwMkJFNjdCIC8qIEVkaXRvclN0YXRlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlERjQ2MkUxMjIzRjMzOEJFMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkRBODEwRjQzN0QxMDA1OEMxNUEgLyog
RW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCMTVBODUxMzg0M0EzOTAwMzIxQUQ4IC8q
IEVudmlyb25tZW50VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE1NzVGQjE0OTZC
NTI2MDBBNEVFMDYgLyogRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNDc1
LDYgKzEwNDgwLDcgQEAKIAkJCQkxQTZGQjdBRjExRTY0QjY4MDBEQjEzNzEgLyogUGx1Z2luVmll
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODEyMkIzNTE1QjAwOEQwRThCIC8qIFBvcFVw
U09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNBMEVEMzUxRjc0
N0NDRjAwMzI5OUVCIC8qIFByZWNvbm5lY3RUYXNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMTVD
QkIzNjIzRjM3NzcxMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBQUIxNDVFNjIyM0Y5MzEyMDBFNDg5RDggLyogUHJlZmV0Y2hDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFDQzFCOTAxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODZGOTUzNjUxOEZGNThGNTAwMURCMkVGIC8qIFByb2Nlc3NBc3Nl
cnRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTA3MjEsNyArMTA3MjcsNiBAQAogCQkJCUZFRTQz
RkQzMUU2N0IwMTgwMDc3RDZEMSAvKiBXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRURCRENENzFFNjhEMjA1MDBBNTlGOEYgLyogV2ViSW5zcGVj
dG9ySW50ZXJydXB0RGlzcGF0Y2hlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhF
MkEzNjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAotCQkJCURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyODM0MTI3NUQ3MzgwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBOEI5NDYxMjdDODgyQTAw
NTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFDODkxRDY2MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMDkzNCw2ICsxMDkzOSw3IEBACiAJCQkJMEYwNDE1OUUyM0M3Q0M3MzAwNjBBM0Uy
IC8qIFdLQ29udGVudFZpZXdNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMTA2NUZDMjNFQzk1
NzIwMDU0NDNENiAvKiBXS0NvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMDY1
RkQyM0VDOTU3QjAwNTQ0M0Q2IC8qIFdLQ29udGVudFdvcmxkSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAorCQkJCURGNDYyRTEyMjNGMzM4QkUwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjlFMjRCMTEyMEUxNUMwMEExMzdFMCAvKiBXS0Nv
bnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTUyRjk4MTkyMDI2NzIwMEExRkEzNyAvKiBX
S0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ0NUJBNTE4
NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMTAxNyw2ICsxMTAyMyw3IEBACiAJCQkJMUE0MjJGOEIxOEIyOUI1NDAwRDhDRDk2
IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjYyRTcz
MTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFEMTI0OTkxRTc2M0MwMTAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlERjQ2MkUwRjIzRjIyRjU1MDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3Rv
cmVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzY2QTRCNTIzMjA5NjI0MDBFQTRENDQg
LyogV0tIVFRQQ29va2llU3RvcmVSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMTBBRTBEMTMz
QzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEy
M0NGMUMxMzNEMjYwQTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cuaCBpbiBIZWFkZXJzICov
LApAQCAtMTIxNzYsNiArMTIxODMsNyBAQAogCQkJCTFBOEVGQTcwMTI1MkI4NDEwMEY3MDY3RiAv
KiBQbHVnaW5Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgy
ODQ0RDE2QjUwODFDMDBBMjc4RkUgLyogUGx1Z2luU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291
cmNlcyAqLywKIAkJCQkyRDkxMzQ0RDIxMkNGOUYwMDAxMjhBRkQgLyogUGx1Z2luVmlldy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDMTVDQkIzNzIzRjM3RUNCMDAzMDBDQzcgLyogUHJlZmVyZW5j
ZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ1NEMzMUIyMTJGNERBNjAwNDlDMTc0
IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDI4NjVFRjIyNTU1
NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIwIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgJKHJldmlzaW9uIDI1NjQ5MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw2ICszMDcsNyBAQCBwdWJsaWM6CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldE1lZGlhTUlNRVR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+KTsKKyAgICB2b2lkIG5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJp
bmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGVu
Y29kZWRWYWx1ZSk7CiAjZW5kaWYKIAogICAgIGJvb2wgYXJlQWxsUGFnZXNUaHJvdHRsZWFibGUo
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTY4LDQgKzE2OCw4
IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm8KICAgICBHcmFudEFj
Y2Vzc1RvQXNzZXRTZXJ2aWNlcyhXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtb2Jp
bGVBc3NldEhhbmRsZSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbW9iaWxlQXNz
ZXRWMkhhbmRsZSkKICAgICBSZXZva2VBY2Nlc3NUb0Fzc2V0U2VydmljZXMoKQogI2VuZGlmCisK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBOb3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoU3RyaW5n
IGRvbWFpbiwgU3RyaW5nIGtleSwgT3B0aW9uYWw8U3RyaW5nPiBlbmNvZGVkVmFsdWUpCisjZW5k
aWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vz
cy5zYi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxl
LldlYlByb2Nlc3Muc2IuaW4JKHJldmlzaW9uIDI1NjQ5MCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkod29ya2luZyBjb3B5KQpAQCAtNjQ4
LDcgKzY0OCw2IEBACiAgICAgKHdpdGggcmVwb3J0KSAod2l0aCB0ZWxlbWV0cnkpCiAjZW5kaWYK
ICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5Qb3dlck1hbmFnZW1lbnQuY29udHJvbCIpCi0g
ICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIikKICAgICAoZ2xvYmFs
LW5hbWUgImNvbS5hcHBsZS5jb3Jlc2VydmljZXMubGF1bmNoc2VydmljZXNkIikKICAgICAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS5sc2QubWFwZGIiKQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFw
cGxlLnRjY2QiKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MDgs
NiArOTA4LDI0IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0TWVkaWFNSU1FVHlwZXMoY29uc3QKICAg
ICAgICAgY2FjaGUuYWRkU3VwcG9ydGVkVHlwZXModHlwZXMpOwogfQogCit2b2lkIFdlYlByb2Nl
c3M6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGVuY29kZWRWYWx1ZSkKK3sKKyAg
ICBhdXRvIGRlZmF1bHRzID0gYWRvcHROUyhbW05TVXNlckRlZmF1bHRzIGFsbG9jXSBpbml0V2l0
aFN1aXRlTmFtZTpkb21haW5dKTsKKyAgICBpZiAoIWVuY29kZWRWYWx1ZS5oYXNWYWx1ZSgpKSB7
CisgICAgICAgIFtkZWZhdWx0cyBzZXRPYmplY3Q6bmlsIGZvcktleTprZXldOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGF1dG8gZW5jb2RlZERhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFs
bG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6KmVuY29kZWRWYWx1ZSBvcHRpb25zOjBd
KTsKKyAgICBpZiAoIWVuY29kZWREYXRhKQorICAgICAgICByZXR1cm47CisgICAgTlNFcnJvciAq
ZXJyID0gbmlsOworICAgIGF1dG8gb2JqZWN0ID0gcmV0YWluUHRyKFtOU0tleWVkVW5hcmNoaXZl
ciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzczpbTlNPYmplY3QgY2xhc3NdIGZyb21EYXRhOmVuY29k
ZWREYXRhLmdldCgpIGVycm9yOiZlcnJdKTsKKyAgICBBU1NFUlQoIWVycik7CisgICAgaWYgKGVy
cikKKyAgICAgICAgcmV0dXJuOworICAgIFtkZWZhdWx0cyBzZXRPYmplY3Q6b2JqZWN0LmdldCgp
IGZvcktleTprZXldOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQogdm9pZCBXZWJQcm9jZXNzOjpn
cmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyhXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmIG1vYmlsZUFzc2V0SGFuZGxlLCAgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiBtb2JpbGVBc3NldFYySGFuZGxlKQogewpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU2NDkwKQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDItMTEgIFBlciBBcm5l
IFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBDRiBwcmVmcyBkaXJl
Y3QgbW9kZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1QpOgorCiAy
MDIwLTAyLTEyICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NjQ2My4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyNTY0OTApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODc0LDYgKzg3
NCw3IEBACiAJCUMwQURCRTk2MTJGQ0E3OUIwMEQyQzEyOSAvKiBzaW1wbGUtZm9ybS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQURC
RTg0MTJGQ0E2QjYwMEQyQzEyOSAvKiBzaW1wbGUtZm9ybS5odG1sICovOyB9OwogCQlDMEJENjY5
RjEzMUQzQ0ZGMDBFMThGMkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9C
dW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzBCRDY2OUUxMzFEM0NGRjAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJl
RWFybHlfQnVuZGxlLmNwcCAqLzsgfTsKIAkJQzBDNUQzQzYxNDU5OTEyOTAwQTgwMkE2IC8qIEdl
dEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMEM1RDNCRDE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2lu
Z1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAqLzsgfTsKKwkJQzEwNzdEMzIyM0RGNzJGQzAwNTA2Njcx
IC8qIFByZWZlcmVuY2VDaGFuZ2VzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzEwNzdEMzEyM0RGNzJFRjAwNTA2NjcxIC8qIFByZWZlcmVuY2VDaGFu
Z2VzLm1tICovOyB9OwogCQlDMTQ1Q0MwQzIzREE1QTFGMDAzQTVFRUIgLyogTWltZVR5cGVzLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0NUNDMEIy
M0RBNUEwRjAwM0E1RUVCIC8qIE1pbWVUeXBlcy5tbSAqLzsgfTsKIAkJQzE1Q0JCMzAyM0YxRkYx
QTAwMzAwQ0M3IC8qIEJhY2tsaWdodExldmVsTm90aWZpY2F0aW9uLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1Q0JCMkYyM0YxRkYxQTAwMzAwQ0M3
IC8qIEJhY2tsaWdodExldmVsTm90aWZpY2F0aW9uLm1tICovOyB9OwogCQlDMTY5MkRDQTIzRDEw
REFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMxNjkyREM5MjNEMTBEQUUwMDZFODhGNyAvKiBCYXR0ZXJ5Lm1tICov
OyB9OwpAQCAtMjQyMyw2ICsyNDI0LDcgQEAKIAkJQzBCRDY2OUUxMzFEM0NGRjAwRTE4RjJBIC8q
IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlfQnVuZGxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJl
RWFybHlfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBDNUQzQkMx
NDU5OEI2RjAwQTgwMkE2IC8qIEdldEJhY2tpbmdTY2FsZUZhY3Rvci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rvci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBDNUQzQkQxNDU5OEI2RjAwQTgwMkE2IC8qIEdl
dEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBHZXRCYWNraW5nU2NhbGVGYWN0b3JfQnVuZGxlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMTA3N0QzMTIzREY3MkVGMDA1MDY2NzEgLyogUHJlZmVyZW5j
ZUNoYW5nZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVm
ZXJlbmNlQ2hhbmdlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0NUNDMEIy
M0RBNUEwRjAwM0E1RUVCIC8qIE1pbWVUeXBlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE1pbWVUeXBlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzE1Q0JCMkYyM0YxRkYxQTAwMzAwQ0M3IC8qIEJhY2tsaWdodExldmVsTm90aWZpY2F0aW9u
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmFja2xpZ2h0TGV2ZWxOb3RpZmljYXRpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNjkyREM5MjNEMTBEQUUwMDZFODhGNyAv
KiBCYXR0ZXJ5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmF0dGVyeS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NzEsNiArMjg3Myw3IEBACiAJCQkJQzE2OTJEQzkyM0Qx
MERBRTAwNkU4OEY3IC8qIEJhdHRlcnkubW0gKi8sCiAJCQkJRTM5NEFFNkUyM0YyMzAzRTAwNUI0
OTM2IC8qIEdyYW50QWNjZXNzVG9Nb2JpbGVBc3NldHMubW0gKi8sCiAJCQkJQzE0NUNDMEIyM0RB
NUEwRjAwM0E1RUVCIC8qIE1pbWVUeXBlcy5tbSAqLywKKwkJCQlDMTA3N0QzMTIzREY3MkVGMDA1
MDY2NzEgLyogUHJlZmVyZW5jZUNoYW5nZXMubW0gKi8sCiAJCQkJMEYxMzlFNzUxQTQyM0E1MzAw
RjU5MEY1IC8qIFdlYWtPYmpDUHRyLm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBjb2NvYTsKQEAg
LTQ5MjAsNiArNDkyMyw3IEBACiAJCQkJN0NDRTdFQTYxQTQxMUEwRjAwNDQ3QzRDIC8qIFBsYXRm
b3JtVXRpbGl0aWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQTcxQTQxMUExMzAw
NDQ3QzRDIC8qIFBsYXRmb3JtV2ViVmlld01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgzQkFF
RThEMUVGNDYyNTUwMERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gaW4gU291
cmNlcyAqLywKKwkJCQlDMTA3N0QzMjIzREY3MkZDMDA1MDY2NzEgLyogUHJlZmVyZW5jZUNoYW5n
ZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyNjFBNDExQUY2MDA0NDdDNEMgLyogUHJl
ZmVyZW5jZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDIyN0U0NDIxMUE0RDVEMDBEMjg1QUYg
LyogUHJlZmVycmVkQXVkaW9CdWZmZXJTaXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ4RDZD
MTAyMjRCMzc3MDAwRTNFMkZCIC8qIFByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9QcmVmZXJlbmNlQ2hh
bmdlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Q
cmVmZXJlbmNlQ2hhbmdlcy5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9QcmVmZXJlbmNlQ2hhbmdlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2ltcG9ydCAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQg
PFdlYktpdC9QcmVmZXJlbmNlT2JzZXJ2ZXIuaD4KKworc3RhdGljIGJvb2wgZG9uZSA9IGZhbHNl
OworCitAaW50ZXJmYWNlIFdLVGVzdFByZWZlcmVuY2VPYnNlcnZlciA6IFdLUHJlZmVyZW5jZU9i
c2VydmVyCistICh2b2lkKXByZWZlcmVuY2VEaWRDaGFuZ2U6KE5TU3RyaW5nICopZG9tYWluIGtl
eTooTlNTdHJpbmcgKilrZXkgZW5jb2RlZFZhbHVlOihOU1N0cmluZyAqKWVuY29kZWRWYWx1ZTsK
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLVGVzdFByZWZlcmVuY2VPYnNlcnZlcgorLSAodm9p
ZClwcmVmZXJlbmNlRGlkQ2hhbmdlOihOU1N0cmluZyAqKWRvbWFpbiBrZXk6KE5TU3RyaW5nICop
a2V5IGVuY29kZWRWYWx1ZTooTlNTdHJpbmcgKillbmNvZGVkVmFsdWUKK3sKKyAgICBkb25lID0g
dHJ1ZTsKK30KK0BlbmQKKworVEVTVChXZWJLaXQsIFByZWZlcmVuY2VPYnNlcnZlcikKK3sKKyAg
ICBkb25lID0gZmFsc2U7CisKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoQ0ZTVFIoInRl
c3RrZXkiKSwgQ0ZTVFIoIjEiKSwgQ0ZTVFIoImNvbS5hcHBsZS5jb3JlbWVkaWEiKSk7CisKKyAg
ICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbW1dLVGVzdFByZWZlcmVuY2VPYnNlcnZlciBhbGxv
Y10gaW5pdF0pOworCisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKENGU1RSKCJ0ZXN0a2V5
IiksIENGU1RSKCIyIiksIENGU1RSKCJjb20uYXBwbGUuY29yZW1lZGlhIikpOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChXZWJLaXQsIFByZWZlcmVu
Y2VPYnNlcnZlckFycmF5KQoreworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIE5TQXJyYXkgKmFy
cmF5ID0gQFtAMSwgQDIsIEAzXTsKKworICAgIGF1dG8gdXNlckRlZmF1bHRzID0gYWRvcHROUyhb
W05TVXNlckRlZmF1bHRzIGFsbG9jXSBpbml0V2l0aFN1aXRlTmFtZTpAImNvbS5hcHBsZS5jb3Jl
bWVkaWEiXSk7CisgICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6YXJyYXkgZm9yS2V5
OkAidGVzdGtleSJdOworCisgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1tXS1Rlc3RQcmVm
ZXJlbmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRdKTsKKworICAgIE5TQXJyYXkgKmNoYW5nZWRBcnJh
eSA9IEBbQDMsIEAyLCBAMV07CisgICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6Y2hh
bmdlZEFycmF5IGZvcktleTpAInRlc3RrZXkiXTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoV2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdlcykKK3sKKyAg
ICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoQ0ZTVFIoInRlc3RrZXkiKSwgQ0ZTVFIoIjEiKSwg
Q0ZTVFIoImNvbS5hcHBsZS5jb3JlbWVkaWEiKSk7CisKKyAgICBFWFBFQ1RfRVEoMSwgQ0ZQcmVm
ZXJlbmNlc0dldEFwcEludGVnZXJWYWx1ZShDRlNUUigidGVzdGtleSIpLCBDRlNUUigiY29tLmFw
cGxlLmNvcmVtZWRpYSIpLCBudWxscHRyKSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFdLUmV0
YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRp
bDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRC
dW5kbGVUZXN0IikpOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgPSAoV0tQ
cm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAs
IDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10p
OworCisgICAgYXV0byBwcmVmZXJlbmNlVmFsdWUgPSBbJl0geworICAgICAgICByZXR1cm4gW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5pbnRlcm5hbHMucmVh
ZFByZWZlcmVuY2VJbnRlZ2VyKFwiY29tLmFwcGxlLmNvcmVtZWRpYVwiLCBcInRlc3RrZXlcIiki
XS5pbnRWYWx1ZTsKKyAgICB9OworCisgICAgRVhQRUNUX0VRKHByZWZlcmVuY2VWYWx1ZSgpLCAx
KTsKKworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShDRlNUUigidGVzdGtleSIpLCBDRlNU
UigiMiIpLCBDRlNUUigiY29tLmFwcGxlLmNvcmVtZWRpYSIpKTsKKworICAgIEVYUEVDVF9FUShw
cmVmZXJlbmNlVmFsdWUoKSwgMik7Cit9CisKK1RFU1QoV2ViS2l0LCBQcmVmZXJlbmNlQ2hhbmdl
c0FycmF5KQoreworICAgIE5TQXJyYXkgKmFycmF5ID0gQFtAMSwgQDIsIEAzXTsKKworICAgIGF1
dG8gdXNlckRlZmF1bHRzID0gYWRvcHROUyhbW05TVXNlckRlZmF1bHRzIGFsbG9jXSBpbml0V2l0
aFN1aXRlTmFtZTpAImNvbS5hcHBsZS5jb3JlbWVkaWEiXSk7CisgICAgW3VzZXJEZWZhdWx0cy5n
ZXQoKSBzZXRPYmplY3Q6YXJyYXkgZm9yS2V5OkAidGVzdGtleSJdOworCisgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVy
bmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nl
c3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRU
b1dpbmRvdzpZRVNdKTsKKworICAgIGF1dG8gcHJlZmVyZW5jZVZhbHVlID0gWyZdIHsKKyAgICAg
ICAgcmV0dXJuIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cu
aW50ZXJuYWxzLmVuY29kZWRQcmVmZXJlbmNlVmFsdWUoXCJjb20uYXBwbGUuY29yZW1lZGlhXCIs
IFwidGVzdGtleVwiKSJdOworICAgIH07CisKKyAgICBwcmVmZXJlbmNlVmFsdWUoKTsKKworICAg
IE5TQXJyYXkgKmNoYW5nZWRBcnJheSA9IEBbQDMsIEAyLCBAMV07CisgICAgW3VzZXJEZWZhdWx0
cy5nZXQoKSBzZXRPYmplY3Q6Y2hhbmdlZEFycmF5IGZvcktleTpAInRlc3RrZXkiXTsKKworICAg
IGF1dG8gZW5jb2RlZFN0cmluZyA9IHByZWZlcmVuY2VWYWx1ZSgpOworICAgIGF1dG8gZW5jb2Rl
ZERhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJp
bmc6ZW5jb2RlZFN0cmluZyBvcHRpb25zOjBdKTsKKyAgICBBU1NFUlRfVFJVRShlbmNvZGVkRGF0
YSk7CisgICAgTlNFcnJvciAqZXJyID0gbmlsOworICAgIGF1dG8gb2JqZWN0ID0gcmV0YWluUHRy
KFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzczpbTlNPYmplY3QgY2xh
c3NdIGZyb21EYXRhOmVuY29kZWREYXRhLmdldCgpIGVycm9yOiZlcnJdKTsKKyAgICBBU1NFUlRf
VFJVRSghZXJyKTsKKyAgICBBU1NFUlRfVFJVRShvYmplY3QpOworICAgIEFTU0VSVF9UUlVFKFtv
YmplY3QgaXNFcXVhbDpjaGFuZ2VkQXJyYXldKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390601</attachid>
            <date>2020-02-12 17:47:46 -0800</date>
            <delta_ts>2020-02-16 20:12:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203420-20200212174744.patch</filename>
            <type>text/plain</type>
            <size>47049</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NjQ5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAyLTEyICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ0YgcHJlZnMgZGly
ZWN0IG1vZGUgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEludGVybmFscyBmdW5jdGlvbnMgdG8gcmVh
ZCBwcmVmZXJlbmNlcy4KKworICAgICAgICBBUEkgdGVzdHM6IFRlc3RzIGFkZGVkIGluIFByZWZl
cmVuY2VDaGFuZ2VzLm1tLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZWFkUHJlZmVyZW5jZUludGVnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjplbmNvZGVkUHJlZmVyZW5jZVZhbHVlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6ZW5jb2RlZFByZWZlcmVuY2VWYWx1ZSk6CisKIDIwMjAtMDItMTIgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIExpbmVCdWlsZGVyIHNo
b3VsZCBiZSBhYmxlIHRvIHRha2UgYSBwYXJ0aWFsIHRyYWlsaW5nIGlubGluZSB0ZXh0IGl0ZW0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjU2NDkyKQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAy
LTEyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
Q0YgcHJlZnMgZGlyZWN0IG1vZGUgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFNQSSB0byBlbmFibGUg
Q0YgcHJlZnMgZGlyZWN0IG1vZGUgYW5kIGRlY2xhcmUgbWV0aG9kIGNhbGxlZCB3aGVuIHByZWZl
cmVuY2UgYXJlIGNoYW5nZWQuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwYWwvc3BpL2NmL0NGVXRpbGl0aWVzU1BJLmg6CisgICAgICAgICog
cGFsL3NwaS9jb2NvYS9OU1VzZXJEZWZhdWx0c1NQSS5oOiBBZGRlZC4KKwogMjAyMC0wMi0xMiAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
Q1NTX0RFVklDRV9BREFQVEFUSU9OCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML1BB
TC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTE2OCw2ICsxNjgsNyBAQAogCQlBM0FCNkU2NTFGM0QyMTdGMDA5QzE0QjEgLyogU3lzdGVt
U2xlZXBMaXN0ZW5lck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEEzQUI2RTYzMUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVy
TWFjLm1tICovOyB9OwogCQlBM0M2NkNEQzFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQzY2Q0RB
MUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwICovOyB9OwogCQlBM0M2NkNERDFGNDYy
RDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBM0M2NkNEQjFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmgg
Ki87IH07CisJCUMxNUNCQjM1MjNGMzU0OEEwMDMwMENDNyAvKiBOU1VzZXJEZWZhdWx0c1NQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1Q0JCMzIy
M0YzNEExMjAwMzAwQ0M3IC8qIE5TVXNlckRlZmF1bHRzU1BJLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBQ0IzNjAyMzg3NDI1QjAwMThEN0NF
IC8qIE1lZGlhVG9vbGJveFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQUNCMzVFMjM4NzNFNDgwMDE4RDdDRSAvKiBNZWRpYVRvb2xi
b3hTb2Z0TGluay5jcHAgKi87IH07CiAJCUNEQUNCMzYxMjM4NzQyNzQwMDE4RDdDRSAvKiBNZWRp
YVRvb2xib3hTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RBQ0IzNUYyMzg3M0U0ODAwMThEN0NFIC8qIE1lZGlhVG9vbGJveFNvZnRMaW5r
LmggKi87IH07CiAJCUNERjkxMTEzMjIwRTRFRUMwMDFFQTM5RSAvKiBDZWxlc3RpYWxTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjkxMTEyMjIw
RTRFRUMwMDFFQTM5RSAvKiBDZWxlc3RpYWxTUEkuaCAqLzsgfTsKQEAgLTM0OCw2ICszNDksNyBA
QAogCQlBM0FCNkU2MzFGM0QyMTdGMDA5QzE0QjEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbVNsZWVwTGlz
dGVuZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQzY2Q0RBMUY0NjJE
NkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2Vzc2lvbklELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTND
NjZDREIxRjQ2MkQ2QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZXNzaW9uSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzE1Q0JCMzIyM0YzNEExMjAwMzAwQ0M3IC8qIE5TVXNlckRlZmF1bHRzU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5TVXNlckRlZmF1bHRzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyMTQ3QTRBMUVGRDBBQTYwMDA1NkZBNSAvKiBDb3B5UEFMSGVhZGVycy54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBDb3B5UEFMSGVhZGVycy54Y2NvbmZpZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBQ0IzNUUyMzg3M0U0ODAwMThEN0NFIC8qIE1l
ZGlhVG9vbGJveFNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhVG9vbGJveFNv
ZnRMaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBQ0IzNUYyMzg3M0U0
ODAwMThEN0NFIC8qIE1lZGlhVG9vbGJveFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlh
VG9vbGJveFNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTAsNiAr
NDUyLDcgQEAKIAkJCQkwQzJEQTEzNjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNVUkxDb25uZWN0aW9u
U1BJLmggKi8sCiAJCQkJMEMyREExMzcxRjNCRUI0OTAwREJDMzE3IC8qIE5TVVJMRG93bmxvYWRT
UEkuaCAqLywKIAkJCQkwQzJEQTEzODFGM0JFQjQ5MDBEQkMzMTcgLyogTlNVUkxGaWxlVHlwZU1h
cHBpbmdzU1BJLmggKi8sCisJCQkJQzE1Q0JCMzIyM0YzNEExMjAwMzAwQ0M3IC8qIE5TVXNlckRl
ZmF1bHRzU1BJLmggKi8sCiAJCQkJNTcwQUI4RjgyMEFGNkUzRDAwQjhCRTg3IC8qIE5TWFBDQ29u
bmVjdGlvblNQSS5oICovLAogCQkJCUVCNzA3RkE0MjM5NzM3RjgwMDU5MDUzQSAvKiBPU1Zhcmlh
bnRTUEkuaCAqLywKIAkJCQkwQzJEQTEzOTFGM0JFQjQ5MDBEQkMzMTcgLyogUGFzc0tpdFNQSS5o
ICovLApAQCAtODE2LDYgKzgxOSw3IEBACiAJCQkJMEMyREExNTIxRjNCRUI0OTAwREJDMzE3IC8q
IE5TVVJMQ29ubmVjdGlvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNTMxRjNCRUI0
OTAwREJDMzE3IC8qIE5TVVJMRG93bmxvYWRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRB
MTU0MUYzQkVCNDkwMERCQzMxNyAvKiBOU1VSTEZpbGVUeXBlTWFwcGluZ3NTUEkuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUMxNUNCQjM1MjNGMzU0OEEwMDMwMENDNyAvKiBOU1VzZXJEZWZhdWx0c1NQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OUMxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TVmll
d1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OUQxRjQ1MTMwRjAwRjRFQkI2IC8qIE5T
V2luZG93U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzBBQjhGOTIwQUY2RTNEMDBCOEJFODcg
LyogTlNYUENDb25uZWN0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NmL0NGVXRpbGl0aWVzU1BJLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZVdGlsaXRpZXNTUEkuaAkocmV2aXNpb24gMjU2NDkw
KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZVdGlsaXRpZXNTUEkuaAkod29y
a2luZyBjb3B5KQpAQCAtNTgsNCArNTgsNiBAQCBDRkRpY3Rpb25hcnlSZWYgX0NGV2ViU2Vydmlj
ZXNDb3B5UHJvdmlkCiAKIHZvaWQgX19DRlJ1bkxvb3BTZXRPcHRpb25zUmVhc29uKF9fQ0ZSdW5M
b29wT3B0aW9ucyBvcHRzLCBDRlN0cmluZ1JlZiByZWFzb24pOwogCit2b2lkIF9DRlByZWZzU2V0
RGlyZWN0TW9kZUVuYWJsZWQoYm9vbCBlbmFibGVkKTsKKwogV1RGX0VYVEVSTl9DX0VORApJbmRl
eDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNVc2VyRGVmYXVsdHNTUEkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU1VzZXJEZWZh
dWx0c1NQSS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nv
Y29hL05TVXNlckRlZmF1bHRzU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworQGludGVyZmFjZSBOU09iamVjdCAoUHJpdmF0ZUtWT01ldGhvZHMpCistICh2b2lkKV9u
b3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgaWQ+ICopb2xkVmFsdWVzIHRvVmFsdWVzRm9yS2V5czooTlNEaWN0aW9uYXJ5PE5T
U3RyaW5nICosIGlkPiAqKW5ld1ZhbHVlczsKK0BlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAJKHJldmlzaW9uIDI1NjQ5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ2MSw2ICs1NDYxLDIzIEBAIGJv
b2wgSW50ZXJuYWxzOjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgY29uc3QKICNlbmRpZgogfQogCitpbnQg
SW50ZXJuYWxzOjpyZWFkUHJlZmVyZW5jZUludGVnZXIoY29uc3QgU3RyaW5nJiBkb21haW4sIGNv
bnN0IFN0cmluZyYga2V5KQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEJvb2xlYW4ga2V5
RXhpc3RzQW5kSGFzVmFsaWRGb3JtYXQgPSBmYWxzZTsKKyAgICByZXR1cm4gQ0ZQcmVmZXJlbmNl
c0dldEFwcEludGVnZXJWYWx1ZShrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZG9tYWluLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksICZrZXlFeGlzdHNBbmRIYXNWYWxpZEZvcm1hdCk7CisjZWxz
ZQorICAgIHJldHVybiAtMTsKKyNlbmRpZgorfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQorU3Ry
aW5nIEludGVybmFsczo6ZW5jb2RlZFByZWZlcmVuY2VWYWx1ZShjb25zdCBTdHJpbmcmIGRvbWFp
biwgY29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9Cisj
ZW5kaWYKKwogU3RyaW5nIEludGVybmFsczo6bWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0
TWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOwpJbmRleDogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MzMsNiArOTMzLDkgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBzeXN0ZW1IYXNCYXR0ZXJ5KCkgY29uc3Q7CiAKKyAgICBpbnQgcmVhZFBy
ZWZlcmVuY2VJbnRlZ2VyKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSk7
CisgICAgU3RyaW5nIGVuY29kZWRQcmVmZXJlbmNlVmFsdWUoY29uc3QgU3RyaW5nJiBkb21haW4s
IGNvbnN0IFN0cmluZyYga2V5KTsKKwogICAgIFN0cmluZyBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKIAogICAgIFN0cmluZyBmb2N1c1JpbmdDb2xv
cigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjU2
NDkwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC04NDIsNSArODQyLDggQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAKICAgICBi
b29sZWFuIHN5c3RlbUhhc0JhdHRlcnkoKTsKIAorICAgIGxvbmcgcmVhZFByZWZlcmVuY2VJbnRl
Z2VyKERPTVN0cmluZyBkb21haW4sIERPTVN0cmluZyBrZXkpOworICAgIERPTVN0cmluZyBlbmNv
ZGVkUHJlZmVyZW5jZVZhbHVlKERPTVN0cmluZyBkb21haW4sIERPTVN0cmluZyBrZXkpOworCiAg
ICAgRE9NU3RyaW5nIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oRE9NU3RyaW5nIGV4dGVuc2lv
bik7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0JKHJldmlzaW9uIDI1
NjQ5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC04OCw0ICs4OCwxNSBAQCBkb3VibGUgSW50ZXJuYWxzOjpwcml2YXRlUGxheWVyVm9s
dW1lKGNvCiB9CiAjZW5kaWYKIAorU3RyaW5nIEludGVybmFsczo6ZW5jb2RlZFByZWZlcmVuY2VW
YWx1ZShjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgYXV0
byB1c2VyRGVmYXVsdHMgPSBhZG9wdE5TKFtbTlNVc2VyRGVmYXVsdHMgYWxsb2NdIGluaXRXaXRo
U3VpdGVOYW1lOiBkb21haW5dKTsKKyAgICBpZCB2YWx1ZSA9IFt1c2VyRGVmYXVsdHMuZ2V0KCkg
b2JqZWN0Rm9yS2V5OmtleV07CisgICAgTlNFcnJvciAqZSA9IG5pbDsKKyAgICBhdXRvIGRhdGEg
PSBhZG9wdE5TKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6dmFs
dWUgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjomZV0pOworICAgIEFTU0VSVCghZSk7
CisgICAgYXV0byBlbmNvZGVkU3RyaW5nID0gW2RhdGEgYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhP
cHRpb25zOjBdOworICAgIHJldHVybiBlbmNvZGVkU3RyaW5nOworfQorCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjU2NDkwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAyMC0wMi0xMiAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENGIHByZWZzIGRpcmVjdCBtb2RlIGluIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMzQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEVuYWJsZSBDRiBwcmVmcyBkaXJlY3QgbW9kZSwgaW4gb3JkZXIgdG8gYXZv
aWQgY29ubmVjdGluZyB0byB0aGUgQ0YgcHJlZnMgZGFlbW9uIGluIHRoZSBXZWJDb250ZW50IHBy
b2Nlc3MuCisgICAgICAgIEluIGRpcmVjdCBtb2RlLCB0aGUgcHJlZnMgZmlsZXMgd2lsbCBiZSBh
Y2Nlc3NlZCBkaXJlY3RseSwgYW5kIG5vdCB0aHJvdWdoIHRoZSBDRiBwcmVmcyBkYWVtb24uIEEg
cHJlZmVyZW5jZQorICAgICAgICBvYnNlcnZlciBpcyBhZGRlZCBpbiB0aGUgVUkgcHJvY2Vzcywg
d2hpY2ggd2lsbCBub3RpZnkgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBhYm91dCBwcmVmZXJlbmNl
cyBjaGFuZ2VzIHRvIGEKKyAgICAgICAgZG9tYWluLiBBZnRlciBhIHByZWZlcmVuY2UgY2hhbmdl
LCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHdpbGwgc2V0IHRoZSBuZXcgcHJlZmVyZW5jZSB2YWx1
ZSBmb3IgdGhlIGNoYW5nZWQKKyAgICAgICAga2V5L2RvbWFpbi4KKworICAgICAgICBBUEkgdGVz
dHM6IFRlc3RzIGFkZGVkIGluIFByZWZlcmVuY2VDaGFuZ2VzLm1tLgorCisgICAgICAgICogUmVz
b3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNi
OgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2Uv
WFBDU2VydmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VNYWluKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLmg6IEFkZGVkLgorICAg
ICAgICAoX19hdHRyaWJ1dGVfXyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVu
Y2VPYnNlcnZlci5tbTogQWRkZWQuCisgICAgICAgICgtW1dLVXNlckRlZmF1bHRzIF9ub3RpZnlP
YnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlzOnRvVmFsdWVzRm9yS2V5czpdKToKKyAg
ICAgICAgKC1bV0tVc2VyRGVmYXVsdHMgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpj
aGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKC1bV0tVc2VyRGVmYXVsdHMgaW5pdFdpdGhTdWl0
ZU5hbWU6XSk6CisgICAgICAgICgrW1dLUHJlZmVyZW5jZU9ic2VydmVyIHNoYXJlZEluc3RhbmNl
XSk6CisgICAgICAgICgtW1dLUHJlZmVyZW5jZU9ic2VydmVyIGluaXRdKToKKyAgICAgICAgKC1b
V0tQcmVmZXJlbmNlT2JzZXJ2ZXIgcHJlZmVyZW5jZURpZENoYW5nZTprZXk6ZW5jb2RlZFZhbHVl
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpub3RpZnlQcmVmZXJlbmNl
c0NoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOgorCiAyMDIwLTAy
LTEyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIENv
bXBvc2l0aW9uIGhpZ2hsaWdodCByZWN0cyBzaG91bGQgYmUgcm91bmRlZCBhbmQgaW5zZXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxl
LldlYktpdC5XZWJDb250ZW50LnNiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVzb3Vy
Y2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiCShy
ZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmls
ZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgkod29ya2luZyBjb3B5KQpAQCAt
NTkzLDcgKzU5Myw3IEBACiAoYWxsb3cgbWFjaC1sb29rdXAKICAgICAoZ2xvYmFsLW5hbWUgImNv
bS5hcHBsZS5sb2dkIikKICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5sb2dkLmV2ZW50cyIp
Ci0gICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIikpCispCiAKIChh
bGxvdyBtYWNoLWxvb2t1cCAod2l0aCByZXBvcnQpICh3aXRoIHRlbGVtZXRyeSkKICAgICAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS5kaXN0cmlidXRlZF9ub3RpZmljYXRpb25zQDF2MyIpKQpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2
aWNlL1hQQ1NlcnZpY2VNYWluLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQko
cmV2aXNpb24gMjU2NDkwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJYUENTZXJ2aWNlRW50cnlQb2ludC5oIgogCiAjaW1w
b3J0IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8cGFsL3NwaS9j
Zi9DRlV0aWxpdGllc1NQSS5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KQEAg
LTExNiw2ICsxMTcsOSBAQCBpbnQgWFBDU2VydmljZU1haW4oaW50LCBjb25zdCBjaGFyKiopCiAg
ICAgfSk7CiAjZW5kaWYKIAorICAgIC8vIEVuYWJsZSBDRiBwcmVmcyBkaXJlY3QgbW9kZSB0byBh
dm9pZCBjb25uZWN0aW5nIHRvIHRoZSBDRiBwcmVmcyBkYWVtb24uCisgICAgX0NGUHJlZnNTZXRE
aXJlY3RNb2RlRW5hYmxlZChZRVMpOworCiAgICAgaWYgKGJvb3RzdHJhcCkgewogI2lmIFBMQVRG
T1JNKE1BQykKICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIHdlYktpdEJ1bmRsZVZlcnNpb24gPSB4
cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGJvb3RzdHJhcC5nZXQoKSwgIldlYktpdEJ1bmRsZVZl
cnNpb24iKSkgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CShyZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIE9CSkNfQ0xBU1MgTlNNdXRh
YmxlRGljdGlvbmFyeTsKIE9CSkNfQ0xBU1MgTlNPYmplY3Q7CiBPQkpDX0NMQVNTIE5TU2V0Owog
T0JKQ19DTEFTUyBOU1N0cmluZzsKK09CSkNfQ0xBU1MgV0tQcmVmZXJlbmNlT2JzZXJ2ZXI7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VS
VkVSX0JMT0NLSU5HKQpAQCAtNTQwLDYgKzU0MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRV
c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wpOwogICAgIGJvb2wgdXNlU2VwYXJh
dGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlU2VwYXJhdGVTZXJ2
aWNlV29ya2VyUHJvY2VzczsgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBub3Rp
ZnlQcmVmZXJlbmNlc0NoYW5nZWQoY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiBlbmNvZGVkVmFsdWUpOworI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIApAQCAtODAxLDYgKzgwNiwx
MCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0RlbGF5ZWRXZWJQcm9jZXNzTGF1bmNoRGlzYWJs
ZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgYm9vbCBtX3VzZVNlcGFyYXRlU2VydmljZVdvcmtl
clByb2Nlc3MgeyBmYWxzZSB9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRy
PFdLUHJlZmVyZW5jZU9ic2VydmVyPiBtX3ByZWZlcmVuY2VPYnNlcnZlcjsKKyNlbmRpZgogfTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ByZWZlcmVuY2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVuY2VPYnNlcnZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJl
IG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNVc2Vy
RGVmYXVsdHNTUEkuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCitPQkpDX0NMQVNTIFdLUHJlZmVyZW5jZU9ic2VydmVyOworCitfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorQGludGVyZmFjZSBXS1VzZXJEZWZh
dWx0cyA6IE5TVXNlckRlZmF1bHRzIHsKK0Bwcml2YXRlCisgICAgTlNTdHJpbmcgKm1fc3VpdGVO
YW1lOworQHB1YmxpYworICAgIFdLUHJlZmVyZW5jZU9ic2VydmVyICptX29ic2VydmVyOworfQor
QGVuZAorCitfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorQGludGVyZmFj
ZSBXS1ByZWZlcmVuY2VPYnNlcnZlciA6IE5TT2JqZWN0IHsKK0Bwcml2YXRlCisgICAgVmVjdG9y
PFJldGFpblB0cjxXS1VzZXJEZWZhdWx0cz4+IG1fdXNlckRlZmF1bHRzOworfQorKyAoaWQpc2hh
cmVkSW5zdGFuY2U7CistICh2b2lkKXByZWZlcmVuY2VEaWRDaGFuZ2U6KE5TU3RyaW5nICopZG9t
YWluIGtleTooTlNTdHJpbmcgKilrZXkgZW5jb2RlZFZhbHVlOihOU1N0cmluZyAqKWVuY29kZWRW
YWx1ZTsKK0BlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ByZWZlcmVu
Y2VPYnNlcnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QcmVmZXJlbmNlT2JzZXJ2ZXIubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUHJlZmVyZW5jZU9ic2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjAwIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6Cisq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUHJlZmVyZW5jZU9ic2VydmVyLmgiCisK
KyNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCisKK0BpbXBsZW1lbnRhdGlvbiBXS1VzZXJEZWZh
dWx0cworCistICh2b2lkKV9ub3RpZnlPYnNlcnZlcnNPZkNoYW5nZUZyb21WYWx1ZXNGb3JLZXlz
OihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopb2xkVmFsdWVzIHRvVmFsdWVzRm9yS2V5
czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKW5ld1ZhbHVlcworeworICAgIFtzdXBl
ciBfbm90aWZ5T2JzZXJ2ZXJzT2ZDaGFuZ2VGcm9tVmFsdWVzRm9yS2V5czpvbGRWYWx1ZXMgdG9W
YWx1ZXNGb3JLZXlzOm5ld1ZhbHVlc107CisKKyAgICBpZiAoW29sZFZhbHVlcyBpc0VxdWFsVG9E
aWN0aW9uYXJ5Om5ld1ZhbHVlc10pCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoTlNTdHJp
bmcgKmtleSBpbiBvbGRWYWx1ZXMpIHsKKyAgICAgICAgaWQgb2xkVmFsdWUgPSBvbGRWYWx1ZXNb
a2V5XTsKKyAgICAgICAgaWQgbmV3VmFsdWUgPSBuZXdWYWx1ZXNba2V5XTsKKworICAgICAgICBp
ZiAoW29sZFZhbHVlIGlzRXF1YWw6bmV3VmFsdWVdKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgaWYgKG5ld1ZhbHVlICYmICFbW25ld1ZhbHVlIGNsYXNzXSBzdXBwb3J0c1NlY3Vy
ZUNvZGluZ10pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBOU1N0cmluZyAqZW5j
b2RlZFN0cmluZyA9IG5pbDsKKworICAgICAgICBpZiAobmV3VmFsdWUpIHsKKyAgICAgICAgICAg
IE5TRXJyb3IgKmUgPSBuaWw7CisgICAgICAgICAgICBhdXRvIGRhdGEgPSByZXRhaW5QdHIoW05T
S2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDpuZXdWYWx1ZSByZXF1aXJp
bmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOiZlXSk7CisgICAgICAgICAgICBBU1NFUlQoIWUpOwor
ICAgICAgICAgICAgZW5jb2RlZFN0cmluZyA9IFtkYXRhIGJhc2U2NEVuY29kZWRTdHJpbmdXaXRo
T3B0aW9uczowXTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX29ic2VydmVyKQorICAgICAg
ICAgICAgW21fb2JzZXJ2ZXIgcHJlZmVyZW5jZURpZENoYW5nZTptX3N1aXRlTmFtZSBrZXk6a2V5
IGVuY29kZWRWYWx1ZTplbmNvZGVkU3RyaW5nXTsKKyAgICB9Cit9CisKKy0gKHZvaWQpb2JzZXJ2
ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3Qg
Y2hhbmdlOihOU0RpY3Rpb25hcnk8TlNLZXlWYWx1ZUNoYW5nZUtleSwgaWQ+ICopY2hhbmdlIGNv
bnRleHQ6KHZvaWQgKiljb250ZXh0Cit7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFN1
aXRlTmFtZTooTlNTdHJpbmcgKilzdWl0ZW5hbWUKK3sKKyAgICBtX3N1aXRlTmFtZSA9IHN1aXRl
bmFtZTsKKyAgICBtX29ic2VydmVyID0gbmlsOworICAgIHJldHVybiBbc3VwZXIgaW5pdFdpdGhT
dWl0ZU5hbWU6c3VpdGVuYW1lXTsKK30KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLUHJlZmVy
ZW5jZU9ic2VydmVyCisKKysgKGlkKXNoYXJlZEluc3RhbmNlCit7CisgICAgc3RhdGljIFdLUHJl
ZmVyZW5jZU9ic2VydmVyICppbnN0YW5jZSA9IG5pbDsKKworICAgIGlmICghaW5zdGFuY2UpCisg
ICAgICAgIGluc3RhbmNlID0gW1tbc2VsZiBjbGFzc10gYWxsb2NdIGluaXRdOworCisgICAgcmV0
dXJuIGluc3RhbmNlOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxOU1N0cmluZyo+IGRvbWFpbnMgPSB7CisgICAgICAgIEAiY29tLmFwcGxl
LkFjY2Vzc2liaWxpdHkiLAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIEAiY29t
LmFwcGxlLkFkTGliIiwKKyAgICAgICAgQCJjb20uYXBwbGUuQ0ZOZXR3b3JrIiwKKyAgICAgICAg
QCJjb20uYXBwbGUuRW1vamlQcmVmZXJlbmNlcyIsCisgICAgICAgIEAiY29tLmFwcGxlLkZvbnRQ
YXJzZXIiLAorICAgICAgICBAImNvbS5hcHBsZS5JbWFnZUlPIiwKKyAgICAgICAgQCJjb20uYXBw
bGUuSW5wdXRNb2RlUHJlZmVyZW5jZXMiLAorI2Vsc2UKKyAgICAgICAgQCJjb20uYXBwbGUuQVRT
IiwKKyAgICAgICAgQCJjb20uYXBwbGUuQ29yZUdyYXBoaWNzIiwKKyAgICAgICAgQCJjb20uYXBw
bGUuRG93bmxvYWRBc3Nlc3NtZW50IiwKKyAgICAgICAgQCJjb20uYXBwbGUuSElUb29sYm94IiwK
KyNlbmRpZgorICAgICAgICBAImNvbS5hcHBsZS5MYXVuY2hTZXJ2aWNlcyIsCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgQCJjb20uYXBwbGUuTWV0YWwiLAorICAgICAgICBAImNv
bS5hcHBsZS5Nb2JpbGVBc3NldCIsCisgICAgICAgIEAiY29tLmFwcGxlLlByZWZlcmVuY2VzIiwK
KyAgICAgICAgQCJjb20uYXBwbGUuU3BlYWtTZWxlY3Rpb24iLAorICAgICAgICBAImNvbS5hcHBs
ZS5VSUtpdCIsCisgICAgICAgIEAiY29tLmFwcGxlLlZvaWNlT3ZlclRvdWNoIiwKKyNlbHNlCisg
ICAgICAgIEAiY29tLmFwcGxlLk11bHRpdG91Y2hTdXBwb3J0IgorICAgICAgICBAImNvbS5hcHBs
ZS5TZXJ2aWNlc01lbnUuU2VydmljZXMiCisgICAgICAgIEAiY29tLmFwcGxlLlZpZXdCcmlkZ2Ui
CisjZW5kaWYKKyAgICAgICAgQCJjb20uYXBwbGUuV2ViRm91bmRhdGlvbiIsCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgQCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQiLAor
ICAgICAgICBAImNvbS5hcHBsZS5XZWJVSSIsCisgICAgICAgIEAiY29tLmFwcGxlLmFpcnBsYXki
LAorICAgICAgICBAImNvbS5hcHBsZS5hcHBsZWpwZWciLAorICAgICAgICBAImNvbS5hcHBsZS5h
dWRpby52aXJ0dWFsYXVkaW8iLAorICAgICAgICBAImNvbS5hcHBsZS5hdmZhdWRpbyIsCisjZW5k
aWYKKyAgICAgICAgQCJjb20uYXBwbGUuYXZmb3VuZGF0aW9uIiwKKyAgICAgICAgQCJjb20uYXBw
bGUuYXZmb3VuZGF0aW9uLmZyZWNlbnRzIiwKKyAgICAgICAgQCJjb20uYXBwbGUuYXZmb3VuZGF0
aW9uLnZpZGVvcGVyZm9ybWFuY2VodWQiLAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
ICAgIEAiY29tLmFwcGxlLmF2a2l0IiwKKyAgICAgICAgQCJjb20uYXBwbGUuY29yZWFuaW1hdGlv
biIsCisgICAgICAgIEAiY29tLmFwcGxlLmNvcmVhdWRpbyIsCisjZW5kaWYKKyAgICAgICAgQCJj
b20uYXBwbGUuY29yZW1lZGlhIiwKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBA
ImNvbS5hcHBsZS5jb3JldmlkZW8iLAorICAgICAgICBAImNvbS5hcHBsZS5kYSIsCisgICAgICAg
IEAiY29tLmFwcGxlLmhhbmd0cmFjZXIiLAorICAgICAgICBAImNvbS5hcHBsZS5pbmRpZ28iLAor
ICAgICAgICBAImNvbS5hcHBsZS5pb2tpdC5JT01vYmlsZUdyYXBoaWNzRmFtaWx5IiwKKyAgICAg
ICAgQCJjb20uYXBwbGUuaXR1bmVzc3RvcmVkIiwKKyAgICAgICAgQCJjb20uYXBwbGUua2V5Ym9h
cmQiLAorI2Vsc2UKKyAgICAgICAgQCJjb20uYXBwbGUuY3J5cHRvIiwKKyAgICAgICAgQCJjb20u
YXBwbGUuZHJpdmVyLkFwcGxlQmx1ZXRvb3RoTXVsdGl0b3VjaC5tb3VzZSIsCisgICAgICAgIEAi
Y29tLmFwcGxlLmRyaXZlci5BcHBsZUJsdWV0b290aE11bHRpdG91Y2gudHJhY2twYWQiLAorICAg
ICAgICBAImNvbS5hcHBsZS5kcml2ZXIuQXBwbGVISURNb3VzZSIKKyNlbmRpZgorICAgICAgICBA
ImNvbS5hcHBsZS5sb29rdXAuc2hhcmVkIiwKKyAgICAgICAgQCJjb20uYXBwbGUubWVkaWFhY2Nl
c3NpYmlsaXR5IiwKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBAImNvbS5hcHBs
ZS5tZWRpYWFjY2Vzc2liaWxpdHkucHVibGljIiwKKyAgICAgICAgQCJjb20uYXBwbGUubWVkaWFy
ZW1vdGUiLAorICAgICAgICBAImNvbS5hcHBsZS5tb2JpbGVpcG9kIiwKKyAgICAgICAgQCJjb20u
YXBwbGUubXQiLAorI2Vsc2UKKyAgICAgICAgQCJjb20uYXBwbGUubmV0d29ya0Nvbm5lY3QiCisj
ZW5kaWYKKyAgICAgICAgQCJjb20uYXBwbGUub3BlbmdsIiwKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorICAgICAgICBAImNvbS5hcHBsZS5wcmVmZXJlbmNlcy5zb3VuZHMiLAorICAgICAgICBA
ImNvbS5hcHBsZS5zZWN1cml0eSIsCisgICAgICAgIEAiY29tLmFwcGxlLnZvaWNlc2VydmljZXMi
LAorICAgICAgICBAImNvbS5hcHBsZS52b2ljZXNlcnZpY2VzLmxvZ2dpbmciLAorI2Vsc2UKKyAg
ICAgICAgQCJjb20uYXBwbGUuc3BlZWNoLnZvaWNlLnByZWZzIiwKKyAgICAgICAgQCJjb20uYXBw
bGUuc3lzdGVtc291bmQiLAorICAgICAgICBAImNvbS5hcHBsZS51bml2ZXJzYWxhY2Nlc3MiLAor
ICAgICAgICBAImNvbS5udmlkaWEuT3BlbkdMIiwKKyAgICAgICAgQCJlZHUubWl0LktlcmJlcm9z
IiwKKyNlbmRpZgorICAgICAgICBAImtDRlByZWZlcmVuY2VzQW55QXBwbGljYXRpb24iLAorI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBAInBicyIsCisjZW5kaWYKKyAgICB9Owor
CisgICAgZm9yIChhdXRvIGRvbWFpbiA6IGRvbWFpbnMpIHsKKyAgICAgICAgYXV0byB1c2VyRGVm
YXVsdHMgPSBhZG9wdE5TKFtbV0tVc2VyRGVmYXVsdHMgYWxsb2NdIGluaXRXaXRoU3VpdGVOYW1l
OmRvbWFpbl0pOworICAgICAgICB1c2VyRGVmYXVsdHMuZ2V0KCktPm1fb2JzZXJ2ZXIgPSBzZWxm
OworICAgICAgICAvLyBTdGFydCBvYnNlcnZpbmcgYSBkdW1teSBrZXkgaW4gb3JkZXIgdG8gbWFr
ZSB0aGUgcHJlZmVyZW5jZSBkYWVtb24gYmVjb21lIGF3YXJlIG9mIG91ciBOU1VzZXJEZWZhdWx0
cyBpbnN0YW5jZS4KKyAgICAgICAgLy8gVGhpcyBpcyB0byBtYWtlIHN1cmUgd2UgcmVjZWl2ZSBL
Vk8gbm90aWZpY2F0aW9ucy4gV2UgY2Fubm90IHVzZSBub3JtYWwgS1ZPIHRlY2huaXF1ZXMgaGVy
ZSwgc2luY2Ugd2UgYXJlIGxvb2tpbmcKKyAgICAgICAgLy8gZm9yIF9hbnlfIGNoYW5nZXMgaW4g
YSBwcmVmZXJlbmNlIGRvbWFpbi4gRm9yIG5vcm1hbCBLVk8gdGVjaG5pcXVlcyB0byB3b3JrLCB3
ZSBuZWVkIHRvIHByb3ZpZGUgdGhlIHNwZWNpZmljCisgICAgICAgIC8vIGtleShzKSB3ZSB3YW50
IHRvIG9ic2VydmUsIGJ1dCB0aGF0IHNldCBvZiBrZXlzIGlzIHVua25vd24gdG8gdXMuCisgICAg
ICAgIFt1c2VyRGVmYXVsdHMuZ2V0KCkgYWRkT2JzZXJ2ZXI6dXNlckRlZmF1bHRzLmdldCgpIGZv
cktleVBhdGg6QCJ0ZXN0a2V5IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcg
Y29udGV4dDpuaWxdOworICAgICAgICBtX3VzZXJEZWZhdWx0cy5hcHBlbmQodXNlckRlZmF1bHRz
KTsKKyAgICB9CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAodm9pZClwcmVmZXJl
bmNlRGlkQ2hhbmdlOihOU1N0cmluZyAqKWRvbWFpbiBrZXk6KE5TU3RyaW5nICopa2V5IGVuY29k
ZWRWYWx1ZTooTlNTdHJpbmcgKillbmNvZGVkVmFsdWUKK3sKKyAgICBPcHRpb25hbDxTdHJpbmc+
IGVuY29kZWRTdHJpbmc7CisgICAgaWYgKGVuY29kZWRWYWx1ZSkKKyAgICAgICAgZW5jb2RlZFN0
cmluZyA9IFN0cmluZyhlbmNvZGVkVmFsdWUpOworICAgIGZvciAoYXV0byogcHJvY2Vzc1Bvb2wg
OiBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJv
Y2Vzc1Bvb2wtPm5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChkb21haW4sIGtleSwgZW5jb2RlZFN0
cmluZyk7Cit9CitAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI1NjQ5MCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMu
aCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nl
c3NNYW5hZ2VyLmgiCisjaW1wb3J0ICJQcmVmZXJlbmNlT2JzZXJ2ZXIuaCIKICNpbXBvcnQgIlNh
bmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCiAjaW1wb3J0ICJVc2Vy
SW50ZXJmYWNlSWRpb20uaCIKQEAgLTM2Myw2ICszNjQsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybUluaXRpYWxpemVXCiAgICAgcGFyYW1ldGVycy5jc3NWYWx1ZVRvU3lzdGVtQ29s
b3JNYXAgPSBSZW5kZXJUaGVtZUlPUzo6Y3NzVmFsdWVUb1N5c3RlbUNvbG9yTWFwKCk7CiAgICAg
cGFyYW1ldGVycy5mb2N1c1JpbmdDb2xvciA9IFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5mb2N1
c1JpbmdDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4oKSk7CiAjZW5kaWYKKwor
ICAgIC8vIFN0YXJ0IG9ic2VydmluZyBwcmVmZXJlbmNlIGNoYW5nZXMuCisgICAgW1dLUHJlZmVy
ZW5jZU9ic2VydmVyIHNoYXJlZEluc3RhbmNlXTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6
cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC03MzAsNCArNzM0LDEwIEBAIE5TU2V0ICpXZWJQcm9j
ZXNzUG9vbDo6YWxsb3dlZENsYXNzZXNGb3IKICAgICByZXR1cm4gbV9jbGFzc2VzRm9yUGFyYW1l
dGVyQ29kZXIuZ2V0KCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5vdGlmeVByZWZlcmVu
Y2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IE9wdGlvbmFsPFN0cmluZz4mIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBmb3IgKGF1dG8gcHJvY2Vz
cyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpOb3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoZG9tYWluLCBrZXksIGVuY29kZWRWYWx1ZSks
IDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjU2NDkwKQorKysg
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTY2Miw2ICsxNjYyLDggQEAKIAkJQzExQTlFQ0MyMTQwMzVGODAwQ0ZCMjBBIC8q
IFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzExQTlFQ0IyMTQwMzVGODAwQ0ZCMjBBIC8qIFdlYlN3aXRjaGluZ0dQ
VUNsaWVudC5oICovOyB9OwogCQlDMTFFMTY5NDIxMkI4N0M1MDA5ODVGRjYgLyogV0tNb2NrRGlz
cGxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEx
RTE2OTIyMTJCODdDNTAwOTg1RkY2IC8qIFdLTW9ja0Rpc3BsYXkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTQ5MzgwOTIyMzQ3MTA0MDAwQ0Q3
MDcgLyogV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTQ5MzgwMjIyMzQxQzYwMDAwQ0Q3MDcgLyogV2ViU3Bl
ZWNoU3ludGhlc2lzQ2xpZW50LmggKi87IH07CisJCUMxNUNCQjM2MjNGMzc3NzEwMDMwMENDNyAv
KiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMxNDVDQzBFMjNEQ0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlD
MTVDQkIzNzIzRjM3RUNCMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1Q0JCMzMyM0YzNEMzODAw
MzAwQ0M3IC8qIFByZWZlcmVuY2VPYnNlcnZlci5tbSAqLzsgfTsKIAkJQzE4MTczNjEyMDU4NDI0
NzAwREZEQTY1IC8qIERpc3BsYXlMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMTgxNzM2MDIwNTg0MjQ3MDBERkRBNjUgLyogRGlzcGxheUxpbmsu
aCAqLzsgfTsKIAkJQzFFMTIzQkEyMEExMTU3MzAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMUUxMjNCOTIw
QTExNTcyMDAyNjQ2RjQgLyogUERGQ29udGV4dE1lbnUuaCAqLzsgfTsKIAkJQzUxNzM4ODExMkRG
OEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTE3Mzg4MDEyREY4RjRGMDBFRTNGNDcgLyog
RHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLzsgfTsKQEAgLTQ4NzksOSArNDg4MSwxMSBAQAogCQlD
MTFBOUVEMDIxNDAzQjQwMDBDRkIyMEEgLyogV2ViU3dpdGNoaW5nR1BVQ2xpZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlN3aXRjaGluZ0dQVUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMxMUUxNjkyMjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTW9ja0Rpc3BsYXkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzExRTE2OTMyMTJCODdDNTAwOTg1RkY2IC8qIFdL
TW9ja0Rpc3BsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tN
b2NrRGlzcGxheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNDVDQzBFMjNE
Q0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJl
ZmVyZW5jZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNDkzODAy
MjIzNDFDNjAwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMxNDkzODAzMjIzNDFERjcwMDBDRDcwNyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGll
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MEEyMjM4NTNCRTAwMENENzA3IC8q
IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMxNUNCQjMzMjNGMzRD
MzgwMDMwMENDNyAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBQcmVmZXJlbmNlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMx
ODE3MzVFMjA1ODM5RjYwMERGREE2NSAvKiBEcmF3aW5nQXJlYU1hYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEcmF3aW5nQXJlYU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMxODE3MzYwMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEaXNwbGF5TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTgxNzM2MjIw
NTg0NEE5MDBERkRBNjUgLyogRGlzcGxheUxpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlz
cGxheUxpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjAxMCw2ICs2MDE0
LDggQEAKIAkJCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5LmggKi8sCiAJCQkJQ0RBMjlBMjIxQ0JFQjYxQTAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQlDREEyOUExRjFDQkVCNUZC
MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tICovLAorCQkJCUMxNDVD
QzBFMjNEQ0E0MjcwMDNBNUVFQiAvKiBQcmVmZXJlbmNlT2JzZXJ2ZXIuaCAqLywKKwkJCQlDMTVD
QkIzMzIzRjM0QzM4MDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLm1tICovLAogCQkJCTVD
QjdBRkREMjNDNTI3M0QwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovLAogCQkJ
CTVDQjdBRkRFMjNDNTI3M0QwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLywK
IAkJCQk1Q0E5ODU0QjIxMEJFQjczMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZ0NvY29h
Lm1tICovLApAQCAtNjk5Nyw4ICs3MDAzLDggQEAKIAkJCQkxQTQyMkY4QTE4QjI5QjU0MDBEOENE
OTYgLyogV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmggKi8sCiAJCQkJNTFEMTI0ODQxRTczNEFF
MzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLmggKi8sCiAJCQkJNTFEMTI0ODUxRTczNEFF
MzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tICovLAotCQkJCURGNDYyRTBFMjNGMjJG
NTMwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCAqLywKIAkJCQk1MUQxMjQ4
NjFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oICovLAorCQkJ
CURGNDYyRTBFMjNGMjJGNTMwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCAq
LywKIAkJCQkxQUI0MEVFMzFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJz
Lm1tICovLAogCQkJCTFBQjQwRUU0MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRp
ZmllcnNQcml2YXRlLmggKi8sCiAJCQkJMUE1QjFDNEYxODk4NjA2RjAwNEZDRjlCIC8qIFdLTmF2
aWdhdGlvbi5oICovLApAQCAtMTAyNTQsNyArMTAyNjAsNiBAQAogCQkJCTJENTg3NUJGMjE5QjUz
MTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBNDFBQjUxMkMwMkVDNDAwMkJFNjdCIC8qIEVkaXRvclN0YXRlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlERjQ2MkUxMjIzRjMzOEJFMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkRBODEwRjQzN0QxMDA1OEMxNUEgLyog
RW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCMTVBODUxMzg0M0EzOTAwMzIxQUQ4IC8q
IEVudmlyb25tZW50VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE1NzVGQjE0OTZC
NTI2MDBBNEVFMDYgLyogRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNDc1
LDYgKzEwNDgwLDcgQEAKIAkJCQkxQTZGQjdBRjExRTY0QjY4MDBEQjEzNzEgLyogUGx1Z2luVmll
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODEyMkIzNTE1QjAwOEQwRThCIC8qIFBvcFVw
U09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNBMEVEMzUxRjc0
N0NDRjAwMzI5OUVCIC8qIFByZWNvbm5lY3RUYXNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMTVD
QkIzNjIzRjM3NzcxMDAzMDBDQzcgLyogUHJlZmVyZW5jZU9ic2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBQUIxNDVFNjIyM0Y5MzEyMDBFNDg5RDggLyogUHJlZmV0Y2hDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFDQzFCOTAxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODZGOTUzNjUxOEZGNThGNTAwMURCMkVGIC8qIFByb2Nlc3NBc3Nl
cnRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTA3MjEsNyArMTA3MjcsNiBAQAogCQkJCUZFRTQz
RkQzMUU2N0IwMTgwMDc3RDZEMSAvKiBXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRURCRENENzFFNjhEMjA1MDBBNTlGOEYgLyogV2ViSW5zcGVj
dG9ySW50ZXJydXB0RGlzcGF0Y2hlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhF
MkEzNjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAotCQkJCURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyODM0MTI3NUQ3MzgwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBOEI5NDYxMjdDODgyQTAw
NTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFDODkxRDY2MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMDkzNCw2ICsxMDkzOSw3IEBACiAJCQkJMEYwNDE1OUUyM0M3Q0M3MzAwNjBBM0Uy
IC8qIFdLQ29udGVudFZpZXdNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMTA2NUZDMjNFQzk1
NzIwMDU0NDNENiAvKiBXS0NvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMDY1
RkQyM0VDOTU3QjAwNTQ0M0Q2IC8qIFdLQ29udGVudFdvcmxkSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAorCQkJCURGNDYyRTEyMjNGMzM4QkUwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjlFMjRCMTEyMEUxNUMwMEExMzdFMCAvKiBXS0Nv
bnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTUyRjk4MTkyMDI2NzIwMEExRkEzNyAvKiBX
S0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ0NUJBNTE4
NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMTAxNyw2ICsxMTAyMyw3IEBACiAJCQkJMUE0MjJGOEIxOEIyOUI1NDAwRDhDRDk2
IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjYyRTcz
MTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFEMTI0OTkxRTc2M0MwMTAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlERjQ2MkUwRjIzRjIyRjU1MDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3Rv
cmVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzY2QTRCNTIzMjA5NjI0MDBFQTRENDQg
LyogV0tIVFRQQ29va2llU3RvcmVSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMTBBRTBEMTMz
QzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEy
M0NGMUMxMzNEMjYwQTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cuaCBpbiBIZWFkZXJzICov
LApAQCAtMTIxNzYsNiArMTIxODMsNyBAQAogCQkJCTFBOEVGQTcwMTI1MkI4NDEwMEY3MDY3RiAv
KiBQbHVnaW5Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgy
ODQ0RDE2QjUwODFDMDBBMjc4RkUgLyogUGx1Z2luU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291
cmNlcyAqLywKIAkJCQkyRDkxMzQ0RDIxMkNGOUYwMDAxMjhBRkQgLyogUGx1Z2luVmlldy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDMTVDQkIzNzIzRjM3RUNCMDAzMDBDQzcgLyogUHJlZmVyZW5j
ZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ1NEMzMUIyMTJGNERBNjAwNDlDMTc0
IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDI4NjVFRjIyNTU1
NjIwMDA2MDZBQzcgLyogUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIwIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgJKHJldmlzaW9uIDI1NjQ5MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw2ICszMDcsNyBAQCBwdWJsaWM6CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldE1lZGlhTUlNRVR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+KTsKKyAgICB2b2lkIG5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJp
bmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGVu
Y29kZWRWYWx1ZSk7CiAjZW5kaWYKIAogICAgIGJvb2wgYXJlQWxsUGFnZXNUaHJvdHRsZWFibGUo
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTY4LDQgKzE2OCw4
IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm8KICAgICBHcmFudEFj
Y2Vzc1RvQXNzZXRTZXJ2aWNlcyhXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtb2Jp
bGVBc3NldEhhbmRsZSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbW9iaWxlQXNz
ZXRWMkhhbmRsZSkKICAgICBSZXZva2VBY2Nlc3NUb0Fzc2V0U2VydmljZXMoKQogI2VuZGlmCisK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBOb3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoU3RyaW5n
IGRvbWFpbiwgU3RyaW5nIGtleSwgT3B0aW9uYWw8U3RyaW5nPiBlbmNvZGVkVmFsdWUpCisjZW5k
aWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vz
cy5zYi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxl
LldlYlByb2Nlc3Muc2IuaW4JKHJldmlzaW9uIDI1NjQ5MCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkod29ya2luZyBjb3B5KQpAQCAtNjQ4
LDcgKzY0OCw2IEBACiAgICAgKHdpdGggcmVwb3J0KSAod2l0aCB0ZWxlbWV0cnkpCiAjZW5kaWYK
ICAgICAoZ2xvYmFsLW5hbWUgImNvbS5hcHBsZS5Qb3dlck1hbmFnZW1lbnQuY29udHJvbCIpCi0g
ICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIikKICAgICAoZ2xvYmFs
LW5hbWUgImNvbS5hcHBsZS5jb3Jlc2VydmljZXMubGF1bmNoc2VydmljZXNkIikKICAgICAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS5sc2QubWFwZGIiKQogICAgIChnbG9iYWwtbmFtZSAiY29tLmFw
cGxlLnRjY2QiKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNTY0OTApCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MDgs
NiArOTA4LDI0IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0TWVkaWFNSU1FVHlwZXMoY29uc3QKICAg
ICAgICAgY2FjaGUuYWRkU3VwcG9ydGVkVHlwZXModHlwZXMpOwogfQogCit2b2lkIFdlYlByb2Nl
c3M6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGVuY29kZWRWYWx1ZSkKK3sKKyAg
ICBhdXRvIGRlZmF1bHRzID0gYWRvcHROUyhbW05TVXNlckRlZmF1bHRzIGFsbG9jXSBpbml0V2l0
aFN1aXRlTmFtZTpkb21haW5dKTsKKyAgICBpZiAoIWVuY29kZWRWYWx1ZS5oYXNWYWx1ZSgpKSB7
CisgICAgICAgIFtkZWZhdWx0cyBzZXRPYmplY3Q6bmlsIGZvcktleTprZXldOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGF1dG8gZW5jb2RlZERhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFs
bG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6KmVuY29kZWRWYWx1ZSBvcHRpb25zOjBd
KTsKKyAgICBpZiAoIWVuY29kZWREYXRhKQorICAgICAgICByZXR1cm47CisgICAgTlNFcnJvciAq
ZXJyID0gbmlsOworICAgIGF1dG8gb2JqZWN0ID0gcmV0YWluUHRyKFtOU0tleWVkVW5hcmNoaXZl
ciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzczpbTlNPYmplY3QgY2xhc3NdIGZyb21EYXRhOmVuY29k
ZWREYXRhLmdldCgpIGVycm9yOiZlcnJdKTsKKyAgICBBU1NFUlQoIWVycik7CisgICAgaWYgKGVy
cikKKyAgICAgICAgcmV0dXJuOworICAgIFtkZWZhdWx0cyBzZXRPYmplY3Q6b2JqZWN0LmdldCgp
IGZvcktleTprZXldOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQogdm9pZCBXZWJQcm9jZXNzOjpn
cmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyhXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmIG1vYmlsZUFzc2V0SGFuZGxlLCAgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiBtb2JpbGVBc3NldFYySGFuZGxlKQogewpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU2NDkwKQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDItMTEgIFBlciBBcm5l
IFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBDRiBwcmVmcyBkaXJl
Y3QgbW9kZSBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0MjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L1ByZWZlcmVuY2VDaGFuZ2VzLm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1QpOgorCiAy
MDIwLTAyLTEyICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NjQ2My4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyNTY0OTApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODc0LDYgKzg3
NCw3IEBACiAJCUMwQURCRTk2MTJGQ0E3OUIwMEQyQzEyOSAvKiBzaW1wbGUtZm9ybS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQURC
RTg0MTJGQ0E2QjYwMEQyQzEyOSAvKiBzaW1wbGUtZm9ybS5odG1sICovOyB9OwogCQlDMEJENjY5
RjEzMUQzQ0ZGMDBFMThGMkEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9C
dW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzBCRDY2OUUxMzFEM0NGRjAwRTE4RjJBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJl
RWFybHlfQnVuZGxlLmNwcCAqLzsgfTsKIAkJQzBDNUQzQzYxNDU5OTEyOTAwQTgwMkE2IC8qIEdl
dEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMEM1RDNCRDE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2lu
Z1NjYWxlRmFjdG9yX0J1bmRsZS5tbSAqLzsgfTsKKwkJQzEwNzdEMzIyM0RGNzJGQzAwNTA2Njcx
IC8qIFByZWZlcmVuY2VDaGFuZ2VzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzEwNzdEMzEyM0RGNzJFRjAwNTA2NjcxIC8qIFByZWZlcmVuY2VDaGFu
Z2VzLm1tICovOyB9OwogCQlDMTQ1Q0MwQzIzREE1QTFGMDAzQTVFRUIgLyogTWltZVR5cGVzLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE0NUNDMEIy
M0RBNUEwRjAwM0E1RUVCIC8qIE1pbWVUeXBlcy5tbSAqLzsgfTsKIAkJQzE1Q0JCMzAyM0YxRkYx
QTAwMzAwQ0M3IC8qIEJhY2tsaWdodExldmVsTm90aWZpY2F0aW9uLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzE1Q0JCMkYyM0YxRkYxQTAwMzAwQ0M3
IC8qIEJhY2tsaWdodExldmVsTm90aWZpY2F0aW9uLm1tICovOyB9OwogCQlDMTY5MkRDQTIzRDEw
REFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMxNjkyREM5MjNEMTBEQUUwMDZFODhGNyAvKiBCYXR0ZXJ5Lm1tICov
OyB9OwpAQCAtMjQyMyw2ICsyNDI0LDcgQEAKIAkJQzBCRDY2OUUxMzFEM0NGRjAwRTE4RjJBIC8q
IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlfQnVuZGxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJl
RWFybHlfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBDNUQzQkMx
NDU5OEI2RjAwQTgwMkE2IC8qIEdldEJhY2tpbmdTY2FsZUZhY3Rvci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldEJhY2tpbmdTY2FsZUZhY3Rvci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBDNUQzQkQxNDU5OEI2RjAwQTgwMkE2IC8qIEdl
dEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBHZXRCYWNraW5nU2NhbGVGYWN0b3JfQnVuZGxlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMTA3N0QzMTIzREY3MkVGMDA1MDY2NzEgLyogUHJlZmVyZW5j
ZUNoYW5nZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVm
ZXJlbmNlQ2hhbmdlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0NUNDMEIy
M0RBNUEwRjAwM0E1RUVCIC8qIE1pbWVUeXBlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE1pbWVUeXBlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzE1Q0JCMkYyM0YxRkYxQTAwMzAwQ0M3IC8qIEJhY2tsaWdodExldmVsTm90aWZpY2F0aW9u
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmFja2xpZ2h0TGV2ZWxOb3RpZmljYXRpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxNjkyREM5MjNEMTBEQUUwMDZFODhGNyAv
KiBCYXR0ZXJ5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmF0dGVyeS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NzEsNiArMjg3Myw3IEBACiAJCQkJQzE2OTJEQzkyM0Qx
MERBRTAwNkU4OEY3IC8qIEJhdHRlcnkubW0gKi8sCiAJCQkJRTM5NEFFNkUyM0YyMzAzRTAwNUI0
OTM2IC8qIEdyYW50QWNjZXNzVG9Nb2JpbGVBc3NldHMubW0gKi8sCiAJCQkJQzE0NUNDMEIyM0RB
NUEwRjAwM0E1RUVCIC8qIE1pbWVUeXBlcy5tbSAqLywKKwkJCQlDMTA3N0QzMTIzREY3MkVGMDA1
MDY2NzEgLyogUHJlZmVyZW5jZUNoYW5nZXMubW0gKi8sCiAJCQkJMEYxMzlFNzUxQTQyM0E1MzAw
RjU5MEY1IC8qIFdlYWtPYmpDUHRyLm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBjb2NvYTsKQEAg
LTQ5MjAsNiArNDkyMyw3IEBACiAJCQkJN0NDRTdFQTYxQTQxMUEwRjAwNDQ3QzRDIC8qIFBsYXRm
b3JtVXRpbGl0aWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQTcxQTQxMUExMzAw
NDQ3QzRDIC8qIFBsYXRmb3JtV2ViVmlld01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgzQkFF
RThEMUVGNDYyNTUwMERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gaW4gU291
cmNlcyAqLywKKwkJCQlDMTA3N0QzMjIzREY3MkZDMDA1MDY2NzEgLyogUHJlZmVyZW5jZUNoYW5n
ZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyNjFBNDExQUY2MDA0NDdDNEMgLyogUHJl
ZmVyZW5jZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDIyN0U0NDIxMUE0RDVEMDBEMjg1QUYg
LyogUHJlZmVycmVkQXVkaW9CdWZmZXJTaXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ4RDZD
MTAyMjRCMzc3MDAwRTNFMkZCIC8qIFByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9QcmVmZXJlbmNlQ2hh
bmdlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Q
cmVmZXJlbmNlQ2hhbmdlcy5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9QcmVmZXJlbmNlQ2hhbmdlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdLX0hB
VkVfQ19TUEkKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RX
S1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9QcmVmZXJlbmNlT2JzZXJ2ZXIuaD4KKworc3Rh
dGljIGJvb2wgZG9uZSA9IGZhbHNlOworCitAaW50ZXJmYWNlIFdLVGVzdFByZWZlcmVuY2VPYnNl
cnZlciA6IFdLUHJlZmVyZW5jZU9ic2VydmVyCistICh2b2lkKXByZWZlcmVuY2VEaWRDaGFuZ2U6
KE5TU3RyaW5nICopZG9tYWluIGtleTooTlNTdHJpbmcgKilrZXkgZW5jb2RlZFZhbHVlOihOU1N0
cmluZyAqKWVuY29kZWRWYWx1ZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLVGVzdFByZWZl
cmVuY2VPYnNlcnZlcgorLSAodm9pZClwcmVmZXJlbmNlRGlkQ2hhbmdlOihOU1N0cmluZyAqKWRv
bWFpbiBrZXk6KE5TU3RyaW5nICopa2V5IGVuY29kZWRWYWx1ZTooTlNTdHJpbmcgKillbmNvZGVk
VmFsdWUKK3sKKyAgICBkb25lID0gdHJ1ZTsKK30KK0BlbmQKKworVEVTVChXZWJLaXQsIFByZWZl
cmVuY2VPYnNlcnZlcikKK3sKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBDRlByZWZlcmVuY2Vz
U2V0QXBwVmFsdWUoQ0ZTVFIoInRlc3RrZXkiKSwgQ0ZTVFIoIjEiKSwgQ0ZTVFIoImNvbS5hcHBs
ZS5jb3JlbWVkaWEiKSk7CisKKyAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbW1dLVGVzdFBy
ZWZlcmVuY2VPYnNlcnZlciBhbGxvY10gaW5pdF0pOworCisgICAgQ0ZQcmVmZXJlbmNlc1NldEFw
cFZhbHVlKENGU1RSKCJ0ZXN0a2V5IiksIENGU1RSKCIyIiksIENGU1RSKCJjb20uYXBwbGUuY29y
ZW1lZGlhIikpOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKwor
VEVTVChXZWJLaXQsIFByZWZlcmVuY2VPYnNlcnZlckFycmF5KQoreworICAgIGRvbmUgPSBmYWxz
ZTsKKworICAgIE5TQXJyYXkgKmFycmF5ID0gQFtAMSwgQDIsIEAzXTsKKworICAgIGF1dG8gdXNl
ckRlZmF1bHRzID0gYWRvcHROUyhbW05TVXNlckRlZmF1bHRzIGFsbG9jXSBpbml0V2l0aFN1aXRl
TmFtZTpAImNvbS5hcHBsZS5jb3JlbWVkaWEiXSk7CisgICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBz
ZXRPYmplY3Q6YXJyYXkgZm9yS2V5OkAidGVzdGtleSJdOworCisgICAgYXV0byBvYnNlcnZlciA9
IGFkb3B0TlMoW1tXS1Rlc3RQcmVmZXJlbmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRdKTsKKworICAg
IE5TQXJyYXkgKmNoYW5nZWRBcnJheSA9IEBbQDMsIEAyLCBAMV07CisgICAgW3VzZXJEZWZhdWx0
cy5nZXQoKSBzZXRPYmplY3Q6Y2hhbmdlZEFycmF5IGZvcktleTpAInRlc3RrZXkiXTsKKworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoV2ViS2l0LCBQcmVm
ZXJlbmNlQ2hhbmdlcykKK3sKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoQ0ZTVFIoInRl
c3RrZXkiKSwgQ0ZTVFIoIjEiKSwgQ0ZTVFIoImNvbS5hcHBsZS5jb3JlbWVkaWEiKSk7CisKKyAg
ICBFWFBFQ1RfRVEoMSwgQ0ZQcmVmZXJlbmNlc0dldEFwcEludGVnZXJWYWx1ZShDRlNUUigidGVz
dGtleSIpLCBDRlNUUigiY29tLmFwcGxlLmNvcmVtZWRpYSIpLCBudWxscHRyKSk7CisKKyAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0
V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVz
dCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5kbGVUZXN0IikpOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkucHJvY2Vzc1Bvb2wgPSAoV0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCk7CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpIGFkZFRvV2luZG93OllFU10pOworCisgICAgYXV0byBwcmVmZXJlbmNlVmFsdWUgPSBbJl0g
eworICAgICAgICByZXR1cm4gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
IndpbmRvdy5pbnRlcm5hbHMucmVhZFByZWZlcmVuY2VJbnRlZ2VyKFwiY29tLmFwcGxlLmNvcmVt
ZWRpYVwiLCBcInRlc3RrZXlcIikiXS5pbnRWYWx1ZTsKKyAgICB9OworCisgICAgRVhQRUNUX0VR
KHByZWZlcmVuY2VWYWx1ZSgpLCAxKTsKKworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShD
RlNUUigidGVzdGtleSIpLCBDRlNUUigiMiIpLCBDRlNUUigiY29tLmFwcGxlLmNvcmVtZWRpYSIp
KTsKKworICAgIEVYUEVDVF9FUShwcmVmZXJlbmNlVmFsdWUoKSwgMik7Cit9CisKK1RFU1QoV2Vi
S2l0LCBQcmVmZXJlbmNlQ2hhbmdlc0FycmF5KQoreworICAgIE5TQXJyYXkgKmFycmF5ID0gQFtA
MSwgQDIsIEAzXTsKKworICAgIGF1dG8gdXNlckRlZmF1bHRzID0gYWRvcHROUyhbW05TVXNlckRl
ZmF1bHRzIGFsbG9jXSBpbml0V2l0aFN1aXRlTmFtZTpAImNvbS5hcHBsZS5jb3JlbWVkaWEiXSk7
CisgICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6YXJyYXkgZm9yS2V5OkAidGVzdGtl
eSJdOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNv
bnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmpl
Y3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsKKyAgICBjb25m
aWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0Lmdl
dCgpOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIGF1dG8gcHJlZmVyZW5j
ZVZhbHVlID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJ3aW5kb3cuaW50ZXJuYWxzLmVuY29kZWRQcmVmZXJlbmNlVmFsdWUoXCJj
b20uYXBwbGUuY29yZW1lZGlhXCIsIFwidGVzdGtleVwiKSJdOworICAgIH07CisKKyAgICBwcmVm
ZXJlbmNlVmFsdWUoKTsKKworICAgIE5TQXJyYXkgKmNoYW5nZWRBcnJheSA9IEBbQDMsIEAyLCBA
MV07CisgICAgW3VzZXJEZWZhdWx0cy5nZXQoKSBzZXRPYmplY3Q6Y2hhbmdlZEFycmF5IGZvcktl
eTpAInRlc3RrZXkiXTsKKworICAgIGF1dG8gZW5jb2RlZFN0cmluZyA9IHByZWZlcmVuY2VWYWx1
ZSgpOworICAgIGF1dG8gZW5jb2RlZERhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0
V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6ZW5jb2RlZFN0cmluZyBvcHRpb25zOjBdKTsKKyAgICBB
U1NFUlRfVFJVRShlbmNvZGVkRGF0YSk7CisgICAgTlNFcnJvciAqZXJyID0gbmlsOworICAgIGF1
dG8gb2JqZWN0ID0gcmV0YWluUHRyKFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0
T2ZDbGFzczpbTlNPYmplY3QgY2xhc3NdIGZyb21EYXRhOmVuY29kZWREYXRhLmdldCgpIGVycm9y
OiZlcnJdKTsKKyAgICBBU1NFUlRfVFJVRSghZXJyKTsKKyAgICBBU1NFUlRfVFJVRShvYmplY3Qp
OworICAgIEFTU0VSVF9UUlVFKFtvYmplY3QgaXNFcXVhbDpjaGFuZ2VkQXJyYXldKTsKK30KKwor
I2VuZGlmIC8vIFdLX0hBVkVfQ19TUEkK
</data>
<flag name="review"
          id="406217"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>