<?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>174825</bug_id>
          
          <creation_ts>2017-07-25 11:06:30 -0700</creation_ts>
          <short_desc>ResourceLoadStatistics grandfathering happens much too often</short_desc>
          <delta_ts>2017-07-25 22:44:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit 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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1332008</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-25 11:06:30 -0700</bug_when>
    <thetext>ResourceLoadStatistics grandfathering happens much too often

There&apos;s a few things in play here.

It&apos;s possible to launch a WebKit app without the plist on the filesystem, do the grandfathering, then never have the plist written out to the filesystem. This means grandfathering will happen again and again at every launch.

It&apos;s also bizarre than an app can removeWebsiteData to clear all data types, but then we immediately turn around and try to grandfather data again - Even though there&apos;s definitely none there!

This patch makes the grandfathering much smarter and adds an API test to prove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332009</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-25 11:07:14 -0700</bug_when>
    <thetext>Note: Preventing grandfathering on launch when possible is important because it fires up child processes (Databases, Plugins, etc) and leaves them running. Power/Memory/Time waste.

&lt;rdar://problem/32655834&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332112</commentid>
    <comment_count>2</comment_count>
      <attachid>316395</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-25 15:10:12 -0700</bug_when>
    <thetext>Created attachment 316395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332114</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-25 15:13:02 -0700</bug_when>
    <thetext>Attachment 316395 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:195:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1305:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:130:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332118</commentid>
    <comment_count>4</comment_count>
      <attachid>316395</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-25 15:21:46 -0700</bug_when>
    <thetext>Comment on attachment 316395
Patch

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

&gt; Source/WebKit/UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.cpp:305
&gt; +void ResourceLoadStatisticsPersistentStorage::clearLastStatisticsWriteTime()

It is weird to expose this internal concept outside the class? Why do we need it. I assume want to bypass the throttling? If so, I feel it would be a lot clean to pass a flag to scheduleOrWriteMemoryStore() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332120</commentid>
    <comment_count>5</comment_count>
      <attachid>316397</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-25 15:32:34 -0700</bug_when>
    <thetext>Created attachment 316397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332121</commentid>
    <comment_count>6</comment_count>
      <attachid>316395</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-25 15:33:31 -0700</bug_when>
    <thetext>Comment on attachment 316395
Patch

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

I see you uploaded a new patch, will keep reviewing on the new iteration instead.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:196
&gt; +        WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores(WebResourceLoadStatisticsStore::monitoredDataTypes(), WTFMove(prevalentResourceDomains), m_parameters.shouldNotifyPagesWhenDataRecordsWereScanned, [this, protectedThis = WTFMove(protectedThis)](const HashSet&lt;String&gt;&amp; domainsWithDeletedWebsiteData) mutable {

Do we really need this WebResourceLoadStatisticsStore:: ?

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:266
&gt; +            logTestingEvent(ASCIILiteral(&quot;Grandfathered&quot;));

Technically grandfathering has not necessarily happened at this point. Should this get called at the end of the m_statisticsQueue-&gt;dispatch() block above? By the way, if we moved it the block above, I believe we could always dispatch to the main runloop in logTestingEvent() and add an assertion that it is always called on a background thread.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:847
&gt; +            if (m_statisticsTestingCallback)

Why this check? I don&apos;t think we hurts to make a call even if it is unset.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:107
&gt; +    enum class ShouldGrandfather {

I think it would look better on one line. Also, I feel it would make sense to have No first, and Yes second (Because no is usually 0 and yes is usually 1).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332125</commentid>
    <comment_count>7</comment_count>
      <attachid>316397</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-25 15:47:55 -0700</bug_when>
    <thetext>Comment on attachment 316397
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:493
&gt; +- (void)_setResourceLoadStatisticsTestingCallback:(void (^)(WKWebsiteDataStore *, NSString *))callback

Why doesn&apos;t the call site wait until it has set the callback to actually enable the feature? It seems a bit odd to have an SPI that does 2 things, especially considering we have an SPI to toggle the feature already.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ResourceLoadStatistics.mm:51
&gt; +        EXPECT_TRUE([message isEqualToString:@&quot;Grandfathered&quot;]);

I think this should be ASSERT_TRUE since you set the flag to true below.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ResourceLoadStatistics.mm:90
&gt; +    while (true) {

This code is duplicated from above. It&apos;d be nice to move it to a utility function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332145</commentid>
    <comment_count>8</comment_count>
      <attachid>316397</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-25 16:19:59 -0700</bug_when>
    <thetext>Comment on attachment 316397
Patch

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

Please see my comments on this iteration AND the previous one.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:478
&gt; +    store-&gt;scheduleClearInMemoryAndPersistent(std::chrono::system_clock::now() - std::chrono::hours(hours), WebKit::WebResourceLoadStatisticsStore::ShouldGrandfather::Yes);

ditto.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:493
&gt;&gt; +- (void)_setResourceLoadStatisticsTestingCallback:(void (^)(WKWebsiteDataStore *, NSString *))callback
&gt; 
&gt; Why doesn&apos;t the call site wait until it has set the callback to actually enable the feature? It seems a bit odd to have an SPI that does 2 things, especially considering we have an SPI to toggle the feature already.

Never mind this comment, I missed what enableResourceLoadStatisticsAndSetTestingCallback() was doing.

&gt; Source/WebKit/UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h:53
&gt; +        WriteLater,

I don&apos;t like this naming since we may write immediately even if you pass WriteLater (i.e. if there has been no write in the last 5 minutes).
I suggest enum ShouldForceImmediateWrite { No, Yes }; or similar.

&gt; Source/WebKit/UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h:55
&gt; +    void scheduleOrWriteMemoryStore(WriteTime);

I think the default parameter value should be to not force an immediate write, given that it is the common case. Then some call sites will look shorter.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:72
&gt; +    void initialize();

I don&apos;t like having a separate initialize function.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1098
&gt; +    if (dataTypes.contains(WebsiteDataType::ResourceLoadStatistics) &amp;&amp; m_resourceLoadStatistics) {

This looks duplicated. Can we move to a separate function?

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1321
&gt; +        m_resourceLoadStatistics-&gt;setStatisticsTestingCallback(WTFMove(callback));

I think this could be passed to WebResourceLoadStatisticsStore::create(), with the other lambda. Then we wouldn&apos;t need the initialize() function below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332151</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-25 16:32:05 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Comment on attachment 316397 [details]
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h:55
&gt; &gt; +    void scheduleOrWriteMemoryStore(WriteTime);
&gt; 
&gt; I think the default parameter value should be to not force an immediate
&gt; write, given that it is the common case. Then some call sites will look
&gt; shorter.

There&apos;s only two callsites.

And default arguments are the devil.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332153</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-25 16:32:58 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Comment on attachment 316397 [details]
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:72
&gt; &gt; +    void initialize();
&gt; 
&gt; I don&apos;t like having a separate initialize function.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1098
&gt; &gt; +    if (dataTypes.contains(WebsiteDataType::ResourceLoadStatistics) &amp;&amp; m_resourceLoadStatistics) {
&gt; 
&gt; This looks duplicated. Can we move to a separate function?

Close, but not quite. Don&apos;t want to overload having a time vs not having one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332154</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-25 16:34:54 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1321
&gt; &gt; +        m_resourceLoadStatistics-&gt;setStatisticsTestingCallback(WTFMove(callback));
&gt; 
&gt; I think this could be passed to WebResourceLoadStatisticsStore::create(),
&gt; with the other lambda. Then we wouldn&apos;t need the initialize() function below.

That really makes this code sloppier (Why should WebsiteDataStore have to hold on to a callback it doesn&apos;t need or understand?) but I got the sense on IRC you really want that, so, okay. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332155</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-25 16:36:47 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #11)
&gt; (In reply to Chris Dumez from comment #8)
&gt; &gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1321
&gt; &gt; &gt; +        m_resourceLoadStatistics-&gt;setStatisticsTestingCallback(WTFMove(callback));
&gt; &gt; 
&gt; &gt; I think this could be passed to WebResourceLoadStatisticsStore::create(),
&gt; &gt; with the other lambda. Then we wouldn&apos;t need the initialize() function below.
&gt; 
&gt; That really makes this code sloppier (Why should WebsiteDataStore have to
&gt; hold on to a callback it doesn&apos;t need or understand?) but I got the sense on
&gt; IRC you really want that, so, okay. :)

 I am not suggesting WebsiteDataStore holds on to the callback, just pass it to the StatisticsStore upon creation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332158</commentid>
    <comment_count>13</comment_count>
      <attachid>316406</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-25 16:50:10 -0700</bug_when>
    <thetext>Created attachment 316406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332159</commentid>
    <comment_count>14</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-25 16:52:42 -0700</bug_when>
    <thetext>Attachment 316406 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:129:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:133:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:193:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1305:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:130:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 7 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332162</commentid>
    <comment_count>15</comment_count>
      <attachid>316406</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-25 16:54:25 -0700</bug_when>
    <thetext>Comment on attachment 316406
Patch

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

&gt; Source/WebKit/UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.cpp:282
&gt; +void ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore(enum ForceImmediateWrite forceImmediateWrite)

We don&apos;t need the &quot;enum &quot; here.

&gt; Source/WebKit/UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.cpp:287
&gt; +    if (forceImmediateWrite != ForceImmediateWrite &amp;&amp; timeSinceLastWrite &lt; minimumWriteInterval) {

This looks pretty confusing: forceImmediateWrite != ForceImmediateWrite

&gt; Source/WebKit/UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h:55
&gt; +    enum ForceImmediateWrite {

Why didn&apos;t you keep the enum class?

&gt; Source/WebKit/UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h:59
&gt; +    void scheduleOrWriteMemoryStore(enum ForceImmediateWrite);

don&apos;t need the &quot;enum &quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332163</commentid>
    <comment_count>16</comment_count>
      <attachid>316406</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-25 16:56:44 -0700</bug_when>
    <thetext>Comment on attachment 316406
Patch

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

&gt; Source/WebKit/ChangeLog:39
&gt; +        (WebKit::WebResourceLoadStatisticsStore::initialize): Separated out from the constructor so a callback can be registered

This is outdated.

&gt;&gt; Source/WebKit/UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h:55
&gt;&gt; +    enum ForceImmediateWrite {
&gt; 
&gt; Why didn&apos;t you keep the enum class?

If you don&apos;t want to use an enum class, at least let&apos;s use a better name, like WriteMode maybe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332164</commentid>
    <comment_count>17</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-25 16:58:03 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #15)
&gt; Comment on attachment 316406 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=316406&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.cpp:282
&gt; &gt; +void ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore(enum ForceImmediateWrite forceImmediateWrite)
&gt; 
&gt; We don&apos;t need the &quot;enum &quot; here.

You do! When your enum name and one of the enum values are the same, you have to specify whether you&apos;re referring to the the type or the value with the enum keyword.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.cpp:287
&gt; &gt; +    if (forceImmediateWrite != ForceImmediateWrite &amp;&amp; timeSinceLastWrite &lt; minimumWriteInterval) {
&gt; 
&gt; This looks pretty confusing: forceImmediateWrite != ForceImmediateWrite

If I change it to an enum class it won&apos;t look much better:
forceImmediateWrite != ForceImmediateWrite::Yes

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h:55
&gt; &gt; +    enum ForceImmediateWrite {
&gt; 
&gt; Why didn&apos;t you keep the enum class?

It was not an enum class before!

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Storage/ResourceLoadStatisticsPersistentStorage.h:59
&gt; &gt; +    void scheduleOrWriteMemoryStore(enum ForceImmediateWrite);
&gt; 
&gt; don&apos;t need the &quot;enum &quot;.

Same comment as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332166</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-25 16:58:51 -0700</bug_when>
    <thetext>I&apos;ll make it an enum class, but am letting EWS finish on this version then will land manually</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332172</commentid>
    <comment_count>19</comment_count>
      <attachid>316406</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-25 17:08:04 -0700</bug_when>
    <thetext>Comment on attachment 316406
Patch

For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332183</commentid>
    <comment_count>20</comment_count>
      <attachid>316410</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-25 17:20:11 -0700</bug_when>
    <thetext>Created attachment 316410
Patch to land later after EWS clears this previous one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332254</commentid>
    <comment_count>21</comment_count>
      <attachid>316410</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-25 21:59:13 -0700</bug_when>
    <thetext>Comment on attachment 316410
Patch to land later after EWS clears this previous one

Rejecting attachment 316410 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 316410, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
or: the Git diff contains a binary file without the binary data in line: &quot;Binary files /dev/null and b/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/EmptyGrandfatheredResourceLoadStatistics.plist differ&quot;.  Be sure to use the --binary flag when invoking &quot;git diff&quot; with diffs containing binary files. at /Volumes/Data/EWS/WebKit/Tools/Scripts/VCSUtils.pm line 870, &lt;ARGV&gt; line 654.

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 25 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/4188470</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332256</commentid>
    <comment_count>22</comment_count>
      <attachid>316432</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-25 22:06:19 -0700</bug_when>
    <thetext>Created attachment 316432
Patch w/binary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332258</commentid>
    <comment_count>23</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-25 22:08:27 -0700</bug_when>
    <thetext>Attachment 316432 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:148:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:129:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:133:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:193:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1305:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:130:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 7 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332263</commentid>
    <comment_count>24</comment_count>
      <attachid>316432</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-25 22:44:08 -0700</bug_when>
    <thetext>Comment on attachment 316432
Patch w/binary

Clearing flags on attachment: 316432

Committed r219904: &lt;http://trac.webkit.org/changeset/219904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332264</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-25 22:44:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316395</attachid>
            <date>2017-07-25 15:10:12 -0700</date>
            <delta_ts>2017-07-25 15:33:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174825-20170725151011.patch</filename>
            <type>text/plain</type>
            <size>45577</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5ODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZlYTY4ZTExNTkwNTA3YjRl
ZWUzYzBjODI2NTVmNDhkM2U1ZjNmZjYuLjdmNjNhYzVjYjg0YzdjY2NhZGFkZjJmMTI0ZmYxMTYy
MjJhYzA5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTctMDctMjUgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgZ3JhbmRmYXRoZXJpbmcgaGFwcGVucyBtdWNoIHRvbyBvZnRlbi4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMyNjU1ODM0PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NDgyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGdyYW5kZmF0aGVyaW5nIHByb2NlZHVy
ZSBoYXBwZW5zIHRvbyBvZnRlbi4KKyAgICAgICAgLSBXaXRoIGFuIGVtcHR5IG1lbW9yeSBzdG9y
ZSwgZXZlbiB0aG91Z2ggYW4gZW1wdHkgbWVtb3J5IHN0b3JlIGlzIGEgcGVyZmVjdGx5IHZhbGlk
IHN0YXRlLgorICAgICAgICAtIE9uIGVhY2ggbGF1bmNoLCBldmVuIGlmIGdyYW5kZmF0aGVyaW5n
IGhhcHBlbmVkIG9uIHRoZSBsYXN0IGxhdW5jaCAtIGJlY2F1c2UgZ3JhbmRmYXRoZXJpbmcKKyAg
ICAgICAgICBkYXRhIHdvdWxkIG5vdCBhdXRvbWF0aWNhbGx5IGJlIHNhdmVkIHRvIGRpc2suCisg
ICAgICAgIC0gQWZ0ZXIgY2xlYXJpbmcgYWxsIHdlYnNpdGUgZGF0YSwgYXQgd2hpY2ggcG9pbnQg
bm8gZ3JhbmRmYXRoZXJpbmcgY2FuIHBvc3NpYmx5IGJlIHJlbGV2YW50CisgICAgICAgICAgYmVj
YXVzZSB0aGVyZSBpcyBubyBkYXRhIHRvIGdyYW5kZmF0aGVyLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggZml4ZXMgdGhvc2UgY2FzZXMgYW5kIGFkZHMgQVBJIHRlc3RzIHRvIHZlcmlmeSB0aGV5IHJl
bWFpbiBmaXhlZC4KKworICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5
cGUuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tOgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbFdlYnNpdGVEYXRhVHlwZXNJ
bmNsdWRpbmdQcml2YXRlXSk6IGFsbFdlYnNpdGVEYXRhVHlwZXMsIGJ1dCBldmVuIHdpdGggdGhl
IHByaXZhdGUgb25lcy4KKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZV0pOiBJZiB0aGUgdHlw
ZXMgYmVpbmcgY2xlYXJlZCBjb3ZlciBhbGwgb2YgCisgICAgICAgICAgdGhlIHR5cGVzIHRoYXQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyBjYXJlIGFib3V0LCBkb24ndCBncmFuZGZhdGhlciBhZnRl
cndhcmRzLgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzOl0p
OiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1N0
b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpwb3B1
bGF0ZU1lbW9yeVN0b3JlRnJvbURpc2spOiBEb24ndCBncmFuZGZhdGhlciBpZiB0aGUgc3RvcmUg
cmVhZCBmcm9tIAorICAgICAgICAgIGRpc2sgaXMgZW1wdHkgKGFzIGJlaW5nIGVtcHR5IGlzIHBl
cmZlY3RseSBmaW5lKSwgYW5kIGFsc28gbG9nIHRoZSBldmVudCBvZiAicG9wdWxhdGVkIHdpdGhv
dXQgZ3JhbmRmYXRoZXJpbmciLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2U6OmNsZWFyTGFzdFN0YXRpc3RpY3NXcml0ZVRpbWUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbnNXaXRoV2Vic2l0ZURhdGEpOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
On5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmluaXRpYWxpemUpOiBTZXBhcmF0ZWQgb3V0IGZy
b20gdGhlIGNvbnN0cnVjdG9yIHNvIGEgY2FsbGJhY2sgY2FuIGJlIHJlZ2lzdGVyZWQKKyAgICAg
ICAgICBiZWZvcmUgdGhlIHN0YXRpc3RpY3MgcXVldWUgc3RhcnRzIGRvaW5nIHRoaW5ncy4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRh
UmVjb3Jkcyk6IAorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSk6IFNjaGVkdWxlIGEgd3JpdGUgcmln
aHQgYXdheSBzbyB3ZSBkb24ndCByZS1ncmFuZGZhdGhlcgorICAgICAgICAgIG9uIG5leHQgbGF1
bmNoLCBhbmQgYWxzbyBsb2cgdGhlIGdyYW5kZmF0aGVyaW5nIGV2ZW50LgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQpOiBUYWtlcyBhIFNob3VsZEdyYW5kZmF0aGVyIGZsYWcKKyAgICAgICAg
ICB0byB0ZWxsIHdoZXRoZXIgb3Igbm90IGRhdGEgc2hvdWxkIGJlIHJlLWdyYW5kZmF0aGVyZWQg
YWZ0ZXIgdGhlIHN0b3JlIGlzIGNsZWFyZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVGVzdGluZ0V2ZW50KTogTG9nIHRoZSBldmVudCB0byB0
aGUgdGVzdGluZyBjbGllbnQuCisgICAgICAgIChXZWJLaXQ6OmRhdGFUeXBlc1RvUmVtb3ZlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJl
c291cmNlTG9hZFN0YXRpc3RpY3NBbmRTZXRUZXN0aW5nQ2FsbGJhY2spOiBIYW5kbGVzIGVuYWJs
aW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgYm90aAorICAgICAgICAgIHdpdGggYW5kIHdpdGhv
dXQgYSB0ZXN0aW5nIGNhbGxiYWNrLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMTctMDctMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJFR1JFU1NJT04ocjIx
OTcxMyk6IFtHVEtdW1dQRV0gRml4IGRlZmF1bHQgZmF2aWNvbiBkYXRhYmFzZSBwYXRjaC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlw
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgK
aW5kZXggY2FiODQ1MmFkM2NjYzBkOGE3NjhlZTA0M2EwYzc2N2I4OTJmOGQ0NC4uMzBjYzAzMzEy
NTVmYzc3ZjQ0MWEzZTgyMmYyOGRkZDlhZWQ1YjhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgKQEAgLTQzLDExICs0Myw4IEBA
IGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKICAgICBQbHVnSW5EYXRhID0gMSA8PCAxMSwKICNlbmRpZgotI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCi0gICAgTWVkaWFEZXZpY2VJZGVudGlmaWVyID0gMSA8PCAxMiwKLSNlbmRpZgot
ICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSAxIDw8IDEzLAotICAgIENyZWRlbnRpYWxzID0g
MSA8PCAxNCwKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gMSA8PCAxMiwKKyAgICBDcmVk
ZW50aWFscyA9IDEgPDwgMTMsCiB9OwogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggYWEzYTU2YmQ1
N2E0ZWVhZWE1MDU3ODQxYzQ1ZWUzMjRhMDc1ODRlNS4uNDFiMThkMDYxMmM0OTNiMDg5ZmI2NjNl
MmE1YzczMDA3NjZkNjdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0xNTcsNiArMTU3LDIzIEBAIEBl
bmQKIAogQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZSAoV0tQcml2YXRlKQogCisr
IChOU1NldDxOU1N0cmluZyAqPiAqKV9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0
ZQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBO
U1NldCAqYWxsV2Vic2l0ZURhdGFUeXBlczsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4s
IF4geworICAgICAgICBhdXRvICpwcml2YXRlVHlwZXMgPSBAW19XS1dlYnNpdGVEYXRhVHlwZUhT
VFNDYWNoZSwgX1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzLCBfV0tXZWJzaXRlRGF0YVR5cGVT
ZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzLCBfV0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLCBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscworI2lmICFUQVJHRVRfT1Nf
SVBIT05FCisgICAgICAgICwgX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YQorI2VuZGlmCisg
ICAgICAgIF07CisKKyAgICAgICAgYWxsV2Vic2l0ZURhdGFUeXBlcyA9IFtbW3NlbGYgYWxsV2Vi
c2l0ZURhdGFUeXBlc10gc2V0QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OnByaXZhdGVUeXBlc10g
cmV0YWluXTsKKyAgICB9KTsKKworICAgIHJldHVybiBhbGxXZWJzaXRlRGF0YVR5cGVzOworfQor
CiAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCkBAIC00NDksNyArNDY2LDcgQEAgLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUKICAgICBpZiAoIXN0b3JlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudCgpOworICAgIHN0b3JlLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpTaG91bGRHcmFuZGZhdGhl
cjo6WWVzKTsKIH0KIAogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnM6KHVuc2lnbmVkKWhvdXJzCkBA
IC00NTgsNyArNDc1LDcgQEAgLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMKICAgICBpZiAoIXN0b3Jl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSAtIHN0ZDo6Y2hyb25v
Ojpob3Vycyhob3VycykpOworICAgIHN0b3JlLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpIC0gc3RkOjpjaHJvbm86Omhv
dXJzKGhvdXJzKSwgV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlNob3Vs
ZEdyYW5kZmF0aGVyOjpZZXMpOwogfQogCiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UmVzZXRUb0NvbnNpc3RlbnRTdGF0ZQpAQCAtNDczLDYgKzQ5MCwyMiBAQCAtICh2b2lkKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZQogICAgIHN0b3JlLT5zY2hl
ZHVsZUNsZWFySW5NZW1vcnkoKTsKIH0KIAorLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1Rlc3RpbmdDYWxsYmFjazoodm9pZCAoXikoV0tXZWJzaXRlRGF0YVN0b3JlICosIE5TU3Ry
aW5nICopKWNhbGxiYWNrCit7CisgICAgaWYgKGNhbGxiYWNrKSB7CisgICAgICAgIF93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0FuZFNldFRlc3RpbmdDYWxsYmFjayhbY2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoY2FsbGJhY2sp
LCBzZWxmXShjb25zdCBTdHJpbmcmIGV2ZW50KSB7CisgICAgICAgICAgICBjYWxsYmFjayhzZWxm
LCAoTlNTdHJpbmcgKilldmVudCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzdG9yZS0+c2V0U3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhudWxscHRy
KTsKK30KKwogQGVuZAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
UHJpdmF0ZS5oCmluZGV4IDRlZTZjMTQ1ODQ5MTQ5Njk3ZTcyZGVlMmFlNzU3MmVmMDllYmVhZTIu
LjUwZjYzMGNiYjRmZGM3MDNkYWNjYmVlOTFiZDRjNTBhMjYyZWM5NmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZVByaXZhdGUuaApAQCAtMzcsNiArMzcsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50
ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogCiBAaW50ZXJmYWNlIFdL
V2Vic2l0ZURhdGFTdG9yZSAoV0tQcml2YXRlKQogCisrIChOU1NldDxOU1N0cmluZyAqPiAqKV9h
bGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZTsKKwogLSAoaW5zdGFuY2V0eXBlKV9p
bml0V2l0aENvbmZpZ3VyYXRpb246KF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uICop
Y29uZmlndXJhdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIAogLSAodm9pZClfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0PE5T
U3RyaW5nICo+ICopZGF0YVR5cGVzIHdpdGhPcHRpb25zOihfV0tXZWJzaXRlRGF0YVN0b3JlRmV0
Y2hPcHRpb25zKW9wdGlvbnMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8V0tX
ZWJzaXRlRGF0YVJlY29yZCAqPiAqKSljb21wbGV0aW9uSGFuZGxlcjsKQEAgLTcxLDYgKzczLDcg
QEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRj
aE9wdGlvbnMpIHsKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudFN0b3JlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnM6KHVuc2lnbmVkKWhvdXJz
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
LSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2
b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOihudWxsYWJsZSB2
b2lkICheKShXS1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNTdHJpbmcgKikpY2FsbGJhY2s7CiAKIEBl
bmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3Bw
CmluZGV4IDU4ZWExYWFlMmY5OWRlNTYzOGJmZDNhYWJjNGIzYTQ4ZWY1MDNmODYuLmU5ZDRhYWUy
ZjYzNjZkY2E3N2NjMzdhMDQ1NjRlMzQ1YjVhMzQ1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTIzMyw4ICsyMzMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6cG9wdWxhdGVNZW1vcnlT
dG9yZUZyb21EaXNrKCkKIAogICAgIG1fbGFzdFN0YXRpc3RpY3NGaWxlU3luY1RpbWUgPSByZWFk
VGltZTsKIAotICAgIGlmIChtX21lbW9yeVN0b3JlLmlzRW1wdHkoKSkKLSAgICAgICAgbV9tZW1v
cnlTdG9yZS5ncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoKTsKKyAgICBtX21lbW9yeVN0
b3JlLmxvZ1Rlc3RpbmdFdmVudChBU0NJSUxpdGVyYWwoIlBvcHVsYXRlZFdpdGhvdXRHcmFuZGZh
dGhlcmluZyIpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2U6OndyaXRlTWVtb3J5U3RvcmVUb0Rpc2soKQpAQCAtMzAzLDYgKzMwMiwxMiBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6Y2xlYXIoKQogICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAiUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOiBVbmFibGUgdG8gZGVsZXRlIHN0YXRpc3RpY3Mg
ZmlsZTogJXMiLCBmaWxlUGF0aC51dGY4KCkuZGF0YSgpKTsKIH0KIAordm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OmNsZWFyTGFzdFN0YXRpc3RpY3NXcml0ZVRp
bWUoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG1fbGFzdFN0YXRp
c3RpY3NXcml0ZVRpbWUgPSB7IH07Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlOjpmaW5pc2hBbGxQZW5kaW5nV29ya1N5bmNocm9ub3VzbHkoKQogewog
ICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAppbmRleCBlMzU0NGY1MzViZTBmYzYzMjIxNjMxODBlZDY0
NWYwNzlkNTcwZjczLi42ZWRiNDg2ZThmZTUyODBmMTRhMGZjNGM5ZjVlOThhNWZkYTMzMmVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgKQEAgLTQ2
LDYgKzQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAgIHZvaWQgc2No
ZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoKTsKICAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBj
bGVhckxhc3RTdGF0aXN0aWNzV3JpdGVUaW1lKCk7CiAKICAgICB2b2lkIGZpbmlzaEFsbFBlbmRp
bmdXb3JrU3luY2hyb25vdXNseSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCA0Mjc1MDU2Mjg5MTNhNzQ5MTZhY2VmMzkzZjIwZmY4Yjc5NjAz
YWYwLi41NTYxMTY3YTVhNjNiMDI0NzllNDI0NmIxNjI3ODk3YjY3NGNkZGE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTMyNyw2ICszMjcsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0
aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWIKICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRv
ci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAgIH0pOwogICAgIH0KKworICAgIC8v
IEZJWE1FOiBJdCdzIGJpemFycmUgdGhhdCB0aGlzIGNhbGwgaXMgb24gV2ViUHJvY2Vzc1Byb3h5
IGFuZCB0aGF0IGl0IGRvZXNuJ3Qgd29yayBpZiB0aGVyZSBhcmUgbm8gdmlzaXRlZCBwYWdlcy4K
KyAgICAvLyBUaGlzIHNob3VsZCBhY3R1YWxseSBiZSBhIGZ1bmN0aW9uIG9mIFdlYnNpdGVEYXRh
U3RvcmUgYW5kIGl0IHNob3VsZCB3b3JrIGV2ZW4gaWYgdGhlcmUgYXJlIG5vIFdlYlZpZXdzIGlu
c3RhbmNlcy4KKyAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwogfQogICAg
IAogdm9pZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHNQcm9jZXNzZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggN2U2MTkxMzI1YjQ2NmY5MWRk
ODgzNjEyYmNiMzA3YzdmNjAzMTc4MS4uYjYzODVmMTdlNGVhOTJhNjYzMDE0ZjM4OTI2ODgxNjM5
Nzk0MmM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVk
ZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5j
bHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9LZXllZENvZGluZy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUg
PHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgpAQCAtNTQsMTUgKzUzLDEyIEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgU3RyaW5nIGlzb2xhdGVkUHJpbWFyeURvbWFpbihjb25z
dCBUJiB2YWx1ZSkKICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cHJpbWFyeURv
bWFpbih2YWx1ZSkuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKLXN0YXRpYyBjb25zdCBPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiYgZGF0YVR5cGVzVG9SZW1vdmUoKQorY29uc3QgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4mIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVk
RGF0YVR5cGVzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4+IGRhdGFUeXBlcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8V2Vic2l0ZURhdGFU
eXBlPih7CiAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6Q29va2llcywKICAgICAgICAgV2Vic2l0
ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMsCiAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6
TG9jYWxTdG9yYWdlLAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgICAgIFdlYnNpdGVE
YXRhVHlwZTo6TWVkaWFEZXZpY2VJZGVudGlmaWVyLAotI2VuZGlmCiAgICAgICAgIFdlYnNpdGVE
YXRhVHlwZTo6TWVkaWFLZXlzLAogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJB
cHBsaWNhdGlvbkNhY2hlLAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtMTYw
LDYgKzE1NiwxNSBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmIHJlcwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKTsKICNlbmRpZgorfQorCitXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6On5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUoKQoreworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5pdGlh
bGl6ZSgpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIG1fc3RhdGlz
dGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSB7CiAgICAgICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UuaW5pdGlhbGl6ZSgpOwpAQCAtMTczLDEw
ICsxNzgsNiBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmIHJlcwogCiAgICAgbV9kYWlseVRhc2tzVGlt
ZXIuc3RhcnRSZXBlYXRpbmcoMjRfaCk7CiB9Ci0KLVdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6fldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpCi17Ci19CiAgICAgCiB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlRGF0YVJlY29yZHMoKQogewpA
QCAtMTkyLDcgKzE5Myw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZW1vdmVEYXRhUmVjb3JkcygpCiAgICAgc2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQodHJ1ZSk7
CiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3ByZXZhbGVudFJlc291cmNlRG9tYWlu
cyA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShwcmV2YWxlbnRSZXNv
dXJjZURvbWFpbnMpLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11
dGFibGUgewotICAgICAgICBXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yVG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKGRhdGFU
eXBlc1RvUmVtb3ZlKCksIFdURk1vdmUocHJldmFsZW50UmVzb3VyY2VEb21haW5zKSwgbV9wYXJh
bWV0ZXJzLnNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0oY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAg
IFdlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjptb25pdG9yZWREYXRhVHlwZXMoKSwgV1RGTW92ZShwcmV2YWxlbnRSZXNvdXJj
ZURvbWFpbnMpLCBtX3BhcmFtZXRlcnMuc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNX
ZXJlU2Nhbm5lZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
XShjb25zdCBIYXNoU2V0PFN0cmluZz4mIGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRvcERvbWFpbnMgPSBDcm9z
c1RocmVhZENvcGllcjxIYXNoU2V0PFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNXaXRoRGVsZXRlZFdl
YnNpdGVEYXRhKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBwcmV2
YWxlbnRSZXNvdXJjZURvbWFpbiA6IHRvcERvbWFpbnMpIHsKICAgICAgICAgICAgICAgICAgICAg
YXV0byYgc3RhdGlzdGljID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFp
bihwcmV2YWxlbnRSZXNvdXJjZURvbWFpbik7CkBAIC0yNTAsMTQgKzI1MSwxOSBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVE
YXRhKCkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSBt
dXRhYmxlIHsKLSAgICAgICAgV2ViUHJvY2Vzc1Byb3h5Ojp0b3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWluc1dpdGhXZWJzaXRlRGF0YShkYXRhVHlwZXNUb1JlbW92ZSgpLCBtX3BhcmFtZXRlcnMu
c2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAoSGFzaFNldDxTdHJpbmc+JiYgdG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEpIG11dGFibGUgeworICAg
ICAgICAvLyBGSVhNRTogVGhpcyBtZXRob2QgYmVpbmcgYSBzdGF0aWMgY2FsbCBvbiBXZWJQcm9j
ZXNzUHJveHkgaXMgd3JvbmcuCisgICAgICAgIC8vIEl0IHNob3VsZCBiZSBvbiB0aGUgZGF0YSBz
dG9yZSB0aGF0IHRoaXMgb2JqZWN0IGJlbG9uZ3MgdG8uCisgICAgICAgIFdlYlByb2Nlc3NQcm94
eTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEoV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25pdG9yZWREYXRhVHlwZXMoKSwgbV9wYXJhbWV0ZXJz
LnNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gKEhhc2hTZXQ8U3RyaW5nPiYmIHRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRvcERvbWFpbnMgPSBDcm9zc1RocmVhZENvcGll
cjxIYXNoU2V0PFN0cmluZz4+Ojpjb3B5KHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0
aFdlYnNpdGVEYXRhKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiB0
b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluIDogdG9wRG9tYWlucykgewogICAgICAgICAgICAg
ICAgICAgICBhdXRvJiBzdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pOwogICAgICAgICAgICAgICAg
ICAgICBzdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIG1fZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcCA9IFdhbGxUaW1l
Ojpub3coKSArIG1fcGFyYW1ldGVycy5ncmFuZGZhdGhlcmluZ1RpbWU7CisgICAgICAgICAgICAg
ICAgbV9wZXJzaXN0ZW50U3RvcmFnZS5zY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZSgpOwogICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxvZ1Rlc3RpbmdFdmVudChBU0NJSUxpdGVyYWwo
IkdyYW5kZmF0aGVyZWQiKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtNDgzLDIxICs0
ODksMjUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xl
YXJJbk1lbW9yeSgpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCkKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50KFNob3VsZEdyYW5kZmF0aGVyIHNob3VsZEdyYW5kZmF0aGVyKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICBtX3N0YXRpc3RpY3NRdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2hvdWxk
R3JhbmRmYXRoZXJdIHsKICAgICAgICAgY2xlYXJJbk1lbW9yeSgpOwogICAgICAgICBtX3BlcnNp
c3RlbnRTdG9yYWdlLmNsZWFyKCk7Ci0gICAgICAgIGdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRl
RGF0YSgpOworICAgICAgICAKKyAgICAgICAgaWYgKHNob3VsZEdyYW5kZmF0aGVyID09IFNob3Vs
ZEdyYW5kZmF0aGVyOjpZZXMpIHsKKyAgICAgICAgICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UuY2xl
YXJMYXN0U3RhdGlzdGljc1dyaXRlVGltZSgpOworICAgICAgICAgICAgZ3JhbmRmYXRoZXJFeGlz
dGluZ1dlYnNpdGVEYXRhKCk7CisgICAgICAgIH0KICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnQoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2Rp
ZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlciBzaG91bGRHcmFuZGZhdGhlcikKIHsKICAgICAv
LyBGb3Igbm93LCBiZSBjb25zZXJ2YXRpdmUgYW5kIGNsZWFyIGV2ZXJ5dGhpbmcgcmVnYXJkbGVz
cyBvZiBtb2RpZmllZFNpbmNlLgogICAgIFVOVVNFRF9QQVJBTShtb2RpZmllZFNpbmNlKTsKLSAg
ICBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7CisgICAgc2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudChzaG91bGRHcmFuZGZhdGhlcik7CiB9CiAKIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KFNlY29uZHMgc2Vjb25kcykKQEAgLTgyNCw1ICs4MzQsMjAgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcygpCiB7CiAg
ICAgbV9wYXJhbWV0ZXJzID0geyB9OwogfQotICAgIAorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6bG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnQpCit7Cisg
ICAgaWYgKCFtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChSdW5Mb29wOjppc01haW4oKSkKKyAgICAgICAgbV9zdGF0aXN0aWNzVGVzdGluZ0Nh
bGxiYWNrKGV2ZW50KTsKKyAgICBlbHNlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGV2ZW50ID0gZXZlbnQu
aXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgICAgIGlmIChtX3N0YXRpc3RpY3NUZXN0aW5nQ2Fs
bGJhY2spCisgICAgICAgICAgICAgICAgbV9zdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKGV2ZW50
KTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgKaW5kZXggY2Q1YjUwOTgyMWE2ZWM5NWY1N2YyYzc2ZGRiYzk4ODEyOWNjMWI2Ny4u
NWZlOTBiYjNlZTA3N2M0ZTBiYjczNjA3YjMyZWFlZThmZmU3Njg1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVR5
cGUuaCIKICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNjYsNiArNjcsMTAgQEAgcHVibGlj
OgogCiAgICAgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOwogCisgICAgc3RhdGlj
IGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+JiBtb25pdG9yZWREYXRhVHlwZXMoKTsK
KworICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuaXNFbXB0eSgpOyB9CiAgICAgV29ya1F1ZXVl
JiBzdGF0aXN0aWNzUXVldWUoKSB7IHJldHVybiBtX3N0YXRpc3RpY3NRdWV1ZS5nZXQoKTsgfQog
CkBAIC05OCw4ICsxMDMsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2NoZWR1bGVDb29raWVQYXJ0
aXRpb25pbmdTdGF0ZVJlc2V0KCk7CiAKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeSgp
OwotICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCgpOwotICAgIHZv
aWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOworICAgIAorICAgIGVudW0gY2xhc3Mg
U2hvdWxkR3JhbmRmYXRoZXIgeworICAgICAgICBZZXMsCisgICAgICAgIE5vLAorICAgIH07Cisg
ICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0
aGVyKTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFu
ZGZhdGhlcik7CiAKICAgICB2b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25k
cyk7CiAgICAgdm9pZCBzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzKTsK
QEAgLTExNyw3ICsxMjcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgbWVyZ2VXaXRoRGF0YUZyb21E
ZWNvZGVyKFdlYkNvcmU6OktleWVkRGVjb2RlciYpOwogICAgIHZvaWQgY2xlYXJJbk1lbW9yeSgp
OwogICAgIHZvaWQgZ3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKCk7Ci0gICAgCisKKyAg
ICB2b2lkIHNldFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soRnVuY3Rpb248dm9pZCAoY29uc3Qg
U3RyaW5nJik+JiYgY2FsbGJhY2spIHsgbV9zdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayk7IH0KKyAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcm
KTsKKwogcHJpdmF0ZToKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3Qg
U3RyaW5nJiwgVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXImJik7CiAK
QEAgLTE3OCw2ICsxOTEsOCBAQCBwcml2YXRlOgogICAgIFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJz
OwogCiAgICAgYm9vbCBtX2RhdGFSZWNvcmRzQmVpbmdSZW1vdmVkIHsgZmFsc2UgfTsKKworICAg
IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYpPiBtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJh
Y2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggYzk5
YTIwZTBmYmEyODQxY2ExZGFmMmEyOWI0ZDQ3OGYyMzA2OTM3OC4uNWRkOWEzNTE2MDdmMjM5MGEw
ZDg4YTZjYzk4NGMwMGUxMjM5ZWJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTgxMyw4ICs4MTMs
MTkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+IGRhdGFUeXBlcywgc3RkOjpjaHIKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChk
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KSAmJiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCi0gICAgICAgIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNpbmNl
KTsKKyAgICAvLyBGSVhNRSA8cmRhcjovL3Byb2JsZW0vMzM0OTEyMjI+OyBzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50IGRvZXMgbm90IGhhdmUgYSBjb21wbGV0aW9uIGhhbmRsZXIs
CisgICAgLy8gc28gdGhlIGNvbXBsZXRpb24gaGFuZGxlciBmb3IgdGhpcyByZW1vdmVEYXRhKCkg
Y2FsbCBjYW4gYmUgY2FsbGVkIHByZW1hdHVyZWx5LgorICAgIGlmIChkYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSAmJiBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MpIHsKKyAgICAgICAgYXV0byBkZWxldGVkVHlwZXNSYXcgPSBkYXRhVHlw
ZXMudG9SYXcoKTsKKyAgICAgICAgYXV0byBtb25pdG9yZWRUeXBlc1JhdyA9IFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKCkudG9SYXcoKTsKKworICAg
ICAgICAvLyBJZiB3ZSBhcmUgZGVsZXRpbmcgYWxsIG9mIHRoZSBkYXRhIHR5cGVzIHRoYXQgdGhl
IHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBzdG9yZSBtb25pdG9ycworICAgICAgICAvLyB3ZSBk
byBub3QgbmVlZCB0byByZS1ncmFuZGZhdGhlciBvbGQgZGF0YS4KKyAgICAgICAgaWYgKChtb25p
dG9yZWRUeXBlc1JhdyAmIGRlbGV0ZWRUeXBlc1JhdykgPT0gbW9uaXRvcmVkVHlwZXNSYXcpCisg
ICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQobW9kaWZpZWRTaW5jZSwgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpTaG91bGRHcmFuZGZhdGhlcjo6Tm8pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnQobW9kaWZpZWRTaW5jZSwgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpTaG91bGRH
cmFuZGZhdGhlcjo6WWVzKTsKKyAgICB9CiAKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQg
d2UgZG9uJ3QgaGF2ZSBhbnkgcGVuZGluZyBjYWxsYmFja3MuIElmIHNvLCB3ZSB3YW50IHRvIGRp
c3BhdGNoIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgcmlnaHQgYXdheS4KICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwpAQCAtMTA4Miw4ICsxMDkzLDE5IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRh
VHlwZXMsIGNvbnN0IFZlCiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoZGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykgJiYgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKQotICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKKyAgICAvLyBGSVhNRSA8cmRhcjovL3By
b2JsZW0vMzM0OTEyMjI+OyBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50IGRvZXMg
bm90IGhhdmUgYSBjb21wbGV0aW9uIGhhbmRsZXIsCisgICAgLy8gc28gdGhlIGNvbXBsZXRpb24g
aGFuZGxlciBmb3IgdGhpcyByZW1vdmVEYXRhKCkgY2FsbCBjYW4gYmUgY2FsbGVkIHByZW1hdHVy
ZWx5LgorICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKSAmJiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKKyAgICAgICAg
YXV0byBkZWxldGVkVHlwZXNSYXcgPSBkYXRhVHlwZXMudG9SYXcoKTsKKyAgICAgICAgYXV0byBt
b25pdG9yZWRUeXBlc1JhdyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRv
cmVkRGF0YVR5cGVzKCkudG9SYXcoKTsKKworICAgICAgICAvLyBJZiB3ZSBhcmUgZGVsZXRpbmcg
YWxsIG9mIHRoZSBkYXRhIHR5cGVzIHRoYXQgdGhlIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBz
dG9yZSBtb25pdG9ycworICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byByZS1ncmFuZGZhdGhl
ciBvbGQgZGF0YS4KKyAgICAgICAgaWYgKChtb25pdG9yZWRUeXBlc1JhdyAmIGRlbGV0ZWRUeXBl
c1JhdykgPT0gbW9uaXRvcmVkVHlwZXNSYXcpCisgICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpTaG91bGRHcmFuZGZhdGhlcjo6Tm8pOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnQoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpTaG91bGRH
cmFuZGZhdGhlcjo6WWVzKTsKKyAgICB9CiAKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQg
d2UgZG9uJ3QgaGF2ZSBhbnkgcGVuZGluZyBjYWxsYmFja3MuIElmIHNvLCB3ZSB3YW50IHRvIGRp
c3BhdGNoIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgcmlnaHQgYXdheS4KICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwpAQCAtMTI3MCwxOCArMTI5MiwzOCBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5h
YmxlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGVuYWJsZWQpIHsKKyAgICAgICAgQVNT
RVJUKCFtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpOworICAgICAgICBlbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzQW5kU2V0VGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbnVsbHB0cjsKKyAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgIHByb2Nl
c3NQb29sLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChmYWxzZSk7Cit9CisKK3Zv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0FuZFNldFRl
c3RpbmdDYWxsYmFjayhGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykK
K3sKKyAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSB7CisgICAgICAgIG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+c2V0U3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZiBIQVZFKENGTkVUV09SS19T
VE9SQUdFX1BBUlRJVElPTklORykKLSAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFt0aGlzXSAoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwg
U2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KSB7Ci0gICAgICAgICAgICB1cGRhdGVD
b29raWVQYXJ0aXRpb25pbmdGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoZG9tYWluc1RvUmVt
b3ZlLCBkb21haW5zVG9BZGQsIHNob3VsZENsZWFyRmlyc3QpOwotICAgICAgICB9KTsKKyAgICBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmNyZWF0ZShtX2NvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwg
W3RoaXNdIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmly
c3QpIHsKKyAgICAgICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yVG9wUHJpdmF0ZWx5T3du
ZWREb21haW5zKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBzaG91bGRDbGVhckZpcnN0
KTsKKyAgICB9KTsKICNlbHNlCi0gICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShtX2NvbmZpZ3VyYXRp
b24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CiAjZW5kaWYKLSAgICB9IGVsc2UK
LSAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbnVsbHB0cjsKKworICAgIGlmIChj
YWxsYmFjaykKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRTdGF0aXN0aWNz
VGVzdGluZ0NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+aW5pdGlhbGl6ZSgpOwogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6
IHByb2Nlc3NQb29scygpKQotICAgICAgICBwcm9jZXNzUG9vbC0+c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgIHByb2Nlc3NQb29sLT5zZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCh0cnVlKTsKIH0KIAogRGF0YWJhc2VQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OmRhdGFiYXNlUHJvY2Vzc1BhcmFtZXRlcnMo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCmluZGV4IDI4NjliOWRkMzliMTU5ZTQyZmZkNzQ3OTA4ZDhlYWY0ZDEwZDhk
MmUuLjhlNzc0OWVkMmFkNTFhOTJkYmQyMmNkYjBjMTI0MGFhMGVkYzU4OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKQEAgLTEyNyw2ICsxMjcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRQZW5kaW5nQ29va2ll
KGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpOwogICAgIHZvaWQgcmVtb3ZlUGVuZGluZ0Nvb2tpZShj
b25zdCBXZWJDb3JlOjpDb29raWUmKTsKIAorICAgIHZvaWQgZW5hYmxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0FuZFNldFRlc3RpbmdDYWxsYmFjayhGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcm
KT4mJiBjYWxsYmFjayk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9y
ZShXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoQ29u
ZmlndXJhdGlvbiwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlN2FkZjU5MWZiMzlkMzU3NzljMTc1ZjU0NWFi
MzUyZGRkMWJmYzZmLi5mNTdiN2E4ZjZjMjNmZThhODMwYTBlN2UzYTgwYjNjNmJiNzJiODVkIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTctMDctMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgZ3JhbmRmYXRoZXJpbmcgaGFwcGVucyBt
dWNoIHRvbyBvZnRlbi4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyNjU1ODM0PiBhbmQgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDgyNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5wbGlzdDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbTogQWRkZWQuCisgICAgICAgIChURVNU
KToKKwogMjAxNy0wNy0yNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW1dQRV0gQWRkIGxpYmVwb3h5IHRvIHRoZSBKaGJ1aWxkIG1vZHVsZXNldApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBhYmFjYmFlY2VjMTQ4YTEzOTIxOWJiYjFhYjk4MmFlYjVm
ODFhYTc4Li4xOWFmNTE2ZDY1MzQ0ZjJjZWExNDYwMGZkNDI3ZTFlMjdmYzkwNTA1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTczLDYgKzE3Myw4IEBACiAJCTUxQkNFRTRFMUM4NEY1M0Iw
MDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkNFRTRDMUM4NEY1MkMwMDQy
QzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sICovOyB9OwogCQk1MUJDRUU0RjFD
ODRGNTNCMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0RDFDODRG
NTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCAqLzsgfTsKIAkJNTFD
NjgzREUxRUExMzRFODAwNjUwMTgzIC8qIFdLVVJMU2NoZW1lSGFuZGxlci0xLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDNjgzREQxRUExMzREQjAw
NjUwMTgzIC8qIFdLVVJMU2NoZW1lSGFuZGxlci0xLm1tICovOyB9OworCQk1MUM4RTFBNTFGMjZB
RjRDMDBCRjczMUIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzhFMUE0MUYyNkFDNTQwMEJGNzMxQiAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tICovOyB9OworCQk1MUM4RTFBOTFGMjdGNDk2MDBC
RjczMUIgLyogRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM4
RTFBODFGMjdGNDczMDBCRjczMUIgLyogRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5wbGlzdCAqLzsgfTsKIAkJNTFDRDFDNkMxQjM4Q0U0MzAwMTQyQ0E1IC8qIE1vZGFs
QWxlcnRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFDRDFDNkExQjM4Q0UzNjAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tICovOyB9OwogCQk1MUNE
MUM3MjFCMzhENDg0MDAxNDJDQTUgLyogbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13
aW5kb3cuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUNEMUM3MTFCMzhENDg0MDAxNDJDQTUgLyogbW9kYWwtYWxlcnRzLWluLW5ldy1h
Ym91dC1ibGFuay13aW5kb3cuaHRtbCAqLzsgfTsKIAkJNTFEMTI0OTgxRTc2M0IwMjAwMkIyODIw
IC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFEMTI0OTcxRTc2M0FGODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0
b3JlLm1tICovOyB9OwpAQCAtMzc2LDcgKzM3OCw2IEBACiAJCTdDQ0U3RUMxMUE0MTFBN0UwMDQ0
N0M0QyAvKiBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNEY4RkEzMTU5RDUyQjEwMDJEOUY5NCAvKiBIVE1M
Q29sbGVjdGlvbk5hbWVkSXRlbS5tbSAqLzsgfTsKIAkJN0NDRTdFQzIxQTQxMUE3RTAwNDQ3QzRD
IC8qIEhUTUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjZGQzZCMTU5RDA2MTAwMENDMzc2NSAvKiBIVE1M
Rm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0ubW0gKi87IH07CiAJCTdDQ0U3RUMzMUE0MTFBN0UwMDQ0
N0M0QyAvKiBJbnNwZWN0b3JCYXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNTA3RThBNjE0QzY1NDVCMDA1RDZCM0IgLyogSW5zcGVjdG9yQmFyLm1t
ICovOyB9OwotCQk5NTY0NkU1QjFGMURCNjBFMDBERTBFQjkgLyogSW5zcGVjdG9yVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUzRjQ3OTEx
RjFEQjQwMzAwRTNEMUUzIC8qIEluc3BlY3RvclZhbHVlLmNwcCAqLzsgfTsKIAkJN0NDRTdFQzQx
QTQxMUE3RTAwNDQ3QzRDIC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZyYW1lLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJCNDE2MDExNjgxNUIyNjAw
ODI0MjM4IC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZyYW1lLm1tICovOyB9OwogCQk3Q0NFN0VD
NTFBNDExQTdFMDA0NDdDNEMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2Fk
RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVz
b3VyY2VMb2FkRGVsZWdhdGUubW0gKi87IH07CiAJCTdDQ0U3RUM2MUE0MTFBN0UwMDQ0N0M0QyAv
KiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFN0RGQjE1MTEwRUE2MDBE
MEIwMDggLyogTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tICov
OyB9OwpAQCAtNTEyLDYgKzUxMyw3IEBACiAJCTkzRjU2REE3MUU1RjkxNzQwMDNFREU4NCAvKiBs
aWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0M4M0UwMzMxRDBBNUYyNzAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHlsaWIgKi87
IH07CiAJCTkzRjU2REE5MUU1RjkxOUQwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hvdC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU2REE4MUU1
RjkxODEwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hvdC5tbSAqLzsgfTsKIAkJOTNGN0U4NkYx
NERDOEU1QzAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19C
dW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNGN0U4NkUxNERDOEU1QjAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZyYW1lc19CdW5kbGUuY3BwICovOyB9OworCQk5NTY0NkU1QjFGMURCNjBFMDBERTBFQjkgLyog
SW5zcGVjdG9yVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTUzRjQ3OTExRjFEQjQwMzAwRTNEMUUzIC8qIEluc3BlY3RvclZhbHVlLmNwcCAq
LzsgfTsKIAkJOTk4NEZBQ0MxQ0ZGQUY2MDAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5ODRGQUNB
MUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi87IH07CiAJCTk5ODRG
QUNFMUNGRkIwOTAwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk4NEZBQ0QxQ0ZGQjAzODAw
OEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCAqLzsgfTsKIAkJOUIwNzg2QTUxQzU4ODVDMzAw
RDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwNzg2QTQx
QzU4ODVDMzAwRDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbl9C
dW5kbGUuY3BwICovOyB9OwpAQCAtNzQzLDYgKzc0NSw3IEBACiAJCQlkc3RQYXRoID0gVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0g
KAorCQkJCTUxQzhFMUE5MUYyN0Y0OTYwMEJGNzMxQiAvKiBFbXB0eUdyYW5kZmF0aGVyZWRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0NUI2
M0ZCMUYxOTdGNEEwMDlEMzhCOSAvKiBpbWFnZS1tYXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQlGNDA3RkUzOTFGMUQwREZDMDAxN0NGMjUgLyogZW5vcm1vdXMuc3ZnIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCUY0RDVFNEU4MUYwQzVEMzgwMDhDMUE0OSAvKiBkcmFnc3RhcnQt
Y2xlYXItc2VsZWN0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xMjA5LDYgKzEy
MTIsOCBAQAogCQk1MUJDRUU0QzFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9j
ZXNzLTEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJNdWx0aVBy
b2Nlc3MtMS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNEQxQzg0
RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzY4M0REMUVBMTM0REIwMDY1MDE4MyAvKiBXS1VSTFNj
aGVtZUhhbmRsZXItMS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
ICJXS1VSTFNjaGVtZUhhbmRsZXItMS5tbSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxQzhFMUE0MUYyNkFDNTQwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFDOEUxQTgxRjI3RjQ3MzAwQkY3MzFCIC8qIEVtcHR5R3Jh
bmRmYXRoZXJlZFJlc291cmNlTG9hZFN0YXRpc3RpY3MucGxpc3QgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlLmJwbGlzdDsgcGF0aCA9IEVtcHR5
R3JhbmRmYXRoZXJlZFJlc291cmNlTG9hZFN0YXRpc3RpY3MucGxpc3Q7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxQ0I0QUQ3MUIzQTA3OUMwMEMxQjFDNiAvKiBNb2RhbEFsZXJ0c1NQ
SS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RhbEFsZXJ0c1NQ
SS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0QxQzZBMUIzOENFMzYwMDE0
MkNBNSAvKiBNb2RhbEFsZXJ0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IE1vZGFsQWxlcnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUNE
MUM3MTFCMzhENDg0MDAxNDJDQTUgLyogbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13
aW5kb3cuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdp
bmRvdy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzOTcsNiArMTQwMiw3
IEBACiAJCTkzRjU2REE4MUU1RjkxODEwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hvdC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1NuYXBzaG90
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y3RTg2QjE0REM4RTREMDBDODRB
OTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZyYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjdFODZFMTREQzhF
NUIwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNfQnVuZGxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5NTNGNDc5MTFGMURCNDAzMDBFM0QxRTMgLyogSW5zcGVjdG9yVmFsdWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OTg0RkFDQTFDRkZBRUVFMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3VGV4
dElucHV0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTg0RkFDRDFDRkZCMDM4
MDA4RDE5OEMgLyogZWRpdGFibGUtYm9keS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gImVkaXRhYmxlLWJvZHkuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlC
MDc4NkEyMUM1ODgzMEYwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290
c09wZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRC
dW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE1MzksNyArMTU0NSw2IEBACiAJCUMyQ0Y5NzU5MTZDRUM2OUUwMDU0RTk5RCAvKiBK
U0NvbnRleHRCYWNrRm9yd2FyZENhY2hlMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gSlNDb250ZXh0QmFja0ZvcndhcmRDYWNoZTIuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzJFQjJERDExNkNBQzdBQzAwOUI1MkVFIC8qIFdlYlZpZXdEaWRDcmVhdGVKYXZh
U2NyaXB0Q29udGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYlZpZXdEaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzUwN0U4QTYxNEM2NTQ1QjAwNUQ2QjNCIC8qIEluc3BlY3RvckJhci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluc3BlY3RvckJhci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTUzRjQ3OTExRjFEQjQwMzAwRTNEMUUzIC8q
IEluc3BlY3RvclZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUxMDFDNEUxNzZCOEJCOTAwRUU5QjE1
IC8qIGZpbmRSYW5nZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGZpbmRSYW5n
ZXMuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUxQUZCOTgxNjlGNDlGRjAw
OUNDRjY2IC8qIEZpbmRNYXRjaGVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRmluZE1hdGNoZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1
NDBGNzc1MTUyRTREQTAwMEE0MEM4QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNpbXBsaWZ5TWFya3VwLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTg4OSw2ICsxODk0LDcgQEAKIAkJCQlBMTJEREJGQzFFODM2
RkYxMDBDRjZDQUUgLyogUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zUGx1Z0luLm1tICovLAogCQkJ
CUExMkREQzAxMUU4Mzc0RjUwMENGNkNBRSAvKiBSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQcm90
b2NvbC5oICovLAogCQkJCUNEOUUyOTJCMUM5MEE3MUYwMDBCQjgwMCAvKiBSZXF1aXJlc1VzZXJB
Y3Rpb25Gb3JQbGF5YmFjay5tbSAqLywKKwkJCQk1MUM4RTFBNDFGMjZBQzU0MDBCRjczMUIgLyog
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSAqLywKIAkJCQlBMTgwQzBGOTFFRTY3REYwMDA0NjhG
NDcgLyogUnVuT3BlblBhbmVsLm1tICovLAogCQkJCTM3QkNBNjFCMUI1OTZCQTkwMDIwMTJDQSAv
KiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzSW5OZXdXaW5kb3dBY3Rpb25zLm1tICovLAogCQkJCTJE
OUE1M0FFMUIzMUZBOEQwMDc0RDVBQSAvKiBTaHJpbmtUb0ZpdC5tbSAqLywKQEAgLTIwODUsNiAr
MjA5MSw3IEBACiAJCQkJNTcxNEVDQkMxQ0E4QzIxODAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVz
dE9yaWdpbmFsVVJMMi5odG1sICovLAogCQkJCTU3MTRFQ0JBMUNBOEJGRDEwMDA1MUFDOCAvKiBE
b3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTEZyYW1lLmh0bWwgKi8sCiAJCQkJQTE1NTAyMkIxRTA1
MEJDNTAwQTI0QzU3IC8qIGR1cGxpY2F0ZS1jb21wbGV0aW9uLWhhbmRsZXItY2FsbHMuaHRtbCAq
LywKKwkJCQk1MUM4RTFBODFGMjdGNDczMDBCRjczMUIgLyogRW1wdHlHcmFuZGZhdGhlcmVkUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdCAqLywKIAkJCQk5OTg0RkFDRDFDRkZCMDM4MDA4RDE5
OEMgLyogZWRpdGFibGUtYm9keS5odG1sICovLAogCQkJCUY0MDdGRTM4MUYxRDBERTYwMDE3Q0Yy
NSAvKiBlbm9ybW91cy5zdmcgKi8sCiAJCQkJRjRDMkFCMjExREQ2RDk0MTAwRTA2RDVCIC8qIGVu
b3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCAqLywKQEAgLTMwNjUsNiArMzA3Miw3IEBACiAJ
CQkJN0M4M0UwQkIxRDBBNjUwMDAwRkVCQ0YzIC8qIEZpbmRJblBhZ2UubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0VGNDFBNDExQUU2MDA0NDdDNEMgLyogRmluZE1hdGNoZXMubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzRTA0MDFEMEE2M0UzMDBGRUJDRjMgLyogRmlyc3RSZXNwb25kZXJT
Y3JvbGxpbmdQb3NpdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxQzhFMUE1MUYyNkFGNEMw
MEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M4M0UwQkMxRDBBNjUwNzAwRkVCQ0YzIC8qIEZpeGVkTGF5b3V0U2l6ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdBOTA5QTdFMUQ4Nzc0ODAwMDdFMTBGOCAvKiBGbG9hdFBvaW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdBOTA5QTdGMUQ4Nzc0ODAwMDdFMTBGOCAvKiBGbG9hdFJlY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9FbXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRW1wdHlHcmFuZGZhdGhl
cmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTE0ZWRjNmZhZWM0
YzMyYjUwN2U0ZmFjYzI3MGVjMzBmMjM1YmViCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNDYK
emNtWWMpJGpLfSZGKStCbyRpJlJUJUVyelNtdFQtdGx2dDlQbStxMlNsM0UtdUFlMjs7VXRTRjQy
YlRiYWklVCstCnpmcjJ1cmNgNSNCP25RfXREUVNyJThMMzQ7YEg7LXEpWiZ1Ris9QjQzKVN9fGR7
SmFHVmxwVXxkS0UxVz8oK3ZTbQphNG5ZT2VrZUp4R2JPdGJCV1E1UVJvS1BBQFdkWjxFd2tzX0YK
CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFlNGJhNmRhNDM4NTljNjE1MWZlZDkyZTkzM2NiMGZlNjhlNGQ4MjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLm1tCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9y
dCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFS
ZWNvcmRQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0
ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKwor
VEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBHcmFuZGZhdGhlckNhbGxiYWNrKQoreworICAg
IGF1dG8gKmRhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07
CisgICAgW2RhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6Tk9dOwor
CisgICAgTlNVUkwgKnN0YXRpc3RpY3NEaXJlY3RvcnlVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOltAIn4vTGlicmFyeS9XZWJLaXQvVGVzdFdlYktpdEFQSS9XZWJzaXRlRGF0YS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9y
eTpZRVNdOworICAgIE5TVVJMICpmaWxlVVJMID0gW3N0YXRpc3RpY3NEaXJlY3RvcnlVUkwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZnVsbF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNl
TG9nLnBsaXN0Il07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJ
dGVtQXRVUkw6ZmlsZVVSTCBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnN0YXRpc3RpY3NEaXJlY3RvcnlVUkwgZXJyb3I6bmls
XTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOnN0YXRpc3RpY3NEaXJlY3RvcnlVUkwucGF0aF0pOworCisgICAgc3RhdGlj
IGJvb2wgZG9uZUZsYWc7CisgICAgc3RhdGljIGJvb2wgZ3JhbmRmYXRoZXJlZEZsYWc7CisKKyAg
ICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOl4o
V0tXZWJzaXRlRGF0YVN0b3JlICosIE5TU3RyaW5nICptZXNzYWdlKSB7CisgICAgICAgIEVYUEVD
VF9UUlVFKFttZXNzYWdlIGlzRXF1YWxUb1N0cmluZzpAIkdyYW5kZmF0aGVyZWQiXSk7CisgICAg
ICAgIGdyYW5kZmF0aGVyZWRGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZ3JhbmRmYXRoZXJlZEZsYWcpOworCisgICAgLy8gU3BpbiB0aGUgcnVu
bG9vcCB1bnRpbCB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIGZpbGUgaGFzIHdyaXR0ZW4g
dG8gZGlzay4KKyAgICAvLyBJZiB0aGUgdGVzdCBlbnRlcnMgYSBzcGluIGxvb3AgaGVyZSwgaXQg
aGFzIGZhaWxlZC4KKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAoW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVVUkwucGF0aF0pCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3Ao
MSk7CisgICAgfQorCisgICAgZ3JhbmRmYXRoZXJlZEZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0
b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbFdlYnNpdGVEYXRh
VHlwZXNJbmNsdWRpbmdQcml2YXRlXSAgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0
XSBjb21wbGV0aW9uSGFuZGxlcjpeIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1d
OworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMTApOworCisgICAgLy8gVGhlIHdlYnNpdGUgZGF0
YSBzdG9yZSByZW1vdmUgc2hvdWxkIGhhdmUgY29tcGxldGVkLCBidXQgc2luY2Ugd2UgcmVtb3Zl
ZCBhbGwgb2YgdGhlIGRhdGEgdHlwZXMgdGhhdCBhcmUgbW9uaXRvcmVkIGJ5IHJlc291cmNlIGxv
YWQgc3RhdGlzdGljcywKKyAgICAvLyBubyBncmFuZGZhdGhlcmluZyBjYWxsIHNob3VsZCBoYXZl
IGJlZW4gbWFkZS4KKyAgICBFWFBFQ1RfRkFMU0UoZ3JhbmRmYXRoZXJlZEZsYWcpOworICAgIEVY
UEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6ZmlsZVVSTC5wYXRoXSk7CisKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3Rv
cmUgcmVtb3ZlRGF0YU9mVHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOldLV2Vic2l0ZURhdGFU
eXBlQ29va2llcywgX1dLV2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgbmls
XSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4g
eworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICAvLyBTaW5jZSB3ZSBk
aWQgbm90IHJlbW92ZSBldmVyeSBkYXRhIHR5cGUgY292ZXJlZCBieSByZXNvdXJjZSBsb2FkIHN0
YXRpc3RpY3MsIHdlIGRvIGV4cGVjdCB0aGF0IGdyYW5kZmF0aGVyaW5nIHRvb2sgcGxhY2UgYWdh
aW4uCisgICAgLy8gSWYgdGhlIHRlc3QgaGFuZ3Mgd2FpdGluZyBvbiBlaXRoZXIgb2YgdGhlc2Ug
Y29uZGl0aW9ucywgaXQgaGFzIGZhaWxlZC4KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmdyYW5kZmF0aGVyZWRGbGFnKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVG
bGFnKTsKKworICAgIC8vIFNwaW4gdGhlIHJ1bmxvb3AgdW50aWwgdGhlIHJlc291cmNlIGxvYWQg
c3RhdGlzdGljcyBmaWxlIGhhcyB3cml0dGVuIHRvIGRpc2suCisgICAgLy8gSWYgdGhlIHRlc3Qg
ZW50ZXJzIGEgc3BpbiBsb29wIGhlcmUsIGl0IGhhcyBmYWlsZWQuCisgICAgd2hpbGUgKHRydWUp
IHsKKyAgICAgICAgaWYgKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0
c0F0UGF0aDpmaWxlVVJMLnBhdGhdKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEpOworICAgIH0KK30KKworVEVTVChSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLCBTaG91bGROb3RHcmFuZGZhdGhlck9uU3RhcnR1cCkKK3sKKyAgICBh
dXRvICpkYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOwor
ICAgIFtkYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOk5PXTsKKwor
ICAgIE5TVVJMICpzdGF0aXN0aWNzRGlyZWN0b3J5VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L1Rlc3RXZWJLaXRBUEkvV2Vic2l0ZURhdGEvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6
WUVTXTsKKyAgICBOU1VSTCAqdGFyZ2V0VVJMID0gW3N0YXRpc3RpY3NEaXJlY3RvcnlVUkwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZnVsbF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNl
TG9nLnBsaXN0Il07CisgICAgTlNVUkwgKnRlc3RSZXNvdXJjZVVSTCA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJFbXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzIiB3aXRoRXh0ZW5zaW9uOkAicGxpc3QiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGNyZWF0ZURpcmVjdG9yeUF0VVJMOnN0YXRpc3RpY3NEaXJlY3RvcnlVUkwgd2l0aEludGVybWVk
aWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOworICAgIFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp0ZXN0UmVzb3VyY2VVUkwg
dG9VUkw6dGFyZ2V0VVJMIGVycm9yOm5pbF07CisKKyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6dGFyZ2V0VVJMLnBhdGhdKTsK
KworICAgIHN0YXRpYyBib29sIGNhbGxiYWNrRmxhZzsKKyAgICBbZGF0YVN0b3JlIF9zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOl4oV0tXZWJzaXRlRGF0YVN0b3JlICos
IE5TU3RyaW5nICptZXNzYWdlKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFttZXNzYWdlIGlzRXF1
YWxUb1N0cmluZzpAIlBvcHVsYXRlZFdpdGhvdXRHcmFuZGZhdGhlcmluZyJdKTsKKyAgICAgICAg
Y2FsbGJhY2tGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmY2FsbGJhY2tGbGFnKTsKK30KKyNlbmRpZgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316397</attachid>
            <date>2017-07-25 15:32:34 -0700</date>
            <delta_ts>2017-07-25 16:50:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174825-20170725153233.patch</filename>
            <type>text/plain</type>
            <size>46272</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5ODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZlYTY4ZTExNTkwNTA3YjRl
ZWUzYzBjODI2NTVmNDhkM2U1ZjNmZjYuLjkyMWNiNGE5OWQ4MDEzMWRjYjdlNTBkODA5YTZhNDMy
MjU1ODg3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTctMDctMjUgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgZ3JhbmRmYXRoZXJpbmcgaGFwcGVucyBtdWNoIHRvbyBvZnRlbi4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMyNjU1ODM0PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NDgyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGdyYW5kZmF0aGVyaW5nIHByb2NlZHVy
ZSBoYXBwZW5zIHRvbyBvZnRlbi4KKyAgICAgICAgLSBXaXRoIGFuIGVtcHR5IG1lbW9yeSBzdG9y
ZSwgZXZlbiB0aG91Z2ggYW4gZW1wdHkgbWVtb3J5IHN0b3JlIGlzIGEgcGVyZmVjdGx5IHZhbGlk
IHN0YXRlLgorICAgICAgICAtIE9uIGVhY2ggbGF1bmNoLCBldmVuIGlmIGdyYW5kZmF0aGVyaW5n
IGhhcHBlbmVkIG9uIHRoZSBsYXN0IGxhdW5jaCAtIGJlY2F1c2UgZ3JhbmRmYXRoZXJpbmcKKyAg
ICAgICAgICBkYXRhIHdvdWxkIG5vdCBhdXRvbWF0aWNhbGx5IGJlIHNhdmVkIHRvIGRpc2suCisg
ICAgICAgIC0gQWZ0ZXIgY2xlYXJpbmcgYWxsIHdlYnNpdGUgZGF0YSwgYXQgd2hpY2ggcG9pbnQg
bm8gZ3JhbmRmYXRoZXJpbmcgY2FuIHBvc3NpYmx5IGJlIHJlbGV2YW50CisgICAgICAgICAgYmVj
YXVzZSB0aGVyZSBpcyBubyBkYXRhIHRvIGdyYW5kZmF0aGVyLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggZml4ZXMgdGhvc2UgY2FzZXMgYW5kIGFkZHMgQVBJIHRlc3RzIHRvIHZlcmlmeSB0aGV5IHJl
bWFpbiBmaXhlZC4KKworICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5
cGUuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tOgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbFdlYnNpdGVEYXRhVHlwZXNJ
bmNsdWRpbmdQcml2YXRlXSk6IGFsbFdlYnNpdGVEYXRhVHlwZXMsIGJ1dCBldmVuIHdpdGggdGhl
IHByaXZhdGUgb25lcy4KKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZV0pOiBJZiB0aGUgdHlw
ZXMgYmVpbmcgY2xlYXJlZCBjb3ZlciBhbGwgb2YgCisgICAgICAgICAgdGhlIHR5cGVzIHRoYXQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyBjYXJlIGFib3V0LCBkb24ndCBncmFuZGZhdGhlciBhZnRl
cndhcmRzLgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzOl0p
OiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1N0
b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpwb3B1
bGF0ZU1lbW9yeVN0b3JlRnJvbURpc2spOiBEb24ndCBncmFuZGZhdGhlciBpZiB0aGUgc3RvcmUg
cmVhZCBmcm9tIAorICAgICAgICAgIGRpc2sgaXMgZW1wdHkgKGFzIGJlaW5nIGVtcHR5IGlzIHBl
cmZlY3RseSBmaW5lKSwgYW5kIGFsc28gbG9nIHRoZSBldmVudCBvZiAicG9wdWxhdGVkIHdpdGhv
dXQgZ3JhbmRmYXRoZXJpbmciLgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oOgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEpOgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5
cGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6On5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmluaXRp
YWxpemUpOiBTZXBhcmF0ZWQgb3V0IGZyb20gdGhlIGNvbnN0cnVjdG9yIHNvIGEgY2FsbGJhY2sg
Y2FuIGJlIHJlZ2lzdGVyZWQKKyAgICAgICAgICBiZWZvcmUgdGhlIHN0YXRpc3RpY3MgcXVldWUg
c3RhcnRzIGRvaW5nIHRoaW5ncy4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3Jkcyk6IAorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0
YSk6IFNjaGVkdWxlIGEgd3JpdGUgcmlnaHQgYXdheSBzbyB3ZSBkb24ndCByZS1ncmFuZGZhdGhl
cgorICAgICAgICAgIG9uIG5leHQgbGF1bmNoLCBhbmQgYWxzbyBsb2cgdGhlIGdyYW5kZmF0aGVy
aW5nIGV2ZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOiBUYWtlcyBhIFNob3VsZEdy
YW5kZmF0aGVyIGZsYWcKKyAgICAgICAgICB0byB0ZWxsIHdoZXRoZXIgb3Igbm90IGRhdGEgc2hv
dWxkIGJlIHJlLWdyYW5kZmF0aGVyZWQgYWZ0ZXIgdGhlIHN0b3JlIGlzIGNsZWFyZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVGVzdGluZ0V2
ZW50KTogTG9nIHRoZSBldmVudCB0byB0aGUgdGVzdGluZyBjbGllbnQuCisgICAgICAgIChXZWJL
aXQ6OmRhdGFUeXBlc1RvUmVtb3ZlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OnJlbW92ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NBbmRTZXRUZXN0aW5n
Q2FsbGJhY2spOiBIYW5kbGVzIGVuYWJsaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgYm90aAor
ICAgICAgICAgIHdpdGggYW5kIHdpdGhvdXQgYSB0ZXN0aW5nIGNhbGxiYWNrLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMTctMDctMjMg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIFJFR1JFU1NJT04ocjIxOTcxMyk6IFtHVEtdW1dQRV0gRml4IGRlZmF1bHQgZmF2
aWNvbiBkYXRhYmFzZSBwYXRjaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgKaW5kZXggY2FiODQ1MmFkM2NjYzBkOGE3NjhlZTA0M2Ew
Yzc2N2I4OTJmOGQ0NC4uMzBjYzAzMzEyNTVmYzc3ZjQ0MWEzZTgyMmYyOGRkZDlhZWQ1YjhmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFU
eXBlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFU
eXBlLmgKQEAgLTQzLDExICs0Myw4IEBAIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIHsKICNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBQbHVnSW5EYXRhID0gMSA8PCAxMSwK
ICNlbmRpZgotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgTWVkaWFEZXZpY2VJZGVudGlm
aWVyID0gMSA8PCAxMiwKLSNlbmRpZgotICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSAxIDw8
IDEzLAotICAgIENyZWRlbnRpYWxzID0gMSA8PCAxNCwKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gMSA8PCAxMiwKKyAgICBDcmVkZW50aWFscyA9IDEgPDwgMTMsCiB9OwogCiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW0KaW5kZXggYWEzYTU2YmQ1N2E0ZWVhZWE1MDU3ODQxYzQ1ZWUzMjRhMDc1ODRlNS4u
NDFiMThkMDYxMmM0OTNiMDg5ZmI2NjNlMmE1YzczMDA3NjZkNjdiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CkBAIC0xNTcsNiArMTU3LDIzIEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURh
dGFTdG9yZSAoV0tQcml2YXRlKQogCisrIChOU1NldDxOU1N0cmluZyAqPiAqKV9hbGxXZWJzaXRl
RGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qg
b25jZVRva2VuOworICAgIHN0YXRpYyBOU1NldCAqYWxsV2Vic2l0ZURhdGFUeXBlczsKKyAgICBk
aXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF4geworICAgICAgICBhdXRvICpwcml2YXRlVHlwZXMg
PSBAW19XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSwgX1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFL
ZXlzLCBfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzLCBfV0tXZWJz
aXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBfV0tXZWJzaXRlRGF0YVR5cGVDcmVk
ZW50aWFscworI2lmICFUQVJHRVRfT1NfSVBIT05FCisgICAgICAgICwgX1dLV2Vic2l0ZURhdGFU
eXBlUGx1Z0luRGF0YQorI2VuZGlmCisgICAgICAgIF07CisKKyAgICAgICAgYWxsV2Vic2l0ZURh
dGFUeXBlcyA9IFtbW3NlbGYgYWxsV2Vic2l0ZURhdGFUeXBlc10gc2V0QnlBZGRpbmdPYmplY3Rz
RnJvbUFycmF5OnByaXZhdGVUeXBlc10gcmV0YWluXTsKKyAgICB9KTsKKworICAgIHJldHVybiBh
bGxXZWJzaXRlRGF0YVR5cGVzOworfQorCiAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmln
dXJhdGlvbjooX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9u
CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCkBAIC00NDksNyArNDY2LDcgQEAg
LSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
U3RvcmUKICAgICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+c2No
ZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCgpOworICAgIHN0b3JlLT5zY2hlZHVsZUNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpTaG91bGRHcmFuZGZhdGhlcjo6WWVzKTsKIH0KIAogLSAodm9pZClfcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNl
SG91cnM6KHVuc2lnbmVkKWhvdXJzCkBAIC00NTgsNyArNDc1LDcgQEAgLSAodm9pZClfcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNp
bmNlSG91cnMKICAgICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjpub3coKSAtIHN0ZDo6Y2hyb25vOjpob3Vycyhob3VycykpOworICAgIHN0b3JlLT5zY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
Om5vdygpIC0gc3RkOjpjaHJvbm86OmhvdXJzKGhvdXJzKSwgV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OlNob3VsZEdyYW5kZmF0aGVyOjpZZXMpOwogfQogCiAtICh2b2lk
KV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZQpAQCAtNDczLDYg
KzQ5MCwyMiBAQCAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZQogICAgIHN0b3JlLT5zY2hlZHVsZUNsZWFySW5NZW1vcnkoKTsKIH0KIAorLSAodm9p
ZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazoodm9pZCAoXikoV0tX
ZWJzaXRlRGF0YVN0b3JlICosIE5TU3RyaW5nICopKWNhbGxiYWNrCit7CisgICAgaWYgKGNhbGxi
YWNrKSB7CisgICAgICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZW5h
YmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0FuZFNldFRlc3RpbmdDYWxsYmFjayhbY2FsbGJhY2sg
PSBtYWtlQmxvY2tQdHIoY2FsbGJhY2spLCBzZWxmXShjb25zdCBTdHJpbmcmIGV2ZW50KSB7Cisg
ICAgICAgICAgICBjYWxsYmFjayhzZWxmLCAoTlNTdHJpbmcgKilldmVudCk7CisgICAgICAgIH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAg
ICBpZiAoIXN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdG9yZS0+c2V0U3RhdGlzdGlj
c1Rlc3RpbmdDYWxsYmFjayhudWxscHRyKTsKK30KKwogQGVuZAogCiAjZW5kaWYgLy8gV0tfQVBJ
X0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDRlZTZjMTQ1ODQ5MTQ5Njk3
ZTcyZGVlMmFlNzU3MmVmMDllYmVhZTIuLjUwZjYzMGNiYjRmZGM3MDNkYWNjYmVlOTFiZDRjNTBh
MjYyZWM5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtMzcsNiArMzcsOCBAQCB0
eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0
aW9ucykgewogCiBAaW50ZXJmYWNlIFdLV2Vic2l0ZURhdGFTdG9yZSAoV0tQcml2YXRlKQogCisr
IChOU1NldDxOU1N0cmluZyAqPiAqKV9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0
ZTsKKwogLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRpb246KF9XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLSAodm9pZClfZmV0Y2hEYXRh
UmVjb3Jkc09mVHlwZXM6KE5TU2V0PE5TU3RyaW5nICo+ICopZGF0YVR5cGVzIHdpdGhPcHRpb25z
OihfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKW9wdGlvbnMgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqKSljb21wbGV0aW9u
SGFuZGxlcjsKQEAgLTcxLDYgKzczLDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIs
IF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIC0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNp
bmNlSG91cnM6KHVuc2lnbmVkKWhvdXJzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jl
c2V0VG9Db25zaXN0ZW50U3RhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVz
dGluZ0NhbGxiYWNrOihudWxsYWJsZSB2b2lkICheKShXS1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNT
dHJpbmcgKikpY2FsbGJhY2s7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCmluZGV4IDU4ZWExYWFlMmY5OWRlNTYzOGJmZDNhYWJj
NGIzYTQ4ZWY1MDNmODYuLjkxZjBmMzVkNDA4ZDIxYTU4ODdiMDU1ZjE4Njc2ZGRmMjk5MzU4YmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAK
QEAgLTIzMyw4ICsyMzMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZTo6cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKCkKIAogICAgIG1fbGFzdFN0YXRp
c3RpY3NGaWxlU3luY1RpbWUgPSByZWFkVGltZTsKIAotICAgIGlmIChtX21lbW9yeVN0b3JlLmlz
RW1wdHkoKSkKLSAgICAgICAgbV9tZW1vcnlTdG9yZS5ncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0
ZURhdGEoKTsKKyAgICBtX21lbW9yeVN0b3JlLmxvZ1Rlc3RpbmdFdmVudChBU0NJSUxpdGVyYWwo
IlBvcHVsYXRlZFdpdGhvdXRHcmFuZGZhdGhlcmluZyIpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OndyaXRlTWVtb3J5U3RvcmVUb0Rpc2soKQpA
QCAtMjcxLDEyICsyNzAsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2U6OndyaXRlTWVtb3J5U3RvcmVUb0Rpc2soKQogICAgIHN0YXJ0TW9uaXRvcmluZ0Rp
c2soKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6
OnNjaGVkdWxlT3JXcml0ZU1lbW9yeVN0b3JlKCkKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlOjpzY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZShXcml0ZVRpbWUg
d3JpdGVUaW1lKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgYXV0
byB0aW1lU2luY2VMYXN0V3JpdGUgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFN0YXRp
c3RpY3NXcml0ZVRpbWU7Ci0gICAgaWYgKHRpbWVTaW5jZUxhc3RXcml0ZSA8IG1pbmltdW1Xcml0
ZUludGVydmFsKSB7CisgICAgaWYgKHdyaXRlVGltZSA9PSBXcml0ZUxhdGVyICYmIHRpbWVTaW5j
ZUxhc3RXcml0ZSA8IG1pbmltdW1Xcml0ZUludGVydmFsKSB7CiAgICAgICAgIGlmICghbV9oYXNQ
ZW5kaW5nV3JpdGUpIHsKICAgICAgICAgICAgIG1faGFzUGVuZGluZ1dyaXRlID0gdHJ1ZTsKICAg
ICAgICAgICAgIFNlY29uZHMgZGVsYXkgPSBtaW5pbXVtV3JpdGVJbnRlcnZhbCAtIHRpbWVTaW5j
ZUxhc3RXcml0ZSArIDFfczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0
b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZS5oCmluZGV4IGUzNTQ0ZjUzNWJlMGZjNjMyMjE2MzE4MGVkNjQ1ZjA3OWQ1NzBmNzMu
Ljc0MzlmNmRjMjY5NGM1OWExYjI0NjcyY2I2MTRkZWYwYWM0MzdiZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaApAQCAtNDQsMTEgKzQ0LDE2IEBA
IHB1YmxpYzoKICAgICB+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKCk7
CiAKICAgICB2b2lkIGluaXRpYWxpemUoKTsKLSAgICB2b2lkIHNjaGVkdWxlT3JXcml0ZU1lbW9y
eVN0b3JlKCk7CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgdm9pZCBmaW5pc2hBbGxQZW5kaW5n
V29ya1N5bmNocm9ub3VzbHkoKTsKIAorICAgIGVudW0gV3JpdGVUaW1lIHsKKyAgICAgICAgV3Jp
dGVOb3csCisgICAgICAgIFdyaXRlTGF0ZXIsCisgICAgfTsKKyAgICB2b2lkIHNjaGVkdWxlT3JX
cml0ZU1lbW9yeVN0b3JlKFdyaXRlVGltZSk7CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIHN0b3Jh
Z2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CiAgICAgU3RyaW5nIHJlc291cmNlTG9nRmlsZVBhdGgo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IDQyNzUwNTYyODkxM2E3NDkxNmFjZWYzOTNmMjBmZjhiNzk2MDNhZjAuLjU1NjExNjdhNWE2
M2IwMjQ3OWU0MjQ2YjE2Mjc4OTdiNjc0Y2RkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzI3LDYgKzMyNywxMCBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEoT3B0
aW9uU2V0PFdlYgogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5n
Q2FsbGJhY2soKTsKICAgICAgICAgfSk7CiAgICAgfQorCisgICAgLy8gRklYTUU6IEl0J3MgYml6
YXJyZSB0aGF0IHRoaXMgY2FsbCBpcyBvbiBXZWJQcm9jZXNzUHJveHkgYW5kIHRoYXQgaXQgZG9l
c24ndCB3b3JrIGlmIHRoZXJlIGFyZSBubyB2aXNpdGVkIHBhZ2VzLgorICAgIC8vIFRoaXMgc2hv
dWxkIGFjdHVhbGx5IGJlIGEgZnVuY3Rpb24gb2YgV2Vic2l0ZURhdGFTdG9yZSBhbmQgaXQgc2hv
dWxkIHdvcmsgZXZlbiBpZiB0aGVyZSBhcmUgbm8gV2ViVmlld3MgaW5zdGFuY2VzLgorICAgIGNh
bGxiYWNrQWdncmVnYXRvci0+Y2FsbElmTmVlZGVkKCk7CiB9CiAgICAgCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcAppbmRleCA3ZTYxOTEzMjViNDY2ZjkxZGQ4ODM2MTJiY2IzMDdjN2Y2
MDMxNzgxLi4wNzM5NjE2ZjY2MTZhMTQxZDY4YTc0MmRlNzZkNGJmZDJjMjRmY2U4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlv
bi5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0
YVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFk
Q29waWVyLmg+CkBAIC01NCwxNSArNTMsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGlj
IGlubGluZSBTdHJpbmcgaXNvbGF0ZWRQcmltYXJ5RG9tYWluKGNvbnN0IFQmIHZhbHVlKQogICAg
IHJldHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpwcmltYXJ5RG9tYWluKHZhbHVlKS5pc29s
YXRlZENvcHkoKTsKIH0KIAotc3RhdGljIGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
JiBkYXRhVHlwZXNUb1JlbW92ZSgpCitjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiYg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25pdG9yZWREYXRhVHlwZXMoKQogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPj4gZGF0
YVR5cGVzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxXZWJzaXRlRGF0YVR5cGU+KHsKICAgICAgICAg
V2Vic2l0ZURhdGFUeXBlOjpDb29raWVzLAogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OkluZGV4
ZWREQkRhdGFiYXNlcywKICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsCi0j
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpNZWRpYURl
dmljZUlkZW50aWZpZXIsCi0jZW5kaWYKICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpNZWRpYUtl
eXMsCiAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUs
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xNjAsNiArMTU2LDE1IEBAIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlKGNvbnN0IFN0cmluZyYgcmVzCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgcmVnaXN0ZXJV
c2VyRGVmYXVsdHNJZk5lZWRlZCgpOwogI2VuZGlmCit9CisKK1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6fldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpCit7Cit9CisKK3Zv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppbml0aWFsaXplKCkKK3sKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgbV9w
ZXJzaXN0ZW50U3RvcmFnZS5pbml0aWFsaXplKCk7CkBAIC0xNzMsMTAgKzE3OCw2IEBAIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
KGNvbnN0IFN0cmluZyYgcmVzCiAKICAgICBtX2RhaWx5VGFza3NUaW1lci5zdGFydFJlcGVhdGlu
ZygyNF9oKTsKIH0KLQotV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlKCkKLXsKLX0KICAgICAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3JkcygpCiB7CkBAIC0xOTIsNyArMTkzLDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRz
KCkKICAgICBzZXREYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZCh0cnVlKTsKIAogICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJldmFsZW50UmVzb3VyY2VEb21haW5zID0gQ3Jvc3NUaHJlYWRD
b3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KHByZXZhbGVudFJlc291cmNlRG9tYWlucyksIHRo
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAg
IFdlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoZGF0YVR5cGVzVG9SZW1vdmUoKSwg
V1RGTW92ZShwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMpLCBtX3BhcmFtZXRlcnMuc2hvdWxkTm90
aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXShjb25zdCBIYXNoU2V0PFN0cmluZz4mIGRvbWFpbnNX
aXRoRGVsZXRlZFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5
OjpkZWxldGVXZWJzaXRlRGF0YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zSW5BbGxQ
ZXJzaXN0ZW50RGF0YVN0b3JlcyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0
b3JlZERhdGFUeXBlcygpLCBXVEZNb3ZlKHByZXZhbGVudFJlc291cmNlRG9tYWlucyksIG1fcGFy
YW1ldGVycy5zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldKGNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgZG9tYWluc1dpdGhEZWxldGVkV2Vic2l0ZURhdGEpIG11dGFibGUgewogICAgICAg
ICAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdG9wRG9tYWlucyA9IENyb3NzVGhyZWFkQ29waWVyPEhh
c2hTZXQ8U3RyaW5nPj46OmNvcHkoZG9tYWluc1dpdGhEZWxldGVkV2Vic2l0ZURhdGEpXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHByZXZhbGVudFJlc291cmNlRG9t
YWluIDogdG9wRG9tYWlucykgewogICAgICAgICAgICAgICAgICAgICBhdXRvJiBzdGF0aXN0aWMg
PSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByZXZhbGVudFJlc291
cmNlRG9tYWluKTsKQEAgLTIzMiw3ICsyMzMsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpCiAgICAgICAgIH0p
OwogICAgIH0KIAotICAgIG1fcGVyc2lzdGVudFN0b3JhZ2Uuc2NoZWR1bGVPcldyaXRlTWVtb3J5
U3RvcmUoKTsKKyAgICBtX3BlcnNpc3RlbnRTdG9yYWdlLnNjaGVkdWxlT3JXcml0ZU1lbW9yeVN0
b3JlKFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6V3JpdGVMYXRlcik7
CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4m
JiBvcmlnaW5zKQpAQCAtMjUwLDE0ICsyNTEsMTkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSgpCiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAg
IFdlYlByb2Nlc3NQcm94eTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0
ZURhdGEoZGF0YVR5cGVzVG9SZW1vdmUoKSwgbV9wYXJhbWV0ZXJzLnNob3VsZE5vdGlmeVBhZ2Vz
V2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKV0gKEhhc2hTZXQ8U3RyaW5nPiYmIHRvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW5zV2l0aFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgLy8gRklYTUU6IFRo
aXMgbWV0aG9kIGJlaW5nIGEgc3RhdGljIGNhbGwgb24gV2ViUHJvY2Vzc1Byb3h5IGlzIHdyb25n
LgorICAgICAgICAvLyBJdCBzaG91bGQgYmUgb24gdGhlIGRhdGEgc3RvcmUgdGhhdCB0aGlzIG9i
amVjdCBiZWxvbmdzIHRvLgorICAgICAgICBXZWJQcm9jZXNzUHJveHk6OnRvcFByaXZhdGVseUNv
bnRyb2xsZWREb21haW5zV2l0aFdlYnNpdGVEYXRhKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKCksIG1fcGFyYW1ldGVycy5zaG91bGROb3RpZnlQYWdl
c1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyldIChIYXNoU2V0PFN0cmluZz4mJiB0b3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBtX3N0YXRp
c3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCB0b3BEb21haW5zID0gQ3Jvc3NUaHJlYWRDb3BpZXI8SGFzaFNldDxTdHJpbmc+
Pjo6Y29weSh0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YSldICgp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgdG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbiA6IHRvcERvbWFpbnMpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgc3Rh
dGlzdGljID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluKTsKICAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljLmdy
YW5kZmF0aGVyZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBt
X2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAgPSBXYWxsVGltZTo6bm93KCkgKyBtX3BhcmFt
ZXRlcnMuZ3JhbmRmYXRoZXJpbmdUaW1lOworICAgICAgICAgICAgICAgIG1fcGVyc2lzdGVudFN0
b3JhZ2Uuc2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlOjpXcml0ZU5vdyk7CiAgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgbG9nVGVzdGluZ0V2ZW50KEFTQ0lJTGl0ZXJhbCgiR3JhbmRmYXRoZXJlZCIpKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CkBAIC00ODMsMjEgKzQ4OSwyMyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5KCkKICAgICB9KTsKIH0K
IAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnQoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXIgc2hv
dWxkR3JhbmRmYXRoZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBt
X3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0geworICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzaG91bGRHcmFuZGZhdGhlcl0gewogICAgICAgICBj
bGVhckluTWVtb3J5KCk7CiAgICAgICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UuY2xlYXIoKTsKLSAg
ICAgICAgZ3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKCk7CisgICAgICAgIAorICAgICAg
ICBpZiAoc2hvdWxkR3JhbmRmYXRoZXIgPT0gU2hvdWxkR3JhbmRmYXRoZXI6OlllcykKKyAgICAg
ICAgICAgIGdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSgpOwogICAgIH0pOwogfQogCi12
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlm
aWVkU2luY2UpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVD
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyIHNob3VsZEdyYW5kZmF0aGVy
KQogewogICAgIC8vIEZvciBub3csIGJlIGNvbnNlcnZhdGl2ZSBhbmQgY2xlYXIgZXZlcnl0aGlu
ZyByZWdhcmRsZXNzIG9mIG1vZGlmaWVkU2luY2UuCiAgICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVk
U2luY2UpOwotICAgIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKKyAgICBz
Y2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KHNob3VsZEdyYW5kZmF0aGVyKTsKIH0K
IAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRpbWVUb0xpdmVVc2Vy
SW50ZXJhY3Rpb24oU2Vjb25kcyBzZWNvbmRzKQpAQCAtODI0LDUgKzgzMiwyMCBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFs
dWVzKCkKIHsKICAgICBtX3BhcmFtZXRlcnMgPSB7IH07CiB9Ci0gICAgCisKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJiBl
dmVudCkKK3sKKyAgICBpZiAoIW1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaykKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigpKQorICAgICAgICBtX3N0YXRpc3Rp
Y3NUZXN0aW5nQ2FsbGJhY2soZXZlbnQpOworICAgIGVsc2UgeworICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZXZl
bnQgPSBldmVudC5pc29sYXRlZENvcHkoKV0geworICAgICAgICAgICAgaWYgKG1fc3RhdGlzdGlj
c1Rlc3RpbmdDYWxsYmFjaykKKyAgICAgICAgICAgICAgICBtX3N0YXRpc3RpY3NUZXN0aW5nQ2Fs
bGJhY2soZXZlbnQpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBjZDViNTA5ODIxYTZlYzk1ZjU3ZjJjNzZkZGJjOTg4
MTI5Y2MxYjY3Li41ZmU5MGJiM2VlMDc3YzRlMGJiNzM2MDdiMzJlYWVlOGZmZTc2ODU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oIgogI2luY2x1ZGUg
IlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oIgorI2luY2x1ZGUgIldl
YnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC02Niw2ICs2Nywx
MCBAQCBwdWJsaWM6CiAKICAgICB+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCk7CiAK
KyAgICBzdGF0aWMgY29uc3QgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4mIG1vbml0b3JlZERh
dGFUeXBlcygpOworCisgICAgdm9pZCBpbml0aWFsaXplKCk7CisKICAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCk7IH0KICAg
ICBXb3JrUXVldWUmIHN0YXRpc3RpY3NRdWV1ZSgpIHsgcmV0dXJuIG1fc3RhdGlzdGljc1F1ZXVl
LmdldCgpOyB9CiAKQEAgLTk4LDggKzEwMywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVs
ZUNvb2tpZVBhcnRpdGlvbmluZ1N0YXRlUmVzZXQoKTsKIAogICAgIHZvaWQgc2NoZWR1bGVDbGVh
ckluTWVtb3J5KCk7Ci0gICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
KCk7Ci0gICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7CisgICAgCisgICAg
ZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlciB7CisgICAgICAgIFllcywKKyAgICAgICAgTm8s
CisgICAgfTsKKyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hv
dWxkR3JhbmRmYXRoZXIpOworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2Us
IFNob3VsZEdyYW5kZmF0aGVyKTsKIAogICAgIHZvaWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbihTZWNvbmRzKTsKICAgICB2b2lkIHNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVl
KFNlY29uZHMpOwpAQCAtMTE3LDcgKzEyNywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtZXJnZVdp
dGhEYXRhRnJvbURlY29kZXIoV2ViQ29yZTo6S2V5ZWREZWNvZGVyJik7CiAgICAgdm9pZCBjbGVh
ckluTWVtb3J5KCk7CiAgICAgdm9pZCBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoKTsK
LSAgICAKKworICAgIHZvaWQgc2V0U3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykgeyBtX3N0YXRpc3RpY3NUZXN0aW5nQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQorICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNv
bnN0IFN0cmluZyYpOworCiBwcml2YXRlOgogICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZShjb25zdCBTdHJpbmcmLCBVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFu
ZGxlciYmKTsKIApAQCAtMTc4LDYgKzE5MSw4IEBAIHByaXZhdGU6CiAgICAgUGFyYW1ldGVycyBt
X3BhcmFtZXRlcnM7CiAKICAgICBib29sIG1fZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQgeyBmYWxz
ZSB9OworCisgICAgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+IG1fc3RhdGlzdGljc1Rl
c3RpbmdDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAppbmRleCBjOTlhMjBlMGZiYTI4NDFjYTFkYWYyYTI5YjRkNDc4ZjIzMDY5Mzc4Li41ZGQ5YTM1
MTYwN2YyMzkwYTBkODhhNmNjOTg0YzAwZTEyMzllYmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAt
ODEzLDggKzgxMywxOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBzdGQ6OmNocgogICAgIH0KICNlbmRpZgog
Ci0gICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3MpICYmIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykKLSAgICAgICAgbV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KG1v
ZGlmaWVkU2luY2UpOworICAgIC8vIEZJWE1FIDxyZGFyOi8vcHJvYmxlbS8zMzQ5MTIyMj47IHNj
aGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQgZG9lcyBub3QgaGF2ZSBhIGNvbXBsZXRp
b24gaGFuZGxlciwKKyAgICAvLyBzbyB0aGUgY29tcGxldGlvbiBoYW5kbGVyIGZvciB0aGlzIHJl
bW92ZURhdGEoKSBjYWxsIGNhbiBiZSBjYWxsZWQgcHJlbWF0dXJlbHkuCisgICAgaWYgKGRhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MpICYm
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykgeworICAgICAgICBhdXRvIGRlbGV0ZWRUeXBlc1Jh
dyA9IGRhdGFUeXBlcy50b1JhdygpOworICAgICAgICBhdXRvIG1vbml0b3JlZFR5cGVzUmF3ID0g
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25pdG9yZWREYXRhVHlwZXMoKS50b1Jh
dygpOworCisgICAgICAgIC8vIElmIHdlIGFyZSBkZWxldGluZyBhbGwgb2YgdGhlIGRhdGEgdHlw
ZXMgdGhhdCB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIHN0b3JlIG1vbml0b3JzCisgICAg
ICAgIC8vIHdlIGRvIG5vdCBuZWVkIHRvIHJlLWdyYW5kZmF0aGVyIG9sZCBkYXRhLgorICAgICAg
ICBpZiAoKG1vbml0b3JlZFR5cGVzUmF3ICYgZGVsZXRlZFR5cGVzUmF3KSA9PSBtb25pdG9yZWRU
eXBlc1JhdykKKyAgICAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVD
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNpbmNlLCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OlNob3VsZEdyYW5kZmF0aGVyOjpObyk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChtb2RpZmllZFNpbmNlLCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OlNob3VsZEdyYW5kZmF0aGVyOjpZZXMpOworICAgIH0KIAogICAgIC8vIFRoZXJlJ3MgYSBj
aGFuY2UgdGhhdCB3ZSBkb24ndCBoYXZlIGFueSBwZW5kaW5nIGNhbGxiYWNrcy4gSWYgc28sIHdl
IHdhbnQgdG8gZGlzcGF0Y2ggdGhlIGNvbXBsZXRpb24gaGFuZGxlciByaWdodCBhd2F5LgogICAg
IGNhbGxiYWNrQWdncmVnYXRvci0+Y2FsbElmTmVlZGVkKCk7CkBAIC0xMDgyLDggKzEwOTMsMTkg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmUKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChkYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSAm
JiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCi0gICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCgpOworICAgIC8vIEZJWE1F
IDxyZGFyOi8vcHJvYmxlbS8zMzQ5MTIyMj47IHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnQgZG9lcyBub3QgaGF2ZSBhIGNvbXBsZXRpb24gaGFuZGxlciwKKyAgICAvLyBzbyB0aGUg
Y29tcGxldGlvbiBoYW5kbGVyIGZvciB0aGlzIHJlbW92ZURhdGEoKSBjYWxsIGNhbiBiZSBjYWxs
ZWQgcHJlbWF0dXJlbHkuCisgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MpICYmIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykg
eworICAgICAgICBhdXRvIGRlbGV0ZWRUeXBlc1JhdyA9IGRhdGFUeXBlcy50b1JhdygpOworICAg
ICAgICBhdXRvIG1vbml0b3JlZFR5cGVzUmF3ID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjptb25pdG9yZWREYXRhVHlwZXMoKS50b1JhdygpOworCisgICAgICAgIC8vIElmIHdlIGFy
ZSBkZWxldGluZyBhbGwgb2YgdGhlIGRhdGEgdHlwZXMgdGhhdCB0aGUgcmVzb3VyY2UgbG9hZCBz
dGF0aXN0aWNzIHN0b3JlIG1vbml0b3JzCisgICAgICAgIC8vIHdlIGRvIG5vdCBuZWVkIHRvIHJl
LWdyYW5kZmF0aGVyIG9sZCBkYXRhLgorICAgICAgICBpZiAoKG1vbml0b3JlZFR5cGVzUmF3ICYg
ZGVsZXRlZFR5cGVzUmF3KSA9PSBtb25pdG9yZWRUeXBlc1JhdykKKyAgICAgICAgICAgIG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlNob3VsZEdyYW5kZmF0aGVyOjpObyk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OlNob3VsZEdyYW5kZmF0aGVyOjpZZXMpOworICAgIH0KIAogICAgIC8vIFRoZXJlJ3MgYSBj
aGFuY2UgdGhhdCB3ZSBkb24ndCBoYXZlIGFueSBwZW5kaW5nIGNhbGxiYWNrcy4gSWYgc28sIHdl
IHdhbnQgdG8gZGlzcGF0Y2ggdGhlIGNvbXBsZXRpb24gaGFuZGxlciByaWdodCBhd2F5LgogICAg
IGNhbGxiYWNrQWdncmVnYXRvci0+Y2FsbElmTmVlZGVkKCk7CkBAIC0xMjcwLDE4ICsxMjkyLDM4
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoYm9vbCBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZW5hYmxlZCkgewor
ICAgICAgICBBU1NFUlQoIW1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyk7CisgICAgICAgIGVuYWJs
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NBbmRTZXRUZXN0aW5nQ2FsbGJhY2sobnVsbHB0cik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBu
dWxscHRyOworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKKyAg
ICAgICAgcHJvY2Vzc1Bvb2wtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGZhbHNl
KTsKK30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzQW5kU2V0VGVzdGluZ0NhbGxiYWNrKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYpPiYm
IGNhbGxiYWNrKQoreworICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKKyAgICAg
ICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNr
KFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmIEhBVkUo
Q0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgICAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShtX2NvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgW3RoaXNdIChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvQWRkLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpIHsKLSAgICAgICAg
ICAgIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhk
b21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgc2hvdWxkQ2xlYXJGaXJzdCk7Ci0gICAgICAg
IH0pOworICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5LCBbdGhpc10gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3Qgc2hv
dWxkQ2xlYXJGaXJzdCkgeworICAgICAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JUb3BQ
cml2YXRlbHlPd25lZERvbWFpbnMoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIHNob3Vs
ZENsZWFyRmlyc3QpOworICAgIH0pOwogI2Vsc2UKLSAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUobV9jb25maWd1
cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1f
Y29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKICNlbmRpZgot
ICAgIH0gZWxzZQotICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBudWxscHRyOwor
CisgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNl
dFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pbml0aWFsaXplKCk7CiAKICAgICBmb3IgKGF1dG8mIHBy
b2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCi0gICAgICAgIHByb2Nlc3NQb29sLT5zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wt
PnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHRydWUpOwogfQogCiBEYXRhYmFzZVBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6ZGF0YWJhc2VQcm9jZXNz
UGFyYW1ldGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMjg2OWI5ZGQzOWIxNTllNDJmZmQ3NDc5MDhk
OGVhZjRkMTBkOGQyZS4uOGU3NzQ5ZWQyYWQ1MWE5MmRiZDIyY2RiMGMxMjQwYWEwZWRjNTg4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaApAQCAtMTI3LDYgKzEyNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFBl
bmRpbmdDb29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJik7CiAgICAgdm9pZCByZW1vdmVQZW5k
aW5nQ29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpOwogCisgICAgdm9pZCBlbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzQW5kU2V0VGVzdGluZ0NhbGxiYWNrKEZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJz
aXRlRGF0YVN0b3JlKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAgICAgZXhwbGljaXQgV2Vic2l0ZURh
dGFTdG9yZShDb25maWd1cmF0aW9uLCBXZWJDb3JlOjpTZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU3YWRmNTkxZmIzOWQzNTc3
OWMxNzVmNTQ1YWIzNTJkZGQxYmZjNmYuLmY1N2I3YThmNmMyM2ZlOGE4MzBhMGU3ZTNhODBiM2M2
YmI3MmI4NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNy0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBncmFuZGZhdGhlcmlu
ZyBoYXBwZW5zIG11Y2ggdG9vIG9mdGVuLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzI2NTU4
MzQ+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0ODI1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9FbXB0eUdyYW5kZmF0aGVyZWRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0OiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFRFU1QpOgorCiAyMDE3LTA3LTI0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBBZGQgbGliZXBveHkgdG8gdGhlIEpoYnVpbGQgbW9k
dWxlc2V0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFiYWNiYWVjZWMxNDhhMTM5MjE5YmJi
MWFiOTgyYWViNWY4MWFhNzguLjE5YWY1MTZkNjUzNDRmMmNlYTE0NjAwZmQ0MjdlMWUyN2ZjOTA1
MDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzMsNiArMTczLDggQEAKIAkJNTFCQ0VF
NEUxQzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VFNEMx
Qzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgKi87IH07CiAJ
CTUxQkNFRTRGMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
QkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sICov
OyB9OwogCQk1MUM2ODNERTFFQTEzNEU4MDA2NTAxODMgLyogV0tVUkxTY2hlbWVIYW5kbGVyLTEu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM2ODNE
RDFFQTEzNERCMDA2NTAxODMgLyogV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0gKi87IH07CisJCTUx
QzhFMUE1MUYyNkFGNEMwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDOEUxQTQxRjI2QUM1
NDAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gKi87IH07CisJCTUxQzhFMUE5
MUYyN0Y0OTYwMEJGNzMxQiAvKiBFbXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLnBsaXN0IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQzhFMUE4MUYyN0Y0NzMwMEJGNzMxQiAvKiBFbXB0eUdyYW5kZmF0aGVyZWRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0ICovOyB9OwogCQk1MUNEMUM2QzFCMzhDRTQzMDAxNDJD
QTUgLyogTW9kYWxBbGVydHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUNEMUM2QTFCMzhDRTM2MDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gKi87
IH07CiAJCTUxQ0QxQzcyMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFi
b3V0LWJsYW5rLXdpbmRvdy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0QxQzcxMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVy
dHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sICovOyB9OwogCQk1MUQxMjQ5ODFFNzYz
QjAyMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ5NzFFNzYzQUY4MDAyQjI4MjAgLyogV0tI
VFRQQ29va2llU3RvcmUubW0gKi87IH07CkBAIC0zNzYsNyArMzc4LDYgQEAKIAkJN0NDRTdFQzEx
QTQxMUE3RTAwNDQ3QzRDIC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0RjhGQTMxNTlENTJCMTAwMkQ5
Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tICovOyB9OwogCQk3Q0NFN0VDMjFBNDEx
QTdFMDA0NDdDNEMgLyogSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyNkZDNkIxNTlEMDYxMDAwQ0Mz
NzY1IC8qIEhUTUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbS5tbSAqLzsgfTsKIAkJN0NDRTdFQzMx
QTQxMUE3RTAwNDQ3QzRDIC8qIEluc3BlY3RvckJhci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MDdFOEE2MTRDNjU0NUIwMDVENkIzQiAvKiBJbnNw
ZWN0b3JCYXIubW0gKi87IH07Ci0JCTk1NjQ2RTVCMUYxREI2MEUwMERFMEVCOSAvKiBJbnNwZWN0
b3JWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NTNGNDc5MTFGMURCNDAzMDBFM0QxRTMgLyogSW5zcGVjdG9yVmFsdWUuY3BwICovOyB9Owog
CQk3Q0NFN0VDNDFBNDExQTdFMDA0NDdDNEMgLyogSlNXcmFwcGVyRm9yTm9kZUluV2ViRnJhbWUu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkI0MTYw
MTE2ODE1QjI2MDA4MjQyMzggLyogSlNXcmFwcGVyRm9yTm9kZUluV2ViRnJhbWUubW0gKi87IH07
CiAJCTdDQ0U3RUM1MUE0MTFBN0UwMDQ0N0M0QyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxMjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2Fi
bGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJN0NDRTdFQzYxQTQxMUE3
RTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0U3REZC
MTUxMTBFQTYwMEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW0gKi87IH07CkBAIC01MTIsNiArNTEzLDcgQEAKIAkJOTNGNTZEQTcxRTVGOTE3NDAw
M0VERTg0IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzRTAzMzFEMEE1RjI3MDBGRUJDRjMgLyogbGliaWN1Y29y
ZS5keWxpYiAqLzsgfTsKIAkJOTNGNTZEQTkxRTVGOTE5RDAwM0VERTg0IC8qIFdLV2ViVmlld1Nu
YXBzaG90Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1tICovOyB9Owog
CQk5M0Y3RTg2RjE0REM4RTVDMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0RnJhbWVzX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0Y3RTg2RTE0REM4RTVCMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgKi87IH07CisJCTk1NjQ2RTVCMUYxREI2MEUw
MERFMEVCOSAvKiBJbnNwZWN0b3JWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NTNGNDc5MTFGMURCNDAzMDBFM0QxRTMgLyogSW5zcGVjdG9y
VmFsdWUuY3BwICovOyB9OwogCQk5OTg0RkFDQzFDRkZBRjYwMDA4RDE5OEMgLyogV0tXZWJWaWV3
VGV4dElucHV0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSAqLzsg
fTsKIAkJOTk4NEZBQ0UxQ0ZGQjA5MDAwOEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTg0RkFD
RDFDRkZCMDM4MDA4RDE5OEMgLyogZWRpdGFibGUtYm9keS5odG1sICovOyB9OwogCQk5QjA3ODZB
NTFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVu
X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QjA3ODZBNDFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93
Um9vdHNPcGVuX0J1bmRsZS5jcHAgKi87IH07CkBAIC03NDMsNiArNzQ1LDcgQEAKIAkJCWRzdFBh
dGggPSBUZXN0V2ViS2l0QVBJLnJlc291cmNlczsKIAkJCWRzdFN1YmZvbGRlclNwZWMgPSA3Owog
CQkJZmlsZXMgPSAoCisJCQkJNTFDOEUxQTkxRjI3RjQ5NjAwQkY3MzFCIC8qIEVtcHR5R3JhbmRm
YXRoZXJlZFJlc291cmNlTG9hZFN0YXRpc3RpY3MucGxpc3QgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJRjQ1QjYzRkIxRjE5N0Y0QTAwOUQzOEI5IC8qIGltYWdlLW1hcC5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCUY0MDdGRTM5MUYxRDBERkMwMDE3Q0YyNSAvKiBlbm9ybW91cy5z
dmcgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRENUU0RTgxRjBDNUQzODAwOEMxQTQ5IC8q
IGRyYWdzdGFydC1jbGVhci1zZWxlY3Rpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAg
LTEyMDksNiArMTIxMiw4IEBACiAJCTUxQkNFRTRDMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVk
REJNdWx0aVByb2Nlc3MtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkluZGV4
ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUJDRUU0RDFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDNjgzREQxRUExMzREQjAwNjUwMTgz
IC8qIFdLVVJMU2NoZW1lSGFuZGxlci0xLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gIldLVVJMU2NoZW1lSGFuZGxlci0xLm1tIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTFDOEUxQTQxRjI2QUM1NDAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRp
c3RpY3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUM4RTFBODFGMjdGNDczMDBCRjczMUIg
LyogRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGUuYnBsaXN0OyBw
YXRoID0gRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDQjRBRDcxQjNBMDc5QzAwQzFCMUM2IC8qIE1v
ZGFsQWxlcnRzU1BJLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1v
ZGFsQWxlcnRzU1BJLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDRDFDNkEx
QjM4Q0UzNjAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTW9kYWxBbGVydHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxQ0QxQzcxMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMtaW4tbmV3LWFi
b3V0LWJsYW5rLXdpbmRvdy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm1vZGFsLWFsZXJ0cy1pbi1uZXctYWJv
dXQtYmxhbmstd2luZG93Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM5
Nyw2ICsxNDAyLDcgQEAKIAkJOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdLV2ViVmlld1Nu
YXBzaG90Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJW
aWV3U25hcHNob3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjdFODZCMTRE
QzhFNEQwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0RnJhbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNG
N0U4NkUxNERDOEU1QjAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZy
YW1lc19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk1M0Y0NzkxMUYxREI0MDMwMEUzRDFFMyAvKiBJbnNwZWN0b3JW
YWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZp
ZXdUZXh0SW5wdXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
S1dlYlZpZXdUZXh0SW5wdXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5ODRG
QUNEMUNGRkIwMzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAiZWRpdGFibGUtYm9keS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUIwNzg2QTIxQzU4ODMwRjAwRDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFs
bFNoYWRvd1Jvb3RzT3Blbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW4uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTUzOSw3ICsxNTQ1LDYgQEAKIAkJQzJDRjk3NTkxNkNFQzY5RTAw
NTRFOTlEIC8qIEpTQ29udGV4dEJhY2tGb3J3YXJkQ2FjaGUyLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSBKU0NvbnRleHRCYWNrRm9yd2FyZENhY2hlMi5odG1sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMkVCMkREMTE2Q0FDN0FDMDA5QjUyRUUgLyogV2ViVmlld0Rp
ZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDNTA3RThBNjE0QzY1NDVCMDA1RDZCM0IgLyogSW5zcGVj
dG9yQmFyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5zcGVj
dG9yQmFyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NTNGNDc5MTFGMURCNDAz
MDBFM0QxRTMgLyogSW5zcGVjdG9yVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVj
dG9yVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTEwMUM0RTE3NkI4
QkI5MDBFRTlCMTUgLyogZmluZFJhbmdlcy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gZmluZFJhbmdlcy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTFBRkI5
ODE2OUY0OUZGMDA5Q0NGNjYgLyogRmluZE1hdGNoZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBGaW5kTWF0Y2hlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzU0MEY3NzUxNTJFNERBMDAwQTQwQzhDIC8qIFNpbXBsaWZ5TWFya3VwLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2ltcGxpZnlNYXJrdXAubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODg5LDYgKzE4OTQsNyBAQAogCQkJCUEx
MkREQkZDMUU4MzZGRjEwMENGNkNBRSAvKiBSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQbHVnSW4u
bW0gKi8sCiAJCQkJQTEyRERDMDExRTgzNzRGNTAwQ0Y2Q0FFIC8qIFJlbmRlcmVkSW1hZ2VXaXRo
T3B0aW9uc1Byb3RvY29sLmggKi8sCiAJCQkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJl
cXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tICovLAorCQkJCTUxQzhFMUE0MUYyNkFDNTQw
MEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tICovLAogCQkJCUExODBDMEY5MUVF
NjdERjAwMDQ2OEY0NyAvKiBSdW5PcGVuUGFuZWwubW0gKi8sCiAJCQkJMzdCQ0E2MUIxQjU5NkJB
OTAwMjAxMkNBIC8qIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlvbnMubW0g
Ki8sCiAJCQkJMkQ5QTUzQUUxQjMxRkE4RDAwNzRENUFBIC8qIFNocmlua1RvRml0Lm1tICovLApA
QCAtMjA4NSw2ICsyMDkxLDcgQEAKIAkJCQk1NzE0RUNCQzFDQThDMjE4MDAwNTFBQzggLyogRG93
bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwyLmh0bWwgKi8sCiAJCQkJNTcxNEVDQkExQ0E4QkZEMTAw
MDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRtbCAqLywKIAkJCQlB
MTU1MDIyQjFFMDUwQkM1MDBBMjRDNTcgLyogZHVwbGljYXRlLWNvbXBsZXRpb24taGFuZGxlci1j
YWxscy5odG1sICovLAorCQkJCTUxQzhFMUE4MUYyN0Y0NzMwMEJGNzMxQiAvKiBFbXB0eUdyYW5k
ZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0ICovLAogCQkJCTk5ODRGQUNEMUNG
RkIwMzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi8sCiAJCQkJRjQwN0ZFMzgxRjFE
MERFNjAwMTdDRjI1IC8qIGVub3Jtb3VzLnN2ZyAqLywKIAkJCQlGNEMyQUIyMTFERDZEOTQxMDBF
MDZENUIgLyogZW5vcm1vdXMtdmlkZW8td2l0aC1zb3VuZC5odG1sICovLApAQCAtMzA2NSw2ICsz
MDcyLDcgQEAKIAkJCQk3QzgzRTBCQjFEMEE2NTAwMDBGRUJDRjMgLyogRmluZEluUGFnZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY0MUE0MTFBRTYwMDQ0N0M0QyAvKiBGaW5kTWF0Y2hl
cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDQwMUQwQTYzRTMwMEZFQkNGMyAvKiBGaXJz
dFJlc3BvbmRlclNjcm9sbGluZ1Bvc2l0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFDOEUx
QTUxRjI2QUY0QzAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3QzgzRTBCQzFEMEE2NTA3MDBGRUJDRjMgLyogRml4ZWRMYXlvdXRTaXplLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5MDlBN0UxRDg3NzQ4MDAwN0UxMEY4IC8qIEZsb2F0UG9p
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5MDlBN0YxRDg3NzQ4MDAwN0UxMEY4IC8qIEZs
b2F0UmVjdC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL0VtcHR5R3JhbmRmYXRoZXJlZFJlc291cmNlTG9hZFN0YXRp
c3RpY3MucGxpc3QgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9FbXB0
eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMx
MTRlZGM2ZmFlYzRjMzJiNTA3ZTRmYWNjMjcwZWMzMGYyMzViZWIKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDE0Ngp6Y21ZYykkakt9JkYpK0JvJGkmUlQlRXJ6U210VC10bHZ0OVBtK3EyU2wzRS11
QWUyOztVdFNGNDJiVGJhaSVUKy0KemZyMnVyY2A1I0I/blF9dERRU3IlOEwzNDtgSDstcSlaJnVG
Kz1CNDMpU318ZHtKYUdWbHBVfGRLRTFXPygrdlNtCmE0bllPZWtlSnhHYk90YkJXUTVRUm9LUEFA
V2RaPEV3a3NfRgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWU0YmE2ZGE0Mzg1OWM2MTUxZmVkOTJlOTMzY2IwZmU2OGU0
ZDgyNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0KQEAgLTAsMCArMSwxMjAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBXS19BUElf
RU5BQkxFRAorCitURVNUKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsIEdyYW5kZmF0aGVyQ2FsbGJh
Y2spCit7CisgICAgYXV0byAqZGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0
RGF0YVN0b3JlXTsKKyAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZDpOT107CisKKyAgICBOU1VSTCAqc3RhdGlzdGljc0RpcmVjdG9yeVVSTCA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9UZXN0V2ViS2l0QVBJL1dlYnNpdGVE
YXRhL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhd
IGlzRGlyZWN0b3J5OllFU107CisgICAgTlNVUkwgKmZpbGVVUkwgPSBbc3RhdGlzdGljc0RpcmVj
dG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJmdWxsX2Jyb3dzaW5nX3Nlc3Np
b25fcmVzb3VyY2VMb2cucGxpc3QiXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIHJlbW92ZUl0ZW1BdFVSTDpmaWxlVVJMIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6c3RhdGlzdGljc0RpcmVjdG9yeVVS
TCBlcnJvcjpuaWxdOworICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3RhdGlzdGljc0RpcmVjdG9yeVVSTC5wYXRoXSk7CisK
KyAgICBzdGF0aWMgYm9vbCBkb25lRmxhZzsKKyAgICBzdGF0aWMgYm9vbCBncmFuZGZhdGhlcmVk
RmxhZzsKKworICAgIFtkYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0aW5n
Q2FsbGJhY2s6XihXS1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNTdHJpbmcgKm1lc3NhZ2UpIHsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoW21lc3NhZ2UgaXNFcXVhbFRvU3RyaW5nOkAiR3JhbmRmYXRoZXJl
ZCJdKTsKKyAgICAgICAgZ3JhbmRmYXRoZXJlZEZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZncmFuZGZhdGhlcmVkRmxhZyk7CisKKyAgICAvLyBT
cGluIHRoZSBydW5sb29wIHVudGlsIHRoZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MgZmlsZSBo
YXMgd3JpdHRlbiB0byBkaXNrLgorICAgIC8vIElmIHRoZSB0ZXN0IGVudGVycyBhIHNwaW4gbG9v
cCBoZXJlLCBpdCBoYXMgZmFpbGVkLgorICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmIChb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZVVSTC5w
YXRoXSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpz
cGluUnVuTG9vcCgxKTsKKyAgICB9CisKKyAgICBncmFuZGZhdGhlcmVkRmxhZyA9IGZhbHNlOwor
ICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxs
V2Vic2l0ZURhdGFUeXBlc0luY2x1ZGluZ1ByaXZhdGVdICBtb2RpZmllZFNpbmNlOltOU0RhdGUg
ZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4geworICAgICAgICBkb25lRmxhZyA9IHRy
dWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxMCk7CisKKyAgICAvLyBUaGUg
d2Vic2l0ZSBkYXRhIHN0b3JlIHJlbW92ZSBzaG91bGQgaGF2ZSBjb21wbGV0ZWQsIGJ1dCBzaW5j
ZSB3ZSByZW1vdmVkIGFsbCBvZiB0aGUgZGF0YSB0eXBlcyB0aGF0IGFyZSBtb25pdG9yZWQgYnkg
cmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzLAorICAgIC8vIG5vIGdyYW5kZmF0aGVyaW5nIGNhbGwg
c2hvdWxkIGhhdmUgYmVlbiBtYWRlLgorICAgIEVYUEVDVF9GQUxTRShncmFuZGZhdGhlcmVkRmxh
Zyk7CisgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmls
ZUV4aXN0c0F0UGF0aDpmaWxlVVJMLnBhdGhdKTsKKworICAgIGRvbmVGbGFnID0gZmFsc2U7Cisg
ICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdHM6V0tX
ZWJzaXRlRGF0YVR5cGVDb29raWVzLCBfV0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLCBuaWxdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlv
bkhhbmRsZXI6XiB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIC8v
IFNpbmNlIHdlIGRpZCBub3QgcmVtb3ZlIGV2ZXJ5IGRhdGEgdHlwZSBjb3ZlcmVkIGJ5IHJlc291
cmNlIGxvYWQgc3RhdGlzdGljcywgd2UgZG8gZXhwZWN0IHRoYXQgZ3JhbmRmYXRoZXJpbmcgdG9v
ayBwbGFjZSBhZ2Fpbi4KKyAgICAvLyBJZiB0aGUgdGVzdCBoYW5ncyB3YWl0aW5nIG9uIGVpdGhl
ciBvZiB0aGVzZSBjb25kaXRpb25zLCBpdCBoYXMgZmFpbGVkLgorICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZ3JhbmRmYXRoZXJlZEZsYWcpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZUZsYWcpOworCisgICAgLy8gU3BpbiB0aGUgcnVubG9vcCB1bnRpbCB0aGUgcmVz
b3VyY2UgbG9hZCBzdGF0aXN0aWNzIGZpbGUgaGFzIHdyaXR0ZW4gdG8gZGlzay4KKyAgICAvLyBJ
ZiB0aGUgdGVzdCBlbnRlcnMgYSBzcGluIGxvb3AgaGVyZSwgaXQgaGFzIGZhaWxlZC4KKyAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVVUkwucGF0aF0pCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMSk7CisgICAgfQorfQorCitU
RVNUKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsIFNob3VsZE5vdEdyYW5kZmF0aGVyT25TdGFydHVw
KQoreworICAgIGF1dG8gKmRhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERh
dGFTdG9yZV07CisgICAgW2RhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQ6Tk9dOworCisgICAgTlNVUkwgKnN0YXRpc3RpY3NEaXJlY3RvcnlVUkwgPSBbTlNVUkwgZmls
ZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvVGVzdFdlYktpdEFQSS9XZWJzaXRlRGF0
YS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBp
c0RpcmVjdG9yeTpZRVNdOworICAgIE5TVVJMICp0YXJnZXRVUkwgPSBbc3RhdGlzdGljc0RpcmVj
dG9yeVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJmdWxsX2Jyb3dzaW5nX3Nlc3Np
b25fcmVzb3VyY2VMb2cucGxpc3QiXTsKKyAgICBOU1VSTCAqdGVzdFJlc291cmNlVVJMID0gW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIkVtcHR5R3JhbmRmYXRoZXJlZFJl
c291cmNlTG9hZFN0YXRpc3RpY3MiIHdpdGhFeHRlbnNpb246QCJwbGlzdCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6c3RhdGlzdGljc0RpcmVjdG9yeVVSTCB3
aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07
CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnRlc3RS
ZXNvdXJjZVVSTCB0b1VSTDp0YXJnZXRVUkwgZXJyb3I6bmlsXTsKKworICAgIEVYUEVDVF9UUlVF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDp0YXJnZXRV
UkwucGF0aF0pOworCisgICAgc3RhdGljIGJvb2wgY2FsbGJhY2tGbGFnOworICAgIFtkYXRhU3Rv
cmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2s6XihXS1dlYnNpdGVE
YXRhU3RvcmUgKiwgTlNTdHJpbmcgKm1lc3NhZ2UpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoW21l
c3NhZ2UgaXNFcXVhbFRvU3RyaW5nOkAiUG9wdWxhdGVkV2l0aG91dEdyYW5kZmF0aGVyaW5nIl0p
OworICAgICAgICBjYWxsYmFja0ZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZjYWxsYmFja0ZsYWcpOworfQorI2VuZGlmCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316406</attachid>
            <date>2017-07-25 16:50:10 -0700</date>
            <delta_ts>2017-07-25 17:08:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174825-20170725165008.patch</filename>
            <type>text/plain</type>
            <size>47899</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5ODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNlNDJiZWYwY2RjNDU0ODll
ZjMzYjVmM2U5ODhmYzE3NGI4ODU0MGYuLmY3ZTczNjUyMmIzMjc5NWQwMmIzMjkwMWQ1ZGE0ZWZl
ODBmZmNiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTctMDctMjUgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgZ3JhbmRmYXRoZXJpbmcgaGFwcGVucyBtdWNoIHRvbyBvZnRlbi4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMyNjU1ODM0PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NDgyNQorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAg
ICAgIFRoZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGdyYW5kZmF0aGVyaW5nIHByb2NlZHVyZSBo
YXBwZW5zIHRvbyBvZnRlbi4KKyAgICAgICAgLSBXaXRoIGFuIGVtcHR5IG1lbW9yeSBzdG9yZSwg
ZXZlbiB0aG91Z2ggYW4gZW1wdHkgbWVtb3J5IHN0b3JlIGlzIGEgcGVyZmVjdGx5IHZhbGlkIHN0
YXRlLgorICAgICAgICAtIE9uIGVhY2ggbGF1bmNoLCBldmVuIGlmIGdyYW5kZmF0aGVyaW5nIGhh
cHBlbmVkIG9uIHRoZSBsYXN0IGxhdW5jaCAtIGJlY2F1c2UgZ3JhbmRmYXRoZXJpbmcKKyAgICAg
ICAgICBkYXRhIHdvdWxkIG5vdCBhdXRvbWF0aWNhbGx5IGJlIHNhdmVkIHRvIGRpc2suCisgICAg
ICAgIC0gQWZ0ZXIgY2xlYXJpbmcgYWxsIHdlYnNpdGUgZGF0YSwgYXQgd2hpY2ggcG9pbnQgbm8g
Z3JhbmRmYXRoZXJpbmcgY2FuIHBvc3NpYmx5IGJlIHJlbGV2YW50CisgICAgICAgICAgYmVjYXVz
ZSB0aGVyZSBpcyBubyBkYXRhIHRvIGdyYW5kZmF0aGVyLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Zml4ZXMgdGhvc2UgY2FzZXMgYW5kIGFkZHMgQVBJIHRlc3RzIHRvIHZlcmlmeSB0aGV5IHJlbWFp
biBmaXhlZC4KKworICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUu
aDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
OgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNs
dWRpbmdQcml2YXRlXSk6IGFsbFdlYnNpdGVEYXRhVHlwZXMsIGJ1dCBldmVuIHdpdGggdGhlIHBy
aXZhdGUgb25lcy4KKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZV0pOiBJZiB0aGUgdHlwZXMg
YmVpbmcgY2xlYXJlZCBjb3ZlciBhbGwgb2YgCisgICAgICAgICAgdGhlIHR5cGVzIHRoYXQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyBjYXJlIGFib3V0LCBkb24ndCBncmFuZGZhdGhlciBhZnRlcndh
cmRzLgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzOl0pOiBE
aXR0by4KKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGVzdGluZ0NhbGxiYWNrOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1N0b3Jh
Z2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpwb3B1bGF0
ZU1lbW9yeVN0b3JlRnJvbURpc2spOiBEb24ndCBncmFuZGZhdGhlciBpZiB0aGUgc3RvcmUgcmVh
ZCBmcm9tIAorICAgICAgICAgIGRpc2sgaXMgZW1wdHkgKGFzIGJlaW5nIGVtcHR5IGlzIHBlcmZl
Y3RseSBmaW5lKSwgYW5kIGFsc28gbG9nIHRoZSBldmVudCBvZiAicG9wdWxhdGVkIHdpdGhvdXQg
Z3JhbmRmYXRoZXJpbmciLgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEpOgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6On5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmluaXRpYWxp
emUpOiBTZXBhcmF0ZWQgb3V0IGZyb20gdGhlIGNvbnN0cnVjdG9yIHNvIGEgY2FsbGJhY2sgY2Fu
IGJlIHJlZ2lzdGVyZWQKKyAgICAgICAgICBiZWZvcmUgdGhlIHN0YXRpc3RpY3MgcXVldWUgc3Rh
cnRzIGRvaW5nIHRoaW5ncy4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3Jkcyk6IAorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSk6
IFNjaGVkdWxlIGEgd3JpdGUgcmlnaHQgYXdheSBzbyB3ZSBkb24ndCByZS1ncmFuZGZhdGhlcgor
ICAgICAgICAgIG9uIG5leHQgbGF1bmNoLCBhbmQgYWxzbyBsb2cgdGhlIGdyYW5kZmF0aGVyaW5n
IGV2ZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOiBUYWtlcyBhIFNob3VsZEdyYW5k
ZmF0aGVyIGZsYWcKKyAgICAgICAgICB0byB0ZWxsIHdoZXRoZXIgb3Igbm90IGRhdGEgc2hvdWxk
IGJlIHJlLWdyYW5kZmF0aGVyZWQgYWZ0ZXIgdGhlIHN0b3JlIGlzIGNsZWFyZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVGVzdGluZ0V2ZW50
KTogTG9nIHRoZSBldmVudCB0byB0aGUgdGVzdGluZyBjbGllbnQuCisgICAgICAgIChXZWJLaXQ6
OmRhdGFUeXBlc1RvUmVtb3ZlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OnJlbW92ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpz
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NBbmRTZXRUZXN0aW5nQ2Fs
bGJhY2spOiBIYW5kbGVzIGVuYWJsaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgYm90aAorICAg
ICAgICAgIHdpdGggYW5kIHdpdGhvdXQgYSB0ZXN0aW5nIGNhbGxiYWNrLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMTctMDctMjUgIEJy
aWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5IHdoZW4gc2VuZGluZyBleHRlbnNpb25zIGZvciBmaWxlIHVwbG9hZHMg
dG8gdGhlIHdlYiBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhVHlwZS5oCmluZGV4IGNhYjg0NTJhZDNjY2MwZDhhNzY4ZWUwNDNhMGM3
NjdiODkyZjhkNDQuLjMwY2MwMzMxMjU1ZmM3N2Y0NDFhM2U4MjJmMjhkZGQ5YWVkNWI4ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlw
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlw
ZS5oCkBAIC00MywxMSArNDMsOCBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSB7CiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgUGx1Z0luRGF0YSA9IDEgPDwgMTEsCiAj
ZW5kaWYKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIE1lZGlhRGV2aWNlSWRlbnRpZmll
ciA9IDEgPDwgMTIsCi0jZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gMSA8PCAx
MywKLSAgICBDcmVkZW50aWFscyA9IDEgPDwgMTQsCisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IDEgPDwgMTIsCisgICAgQ3JlZGVudGlhbHMgPSAxIDw8IDEzLAogfTsKIAogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tCmluZGV4IGFhM2E1NmJkNTdhNGVlYWVhNTA1Nzg0MWM0NWVlMzI0YTA3NTg0ZTUuLjQx
YjE4ZDA2MTJjNDkzYjA4OWZiNjYzZTJhNWM3MzAwNzY2ZDY3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpA
QCAtMTU3LDYgKzE1NywyMyBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYnNpdGVEYXRh
U3RvcmUgKFdLUHJpdmF0ZSkKIAorKyAoTlNTZXQ8TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0ZURh
dGFUeXBlc0luY2x1ZGluZ1ByaXZhdGUKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9u
Y2VUb2tlbjsKKyAgICBzdGF0aWMgTlNTZXQgKmFsbFdlYnNpdGVEYXRhVHlwZXM7CisgICAgZGlz
cGF0Y2hfb25jZSgmb25jZVRva2VuLCBeIHsKKyAgICAgICAgYXV0byAqcHJpdmF0ZVR5cGVzID0g
QFtfV0tXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGUsIF9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5
cywgX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcywgX1dLV2Vic2l0
ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVu
dGlhbHMKKyNpZiAhVEFSR0VUX09TX0lQSE9ORQorICAgICAgICAsIF9XS1dlYnNpdGVEYXRhVHlw
ZVBsdWdJbkRhdGEKKyNlbmRpZgorICAgICAgICBdOworCisgICAgICAgIGFsbFdlYnNpdGVEYXRh
VHlwZXMgPSBbW1tzZWxmIGFsbFdlYnNpdGVEYXRhVHlwZXNdIHNldEJ5QWRkaW5nT2JqZWN0c0Zy
b21BcnJheTpwcml2YXRlVHlwZXNdIHJldGFpbl07CisgICAgfSk7CisKKyAgICByZXR1cm4gYWxs
V2Vic2l0ZURhdGFUeXBlczsKK30KKwogLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZpZ3Vy
YXRpb246KF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgog
ewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQpAQCAtNDQ5LDcgKzQ2Niw3IEBAIC0g
KHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0
b3JlCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RvcmUtPnNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKKyAgICBzdG9yZS0+c2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6U2hvdWxkR3JhbmRmYXRoZXI6Olllcyk7CiB9CiAKIC0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhv
dXJzOih1bnNpZ25lZClob3VycwpAQCAtNDU4LDcgKzQ3NSw3IEBAIC0gKHZvaWQpX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5j
ZUhvdXJzCiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RvcmUtPnNj
aGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6bm93KCkgLSBzdGQ6OmNocm9ubzo6aG91cnMoaG91cnMpKTsKKyAgICBzdG9yZS0+c2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpu
b3coKSAtIHN0ZDo6Y2hyb25vOjpob3Vycyhob3VycyksIFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpTaG91bGRHcmFuZGZhdGhlcjo6WWVzKTsKIH0KIAogLSAodm9pZClf
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUKQEAgLTQ3Myw2ICs0
OTAsMjIgQEAgLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGUKICAgICBzdG9yZS0+c2NoZWR1bGVDbGVhckluTWVtb3J5KCk7CiB9CiAKKy0gKHZvaWQp
X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2s6KHZvaWQgKF4pKFdLV2Vi
c2l0ZURhdGFTdG9yZSAqLCBOU1N0cmluZyAqKSljYWxsYmFjaworeworICAgIGlmIChjYWxsYmFj
aykgeworICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmVuYWJs
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NBbmRTZXRUZXN0aW5nQ2FsbGJhY2soW2NhbGxiYWNrID0g
bWFrZUJsb2NrUHRyKGNhbGxiYWNrKSwgc2VsZl0oY29uc3QgU3RyaW5nJiBldmVudCkgeworICAg
ICAgICAgICAgY2FsbGJhY2soc2VsZiwgKE5TU3RyaW5nICopZXZlbnQpOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAg
aWYgKCFzdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RvcmUtPnNldFN0YXRpc3RpY3NU
ZXN0aW5nQ2FsbGJhY2sobnVsbHB0cik7Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFdLX0FQSV9F
TkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA0ZWU2YzE0NTg0OTE0OTY5N2U3
MmRlZTJhZTc1NzJlZjA5ZWJlYWUyLi41MGY2MzBjYmI0ZmRjNzAzZGFjY2JlZTkxYmQ0YzUwYTI2
MmVjOTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTM3LDYgKzM3LDggQEAgdHlw
ZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlv
bnMpIHsKIAogQGludGVyZmFjZSBXS1dlYnNpdGVEYXRhU3RvcmUgKFdLUHJpdmF0ZSkKIAorKyAo
TlNTZXQ8TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0ZURhdGFUeXBlc0luY2x1ZGluZ1ByaXZhdGU7
CisKIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNv
c3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC0gKHZvaWQpX2ZldGNoRGF0YVJl
Y29yZHNPZlR5cGVzOihOU1NldDxOU1N0cmluZyAqPiAqKWRhdGFUeXBlcyB3aXRoT3B0aW9uczoo
X1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucylvcHRpb25zIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKikpY29tcGxldGlvbkhh
bmRsZXI7CkBAIC03MSw2ICs3Myw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBf
V0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAtICh2b2lkKV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSBXS19BUElfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5j
ZUhvdXJzOih1bnNpZ25lZClob3VycyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NSZXNl
dFRvQ29uc2lzdGVudFN0YXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3Rp
bmdDYWxsYmFjazoobnVsbGFibGUgdm9pZCAoXikoV0tXZWJzaXRlRGF0YVN0b3JlICosIE5TU3Ry
aW5nICopKWNhbGxiYWNrOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCBiNGQ5MmJlYjA5OGQxZjQ5NzMxYWU1OTc0ZmYy
YWNhNTE0ODY2ZDExLi4yYWM1YzI2ZjNjOWNhN2RkMjE2Zjk2OTE5OTA1YmRmMmZhNGMwYWIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCkBA
IC0yMzQsOCArMjM0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2U6OnBvcHVsYXRlTWVtb3J5U3RvcmVGcm9tRGlzaygpCiAKICAgICBtX2xhc3RTdGF0aXN0
aWNzRmlsZVN5bmNUaW1lID0gcmVhZFRpbWU7CiAKLSAgICBpZiAobV9tZW1vcnlTdG9yZS5pc0Vt
cHR5KCkpCi0gICAgICAgIG1fbWVtb3J5U3RvcmUuZ3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVE
YXRhKCk7CisgICAgbV9tZW1vcnlTdG9yZS5sb2dUZXN0aW5nRXZlbnQoQVNDSUlMaXRlcmFsKCJQ
b3B1bGF0ZWRXaXRob3V0R3JhbmRmYXRoZXJpbmciKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjphc3luY1dyaXRlVGltZXJGaXJlZCgpCkBAIC0y
ODAsMTIgKzI3OSwxMiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZTo6d3JpdGVNZW1vcnlTdG9yZVRvRGlzaygpCiAgICAgc3RhcnRNb25pdG9yaW5nRGlzaygp
OwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c2No
ZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2U6OnNjaGVkdWxlT3JXcml0ZU1lbW9yeVN0b3JlKGVudW0gRm9yY2VJbW1l
ZGlhdGVXcml0ZSBmb3JjZUltbWVkaWF0ZVdyaXRlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgYXV0byB0aW1lU2luY2VMYXN0V3JpdGUgPSBNb25vdG9uaWNUaW1l
Ojpub3coKSAtIG1fbGFzdFN0YXRpc3RpY3NXcml0ZVRpbWU7Ci0gICAgaWYgKHRpbWVTaW5jZUxh
c3RXcml0ZSA8IG1pbmltdW1Xcml0ZUludGVydmFsKSB7CisgICAgaWYgKGZvcmNlSW1tZWRpYXRl
V3JpdGUgIT0gRm9yY2VJbW1lZGlhdGVXcml0ZSAmJiB0aW1lU2luY2VMYXN0V3JpdGUgPCBtaW5p
bXVtV3JpdGVJbnRlcnZhbCkgewogICAgICAgICBpZiAoIW1faGFzUGVuZGluZ1dyaXRlKSB7CiAg
ICAgICAgICAgICBtX2hhc1BlbmRpbmdXcml0ZSA9IHRydWU7CiAgICAgICAgICAgICBTZWNvbmRz
IGRlbGF5ID0gbWluaW11bVdyaXRlSW50ZXJ2YWwgLSB0aW1lU2luY2VMYXN0V3JpdGUgKyAxX3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAppbmRleCA4
MWY3Y2NkZTM0YzEyYmE2MDY2OTFhODZkY2I0ZDQ1NTI4ZjQzNWE4Li5lYmFiNTI3OWRhZjdhMmEy
ZjkyNTgxMDM0MWU5ZjA2Y2JhYWU3NmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlLmgKQEAgLTQ1LDcgKzQ1LDYgQEAgcHVibGljOgogICAgIH5SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoKTsKIAogICAgIHZvaWQgaW5pdGlh
bGl6ZSgpOwotICAgIHZvaWQgc2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoKTsKICAgICB2b2lk
IGNsZWFyKCk7CiAKICAgICB2b2lkIGZpbmlzaEFsbFBlbmRpbmdXb3JrU3luY2hyb25vdXNseSgp
OwpAQCAtNTMsNiArNTIsMTIgQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCk7CiAgICAgdm9pZCBk
ZXJlZigpOwogCisgICAgZW51bSBGb3JjZUltbWVkaWF0ZVdyaXRlIHsKKyAgICAgICAgRm9yY2VJ
bW1lZGlhdGVXcml0ZSwKKyAgICAgICAgQWxsb3dEZWxheWVkV3JpdGUsCisgICAgfTsKKyAgICB2
b2lkIHNjaGVkdWxlT3JXcml0ZU1lbW9yeVN0b3JlKGVudW0gRm9yY2VJbW1lZGlhdGVXcml0ZSk7
CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CiAg
ICAgU3RyaW5nIHJlc291cmNlTG9nRmlsZVBhdGgoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDQyNzUwNTYyODkxM2E3NDkxNmFjZWYz
OTNmMjBmZjhiNzk2MDNhZjAuLjU1NjExNjdhNWE2M2IwMjQ3OWU0MjQ2YjE2Mjc4OTdiNjc0Y2Rk
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAt
MzI3LDYgKzMyNywxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYgogICAgICAgICAgICAgY2Fs
bGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soKTsKICAgICAgICAgfSk7CiAg
ICAgfQorCisgICAgLy8gRklYTUU6IEl0J3MgYml6YXJyZSB0aGF0IHRoaXMgY2FsbCBpcyBvbiBX
ZWJQcm9jZXNzUHJveHkgYW5kIHRoYXQgaXQgZG9lc24ndCB3b3JrIGlmIHRoZXJlIGFyZSBubyB2
aXNpdGVkIHBhZ2VzLgorICAgIC8vIFRoaXMgc2hvdWxkIGFjdHVhbGx5IGJlIGEgZnVuY3Rpb24g
b2YgV2Vic2l0ZURhdGFTdG9yZSBhbmQgaXQgc2hvdWxkIHdvcmsgZXZlbiBpZiB0aGVyZSBhcmUg
bm8gV2ViVmlld3MgaW5zdGFuY2VzLgorICAgIGNhbGxiYWNrQWdncmVnYXRvci0+Y2FsbElmTmVl
ZGVkKCk7CiB9CiAgICAgCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3Rp
Y3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA3ZTYx
OTEzMjViNDY2ZjkxZGQ4ODM2MTJiY2IzMDdjN2Y2MDMxNzgxLi40NTg1ZGM3NmE0ZjFhZjYwNDRj
Y2VjNTI3NmUwNDJmM2EwMWU0YTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTMzLDcgKzMz
LDYgQEAKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAj
aW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRh
U3RvcmUuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0tleWVkQ29kaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Lmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CkBAIC01NCwxNSArNTMsMTIg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBTdHJpbmcgaXNvbGF0ZWRQcmlt
YXJ5RG9tYWluKGNvbnN0IFQmIHZhbHVlKQogICAgIHJldHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpwcmltYXJ5RG9tYWluKHZhbHVlKS5pc29sYXRlZENvcHkoKTsKIH0KIAotc3RhdGljIGNv
bnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+JiBkYXRhVHlwZXNUb1JlbW92ZSgpCitjb25z
dCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiYgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjptb25pdG9yZWREYXRhVHlwZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPj4gZGF0YVR5cGVzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxXZWJzaXRlRGF0YVR5cGU+KHsKICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzLAog
ICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcywKICAgICAgICAgV2Vi
c2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAg
ICAgICAgV2Vic2l0ZURhdGFUeXBlOjpNZWRpYURldmljZUlkZW50aWZpZXIsCi0jZW5kaWYKICAg
ICAgICAgV2Vic2l0ZURhdGFUeXBlOjpNZWRpYUtleXMsCiAgICAgICAgIFdlYnNpdGVEYXRhVHlw
ZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCkBAIC0xNDksMTEgKzE0NSwxMiBAQCBzdGF0aWMgVmVjdG9yPE9wZXJhdGluZ0RhdGU+
IG1lcmdlT3BlcmF0aW5nRGF0ZXMoY29uc3QgVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiBleAogICAg
IHJldHVybiBtZXJnZWREYXRlczsKIH0KIAotV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5z
SGFuZGxlciYmIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKQorV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIFVwZGF0ZUNvb2tpZVBh
cnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyJiYgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9y
RG9tYWluc0hhbmRsZXIpCiAgICAgOiBtX3N0YXRpc3RpY3NRdWV1ZShXb3JrUXVldWU6OmNyZWF0
ZSgiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIFByb2Nlc3MgRGF0YSBRdWV1ZSIsIFdv
cmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkpCiAgICAgLCBt
X3BlcnNpc3RlbnRTdG9yYWdlKCp0aGlzLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KQogICAgICwgbV91cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcihXVEZN
b3ZlKHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKSkKICAgICAsIG1f
ZGFpbHlUYXNrc1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3MpCisgICAgLCBtX3N0YXRpc3RpY3NUZXN0
aW5nQ2FsbGJhY2soV1RGTW92ZSh0ZXN0aW5nQ2FsbGJhY2spKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKQEAgLTE5Miw3ICsxODksNyBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlRGF0YVJlY29yZHMoKQogICAgIHNldERhdGFSZWNvcmRz
QmVpbmdSZW1vdmVkKHRydWUpOwogCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcmV2
YWxlbnRSZXNvdXJjZURvbWFpbnMgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46
OmNvcHkocHJldmFsZW50UmVzb3VyY2VEb21haW5zKSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgV2ViUHJvY2Vzc1Byb3h5OjpkZWxl
dGVXZWJzaXRlRGF0YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zSW5BbGxQZXJzaXN0
ZW50RGF0YVN0b3JlcyhkYXRhVHlwZXNUb1JlbW92ZSgpLCBXVEZNb3ZlKHByZXZhbGVudFJlc291
cmNlRG9tYWlucyksIG1fcGFyYW1ldGVycy5zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyldKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgZG9tYWluc1dpdGhEZWxldGVkV2Vic2l0ZURhdGEp
IG11dGFibGUgeworICAgICAgICBXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9y
VG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKCksIFdURk1v
dmUocHJldmFsZW50UmVzb3VyY2VEb21haW5zKSwgbV9wYXJhbWV0ZXJzLnNob3VsZE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKV0oY29uc3QgSGFzaFNldDxTdHJpbmc+JiBkb21haW5zV2l0aERl
bGV0ZWRXZWJzaXRlRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NRdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCB0b3BEb21haW5zID0gQ3Jvc3NUaHJlYWRDb3BpZXI8SGFzaFNldDxTdHJpbmc+Pjo6Y29weShk
b21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSldICgpIG11dGFibGUgewogICAgICAgICAgICAg
ICAgIGZvciAoYXV0byYgcHJldmFsZW50UmVzb3VyY2VEb21haW4gOiB0b3BEb21haW5zKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0YXRpc3RpYyA9IGVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclByaW1hcnlEb21haW4ocHJldmFsZW50UmVzb3VyY2VEb21haW4pOwpAQCAtMjMyLDcg
KzIyOSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9jZXNzU3Rh
dGlzdGljc0FuZERhdGFSZWNvcmRzKCkKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgbV9wZXJz
aXN0ZW50U3RvcmFnZS5zY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZSgpOworICAgIG1fcGVyc2lz
dGVudFN0b3JhZ2Uuc2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlOjpBbGxvd0RlbGF5ZWRXcml0ZSk7CiB9CiAKIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRl
ZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBvcmlnaW5zKQpAQCAt
MjUwLDE0ICsyNDcsMTkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omdy
YW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSgpCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIFdlYlByb2Nlc3NQcm94
eTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEoZGF0YVR5cGVz
VG9SZW1vdmUoKSwgbV9wYXJhbWV0ZXJzLnNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRz
V2VyZVNjYW5uZWQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KV0gKEhhc2hTZXQ8U3RyaW5nPiYmIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aFdl
YnNpdGVEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgbWV0aG9kIGJlaW5n
IGEgc3RhdGljIGNhbGwgb24gV2ViUHJvY2Vzc1Byb3h5IGlzIHdyb25nLgorICAgICAgICAvLyBJ
dCBzaG91bGQgYmUgb24gdGhlIGRhdGEgc3RvcmUgdGhhdCB0aGlzIG9iamVjdCBiZWxvbmdzIHRv
LgorICAgICAgICBXZWJQcm9jZXNzUHJveHk6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5z
V2l0aFdlYnNpdGVEYXRhKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVk
RGF0YVR5cGVzKCksIG1fcGFyYW1ldGVycy5zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyldIChIYXNoU2V0PFN0cmluZz4mJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhX
ZWJzaXRlRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0b3BE
b21haW5zID0gQ3Jvc3NUaHJlYWRDb3BpZXI8SGFzaFNldDxTdHJpbmc+Pjo6Y29weSh0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YSldICgpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIGZvciAoYXV0byYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbiA6IHRv
cERvbWFpbnMpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgc3RhdGlzdGljID0gZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0b3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWluKTsKICAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljLmdyYW5kZmF0aGVyZWQgPSB0
cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtX2VuZE9mR3JhbmRmYXRo
ZXJpbmdUaW1lc3RhbXAgPSBXYWxsVGltZTo6bm93KCkgKyBtX3BhcmFtZXRlcnMuZ3JhbmRmYXRo
ZXJpbmdUaW1lOworICAgICAgICAgICAgICAgIG1fcGVyc2lzdGVudFN0b3JhZ2Uuc2NoZWR1bGVP
cldyaXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
OjpGb3JjZUltbWVkaWF0ZVdyaXRlKTsKICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBs
b2dUZXN0aW5nRXZlbnQoQVNDSUlMaXRlcmFsKCJHcmFuZGZhdGhlcmVkIikpOwogICAgICAgICB9
KTsKICAgICB9KTsKIH0KQEAgLTQ4MywyMSArNDg1LDIzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnkoKQogICAgIH0pOwogfQogCi12
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudCgpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2No
ZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlciBzaG91bGRH
cmFuZGZhdGhlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fc3Rh
dGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSB7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHNob3VsZEdyYW5kZmF0aGVyXSB7CiAgICAgICAgIGNsZWFy
SW5NZW1vcnkoKTsKICAgICAgICAgbV9wZXJzaXN0ZW50U3RvcmFnZS5jbGVhcigpOwotICAgICAg
ICBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoKTsKKyAgICAgICAgCisgICAgICAgIGlm
IChzaG91bGRHcmFuZGZhdGhlciA9PSBTaG91bGRHcmFuZGZhdGhlcjo6WWVzKQorICAgICAgICAg
ICAgZ3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKCk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRT
aW5jZSkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9p
bnQgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXIgc2hvdWxkR3JhbmRmYXRoZXIpCiB7
CiAgICAgLy8gRm9yIG5vdywgYmUgY29uc2VydmF0aXZlIGFuZCBjbGVhciBldmVyeXRoaW5nIHJl
Z2FyZGxlc3Mgb2YgbW9kaWZpZWRTaW5jZS4KICAgICBVTlVTRURfUEFSQU0obW9kaWZpZWRTaW5j
ZSk7Ci0gICAgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCgpOworICAgIHNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2hvdWxkR3JhbmRmYXRoZXIpOwogfQogCiB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRl
cmFjdGlvbihTZWNvbmRzIHNlY29uZHMpCkBAIC04MjQsNSArODI4LDIwIEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMo
KQogewogICAgIG1fcGFyYW1ldGVycyA9IHsgfTsKIH0KLSAgICAKKwordm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50
KQoreworICAgIGlmICghbV9zdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpCisgICAgICAgIG1fc3RhdGlzdGljc1Rl
c3RpbmdDYWxsYmFjayhldmVudCk7CisgICAgZWxzZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBldmVudCA9
IGV2ZW50Lmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgICAgICBpZiAobV9zdGF0aXN0aWNzVGVz
dGluZ0NhbGxiYWNrKQorICAgICAgICAgICAgICAgIG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFj
ayhldmVudCk7CisgICAgICAgIH0pOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCmluZGV4IGNkNWI1MDk4MjFhNmVjOTVmNTdmMmM3NmRkYmM5ODgxMjlj
YzFiNjcuLmNjNzUyMTUzMDU5ZmFjOTUzODY1M2NjOTIxYTBlYjJkY2FlY2I0NjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgiCisjaW5jbHVkZSAiV2Vic2l0
ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTU5LDEzICs2MCwxNSBA
QCBlbnVtIGNsYXNzIFNob3VsZENsZWFyRmlyc3Q7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHVzaW5nIFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmlu
Z0ZvckRvbWFpbnNIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQs
IFNob3VsZENsZWFyRmlyc3QpPjsKLSAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSwgVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXImJiB1cGRh
dGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciA9IHsgfSkKKyAgICBzdGF0aWMg
UmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgRnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21h
aW5zSGFuZGxlciYmIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyID0g
eyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUo
dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIpKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKHRlc3RpbmdDYWxsYmFjayksIFdURk1v
dmUodXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIpKSk7CiAgICAgfQog
CiAgICAgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOwogCisgICAgc3RhdGljIGNv
bnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+JiBtb25pdG9yZWREYXRhVHlwZXMoKTsKKwog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFw
LmlzRW1wdHkoKTsgfQogICAgIFdvcmtRdWV1ZSYgc3RhdGlzdGljc1F1ZXVlKCkgeyByZXR1cm4g
bV9zdGF0aXN0aWNzUXVldWUuZ2V0KCk7IH0KIApAQCAtOTgsOCArMTAxLDEzIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nU3RhdGVSZXNldCgpOwogCiAgICAg
dm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnkoKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnQoKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNp
bmNlKTsKKyAgICAKKyAgICBlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyIHsKKyAgICAgICAg
WWVzLAorICAgICAgICBObywKKyAgICB9OworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlcik7CisgICAgdm9pZCBzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9p
bnQgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXIpOwogCiAgICAgdm9pZCBzZXRUaW1l
VG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMpOwogICAgIHZvaWQgc2V0VGltZVRvTGl2ZUNv
b2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyk7CkBAIC0xMTcsOSArMTI1LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIG1lcmdlV2l0aERhdGFGcm9tRGVjb2RlcihXZWJDb3JlOjpLZXllZERlY29kZXIm
KTsKICAgICB2b2lkIGNsZWFySW5NZW1vcnkoKTsKICAgICB2b2lkIGdyYW5kZmF0aGVyRXhpc3Rp
bmdXZWJzaXRlRGF0YSgpOwotICAgIAorCisgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGVzdGluZ0Nh
bGxiYWNrKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKSB7IG1fc3Rh
dGlzdGljc1Rlc3RpbmdDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CisgICAgdm9pZCBs
b2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJik7CisKIHByaXZhdGU6Ci0gICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYsIFVwZGF0ZUNvb2tpZVBhcnRpdGlv
bmluZ0ZvckRvbWFpbnNIYW5kbGVyJiYpOworICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZShjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0
aW5nQ2FsbGJhY2ssIFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyJiYp
OwogCiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcygpOwogCkBAIC0xNzgsNiArMTg5LDggQEAg
cHJpdmF0ZToKICAgICBQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIAogICAgIGJvb2wgbV9kYXRh
UmVjb3Jkc0JlaW5nUmVtb3ZlZCB7IGZhbHNlIH07CisKKyAgICBGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmKT4gbV9zdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGM5OWEyMGUwZmJhMjg0MWNhMWRhZjJh
MjliNGQ0NzhmMjMwNjkzNzguLmY2NDBiNGUxZGYzNTg0ZTllZTdlZGUyN2I2N2RlYTFkOTc1YWM1
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC04MTMsOCArODEzLDE5IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMs
IHN0ZDo6Y2hyCiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykgJiYgbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKQotICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQobW9kaWZpZWRTaW5jZSk7CisgICAgLy8gRklYTUUgPHJk
YXI6Ly9wcm9ibGVtLzMzNDkxMjIyPjsgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dCBkb2VzIG5vdCBoYXZlIGEgY29tcGxldGlvbiBoYW5kbGVyLAorICAgIC8vIHNvIHRoZSBjb21w
bGV0aW9uIGhhbmRsZXIgZm9yIHRoaXMgcmVtb3ZlRGF0YSgpIGNhbGwgY2FuIGJlIGNhbGxlZCBw
cmVtYXR1cmVseS4KKyAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljcykgJiYgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSB7Cisg
ICAgICAgIGF1dG8gZGVsZXRlZFR5cGVzUmF3ID0gZGF0YVR5cGVzLnRvUmF3KCk7CisgICAgICAg
IGF1dG8gbW9uaXRvcmVkVHlwZXNSYXcgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
Om1vbml0b3JlZERhdGFUeXBlcygpLnRvUmF3KCk7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIGRl
bGV0aW5nIGFsbCBvZiB0aGUgZGF0YSB0eXBlcyB0aGF0IHRoZSByZXNvdXJjZSBsb2FkIHN0YXRp
c3RpY3Mgc3RvcmUgbW9uaXRvcnMKKyAgICAgICAgLy8gd2UgZG8gbm90IG5lZWQgdG8gcmUtZ3Jh
bmRmYXRoZXIgb2xkIGRhdGEuCisgICAgICAgIGlmICgobW9uaXRvcmVkVHlwZXNSYXcgJiBkZWxl
dGVkVHlwZXNSYXcpID09IG1vbml0b3JlZFR5cGVzUmF3KQorICAgICAgICAgICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KG1vZGlm
aWVkU2luY2UsIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6U2hvdWxkR3JhbmRmYXRo
ZXI6Ok5vKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KG1vZGlmaWVkU2luY2UsIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6U2hvdWxkR3JhbmRmYXRoZXI6Olllcyk7Cisg
ICAgfQogCiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHdlIGRvbid0IGhhdmUgYW55IHBl
bmRpbmcgY2FsbGJhY2tzLiBJZiBzbywgd2Ugd2FudCB0byBkaXNwYXRjaCB0aGUgY29tcGxldGlv
biBoYW5kbGVyIHJpZ2h0IGF3YXkuCiAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5jYWxsSWZOZWVk
ZWQoKTsKQEAgLTEwODIsOCArMTA5MywxOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92
ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZQogICAg
IH0KICNlbmRpZgogCi0gICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3MpICYmIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykKLSAg
ICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KCk7CisgICAgLy8gRklYTUUgPHJkYXI6Ly9wcm9ibGVtLzMzNDkxMjIyPjsgc2No
ZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCBkb2VzIG5vdCBoYXZlIGEgY29tcGxldGlv
biBoYW5kbGVyLAorICAgIC8vIHNvIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgZm9yIHRoaXMgcmVt
b3ZlRGF0YSgpIGNhbGwgY2FuIGJlIGNhbGxlZCBwcmVtYXR1cmVseS4KKyAgICBpZiAoZGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykgJiYg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSB7CisgICAgICAgIGF1dG8gZGVsZXRlZFR5cGVzUmF3
ID0gZGF0YVR5cGVzLnRvUmF3KCk7CisgICAgICAgIGF1dG8gbW9uaXRvcmVkVHlwZXNSYXcgPSBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUeXBlcygpLnRvUmF3
KCk7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIGRlbGV0aW5nIGFsbCBvZiB0aGUgZGF0YSB0eXBl
cyB0aGF0IHRoZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3Mgc3RvcmUgbW9uaXRvcnMKKyAgICAg
ICAgLy8gd2UgZG8gbm90IG5lZWQgdG8gcmUtZ3JhbmRmYXRoZXIgb2xkIGRhdGEuCisgICAgICAg
IGlmICgobW9uaXRvcmVkVHlwZXNSYXcgJiBkZWxldGVkVHlwZXNSYXcpID09IG1vbml0b3JlZFR5
cGVzUmF3KQorICAgICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zY2hlZHVsZUNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
U2hvdWxkR3JhbmRmYXRoZXI6Ok5vKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6U2hvdWxkR3JhbmRmYXRoZXI6Olllcyk7Cisg
ICAgfQogCiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHdlIGRvbid0IGhhdmUgYW55IHBl
bmRpbmcgY2FsbGJhY2tzLiBJZiBzbywgd2Ugd2FudCB0byBkaXNwYXRjaCB0aGUgY29tcGxldGlv
biBoYW5kbGVyIHJpZ2h0IGF3YXkuCiAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5jYWxsSWZOZWVk
ZWQoKTsKQEAgLTEyNzAsMTggKzEyOTIsMzMgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChlbmFibGVkKSB7CisgICAgICAgIEFTU0VSVCghbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKTsKKyAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0FuZFNldFRl
c3RpbmdDYWxsYmFjayhudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvJiBwcm9jZXNz
UG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoZmFsc2UpOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NBbmRTZXRUZXN0aW5nQ2FsbGJhY2soRnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcykgeworICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNl
dFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcp
Ci0gICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5LCBbdGhpc10gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3Qgc2hv
dWxkQ2xlYXJGaXJzdCkgewotICAgICAgICAgICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9y
VG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBz
aG91bGRDbGVhckZpcnN0KTsKLSAgICAgICAgfSk7CisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUobV9jb25maWd1cmF0
aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUoY2FsbGJhY2spLCBb
dGhpc10gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJz
dCkgeworICAgICAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JUb3BQcml2YXRlbHlPd25l
ZERvbWFpbnMoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIHNob3VsZENsZWFyRmlyc3Qp
OworICAgIH0pOwogI2Vsc2UKLSAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJhdGlv
bi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBudWxscHRyKTsKICNlbmRpZgotICAg
IH0gZWxzZQotICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBudWxscHRyOwogCiAg
ICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQotICAgICAgICBwcm9j
ZXNzUG9vbC0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CisgICAg
ICAgIHByb2Nlc3NQb29sLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCh0cnVlKTsK
IH0KIAogRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6
OmRhdGFiYXNlUHJvY2Vzc1BhcmFtZXRlcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDI4NjliOWRkMzli
MTU5ZTQyZmZkNzQ3OTA4ZDhlYWY0ZDEwZDhkMmUuLjhlNzc0OWVkMmFkNTFhOTJkYmQyMmNkYjBj
MTI0MGFhMGVkYzU4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTEyNyw2ICsxMjcsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhZGRQZW5kaW5nQ29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpOwogICAg
IHZvaWQgcmVtb3ZlUGVuZGluZ0Nvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmKTsKIAorICAg
IHZvaWQgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0FuZFNldFRlc3RpbmdDYWxsYmFjayhG
dW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjayk7CisKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIGV4
cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoQ29uZmlndXJhdGlvbiwgV2ViQ29yZTo6U2Vzc2lvbklE
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAy
MjczOTVlNTViMzA0ZGI3NWMwMDViYWJhNTRkOTA1NjA1YTNmNzE1Li5iZDNhN2IwZjZiMjg4MWNl
ZWM3NTgyZTFjNDk5NTkwYWYyNzE2ZmYxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDctMjUgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgZ3JhbmRmYXRoZXJpbmcgaGFwcGVucyBtdWNoIHRvbyBvZnRlbi4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMyNjU1ODM0PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NDgyNQorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRW1wdHlHcmFu
ZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdDogQWRkZWQuCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5t
bTogQWRkZWQuCisgICAgICAgIChURVNUKToKKwogMjAxNy0wNy0yNSAgTWF0dGhldyBTdGV3YXJ0
ICA8bWF0dGhld19yX3N0ZXdhcnRAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBhdXRvaW5zdGFs
bGVyIGZhaWxpbmcgb24gYXV0b2luc3RhbGxfZXZlcnl0aGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBkNzNjMzgwYWQ5MzY1MmI1NDIyYmMwMzk0NTVkMWRhZWQyYTc2Yzg1Li5jNTJlNTQ3
MmI3ZTI1MDY5M2RhM2EzMWFlNmZjMzc5OWE0OWNhN2Q0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTczLDYgKzE3Myw4IEBACiAJCTUxQkNFRTRFMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRl
eGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkNFRTRDMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVk
REJNdWx0aVByb2Nlc3MtMS5odG1sICovOyB9OwogCQk1MUJDRUU0RjFDODRGNTNCMDA0MkM4MkUg
LyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0RDFDODRGNTJDMDA0MkM4MkUgLyog
SW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCAqLzsgfTsKIAkJNTFDNjgzREUxRUExMzRFODAw
NjUwMTgzIC8qIFdLVVJMU2NoZW1lSGFuZGxlci0xLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDNjgzREQxRUExMzREQjAwNjUwMTgzIC8qIFdLVVJM
U2NoZW1lSGFuZGxlci0xLm1tICovOyB9OworCQk1MUM4RTFBNTFGMjZBRjRDMDBCRjczMUIgLyog
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQzhFMUE0MUYyNkFDNTQwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLm1tICovOyB9OworCQk1MUM4RTFBOTFGMjdGNDk2MDBCRjczMUIgLyogRW1wdHlH
cmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM4RTFBODFGMjdGNDczMDBC
RjczMUIgLyogRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdCAq
LzsgfTsKIAkJNTFDRDFDNkMxQjM4Q0U0MzAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDRDFDNkExQjM4Q0Uz
NjAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tICovOyB9OwogCQk1MUNEMUM3MjFCMzhENDg0MDAx
NDJDQTUgLyogbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM3
MTFCMzhENDg0MDAxNDJDQTUgLyogbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13aW5k
b3cuaHRtbCAqLzsgfTsKIAkJNTFEMTI0OTgxRTc2M0IwMjAwMkIyODIwIC8qIFdLSFRUUENvb2tp
ZVN0b3JlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFEMTI0OTcxRTc2M0FGODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tICovOyB9OwpA
QCAtMzc2LDcgKzM3OCw2IEBACiAJCTdDQ0U3RUMxMUE0MTFBN0UwMDQ0N0M0QyAvKiBIVE1MQ29s
bGVjdGlvbk5hbWVkSXRlbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCNEY4RkEzMTU5RDUyQjEwMDJEOUY5NCAvKiBIVE1MQ29sbGVjdGlvbk5hbWVk
SXRlbS5tbSAqLzsgfTsKIAkJN0NDRTdFQzIxQTQxMUE3RTAwNDQ3QzRDIC8qIEhUTUxGb3JtQ29s
bGVjdGlvbk5hbWVkSXRlbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCMjZGQzZCMTU5RDA2MTAwMENDMzc2NSAvKiBIVE1MRm9ybUNvbGxlY3Rpb25O
YW1lZEl0ZW0ubW0gKi87IH07CiAJCTdDQ0U3RUMzMUE0MTFBN0UwMDQ0N0M0QyAvKiBJbnNwZWN0
b3JCYXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
NTA3RThBNjE0QzY1NDVCMDA1RDZCM0IgLyogSW5zcGVjdG9yQmFyLm1tICovOyB9OwotCQk5NTY0
NkU1QjFGMURCNjBFMDBERTBFQjkgLyogSW5zcGVjdG9yVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUzRjQ3OTExRjFEQjQwMzAwRTNEMUUz
IC8qIEluc3BlY3RvclZhbHVlLmNwcCAqLzsgfTsKIAkJN0NDRTdFQzQxQTQxMUE3RTAwNDQ3QzRD
IC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZyYW1lLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJCNDE2MDExNjgxNUIyNjAwODI0MjM4IC8qIEpTV3Jh
cHBlckZvck5vZGVJbldlYkZyYW1lLm1tICovOyB9OwogCQk3Q0NFN0VDNTFBNDExQTdFMDA0NDdD
NEMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMEQ5RjE1NUIy
NTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdh
dGUubW0gKi87IH07CiAJCTdDQ0U3RUM2MUE0MTFBN0UwMDQ0N0M0QyAvKiBNZW1vcnlDYWNoZVBy
dW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFN0RGQjE1MTEwRUE2MDBEMEIwMDggLyogTWVtb3J5
Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tICovOyB9OwpAQCAtNTEyLDYg
KzUxMyw3IEBACiAJCTkzRjU2REE3MUU1RjkxNzQwMDNFREU4NCAvKiBsaWJpY3Vjb3JlLmR5bGli
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4M0Uw
MzMxRDBBNUYyNzAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHlsaWIgKi87IH07CiAJCTkzRjU2REE5
MUU1RjkxOUQwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hvdC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU2REE4MUU1RjkxODEwMDNFREU4NCAv
KiBXS1dlYlZpZXdTbmFwc2hvdC5tbSAqLzsgfTsKIAkJOTNGN0U4NkYxNERDOEU1QzAwQzg0QTk5
IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGN0U4NkUxNERDOEU1
QjAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUu
Y3BwICovOyB9OworCQk5NTY0NkU1QjFGMURCNjBFMDBERTBFQjkgLyogSW5zcGVjdG9yVmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUzRjQ3
OTExRjFEQjQwMzAwRTNEMUUzIC8qIEluc3BlY3RvclZhbHVlLmNwcCAqLzsgfTsKIAkJOTk4NEZB
Q0MxQ0ZGQUY2MDAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4
QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi87IH07CiAJCTk5ODRGQUNFMUNGRkIwOTAwMDhE
MTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk4NEZBQ0QxQ0ZGQjAzODAwOEQxOThDIC8qIGVkaXRh
YmxlLWJvZHkuaHRtbCAqLzsgfTsKIAkJOUIwNzg2QTUxQzU4ODVDMzAwRDE1OUUzIC8qIEluamVj
dGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwNzg2QTQxQzU4ODVDMzAwRDE1OUUz
IC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3BwICovOyB9
OwpAQCAtNzQzLDYgKzc0NSw3IEBACiAJCQlkc3RQYXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAorCQkJCTUxQzhFMUE5
MUYyN0Y0OTYwMEJGNzMxQiAvKiBFbXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLnBsaXN0IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0NUI2M0ZCMUYxOTdGNEEwMDlE
MzhCOSAvKiBpbWFnZS1tYXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDA3RkUz
OTFGMUQwREZDMDAxN0NGMjUgLyogZW5vcm1vdXMuc3ZnIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCUY0RDVFNEU4MUYwQzVEMzgwMDhDMUE0OSAvKiBkcmFnc3RhcnQtY2xlYXItc2VsZWN0aW9u
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xMjEwLDYgKzEyMTMsOCBAQAogCQk1MUJD
RUU0QzFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNEQxQzg0RjUyQzAwNDJDODJFIC8q
IEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAiSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxQzY4M0REMUVBMTM0REIwMDY1MDE4MyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItMS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9ICJXS1VSTFNjaGVtZUhh
bmRsZXItMS5tbSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQzhFMUE0MUYyNkFD
NTQwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTFDOEUxQTgxRjI3RjQ3MzAwQkY3MzFCIC8qIEVtcHR5R3JhbmRmYXRoZXJlZFJlc291
cmNlTG9hZFN0YXRpc3RpY3MucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBmaWxlLmJwbGlzdDsgcGF0aCA9IEVtcHR5R3JhbmRmYXRoZXJlZFJl
c291cmNlTG9hZFN0YXRpc3RpY3MucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxQ0I0QUQ3MUIzQTA3OUMwMEMxQjFDNiAvKiBNb2RhbEFsZXJ0c1NQSS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RhbEFsZXJ0c1NQSS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0QxQzZBMUIzOENFMzYwMDE0MkNBNSAvKiBNb2RhbEFs
ZXJ0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1vZGFsQWxl
cnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUNEMUM3MTFCMzhENDg0MDAx
NDJDQTUgLyogbW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJtb2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzOTgsNiArMTQwMyw3IEBACiAJCTkzRjU2REE4
MUU1RjkxODEwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hvdC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1NuYXBzaG90Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0Y3RTg2QjE0REM4RTREMDBDODRBOTkgLyogTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjdFODZFMTREQzhFNUIwMEM4NEE5OSAvKiBO
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNfQnVuZGxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZyYW1lc19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NTNGNDc5
MTFGMURCNDAzMDBFM0QxRTMgLyogSW5zcGVjdG9yVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9yVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTg0
RkFDQTFDRkZBRUVFMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3VGV4dElucHV0Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTg0RkFDRDFDRkZCMDM4MDA4RDE5OEMgLyogZWRp
dGFibGUtYm9keS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImVkaXRhYmxlLWJv
ZHkuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDc4NkEyMUM1ODgzMEYw
MEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW4uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hh
ZG93Um9vdHNPcGVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDAsNyAr
MTU0Niw2IEBACiAJCUMyQ0Y5NzU5MTZDRUM2OUUwMDU0RTk5RCAvKiBKU0NvbnRleHRCYWNrRm9y
d2FyZENhY2hlMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSlNDb250ZXh0QmFj
a0ZvcndhcmRDYWNoZTIuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJFQjJE
RDExNkNBQzdBQzAwOUI1MkVFIC8qIFdlYlZpZXdEaWRDcmVhdGVKYXZhU2NyaXB0Q29udGV4dC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdEaWRDcmVh
dGVKYXZhU2NyaXB0Q29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUw
N0U4QTYxNEM2NTQ1QjAwNUQ2QjNCIC8qIEluc3BlY3RvckJhci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluc3BlY3RvckJhci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJOTUzRjQ3OTExRjFEQjQwMzAwRTNEMUUzIC8qIEluc3BlY3RvclZhbHVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclZhbHVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzUxMDFDNEUxNzZCOEJCOTAwRUU5QjE1IC8qIGZpbmRSYW5nZXMu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGZpbmRSYW5nZXMuaHRtbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUxQUZCOTgxNjlGNDlGRjAwOUNDRjY2IC8qIEZpbmRN
YXRjaGVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmluZE1h
dGNoZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NDBGNzc1MTUyRTREQTAw
MEE0MEM4QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFNpbXBsaWZ5TWFya3VwLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTg5MCw2ICsxODk1LDcgQEAKIAkJCQlBMTJEREJGQzFFODM2RkYxMDBDRjZDQUUgLyog
UmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zUGx1Z0luLm1tICovLAogCQkJCUExMkREQzAxMUU4Mzc0
RjUwMENGNkNBRSAvKiBSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQcm90b2NvbC5oICovLAogCQkJ
CUNEOUUyOTJCMUM5MEE3MUYwMDBCQjgwMCAvKiBSZXF1aXJlc1VzZXJBY3Rpb25Gb3JQbGF5YmFj
ay5tbSAqLywKKwkJCQk1MUM4RTFBNDFGMjZBQzU0MDBCRjczMUIgLyogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5tbSAqLywKIAkJCQlBMTgwQzBGOTFFRTY3REYwMDA0NjhGNDcgLyogUnVuT3BlblBh
bmVsLm1tICovLAogCQkJCTM3QkNBNjFCMUI1OTZCQTkwMDIwMTJDQSAvKiBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzSW5OZXdXaW5kb3dBY3Rpb25zLm1tICovLAogCQkJCTJEOUE1M0FFMUIzMUZBOEQw
MDc0RDVBQSAvKiBTaHJpbmtUb0ZpdC5tbSAqLywKQEAgLTIwODYsNiArMjA5Miw3IEBACiAJCQkJ
NTcxNEVDQkMxQ0E4QzIxODAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMMi5o
dG1sICovLAogCQkJCTU3MTRFQ0JBMUNBOEJGRDEwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVlc3RP
cmlnaW5hbFVSTEZyYW1lLmh0bWwgKi8sCiAJCQkJQTE1NTAyMkIxRTA1MEJDNTAwQTI0QzU3IC8q
IGR1cGxpY2F0ZS1jb21wbGV0aW9uLWhhbmRsZXItY2FsbHMuaHRtbCAqLywKKwkJCQk1MUM4RTFB
ODFGMjdGNDczMDBCRjczMUIgLyogRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5wbGlzdCAqLywKIAkJCQk5OTg0RkFDRDFDRkZCMDM4MDA4RDE5OEMgLyogZWRpdGFibGUt
Ym9keS5odG1sICovLAogCQkJCUY0MDdGRTM4MUYxRDBERTYwMDE3Q0YyNSAvKiBlbm9ybW91cy5z
dmcgKi8sCiAJCQkJRjRDMkFCMjExREQ2RDk0MTAwRTA2RDVCIC8qIGVub3Jtb3VzLXZpZGVvLXdp
dGgtc291bmQuaHRtbCAqLywKQEAgLTMwNjcsNiArMzA3NCw3IEBACiAJCQkJN0M4M0UwQkIxRDBB
NjUwMDAwRkVCQ0YzIC8qIEZpbmRJblBhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VG
NDFBNDExQUU2MDA0NDdDNEMgLyogRmluZE1hdGNoZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
QzgzRTA0MDFEMEE2M0UzMDBGRUJDRjMgLyogRmlyc3RSZXNwb25kZXJTY3JvbGxpbmdQb3NpdGlv
bi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxQzhFMUE1MUYyNkFGNEMwMEJGNzMxQiAvKiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkMxRDBBNjUw
NzAwRkVCQ0YzIC8qIEZpeGVkTGF5b3V0U2l6ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBOTA5
QTdFMUQ4Nzc0ODAwMDdFMTBGOCAvKiBGbG9hdFBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdBOTA5QTdGMUQ4Nzc0ODAwMDdFMTBGOCAvKiBGbG9hdFJlY3QuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9FbXB0
eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0IGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5wbGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTE0ZWRjNmZhZWM0YzMyYjUwN2U0ZmFjYzI3
MGVjMzBmMjM1YmViCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNDYKemNtWWMpJGpLfSZGKStC
byRpJlJUJUVyelNtdFQtdGx2dDlQbStxMlNsM0UtdUFlMjs7VXRTRjQyYlRiYWklVCstCnpmcjJ1
cmNgNSNCP25RfXREUVNyJThMMzQ7YEg7LXEpWiZ1Ris9QjQzKVN9fGR7SmFHVmxwVXxkS0UxVz8o
K3ZTbQphNG5ZT2VrZUp4R2JPdGJCV1E1UVJvS1BBQFdkWjxFd2tzX0YKCmxpdGVyYWwgMApIY21W
P2QwMDAwMQoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5YTY5
YzRkODM1MDI4M2NlODJjODIyZDBiZjBmMTkyMzE3ODAyMjEKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLm1tCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLRm91
bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmg+
CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworVEVTVChSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLCBHcmFuZGZhdGhlckNhbGxiYWNrKQoreworICAgIGF1dG8gKmRhdGFTdG9y
ZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CisgICAgW2RhdGFTdG9y
ZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6Tk9dOworCisgICAgTlNVUkwgKnN0
YXRpc3RpY3NEaXJlY3RvcnlVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFy
eS9XZWJLaXQvVGVzdFdlYktpdEFQSS9XZWJzaXRlRGF0YS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
IiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpZRVNdOworICAgIE5T
VVJMICpmaWxlVVJMID0gW3N0YXRpc3RpY3NEaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiZnVsbF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0Il07Cisg
ICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZmlsZVVS
TCBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3Zl
SXRlbUF0VVJMOnN0YXRpc3RpY3NEaXJlY3RvcnlVUkwgZXJyb3I6bmlsXTsKKyAgICBFWFBFQ1Rf
RkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN0
YXRpc3RpY3NEaXJlY3RvcnlVUkwucGF0aF0pOworCisgICAgc3RhdGljIGJvb2wgZG9uZUZsYWc7
CisgICAgc3RhdGljIGJvb2wgZ3JhbmRmYXRoZXJlZEZsYWc7CisKKyAgICBbZGF0YVN0b3JlIF9z
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOl4oV0tXZWJzaXRlRGF0YVN0
b3JlICosIE5TU3RyaW5nICptZXNzYWdlKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKFttZXNzYWdl
IGlzRXF1YWxUb1N0cmluZzpAIkdyYW5kZmF0aGVyZWQiXSk7CisgICAgICAgIGdyYW5kZmF0aGVy
ZWRGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
Z3JhbmRmYXRoZXJlZEZsYWcpOworCisgICAgLy8gU3BpbiB0aGUgcnVubG9vcCB1bnRpbCB0aGUg
cmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIGZpbGUgaGFzIHdyaXR0ZW4gdG8gZGlzay4KKyAgICAv
LyBJZiB0aGUgdGVzdCBlbnRlcnMgYSBzcGluIGxvb3AgaGVyZSwgaXQgaGFzIGZhaWxlZC4KKyAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVVUkwucGF0aF0pCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMSk7CisgICAgfQorCisg
ICAgZ3JhbmRmYXRoZXJlZEZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFP
ZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQ
cml2YXRlXSAgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFu
ZGxlcjpeIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
c3BpblJ1bkxvb3AoMTApOworCisgICAgLy8gVGhlIHdlYnNpdGUgZGF0YSBzdG9yZSByZW1vdmUg
c2hvdWxkIGhhdmUgY29tcGxldGVkLCBidXQgc2luY2Ugd2UgcmVtb3ZlZCBhbGwgb2YgdGhlIGRh
dGEgdHlwZXMgdGhhdCBhcmUgbW9uaXRvcmVkIGJ5IHJlc291cmNlIGxvYWQgc3RhdGlzdGljcywK
KyAgICAvLyBubyBncmFuZGZhdGhlcmluZyBjYWxsIHNob3VsZCBoYXZlIGJlZW4gbWFkZS4KKyAg
ICBFWFBFQ1RfRkFMU0UoZ3JhbmRmYXRoZXJlZEZsYWcpOworICAgIEVYUEVDVF9GQUxTRShbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZVVSTC5wYXRo
XSk7CisKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9m
VHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOldLV2Vic2l0ZURhdGFUeXBlQ29va2llcywgX1dL
V2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgbmlsXSBtb2RpZmllZFNpbmNl
OltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4geworICAgICAgICBkb25l
RmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICAvLyBTaW5jZSB3ZSBkaWQgbm90IHJlbW92ZSBl
dmVyeSBkYXRhIHR5cGUgY292ZXJlZCBieSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MsIHdlIGRv
IGV4cGVjdCB0aGF0IGdyYW5kZmF0aGVyaW5nIHRvb2sgcGxhY2UgYWdhaW4uCisgICAgLy8gSWYg
dGhlIHRlc3QgaGFuZ3Mgd2FpdGluZyBvbiBlaXRoZXIgb2YgdGhlc2UgY29uZGl0aW9ucywgaXQg
aGFzIGZhaWxlZC4KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdyYW5kZmF0aGVyZWRG
bGFnKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8v
IFNwaW4gdGhlIHJ1bmxvb3AgdW50aWwgdGhlIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBmaWxl
IGhhcyB3cml0dGVuIHRvIGRpc2suCisgICAgLy8gSWYgdGhlIHRlc3QgZW50ZXJzIGEgc3BpbiBs
b29wIGhlcmUsIGl0IGhhcyBmYWlsZWQuCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYg
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxlVVJM
LnBhdGhdKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnNwaW5SdW5Mb29wKDEpOworICAgIH0KK30KKworVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LCBTaG91bGROb3RHcmFuZGZhdGhlck9uU3RhcnR1cCkKK3sKKyAgICBhdXRvICpkYXRhU3RvcmUg
PSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOworICAgIFtkYXRhU3RvcmUg
X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOk5PXTsKKworICAgIE5TVVJMICpzdGF0
aXN0aWNzRGlyZWN0b3J5VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkv
V2ViS2l0L1Rlc3RXZWJLaXRBUEkvV2Vic2l0ZURhdGEvUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIg
c3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBOU1VS
TCAqdGFyZ2V0VVJMID0gW3N0YXRpc3RpY3NEaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiZnVsbF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0Il07Cisg
ICAgTlNVUkwgKnRlc3RSZXNvdXJjZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJFbXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIiB3aXRo
RXh0ZW5zaW9uOkAicGxpc3QiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il07CisKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9y
eUF0VVJMOnN0YXRpc3RpY3NEaXJlY3RvcnlVUkwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVz
OllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp0ZXN0UmVzb3VyY2VVUkwgdG9VUkw6dGFyZ2V0VVJM
IGVycm9yOm5pbF07CisKKyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6dGFyZ2V0VVJMLnBhdGhdKTsKKworICAgIHN0YXRpYyBi
b29sIGNhbGxiYWNrRmxhZzsKKyAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVGVzdGluZ0NhbGxiYWNrOl4oV0tXZWJzaXRlRGF0YVN0b3JlICosIE5TU3RyaW5nICptZXNz
YWdlKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKFttZXNzYWdlIGlzRXF1YWxUb1N0cmluZzpAIlBv
cHVsYXRlZFdpdGhvdXRHcmFuZGZhdGhlcmluZyJdKTsKKyAgICAgICAgY2FsbGJhY2tGbGFnID0g
dHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmY2FsbGJhY2tG
bGFnKTsKK30KKyNlbmRpZgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316410</attachid>
            <date>2017-07-25 17:20:11 -0700</date>
            <delta_ts>2017-07-25 22:06:19 -0700</delta_ts>
            <desc>Patch to land later after EWS clears this previous one</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>46690</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggM2U0MmJlZjBjZGMuLjQ1ODBmYzczN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDU3IEBACisyMDE3LTA3LTI1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGdyYW5kZmF0aGVyaW5nIGhhcHBlbnMgbXVj
aCB0b28gb2Z0ZW4uCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMjY1NTgzND4gYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ4MjUKKworICAgICAgICBSZXZp
ZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBUaGUgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyBncmFuZGZhdGhlcmluZyBwcm9jZWR1cmUgaGFwcGVucyB0b28gb2Z0ZW4uCisgICAgICAgIC0g
V2l0aCBhbiBlbXB0eSBtZW1vcnkgc3RvcmUsIGV2ZW4gdGhvdWdoIGFuIGVtcHR5IG1lbW9yeSBz
dG9yZSBpcyBhIHBlcmZlY3RseSB2YWxpZCBzdGF0ZS4KKyAgICAgICAgLSBPbiBlYWNoIGxhdW5j
aCwgZXZlbiBpZiBncmFuZGZhdGhlcmluZyBoYXBwZW5lZCBvbiB0aGUgbGFzdCBsYXVuY2ggLSBi
ZWNhdXNlIGdyYW5kZmF0aGVyaW5nCisgICAgICAgICAgZGF0YSB3b3VsZCBub3QgYXV0b21hdGlj
YWxseSBiZSBzYXZlZCB0byBkaXNrLgorICAgICAgICAtIEFmdGVyIGNsZWFyaW5nIGFsbCB3ZWJz
aXRlIGRhdGEsIGF0IHdoaWNoIHBvaW50IG5vIGdyYW5kZmF0aGVyaW5nIGNhbiBwb3NzaWJseSBi
ZSByZWxldmFudAorICAgICAgICAgIGJlY2F1c2UgdGhlcmUgaXMgbm8gZGF0YSB0byBncmFuZGZh
dGhlci4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRob3NlIGNhc2VzIGFuZCBhZGRzIEFQ
SSB0ZXN0cyB0byB2ZXJpZnkgdGhleSByZW1haW4gZml4ZWQuCisKKyAgICAgICAgKiBTaGFyZWQv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0
b3JlIF9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZV0pOiBhbGxXZWJzaXRlRGF0
YVR5cGVzLCBidXQgZXZlbiB3aXRoIHRoZSBwcml2YXRlIG9uZXMuCisgICAgICAgICgtW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50U3RvcmVdKTogSWYgdGhlIHR5cGVzIGJlaW5nIGNsZWFyZWQgY292ZXIgYWxsIG9mIAor
ICAgICAgICAgIHRoZSB0eXBlcyB0aGF0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgY2FyZSBhYm91
dCwgZG9uJ3QgZ3JhbmRmYXRoZXIgYWZ0ZXJ3YXJkcy4KKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZU1vZGlmaWVkU2luY2VIb3VyczpdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoK
KworICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZTo6cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKTogRG9uJ3Qg
Z3JhbmRmYXRoZXIgaWYgdGhlIHN0b3JlIHJlYWQgZnJvbSAKKyAgICAgICAgICBkaXNrIGlzIGVt
cHR5IChhcyBiZWluZyBlbXB0eSBpcyBwZXJmZWN0bHkgZmluZSksIGFuZCBhbHNvIGxvZyB0aGUg
ZXZlbnQgb2YgInBvcHVsYXRlZCB3aXRob3V0IGdyYW5kZmF0aGVyaW5nIi4KKyAgICAgICAgKiBV
SVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2Uu
aDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0
aFdlYnNpdGVEYXRhKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3Jkcyk6IAorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJz
aXRlRGF0YSk6IFNjaGVkdWxlIGEgd3JpdGUgcmlnaHQgYXdheSBzbyB3ZSBkb24ndCByZS1ncmFu
ZGZhdGhlcgorICAgICAgICAgIG9uIG5leHQgbGF1bmNoLCBhbmQgYWxzbyBsb2cgdGhlIGdyYW5k
ZmF0aGVyaW5nIGV2ZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOiBUYWtlcyBhIFNo
b3VsZEdyYW5kZmF0aGVyIGZsYWcKKyAgICAgICAgICB0byB0ZWxsIHdoZXRoZXIgb3Igbm90IGRh
dGEgc2hvdWxkIGJlIHJlLWdyYW5kZmF0aGVyZWQgYWZ0ZXIgdGhlIHN0b3JlIGlzIGNsZWFyZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVGVz
dGluZ0V2ZW50KTogTG9nIHRoZSBldmVudCB0byB0aGUgdGVzdGluZyBjbGllbnQuCisgICAgICAg
IChXZWJLaXQ6OmRhdGFUeXBlc1RvUmVtb3ZlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NBbmRTZXRU
ZXN0aW5nQ2FsbGJhY2spOiBIYW5kbGVzIGVuYWJsaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
Ym90aAorICAgICAgICAgIHdpdGggYW5kIHdpdGhvdXQgYSB0ZXN0aW5nIGNhbGxiYWNrLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMTct
MDctMjUgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHdoZW4gc2VuZGluZyBleHRlbnNpb25zIGZvciBmaWxl
IHVwbG9hZHMgdG8gdGhlIHdlYiBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oCmluZGV4IGNhYjg0NTJhZDNjLi4zMGNjMDMz
MTI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFUeXBlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFUeXBlLmgKQEAgLTQzLDExICs0Myw4IEBAIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBl
IHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBQbHVnSW5EYXRhID0gMSA8
PCAxMSwKICNlbmRpZgotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgTWVkaWFEZXZpY2VJ
ZGVudGlmaWVyID0gMSA8PCAxMiwKLSNlbmRpZgotICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSAxIDw8IDEzLAotICAgIENyZWRlbnRpYWxzID0gMSA8PCAxNCwKKyAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gMSA8PCAxMiwKKyAgICBDcmVkZW50aWFscyA9IDEgPDwgMTMsCiB9OwogCiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW0KaW5kZXggYWEzYTU2YmQ1N2EuLjQxYjE4ZDA2MTJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0KQEAgLTE1Nyw2ICsxNTcsMjMgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tXZWJz
aXRlRGF0YVN0b3JlIChXS1ByaXZhdGUpCiAKKysgKE5TU2V0PE5TU3RyaW5nICo+ICopX2FsbFdl
YnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQcml2YXRlCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29u
Y2VfdCBvbmNlVG9rZW47CisgICAgc3RhdGljIE5TU2V0ICphbGxXZWJzaXRlRGF0YVR5cGVzOwor
ICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXiB7CisgICAgICAgIGF1dG8gKnByaXZhdGVU
eXBlcyA9IEBbX1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlLCBfV0tXZWJzaXRlRGF0YVR5cGVN
ZWRpYUtleXMsIF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMsIF9X
S1dlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3MsIF9XS1dlYnNpdGVEYXRhVHlw
ZUNyZWRlbnRpYWxzCisjaWYgIVRBUkdFVF9PU19JUEhPTkUKKyAgICAgICAgLCBfV0tXZWJzaXRl
RGF0YVR5cGVQbHVnSW5EYXRhCisjZW5kaWYKKyAgICAgICAgXTsKKworICAgICAgICBhbGxXZWJz
aXRlRGF0YVR5cGVzID0gW1tbc2VsZiBhbGxXZWJzaXRlRGF0YVR5cGVzXSBzZXRCeUFkZGluZ09i
amVjdHNGcm9tQXJyYXk6cHJpdmF0ZVR5cGVzXSByZXRhaW5dOworICAgIH0pOworCisgICAgcmV0
dXJuIGFsbFdlYnNpdGVEYXRhVHlwZXM7Cit9CisKIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhD
b25maWd1cmF0aW9uOihfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3Vy
YXRpb24KIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKQEAgLTQ0OSw3ICs0NjYs
NyBAQCAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZQogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3Jl
LT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7CisgICAgc3RvcmUtPnNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OlNob3VsZEdyYW5kZmF0aGVyOjpZZXMpOwogfQogCiAtICh2b2lkKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVk
U2luY2VIb3VyczoodW5zaWduZWQpaG91cnMKQEAgLTQ1OCw3ICs0NzUsNyBAQCAtICh2b2lkKV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlm
aWVkU2luY2VIb3VycwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0
b3JlLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6Om5vdygpIC0gc3RkOjpjaHJvbm86OmhvdXJzKGhvdXJzKSk7CisgICAgc3RvcmUt
PnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6bm93KCkgLSBzdGQ6OmNocm9ubzo6aG91cnMoaG91cnMpLCBXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6U2hvdWxkR3JhbmRmYXRoZXI6Olllcyk7CiB9CiAKIC0g
KHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlCkBAIC00
NzMsNiArNDkwLDIyIEBAIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlCiAgICAgc3RvcmUtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeSgpOwogfQogCist
ICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOih2b2lkIChe
KShXS1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNTdHJpbmcgKikpY2FsbGJhY2sKK3sKKyAgICBpZiAo
Y2FsbGJhY2spIHsKKyAgICAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQW5kU2V0VGVzdGluZ0NhbGxiYWNrKFtjYWxs
YmFjayA9IG1ha2VCbG9ja1B0cihjYWxsYmFjayksIHNlbGZdKGNvbnN0IFN0cmluZyYgZXZlbnQp
IHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHNlbGYsIChOU1N0cmluZyAqKWV2ZW50KTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
OworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRTdGF0
aXN0aWNzVGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggNGVlNmMxNDU4NDku
LjUwZjYzMGNiYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTM3LDYgKzM3LDgg
QEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRj
aE9wdGlvbnMpIHsKIAogQGludGVyZmFjZSBXS1dlYnNpdGVEYXRhU3RvcmUgKFdLUHJpdmF0ZSkK
IAorKyAoTlNTZXQ8TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0ZURhdGFUeXBlc0luY2x1ZGluZ1By
aXZhdGU7CisKIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC0gKHZvaWQpX2ZldGNo
RGF0YVJlY29yZHNPZlR5cGVzOihOU1NldDxOU1N0cmluZyAqPiAqKWRhdGFUeXBlcyB3aXRoT3B0
aW9uczooX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucylvcHRpb25zIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKikpY29tcGxl
dGlvbkhhbmRsZXI7CkBAIC03MSw2ICs3Myw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRl
Z2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAtICh2b2lkKV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZp
ZWRTaW5jZUhvdXJzOih1bnNpZ25lZClob3VycyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NSZXNldFRvQ29uc2lzdGVudFN0YXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Rlc3RpbmdDYWxsYmFjazoobnVsbGFibGUgdm9pZCAoXikoV0tXZWJzaXRlRGF0YVN0b3JlICos
IE5TU3RyaW5nICopKWNhbGxiYWNrOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCBiNGQ5MmJlYjA5OC4uZDMwNDUyNTc3
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5j
cHAKQEAgLTIzNCw4ICsyMzQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZTo6cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKCkKIAogICAgIG1fbGFzdFN0
YXRpc3RpY3NGaWxlU3luY1RpbWUgPSByZWFkVGltZTsKIAotICAgIGlmIChtX21lbW9yeVN0b3Jl
LmlzRW1wdHkoKSkKLSAgICAgICAgbV9tZW1vcnlTdG9yZS5ncmFuZGZhdGhlckV4aXN0aW5nV2Vi
c2l0ZURhdGEoKTsKKyAgICBtX21lbW9yeVN0b3JlLmxvZ1Rlc3RpbmdFdmVudChBU0NJSUxpdGVy
YWwoIlBvcHVsYXRlZFdpdGhvdXRHcmFuZGZhdGhlcmluZyIpKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OmFzeW5jV3JpdGVUaW1lckZpcmVkKCkK
QEAgLTI4MCwxMiArMjc5LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlOjp3cml0ZU1lbW9yeVN0b3JlVG9EaXNrKCkKICAgICBzdGFydE1vbml0b3JpbmdE
aXNrKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
OjpzY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZSgpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZTo6c2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoRm9yY2VJbW1l
ZGlhdGVXcml0ZSBmb3JjZUltbWVkaWF0ZVdyaXRlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgYXV0byB0aW1lU2luY2VMYXN0V3JpdGUgPSBNb25vdG9uaWNUaW1l
Ojpub3coKSAtIG1fbGFzdFN0YXRpc3RpY3NXcml0ZVRpbWU7Ci0gICAgaWYgKHRpbWVTaW5jZUxh
c3RXcml0ZSA8IG1pbmltdW1Xcml0ZUludGVydmFsKSB7CisgICAgaWYgKGZvcmNlSW1tZWRpYXRl
V3JpdGUgIT0gRm9yY2VJbW1lZGlhdGVXcml0ZTo6WWVzICYmIHRpbWVTaW5jZUxhc3RXcml0ZSA8
IG1pbmltdW1Xcml0ZUludGVydmFsKSB7CiAgICAgICAgIGlmICghbV9oYXNQZW5kaW5nV3JpdGUp
IHsKICAgICAgICAgICAgIG1faGFzUGVuZGluZ1dyaXRlID0gdHJ1ZTsKICAgICAgICAgICAgIFNl
Y29uZHMgZGVsYXkgPSBtaW5pbXVtV3JpdGVJbnRlcnZhbCAtIHRpbWVTaW5jZUxhc3RXcml0ZSAr
IDFfczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCmlu
ZGV4IDgxZjdjY2RlMzRjLi5jNWQyZWQ0YmM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCkBAIC00NSw3ICs0NSw2IEBAIHB1YmxpYzoKICAgICB+
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKCk7CiAKICAgICB2b2lkIGlu
aXRpYWxpemUoKTsKLSAgICB2b2lkIHNjaGVkdWxlT3JXcml0ZU1lbW9yeVN0b3JlKCk7CiAgICAg
dm9pZCBjbGVhcigpOwogCiAgICAgdm9pZCBmaW5pc2hBbGxQZW5kaW5nV29ya1N5bmNocm9ub3Vz
bHkoKTsKQEAgLTUzLDYgKzUyLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZigpOwogICAgIHZv
aWQgZGVyZWYoKTsKIAorICAgIGVudW0gY2xhc3MgRm9yY2VJbW1lZGlhdGVXcml0ZSB7CisgICAg
ICAgIE5vLAorICAgICAgICBZZXMsCisgICAgfTsKKyAgICB2b2lkIHNjaGVkdWxlT3JXcml0ZU1l
bW9yeVN0b3JlKEZvcmNlSW1tZWRpYXRlV3JpdGUpOworCiBwcml2YXRlOgogICAgIFN0cmluZyBz
dG9yYWdlRGlyZWN0b3J5UGF0aCgpIGNvbnN0OwogICAgIFN0cmluZyByZXNvdXJjZUxvZ0ZpbGVQ
YXRoKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCA0Mjc1MDU2Mjg5MS4uNTU2MTE2N2E1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzI3LDYgKzMyNywxMCBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEo
T3B0aW9uU2V0PFdlYgogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5k
aW5nQ2FsbGJhY2soKTsKICAgICAgICAgfSk7CiAgICAgfQorCisgICAgLy8gRklYTUU6IEl0J3Mg
Yml6YXJyZSB0aGF0IHRoaXMgY2FsbCBpcyBvbiBXZWJQcm9jZXNzUHJveHkgYW5kIHRoYXQgaXQg
ZG9lc24ndCB3b3JrIGlmIHRoZXJlIGFyZSBubyB2aXNpdGVkIHBhZ2VzLgorICAgIC8vIFRoaXMg
c2hvdWxkIGFjdHVhbGx5IGJlIGEgZnVuY3Rpb24gb2YgV2Vic2l0ZURhdGFTdG9yZSBhbmQgaXQg
c2hvdWxkIHdvcmsgZXZlbiBpZiB0aGVyZSBhcmUgbm8gV2ViVmlld3MgaW5zdGFuY2VzLgorICAg
IGNhbGxiYWNrQWdncmVnYXRvci0+Y2FsbElmTmVlZGVkKCk7CiB9CiAgICAgCiB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA3ZTYxOTEzMjViNC4uYzYwZDdkNTQ2NzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0
aW9uLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUgIldlYnNpdGVE
YXRhVHlwZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2RpbmcuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJl
YWRDb3BpZXIuaD4KQEAgLTU0LDE1ICs1MywxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0
aWMgaW5saW5lIFN0cmluZyBpc29sYXRlZFByaW1hcnlEb21haW4oY29uc3QgVCYgdmFsdWUpCiAg
ICAgcmV0dXJuIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnByaW1hcnlEb21haW4odmFsdWUpLmlz
b2xhdGVkQ29weSgpOwogfQogCi1zdGF0aWMgY29uc3QgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4mIGRhdGFUeXBlc1RvUmVtb3ZlKCkKK2NvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
JiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUeXBlcygpCiB7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+PiBk
YXRhVHlwZXMoc3RkOjppbml0aWFsaXplcl9saXN0PFdlYnNpdGVEYXRhVHlwZT4oewogICAgICAg
ICBXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMsCiAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6SW5k
ZXhlZERCRGF0YWJhc2VzLAogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwK
LSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgICAgICBXZWJzaXRlRGF0YVR5cGU6Ok1lZGlh
RGV2aWNlSWRlbnRpZmllciwKLSNlbmRpZgogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6Ok1lZGlh
S2V5cywKICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNo
ZSwKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTE0OSwxMSArMTQ1LDEyIEBA
IHN0YXRpYyBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbWVyZ2VPcGVyYXRpbmdEYXRlcyhjb25zdCBW
ZWN0b3I8T3BlcmF0aW5nRGF0ZT4mIGV4CiAgICAgcmV0dXJuIG1lcmdlZERhdGVzOwogfQogCi1X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyJiYgdXBkYXRlQ29va2llUGFydGl0
aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIpCitXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYpPiYmIHRl
c3RpbmdDYWxsYmFjaywgVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIm
JiB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcikKICAgICA6IG1fc3Rh
dGlzdGljc1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUgUHJvY2VzcyBEYXRhIFF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtR
dWV1ZTo6UU9TOjpVdGlsaXR5KSkKICAgICAsIG1fcGVyc2lzdGVudFN0b3JhZ2UoKnRoaXMsIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCiAgICAgLCBtX3VwZGF0ZUNvb2tpZVBhcnRp
dGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKFdURk1vdmUodXBkYXRlQ29va2llUGFydGl0aW9uaW5n
Rm9yRG9tYWluc0hhbmRsZXIpKQogICAgICwgbV9kYWlseVRhc2tzVGltZXIoUnVuTG9vcDo6bWFp
bigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJmb3JtRGFpbHlU
YXNrcykKKyAgICAsIG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhXVEZNb3ZlKHRlc3RpbmdD
YWxsYmFjaykpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTkyLDcg
KzE4OSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRh
UmVjb3JkcygpCiAgICAgc2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQodHJ1ZSk7CiAKICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3ByZXZhbGVudFJlc291cmNlRG9tYWlucyA9IENyb3Nz
VGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShwcmV2YWxlbnRSZXNvdXJjZURvbWFp
bnMpLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFibGUgewot
ICAgICAgICBXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yVG9wUHJpdmF0ZWx5
Q29udHJvbGxlZERvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKGRhdGFUeXBlc1RvUmVt
b3ZlKCksIFdURk1vdmUocHJldmFsZW50UmVzb3VyY2VEb21haW5zKSwgbV9wYXJhbWV0ZXJzLnNo
b3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0oY29uc3QgSGFzaFNldDxTdHJpbmc+JiBk
b21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAgIFdlYlByb2Nl
c3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
c0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojptb25pdG9yZWREYXRhVHlwZXMoKSwgV1RGTW92ZShwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMp
LCBtX3BhcmFtZXRlcnMuc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXShjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRvcERvbWFpbnMgPSBDcm9zc1RocmVhZENv
cGllcjxIYXNoU2V0PFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRh
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBwcmV2YWxlbnRSZXNv
dXJjZURvbWFpbiA6IHRvcERvbWFpbnMpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgc3Rh
dGlzdGljID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmV2YWxl
bnRSZXNvdXJjZURvbWFpbik7CkBAIC0yMzIsNyArMjI5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKQogICAg
ICAgICB9KTsKICAgICB9CiAKLSAgICBtX3BlcnNpc3RlbnRTdG9yYWdlLnNjaGVkdWxlT3JXcml0
ZU1lbW9yeVN0b3JlKCk7CisgICAgbV9wZXJzaXN0ZW50U3RvcmFnZS5zY2hlZHVsZU9yV3JpdGVN
ZW1vcnlTdG9yZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OkZvcmNl
SW1tZWRpYXRlV3JpdGU6Ok5vKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzPiYmIG9yaWdpbnMpCkBAIC0yNTAsMTQgKzI0NywxOSBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNp
dGVEYXRhKCkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAo
KSBtdXRhYmxlIHsKLSAgICAgICAgV2ViUHJvY2Vzc1Byb3h5Ojp0b3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YShkYXRhVHlwZXNUb1JlbW92ZSgpLCBtX3BhcmFtZXRl
cnMuc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAoSGFzaFNldDxTdHJpbmc+JiYg
dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEpIG11dGFibGUgewor
ICAgICAgICAvLyBGSVhNRTogVGhpcyBtZXRob2QgYmVpbmcgYSBzdGF0aWMgY2FsbCBvbiBXZWJQ
cm9jZXNzUHJveHkgaXMgd3JvbmcuCisgICAgICAgIC8vIEl0IHNob3VsZCBiZSBvbiB0aGUgZGF0
YSBzdG9yZSB0aGF0IHRoaXMgb2JqZWN0IGJlbG9uZ3MgdG8uCisgICAgICAgIFdlYlByb2Nlc3NQ
cm94eTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEoV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25pdG9yZWREYXRhVHlwZXMoKSwgbV9wYXJhbWV0
ZXJzLnNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gKEhhc2hTZXQ8U3RyaW5nPiYm
IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRvcERvbWFpbnMgPSBDcm9zc1RocmVhZENv
cGllcjxIYXNoU2V0PFN0cmluZz4+Ojpjb3B5KHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5z
V2l0aFdlYnNpdGVEYXRhKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRv
JiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluIDogdG9wRG9tYWlucykgewogICAgICAgICAg
ICAgICAgICAgICBhdXRvJiBzdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pOwogICAgICAgICAgICAg
ICAgICAgICBzdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIG1fZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcCA9IFdhbGxU
aW1lOjpub3coKSArIG1fcGFyYW1ldGVycy5ncmFuZGZhdGhlcmluZ1RpbWU7CisgICAgICAgICAg
ICAgICAgbV9wZXJzaXN0ZW50U3RvcmFnZS5zY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZShSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OkZvcmNlSW1tZWRpYXRlV3JpdGU6
Olllcyk7CiAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbG9nVGVzdGluZ0V2ZW50KEFT
Q0lJTGl0ZXJhbCgiR3JhbmRmYXRoZXJlZCIpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBA
IC00ODMsMjEgKzQ4NSwyMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c2NoZWR1bGVDbGVhckluTWVtb3J5KCkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKQor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXIgc2hvdWxkR3JhbmRmYXRoZXIpCiB7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgIG1fc3Rh
dGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBzaG91bGRHcmFuZGZhdGhlcl0gewogICAgICAgICBjbGVhckluTWVtb3J5KCk7CiAgICAg
ICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UuY2xlYXIoKTsKLSAgICAgICAgZ3JhbmRmYXRoZXJFeGlz
dGluZ1dlYnNpdGVEYXRhKCk7CisgICAgICAgIAorICAgICAgICBpZiAoc2hvdWxkR3JhbmRmYXRo
ZXIgPT0gU2hvdWxkR3JhbmRmYXRoZXI6OlllcykKKyAgICAgICAgICAgIGdyYW5kZmF0aGVyRXhp
c3RpbmdXZWJzaXRlRGF0YSgpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2Us
IFNob3VsZEdyYW5kZmF0aGVyIHNob3VsZEdyYW5kZmF0aGVyKQogewogICAgIC8vIEZvciBub3cs
IGJlIGNvbnNlcnZhdGl2ZSBhbmQgY2xlYXIgZXZlcnl0aGluZyByZWdhcmRsZXNzIG9mIG1vZGlm
aWVkU2luY2UuCiAgICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVkU2luY2UpOwotICAgIHNjaGVkdWxl
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKKyAgICBzY2hlZHVsZUNsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50KHNob3VsZEdyYW5kZmF0aGVyKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyBz
ZWNvbmRzKQpAQCAtODI0LDUgKzgyOCwyMCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKCkKIHsKICAgICBtX3BhcmFt
ZXRlcnMgPSB7IH07CiB9Ci0gICAgCisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudCkKK3sKKyAgICBpZiAoIW1f
c3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFJ1
bkxvb3A6OmlzTWFpbigpKQorICAgICAgICBtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soZXZl
bnQpOworICAgIGVsc2UgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZXZlbnQgPSBldmVudC5pc29sYXRlZENv
cHkoKV0geworICAgICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaykKKyAg
ICAgICAgICAgICAgICBtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soZXZlbnQpOworICAgICAg
ICB9KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApp
bmRleCBjZDViNTA5ODIxYS4uNTIxYmQzMmNkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5j
bHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTU5LDEzICs2MCwxNSBAQCBlbnVtIGNsYXNzIFNob3Vs
ZENsZWFyRmlyc3Q7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwg
OiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgewogcHVi
bGljOgogICAgIHVzaW5nIFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVy
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1v
dmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3Qp
PjsKLSAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgVXBkYXRlQ29v
a2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXImJiB1cGRhdGVDb29raWVQYXJ0aXRpb25p
bmdGb3JEb21haW5zSGFuZGxlciA9IHsgfSkKKyAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSwgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0Nh
bGxiYWNrLCBVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciYmIHVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyID0geyB9KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUodXBkYXRlQ29va2llUGFydGl0
aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LCBXVEZNb3ZlKHRlc3RpbmdDYWxsYmFjayksIFdURk1vdmUodXBkYXRlQ29va2llUGFy
dGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIpKSk7CiAgICAgfQogCiAgICAgfldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSgpOwogCisgICAgc3RhdGljIGNvbnN0IE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+JiBtb25pdG9yZWREYXRhVHlwZXMoKTsKKwogICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKTsgfQogICAg
IFdvcmtRdWV1ZSYgc3RhdGlzdGljc1F1ZXVlKCkgeyByZXR1cm4gbV9zdGF0aXN0aWNzUXVldWUu
Z2V0KCk7IH0KIApAQCAtOTgsOCArMTAxLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxl
Q29va2llUGFydGl0aW9uaW5nU3RhdGVSZXNldCgpOwogCiAgICAgdm9pZCBzY2hlZHVsZUNsZWFy
SW5NZW1vcnkoKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
KTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICAKKyAgICBl
bnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcywK
KyAgICB9OworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91
bGRHcmFuZGZhdGhlcik7CisgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwg
U2hvdWxkR3JhbmRmYXRoZXIpOwogCiAgICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKFNlY29uZHMpOwogICAgIHZvaWQgc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUo
U2Vjb25kcyk7CkBAIC0xMTcsOSArMTI1LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIG1lcmdlV2l0
aERhdGFGcm9tRGVjb2RlcihXZWJDb3JlOjpLZXllZERlY29kZXImKTsKICAgICB2b2lkIGNsZWFy
SW5NZW1vcnkoKTsKICAgICB2b2lkIGdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSgpOwot
ICAgIAorCisgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKEZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKSB7IG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CisgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29u
c3QgU3RyaW5nJik7CisKIHByaXZhdGU6Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlKGNvbnN0IFN0cmluZyYsIFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5k
bGVyJiYpOworICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcm
LCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIFVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyJiYpOwogCiAgICAgdm9pZCByZW1v
dmVEYXRhUmVjb3JkcygpOwogCkBAIC0xNzgsNiArMTg5LDggQEAgcHJpdmF0ZToKICAgICBQYXJh
bWV0ZXJzIG1fcGFyYW1ldGVyczsKIAogICAgIGJvb2wgbV9kYXRhUmVjb3Jkc0JlaW5nUmVtb3Zl
ZCB7IGZhbHNlIH07CisKKyAgICBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4gbV9zdGF0
aXN0aWNzVGVzdGluZ0NhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCmluZGV4IGM5OWEyMGUwZmJhLi5mNjQwYjRlMWRmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKQEAgLTgxMyw4ICs4MTMsMTkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRh
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgc3RkOjpjaHIKICAgICB9CiAj
ZW5kaWYKIAotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKSAmJiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCi0gICAgICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudChtb2RpZmllZFNpbmNlKTsKKyAgICAvLyBGSVhNRSA8cmRhcjovL3Byb2JsZW0vMzM0OTEy
MjI+OyBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50IGRvZXMgbm90IGhhdmUgYSBj
b21wbGV0aW9uIGhhbmRsZXIsCisgICAgLy8gc28gdGhlIGNvbXBsZXRpb24gaGFuZGxlciBmb3Ig
dGhpcyByZW1vdmVEYXRhKCkgY2FsbCBjYW4gYmUgY2FsbGVkIHByZW1hdHVyZWx5LgorICAgIGlm
IChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKSAmJiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKKyAgICAgICAgYXV0byBkZWxldGVk
VHlwZXNSYXcgPSBkYXRhVHlwZXMudG9SYXcoKTsKKyAgICAgICAgYXV0byBtb25pdG9yZWRUeXBl
c1JhdyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVz
KCkudG9SYXcoKTsKKworICAgICAgICAvLyBJZiB3ZSBhcmUgZGVsZXRpbmcgYWxsIG9mIHRoZSBk
YXRhIHR5cGVzIHRoYXQgdGhlIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBzdG9yZSBtb25pdG9y
cworICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byByZS1ncmFuZGZhdGhlciBvbGQgZGF0YS4K
KyAgICAgICAgaWYgKChtb25pdG9yZWRUeXBlc1JhdyAmIGRlbGV0ZWRUeXBlc1JhdykgPT0gbW9u
aXRvcmVkVHlwZXNSYXcpCisgICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNj
aGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQobW9kaWZpZWRTaW5jZSwgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpTaG91bGRHcmFuZGZhdGhlcjo6Tm8pOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQobW9kaWZpZWRTaW5jZSwgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpTaG91bGRHcmFuZGZhdGhlcjo6WWVzKTsKKyAgICB9CiAKICAgICAvLyBUaGVy
ZSdzIGEgY2hhbmNlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkgcGVuZGluZyBjYWxsYmFja3MuIElm
IHNvLCB3ZSB3YW50IHRvIGRpc3BhdGNoIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgcmlnaHQgYXdh
eS4KICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwpAQCAtMTA4Miw4ICsx
MDkzLDE5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGNvbnN0IFZlCiAgICAgfQogI2VuZGlmCiAKLSAgICBp
ZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljcykgJiYgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQotICAgICAgICBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKKyAgICAv
LyBGSVhNRSA8cmRhcjovL3Byb2JsZW0vMzM0OTEyMjI+OyBzY2hlZHVsZUNsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50IGRvZXMgbm90IGhhdmUgYSBjb21wbGV0aW9uIGhhbmRsZXIsCisgICAgLy8g
c28gdGhlIGNvbXBsZXRpb24gaGFuZGxlciBmb3IgdGhpcyByZW1vdmVEYXRhKCkgY2FsbCBjYW4g
YmUgY2FsbGVkIHByZW1hdHVyZWx5LgorICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSAmJiBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MpIHsKKyAgICAgICAgYXV0byBkZWxldGVkVHlwZXNSYXcgPSBkYXRhVHlwZXMudG9SYXco
KTsKKyAgICAgICAgYXV0byBtb25pdG9yZWRUeXBlc1JhdyA9IFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKCkudG9SYXcoKTsKKworICAgICAgICAvLyBJ
ZiB3ZSBhcmUgZGVsZXRpbmcgYWxsIG9mIHRoZSBkYXRhIHR5cGVzIHRoYXQgdGhlIHJlc291cmNl
IGxvYWQgc3RhdGlzdGljcyBzdG9yZSBtb25pdG9ycworICAgICAgICAvLyB3ZSBkbyBub3QgbmVl
ZCB0byByZS1ncmFuZGZhdGhlciBvbGQgZGF0YS4KKyAgICAgICAgaWYgKChtb25pdG9yZWRUeXBl
c1JhdyAmIGRlbGV0ZWRUeXBlc1JhdykgPT0gbW9uaXRvcmVkVHlwZXNSYXcpCisgICAgICAgICAg
ICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnQoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpTaG91bGRHcmFuZGZhdGhlcjo6
Tm8pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpTaG91bGRHcmFuZGZhdGhlcjo6WWVzKTsKKyAgICB9CiAKICAgICAvLyBUaGVy
ZSdzIGEgY2hhbmNlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkgcGVuZGluZyBjYWxsYmFja3MuIElm
IHNvLCB3ZSB3YW50IHRvIGRpc3BhdGNoIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgcmlnaHQgYXdh
eS4KICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwpAQCAtMTI3MCwxOCAr
MTI5MiwzMyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGVuYWJs
ZWQpIHsKKyAgICAgICAgQVNTRVJUKCFtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpOworICAgICAg
ICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQW5kU2V0VGVzdGluZ0NhbGxiYWNrKG51bGxw
dHIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbnVsbHB0cjsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xz
KCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChmYWxzZSk7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0FuZFNldFRlc3RpbmdDYWxsYmFjayhGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSB7
CisgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3RhdGlzdGljc1Rlc3RpbmdD
YWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNp
ZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICAgICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUo
bV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFt0aGlzXSAo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KSB7Ci0g
ICAgICAgICAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JUb3BQcml2YXRlbHlPd25lZERv
bWFpbnMoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIHNob3VsZENsZWFyRmlyc3QpOwot
ICAgICAgICB9KTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShtX2NvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZShjYWxsYmFjayksIFt0aGlzXSAoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KSB7CisgICAgICAgIHVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhkb21haW5zVG9S
ZW1vdmUsIGRvbWFpbnNUb0FkZCwgc2hvdWxkQ2xlYXJGaXJzdCk7CisgICAgfSk7CiAjZWxzZQot
ICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmNyZWF0ZShtX2NvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSk7CisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnksIG51bGxwdHIpOwogI2VuZGlmCi0gICAgfSBlbHNlCi0gICAgICAgIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG51bGxwdHI7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCi0gICAgICAgIHByb2Nlc3NQb29sLT5zZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHRydWUpOwogfQogCiBEYXRhYmFzZVByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6ZGF0YWJhc2VQcm9jZXNzUGFy
YW1ldGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMjg2OWI5ZGQzOWIuLjhlNzc0OWVkMmFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCkBAIC0xMjcsNiArMTI3LDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkUGVuZGlu
Z0Nvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmKTsKICAgICB2b2lkIHJlbW92ZVBlbmRpbmdD
b29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJik7CiAKKyAgICB2b2lkIGVuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NBbmRTZXRUZXN0aW5nQ2FsbGJhY2soRnVuY3Rpb248dm9pZCAoY29uc3Qg
U3RyaW5nJik+JiYgY2FsbGJhY2spOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYnNpdGVE
YXRhU3RvcmUoV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0
b3JlKENvbmZpZ3VyYXRpb24sIFdlYkNvcmU6OlNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjI3Mzk1ZTU1YjMuLmJkM2E3YjBm
NmIyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTctMDctMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgZ3JhbmRmYXRoZXJpbmcgaGFw
cGVucyBtdWNoIHRvbyBvZnRlbi4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyNjU1ODM0PiBh
bmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDgyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5wbGlzdDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbTogQWRkZWQuCisgICAgICAgIChU
RVNUKToKKwogMjAxNy0wNy0yNSAgTWF0dGhldyBTdGV3YXJ0ICA8bWF0dGhld19yX3N0ZXdhcnRA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBhdXRvaW5zdGFsbGVyIGZhaWxpbmcgb24gYXV0b2lu
c3RhbGxfZXZlcnl0aGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNzNjMzgwYWQ5My4u
YzUyZTU0NzJiN2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzMsNiArMTczLDggQEAK
IAkJNTFCQ0VFNEUxQzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwg
Ki87IH07CiAJCTUxQkNFRTRGMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nl
c3MtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3Mt
Mi5odG1sICovOyB9OwogCQk1MUM2ODNERTFFQTEzNEU4MDA2NTAxODMgLyogV0tVUkxTY2hlbWVI
YW5kbGVyLTEubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUM2ODNERDFFQTEzNERCMDA2NTAxODMgLyogV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0gKi87
IH07CisJCTUxQzhFMUE1MUYyNkFGNEMwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDOEUx
QTQxRjI2QUM1NDAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gKi87IH07CisJ
CTUxQzhFMUE5MUYyN0Y0OTYwMEJGNzMxQiAvKiBFbXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLnBsaXN0IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQzhFMUE4MUYyN0Y0NzMwMEJGNzMxQiAvKiBFbXB0eUdyYW5kZmF0
aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0ICovOyB9OwogCQk1MUNEMUM2QzFCMzhD
RTQzMDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM2QTFCMzhDRTM2MDAxNDJDQTUgLyogTW9kYWxBbGVy
dHMubW0gKi87IH07CiAJCTUxQ0QxQzcyMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMt
aW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0QxQzcxMUIzOEQ0ODQwMDE0MkNBNSAvKiBt
b2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sICovOyB9OwogCQk1MUQx
MjQ5ODFFNzYzQjAyMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ5NzFFNzYzQUY4MDAyQjI4
MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gKi87IH07CkBAIC0zNzYsNyArMzc4LDYgQEAKIAkJ
N0NDRTdFQzExQTQxMUE3RTAwNDQ3QzRDIC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0RjhGQTMxNTlE
NTJCMTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tICovOyB9OwogCQk3Q0NF
N0VDMjFBNDExQTdFMDA0NDdDNEMgLyogSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyNkZDNkIxNTlE
MDYxMDAwQ0MzNzY1IC8qIEhUTUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbS5tbSAqLzsgfTsKIAkJ
N0NDRTdFQzMxQTQxMUE3RTAwNDQ3QzRDIC8qIEluc3BlY3RvckJhci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MDdFOEE2MTRDNjU0NUIwMDVENkIz
QiAvKiBJbnNwZWN0b3JCYXIubW0gKi87IH07Ci0JCTk1NjQ2RTVCMUYxREI2MEUwMERFMEVCOSAv
KiBJbnNwZWN0b3JWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NTNGNDc5MTFGMURCNDAzMDBFM0QxRTMgLyogSW5zcGVjdG9yVmFsdWUuY3Bw
ICovOyB9OwogCQk3Q0NFN0VDNDFBNDExQTdFMDA0NDdDNEMgLyogSlNXcmFwcGVyRm9yTm9kZUlu
V2ViRnJhbWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QkI0MTYwMTE2ODE1QjI2MDA4MjQyMzggLyogSlNXcmFwcGVyRm9yTm9kZUluV2ViRnJhbWUu
bW0gKi87IH07CiAJCTdDQ0U3RUM1MUE0MTFBN0UwMDQ0N0M0QyAvKiBNZW1vcnlDYWNoZURpc2Fi
bGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlD
YWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJN0NDRTdF
QzYxQTQxMUE3RTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxN0U3REZCMTUxMTBFQTYwMEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW0gKi87IH07CkBAIC01MTIsNiArNTEzLDcgQEAKIAkJOTNGNTZEQTcx
RTVGOTE3NDAwM0VERTg0IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzRTAzMzFEMEE1RjI3MDBGRUJDRjMgLyog
bGliaWN1Y29yZS5keWxpYiAqLzsgfTsKIAkJOTNGNTZEQTkxRTVGOTE5RDAwM0VERTg0IC8qIFdL
V2ViVmlld1NuYXBzaG90Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1t
ICovOyB9OwogCQk5M0Y3RTg2RjE0REM4RTVDMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y3RTg2RTE0REM4RTVCMDBDODRBOTkgLyogTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgKi87IH07CisJCTk1NjQ2RTVC
MUYxREI2MEUwMERFMEVCOSAvKiBJbnNwZWN0b3JWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTNGNDc5MTFGMURCNDAzMDBFM0QxRTMgLyog
SW5zcGVjdG9yVmFsdWUuY3BwICovOyB9OwogCQk5OTg0RkFDQzFDRkZBRjYwMDA4RDE5OEMgLyog
V0tXZWJWaWV3VGV4dElucHV0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1
dC5tbSAqLzsgfTsKIAkJOTk4NEZBQ0UxQ0ZGQjA5MDAwOEQxOThDIC8qIGVkaXRhYmxlLWJvZHku
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5OTg0RkFDRDFDRkZCMDM4MDA4RDE5OEMgLyogZWRpdGFibGUtYm9keS5odG1sICovOyB9Owog
CQk5QjA3ODZBNTFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93
Um9vdHNPcGVuX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjA3ODZBNDFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtl
QWxsU2hhZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgKi87IH07CkBAIC03NDMsNiArNzQ1LDcgQEAK
IAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0QVBJLnJlc291cmNlczsKIAkJCWRzdFN1YmZvbGRlclNw
ZWMgPSA3OwogCQkJZmlsZXMgPSAoCisJCQkJNTFDOEUxQTkxRjI3RjQ5NjAwQkY3MzFCIC8qIEVt
cHR5R3JhbmRmYXRoZXJlZFJlc291cmNlTG9hZFN0YXRpc3RpY3MucGxpc3QgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJRjQ1QjYzRkIxRjE5N0Y0QTAwOUQzOEI5IC8qIGltYWdlLW1hcC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0MDdGRTM5MUYxRDBERkMwMDE3Q0YyNSAvKiBl
bm9ybW91cy5zdmcgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRENUU0RTgxRjBDNUQzODAw
OEMxQTQ5IC8qIGRyYWdzdGFydC1jbGVhci1zZWxlY3Rpb24uaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKQEAgLTEyMTAsNiArMTIxMyw4IEBACiAJCTUxQkNFRTRDMUM4NEY1MkMwMDQyQzgyRSAv
KiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gIkluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUJDRUU0RDFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNz
LTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJNdWx0aVByb2Nl
c3MtMi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDNjgzREQxRUExMzRE
QjAwNjUwMTgzIC8qIFdLVVJMU2NoZW1lSGFuZGxlci0xLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gIldLVVJMU2NoZW1lSGFuZGxlci0xLm1tIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFDOEUxQTQxRjI2QUM1NDAwQkY3MzFCIC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUM4RTFBODFGMjdGNDcz
MDBCRjczMUIgLyogRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlz
dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGUu
YnBsaXN0OyBwYXRoID0gRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5w
bGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDQjRBRDcxQjNBMDc5QzAwQzFC
MUM2IC8qIE1vZGFsQWxlcnRzU1BJLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1vZGFsQWxlcnRzU1BJLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFDRDFDNkExQjM4Q0UzNjAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9kYWxBbGVydHMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxQ0QxQzcxMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMt
aW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm1vZGFsLWFsZXJ0cy1p
bi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTM5OCw2ICsxNDAzLDcgQEAKIAkJOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdL
V2ViVmlld1NuYXBzaG90Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV0tXZWJWaWV3U25hcHNob3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
RjdFODZCMTREQzhFNEQwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
cmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGN0U4NkUxNERDOEU1QjAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZyYW1lc19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1M0Y0NzkxMUYxREI0MDMwMEUzRDFFMyAvKiBJ
bnNwZWN0b3JWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAv
KiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS1dlYlZpZXdUZXh0SW5wdXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5ODRGQUNEMUNGRkIwMzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZWRpdGFibGUtYm9keS5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUIwNzg2QTIxQzU4ODMwRjAwRDE1OUUzIC8qIEluamVjdGVkQnVu
ZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW4uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU0MCw3ICsxNTQ2LDYgQEAKIAkJQzJDRjk3NTkx
NkNFQzY5RTAwNTRFOTlEIC8qIEpTQ29udGV4dEJhY2tGb3J3YXJkQ2FjaGUyLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBKU0NvbnRleHRCYWNrRm9yd2FyZENhY2hlMi5odG1sOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkVCMkREMTE2Q0FDN0FDMDA5QjUyRUUgLyog
V2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTA3RThBNjE0QzY1NDVCMDA1RDZCM0Ig
LyogSW5zcGVjdG9yQmFyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gSW5zcGVjdG9yQmFyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NTNGNDc5
MTFGMURCNDAzMDBFM0QxRTMgLyogSW5zcGVjdG9yVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9yVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTEw
MUM0RTE3NkI4QkI5MDBFRTlCMTUgLyogZmluZFJhbmdlcy5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gZmluZFJhbmdlcy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDNTFBRkI5ODE2OUY0OUZGMDA5Q0NGNjYgLyogRmluZE1hdGNoZXMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaW5kTWF0Y2hlcy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MEY3NzUxNTJFNERBMDAwQTQwQzhDIC8qIFNpbXBsaWZ5TWFy
a3VwLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2ltcGxpZnlN
YXJrdXAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODkwLDYgKzE4OTUsNyBA
QAogCQkJCUExMkREQkZDMUU4MzZGRjEwMENGNkNBRSAvKiBSZW5kZXJlZEltYWdlV2l0aE9wdGlv
bnNQbHVnSW4ubW0gKi8sCiAJCQkJQTEyRERDMDExRTgzNzRGNTAwQ0Y2Q0FFIC8qIFJlbmRlcmVk
SW1hZ2VXaXRoT3B0aW9uc1Byb3RvY29sLmggKi8sCiAJCQkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJC
ODAwIC8qIFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tICovLAorCQkJCTUxQzhFMUE0
MUYyNkFDNTQwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tICovLAogCQkJCUEx
ODBDMEY5MUVFNjdERjAwMDQ2OEY0NyAvKiBSdW5PcGVuUGFuZWwubW0gKi8sCiAJCQkJMzdCQ0E2
MUIxQjU5NkJBOTAwMjAxMkNBIC8qIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0Fj
dGlvbnMubW0gKi8sCiAJCQkJMkQ5QTUzQUUxQjMxRkE4RDAwNzRENUFBIC8qIFNocmlua1RvRml0
Lm1tICovLApAQCAtMjA4Niw2ICsyMDkyLDcgQEAKIAkJCQk1NzE0RUNCQzFDQThDMjE4MDAwNTFB
QzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwyLmh0bWwgKi8sCiAJCQkJNTcxNEVDQkEx
Q0E4QkZEMTAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRtbCAq
LywKIAkJCQlBMTU1MDIyQjFFMDUwQkM1MDBBMjRDNTcgLyogZHVwbGljYXRlLWNvbXBsZXRpb24t
aGFuZGxlci1jYWxscy5odG1sICovLAorCQkJCTUxQzhFMUE4MUYyN0Y0NzMwMEJGNzMxQiAvKiBF
bXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0ICovLAogCQkJCTk5
ODRGQUNEMUNGRkIwMzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi8sCiAJCQkJRjQw
N0ZFMzgxRjFEMERFNjAwMTdDRjI1IC8qIGVub3Jtb3VzLnN2ZyAqLywKIAkJCQlGNEMyQUIyMTFE
RDZEOTQxMDBFMDZENUIgLyogZW5vcm1vdXMtdmlkZW8td2l0aC1zb3VuZC5odG1sICovLApAQCAt
MzA2Nyw2ICszMDc0LDcgQEAKIAkJCQk3QzgzRTBCQjFEMEE2NTAwMDBGRUJDRjMgLyogRmluZElu
UGFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY0MUE0MTFBRTYwMDQ0N0M0QyAvKiBG
aW5kTWF0Y2hlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDQwMUQwQTYzRTMwMEZFQkNG
MyAvKiBGaXJzdFJlc3BvbmRlclNjcm9sbGluZ1Bvc2l0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTFDOEUxQTUxRjI2QUY0QzAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBCQzFEMEE2NTA3MDBGRUJDRjMgLyogRml4ZWRMYXlv
dXRTaXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5MDlBN0UxRDg3NzQ4MDAwN0UxMEY4IC8q
IEZsb2F0UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5MDlBN0YxRDg3NzQ4MDAwN0Ux
MEY4IC8qIEZsb2F0UmVjdC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0VtcHR5R3JhbmRmYXRoZXJlZFJlc291cmNl
TG9hZFN0YXRpc3RpY3MucGxpc3QgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJD
b2NvYS9FbXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMTE0ZWRjNmZhZQpCaW5hcnkgZmls
ZXMgL2Rldi9udWxsIGFuZCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L0VtcHR5R3JhbmRmYXRoZXJlZFJlc291cmNlTG9hZFN0YXRpc3RpY3MucGxpc3QgZGlmZmVyCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uYTlhNjljNGQ4MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCkBAIC0w
LDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgor
I2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LCBHcmFuZGZhdGhlckNhbGxiYWNrKQoreworICAgIGF1dG8gKmRhdGFTdG9yZSA9IFtXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CisgICAgW2RhdGFTdG9yZSBfc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6Tk9dOworCisgICAgTlNVUkwgKnN0YXRpc3RpY3NEaXJl
Y3RvcnlVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvVGVz
dFdlYktpdEFQSS9XZWJzaXRlRGF0YS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzIiBzdHJpbmdCeUV4
cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpZRVNdOworICAgIE5TVVJMICpmaWxlVVJM
ID0gW3N0YXRpc3RpY3NEaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
ZnVsbF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0Il07CisgICAgW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZmlsZVVSTCBlcnJvcjpuaWxd
OworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnN0
YXRpc3RpY3NEaXJlY3RvcnlVUkwgZXJyb3I6bmlsXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN0YXRpc3RpY3NEaXJl
Y3RvcnlVUkwucGF0aF0pOworCisgICAgc3RhdGljIGJvb2wgZG9uZUZsYWc7CisgICAgc3RhdGlj
IGJvb2wgZ3JhbmRmYXRoZXJlZEZsYWc7CisKKyAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOl4oV0tXZWJzaXRlRGF0YVN0b3JlICosIE5TU3Ry
aW5nICptZXNzYWdlKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKFttZXNzYWdlIGlzRXF1YWxUb1N0
cmluZzpAIkdyYW5kZmF0aGVyZWQiXSk7CisgICAgICAgIGdyYW5kZmF0aGVyZWRGbGFnID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ3JhbmRmYXRoZXJl
ZEZsYWcpOworCisgICAgLy8gU3BpbiB0aGUgcnVubG9vcCB1bnRpbCB0aGUgcmVzb3VyY2UgbG9h
ZCBzdGF0aXN0aWNzIGZpbGUgaGFzIHdyaXR0ZW4gdG8gZGlzay4KKyAgICAvLyBJZiB0aGUgdGVz
dCBlbnRlcnMgYSBzcGluIGxvb3AgaGVyZSwgaXQgaGFzIGZhaWxlZC4KKyAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOmZpbGVVUkwucGF0aF0pCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMSk7CisgICAgfQorCisgICAgZ3JhbmRmYXRo
ZXJlZEZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dl
YnNpdGVEYXRhU3RvcmUgX2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQcml2YXRlXSAgbW9k
aWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeIHsKKyAg
ICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lRmxhZyk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3Ao
MTApOworCisgICAgLy8gVGhlIHdlYnNpdGUgZGF0YSBzdG9yZSByZW1vdmUgc2hvdWxkIGhhdmUg
Y29tcGxldGVkLCBidXQgc2luY2Ugd2UgcmVtb3ZlZCBhbGwgb2YgdGhlIGRhdGEgdHlwZXMgdGhh
dCBhcmUgbW9uaXRvcmVkIGJ5IHJlc291cmNlIGxvYWQgc3RhdGlzdGljcywKKyAgICAvLyBubyBn
cmFuZGZhdGhlcmluZyBjYWxsIHNob3VsZCBoYXZlIGJlZW4gbWFkZS4KKyAgICBFWFBFQ1RfRkFM
U0UoZ3JhbmRmYXRoZXJlZEZsYWcpOworICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZVVSTC5wYXRoXSk7CisKKyAgICBk
b25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W05TU2V0
IHNldFdpdGhPYmplY3RzOldLV2Vic2l0ZURhdGFUeXBlQ29va2llcywgX1dLV2Vic2l0ZURhdGFU
eXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgbmlsXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlz
dGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4geworICAgICAgICBkb25lRmxhZyA9IHRydWU7
CisgICAgfV07CisKKyAgICAvLyBTaW5jZSB3ZSBkaWQgbm90IHJlbW92ZSBldmVyeSBkYXRhIHR5
cGUgY292ZXJlZCBieSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MsIHdlIGRvIGV4cGVjdCB0aGF0
IGdyYW5kZmF0aGVyaW5nIHRvb2sgcGxhY2UgYWdhaW4uCisgICAgLy8gSWYgdGhlIHRlc3QgaGFu
Z3Mgd2FpdGluZyBvbiBlaXRoZXIgb2YgdGhlc2UgY29uZGl0aW9ucywgaXQgaGFzIGZhaWxlZC4K
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdyYW5kZmF0aGVyZWRGbGFnKTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8vIFNwaW4gdGhlIHJ1
bmxvb3AgdW50aWwgdGhlIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBmaWxlIGhhcyB3cml0dGVu
IHRvIGRpc2suCisgICAgLy8gSWYgdGhlIHRlc3QgZW50ZXJzIGEgc3BpbiBsb29wIGhlcmUsIGl0
IGhhcyBmYWlsZWQuCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxlVVJMLnBhdGhdKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29w
KDEpOworICAgIH0KK30KKworVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBTaG91bGROb3RH
cmFuZGZhdGhlck9uU3RhcnR1cCkKK3sKKyAgICBhdXRvICpkYXRhU3RvcmUgPSBbV0tXZWJzaXRl
RGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOworICAgIFtkYXRhU3RvcmUgX3NldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkOk5PXTsKKworICAgIE5TVVJMICpzdGF0aXN0aWNzRGlyZWN0
b3J5VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L1Rlc3RX
ZWJLaXRBUEkvV2Vic2l0ZURhdGEvUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIgc3RyaW5nQnlFeHBh
bmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBOU1VSTCAqdGFyZ2V0VVJM
ID0gW3N0YXRpc3RpY3NEaXJlY3RvcnlVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
ZnVsbF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0Il07CisgICAgTlNVUkwgKnRl
c3RSZXNvdXJjZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJF
bXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIiB3aXRoRXh0ZW5zaW9uOkAi
cGxpc3QiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnN0YXRp
c3RpY3NEaXJlY3RvcnlVUkwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1
dGVzOm5pbCBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
Y29weUl0ZW1BdFVSTDp0ZXN0UmVzb3VyY2VVUkwgdG9VUkw6dGFyZ2V0VVJMIGVycm9yOm5pbF07
CisKKyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVF
eGlzdHNBdFBhdGg6dGFyZ2V0VVJMLnBhdGhdKTsKKworICAgIHN0YXRpYyBib29sIGNhbGxiYWNr
RmxhZzsKKyAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0Nh
bGxiYWNrOl4oV0tXZWJzaXRlRGF0YVN0b3JlICosIE5TU3RyaW5nICptZXNzYWdlKSB7CisgICAg
ICAgIEFTU0VSVF9UUlVFKFttZXNzYWdlIGlzRXF1YWxUb1N0cmluZzpAIlBvcHVsYXRlZFdpdGhv
dXRHcmFuZGZhdGhlcmluZyJdKTsKKyAgICAgICAgY2FsbGJhY2tGbGFnID0gdHJ1ZTsKKyAgICB9
XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmY2FsbGJhY2tGbGFnKTsKK30KKyNl
bmRpZgorCg==
</data>
<flag name="commit-queue"
          id="337121"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316432</attachid>
            <date>2017-07-25 22:06:19 -0700</date>
            <delta_ts>2017-07-25 22:44:08 -0700</delta_ts>
            <desc>Patch w/binary</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>46850</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggM2U0MmJlZjBjZGMuLjQ1ODBmYzczN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDU3IEBACisyMDE3LTA3LTI1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGdyYW5kZmF0aGVyaW5nIGhhcHBlbnMgbXVj
aCB0b28gb2Z0ZW4uCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMjY1NTgzND4gYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ4MjUKKworICAgICAgICBSZXZp
ZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBUaGUgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyBncmFuZGZhdGhlcmluZyBwcm9jZWR1cmUgaGFwcGVucyB0b28gb2Z0ZW4uCisgICAgICAgIC0g
V2l0aCBhbiBlbXB0eSBtZW1vcnkgc3RvcmUsIGV2ZW4gdGhvdWdoIGFuIGVtcHR5IG1lbW9yeSBz
dG9yZSBpcyBhIHBlcmZlY3RseSB2YWxpZCBzdGF0ZS4KKyAgICAgICAgLSBPbiBlYWNoIGxhdW5j
aCwgZXZlbiBpZiBncmFuZGZhdGhlcmluZyBoYXBwZW5lZCBvbiB0aGUgbGFzdCBsYXVuY2ggLSBi
ZWNhdXNlIGdyYW5kZmF0aGVyaW5nCisgICAgICAgICAgZGF0YSB3b3VsZCBub3QgYXV0b21hdGlj
YWxseSBiZSBzYXZlZCB0byBkaXNrLgorICAgICAgICAtIEFmdGVyIGNsZWFyaW5nIGFsbCB3ZWJz
aXRlIGRhdGEsIGF0IHdoaWNoIHBvaW50IG5vIGdyYW5kZmF0aGVyaW5nIGNhbiBwb3NzaWJseSBi
ZSByZWxldmFudAorICAgICAgICAgIGJlY2F1c2UgdGhlcmUgaXMgbm8gZGF0YSB0byBncmFuZGZh
dGhlci4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRob3NlIGNhc2VzIGFuZCBhZGRzIEFQ
SSB0ZXN0cyB0byB2ZXJpZnkgdGhleSByZW1haW4gZml4ZWQuCisKKyAgICAgICAgKiBTaGFyZWQv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0
b3JlIF9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZV0pOiBhbGxXZWJzaXRlRGF0
YVR5cGVzLCBidXQgZXZlbiB3aXRoIHRoZSBwcml2YXRlIG9uZXMuCisgICAgICAgICgtW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50U3RvcmVdKTogSWYgdGhlIHR5cGVzIGJlaW5nIGNsZWFyZWQgY292ZXIgYWxsIG9mIAor
ICAgICAgICAgIHRoZSB0eXBlcyB0aGF0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgY2FyZSBhYm91
dCwgZG9uJ3QgZ3JhbmRmYXRoZXIgYWZ0ZXJ3YXJkcy4KKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZU1vZGlmaWVkU2luY2VIb3VyczpdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoK
KworICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZTo6cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKTogRG9uJ3Qg
Z3JhbmRmYXRoZXIgaWYgdGhlIHN0b3JlIHJlYWQgZnJvbSAKKyAgICAgICAgICBkaXNrIGlzIGVt
cHR5IChhcyBiZWluZyBlbXB0eSBpcyBwZXJmZWN0bHkgZmluZSksIGFuZCBhbHNvIGxvZyB0aGUg
ZXZlbnQgb2YgInBvcHVsYXRlZCB3aXRob3V0IGdyYW5kZmF0aGVyaW5nIi4KKyAgICAgICAgKiBV
SVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2Uu
aDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0
aFdlYnNpdGVEYXRhKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3Jkcyk6IAorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJz
aXRlRGF0YSk6IFNjaGVkdWxlIGEgd3JpdGUgcmlnaHQgYXdheSBzbyB3ZSBkb24ndCByZS1ncmFu
ZGZhdGhlcgorICAgICAgICAgIG9uIG5leHQgbGF1bmNoLCBhbmQgYWxzbyBsb2cgdGhlIGdyYW5k
ZmF0aGVyaW5nIGV2ZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOiBUYWtlcyBhIFNo
b3VsZEdyYW5kZmF0aGVyIGZsYWcKKyAgICAgICAgICB0byB0ZWxsIHdoZXRoZXIgb3Igbm90IGRh
dGEgc2hvdWxkIGJlIHJlLWdyYW5kZmF0aGVyZWQgYWZ0ZXIgdGhlIHN0b3JlIGlzIGNsZWFyZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVGVz
dGluZ0V2ZW50KTogTG9nIHRoZSBldmVudCB0byB0aGUgdGVzdGluZyBjbGllbnQuCisgICAgICAg
IChXZWJLaXQ6OmRhdGFUeXBlc1RvUmVtb3ZlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NBbmRTZXRU
ZXN0aW5nQ2FsbGJhY2spOiBIYW5kbGVzIGVuYWJsaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
Ym90aAorICAgICAgICAgIHdpdGggYW5kIHdpdGhvdXQgYSB0ZXN0aW5nIGNhbGxiYWNrLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMTct
MDctMjUgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHdoZW4gc2VuZGluZyBleHRlbnNpb25zIGZvciBmaWxl
IHVwbG9hZHMgdG8gdGhlIHdlYiBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oCmluZGV4IGNhYjg0NTJhZDNjLi4zMGNjMDMz
MTI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFUeXBlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFUeXBlLmgKQEAgLTQzLDExICs0Myw4IEBAIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBl
IHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBQbHVnSW5EYXRhID0gMSA8
PCAxMSwKICNlbmRpZgotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgTWVkaWFEZXZpY2VJ
ZGVudGlmaWVyID0gMSA8PCAxMiwKLSNlbmRpZgotICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSAxIDw8IDEzLAotICAgIENyZWRlbnRpYWxzID0gMSA8PCAxNCwKKyAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gMSA8PCAxMiwKKyAgICBDcmVkZW50aWFscyA9IDEgPDwgMTMsCiB9OwogCiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW0KaW5kZXggYWEzYTU2YmQ1N2EuLjQxYjE4ZDA2MTJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0KQEAgLTE1Nyw2ICsxNTcsMjMgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tXZWJz
aXRlRGF0YVN0b3JlIChXS1ByaXZhdGUpCiAKKysgKE5TU2V0PE5TU3RyaW5nICo+ICopX2FsbFdl
YnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQcml2YXRlCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29u
Y2VfdCBvbmNlVG9rZW47CisgICAgc3RhdGljIE5TU2V0ICphbGxXZWJzaXRlRGF0YVR5cGVzOwor
ICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXiB7CisgICAgICAgIGF1dG8gKnByaXZhdGVU
eXBlcyA9IEBbX1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlLCBfV0tXZWJzaXRlRGF0YVR5cGVN
ZWRpYUtleXMsIF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMsIF9X
S1dlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3MsIF9XS1dlYnNpdGVEYXRhVHlw
ZUNyZWRlbnRpYWxzCisjaWYgIVRBUkdFVF9PU19JUEhPTkUKKyAgICAgICAgLCBfV0tXZWJzaXRl
RGF0YVR5cGVQbHVnSW5EYXRhCisjZW5kaWYKKyAgICAgICAgXTsKKworICAgICAgICBhbGxXZWJz
aXRlRGF0YVR5cGVzID0gW1tbc2VsZiBhbGxXZWJzaXRlRGF0YVR5cGVzXSBzZXRCeUFkZGluZ09i
amVjdHNGcm9tQXJyYXk6cHJpdmF0ZVR5cGVzXSByZXRhaW5dOworICAgIH0pOworCisgICAgcmV0
dXJuIGFsbFdlYnNpdGVEYXRhVHlwZXM7Cit9CisKIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhD
b25maWd1cmF0aW9uOihfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3Vy
YXRpb24KIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKQEAgLTQ0OSw3ICs0NjYs
NyBAQCAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZQogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3Jl
LT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7CisgICAgc3RvcmUtPnNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OlNob3VsZEdyYW5kZmF0aGVyOjpZZXMpOwogfQogCiAtICh2b2lkKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVk
U2luY2VIb3VyczoodW5zaWduZWQpaG91cnMKQEAgLTQ1OCw3ICs0NzUsNyBAQCAtICh2b2lkKV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlm
aWVkU2luY2VIb3VycwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0
b3JlLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6Om5vdygpIC0gc3RkOjpjaHJvbm86OmhvdXJzKGhvdXJzKSk7CisgICAgc3RvcmUt
PnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6bm93KCkgLSBzdGQ6OmNocm9ubzo6aG91cnMoaG91cnMpLCBXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6U2hvdWxkR3JhbmRmYXRoZXI6Olllcyk7CiB9CiAKIC0g
KHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlCkBAIC00
NzMsNiArNDkwLDIyIEBAIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlCiAgICAgc3RvcmUtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeSgpOwogfQogCist
ICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOih2b2lkIChe
KShXS1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNTdHJpbmcgKikpY2FsbGJhY2sKK3sKKyAgICBpZiAo
Y2FsbGJhY2spIHsKKyAgICAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQW5kU2V0VGVzdGluZ0NhbGxiYWNrKFtjYWxs
YmFjayA9IG1ha2VCbG9ja1B0cihjYWxsYmFjayksIHNlbGZdKGNvbnN0IFN0cmluZyYgZXZlbnQp
IHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHNlbGYsIChOU1N0cmluZyAqKWV2ZW50KTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
OworICAgIGlmICghc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIHN0b3JlLT5zZXRTdGF0
aXN0aWNzVGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggNGVlNmMxNDU4NDku
LjUwZjYzMGNiYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTM3LDYgKzM3LDgg
QEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRj
aE9wdGlvbnMpIHsKIAogQGludGVyZmFjZSBXS1dlYnNpdGVEYXRhU3RvcmUgKFdLUHJpdmF0ZSkK
IAorKyAoTlNTZXQ8TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0ZURhdGFUeXBlc0luY2x1ZGluZ1By
aXZhdGU7CisKIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC0gKHZvaWQpX2ZldGNo
RGF0YVJlY29yZHNPZlR5cGVzOihOU1NldDxOU1N0cmluZyAqPiAqKWRhdGFUeXBlcyB3aXRoT3B0
aW9uczooX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucylvcHRpb25zIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKikpY29tcGxl
dGlvbkhhbmRsZXI7CkBAIC03MSw2ICs3Myw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRl
Z2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAtICh2b2lkKV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZp
ZWRTaW5jZUhvdXJzOih1bnNpZ25lZClob3VycyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NSZXNldFRvQ29uc2lzdGVudFN0YXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Rlc3RpbmdDYWxsYmFjazoobnVsbGFibGUgdm9pZCAoXikoV0tXZWJzaXRlRGF0YVN0b3JlICos
IE5TU3RyaW5nICopKWNhbGxiYWNrOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCBiNGQ5MmJlYjA5OC4uZDMwNDUyNTc3
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5j
cHAKQEAgLTIzNCw4ICsyMzQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZTo6cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKCkKIAogICAgIG1fbGFzdFN0
YXRpc3RpY3NGaWxlU3luY1RpbWUgPSByZWFkVGltZTsKIAotICAgIGlmIChtX21lbW9yeVN0b3Jl
LmlzRW1wdHkoKSkKLSAgICAgICAgbV9tZW1vcnlTdG9yZS5ncmFuZGZhdGhlckV4aXN0aW5nV2Vi
c2l0ZURhdGEoKTsKKyAgICBtX21lbW9yeVN0b3JlLmxvZ1Rlc3RpbmdFdmVudChBU0NJSUxpdGVy
YWwoIlBvcHVsYXRlZFdpdGhvdXRHcmFuZGZhdGhlcmluZyIpKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OmFzeW5jV3JpdGVUaW1lckZpcmVkKCkK
QEAgLTI4MCwxMiArMjc5LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlOjp3cml0ZU1lbW9yeVN0b3JlVG9EaXNrKCkKICAgICBzdGFydE1vbml0b3JpbmdE
aXNrKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
OjpzY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZSgpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZTo6c2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoRm9yY2VJbW1l
ZGlhdGVXcml0ZSBmb3JjZUltbWVkaWF0ZVdyaXRlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgYXV0byB0aW1lU2luY2VMYXN0V3JpdGUgPSBNb25vdG9uaWNUaW1l
Ojpub3coKSAtIG1fbGFzdFN0YXRpc3RpY3NXcml0ZVRpbWU7Ci0gICAgaWYgKHRpbWVTaW5jZUxh
c3RXcml0ZSA8IG1pbmltdW1Xcml0ZUludGVydmFsKSB7CisgICAgaWYgKGZvcmNlSW1tZWRpYXRl
V3JpdGUgIT0gRm9yY2VJbW1lZGlhdGVXcml0ZTo6WWVzICYmIHRpbWVTaW5jZUxhc3RXcml0ZSA8
IG1pbmltdW1Xcml0ZUludGVydmFsKSB7CiAgICAgICAgIGlmICghbV9oYXNQZW5kaW5nV3JpdGUp
IHsKICAgICAgICAgICAgIG1faGFzUGVuZGluZ1dyaXRlID0gdHJ1ZTsKICAgICAgICAgICAgIFNl
Y29uZHMgZGVsYXkgPSBtaW5pbXVtV3JpdGVJbnRlcnZhbCAtIHRpbWVTaW5jZUxhc3RXcml0ZSAr
IDFfczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCmlu
ZGV4IDgxZjdjY2RlMzRjLi5jNWQyZWQ0YmM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCkBAIC00NSw3ICs0NSw2IEBAIHB1YmxpYzoKICAgICB+
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKCk7CiAKICAgICB2b2lkIGlu
aXRpYWxpemUoKTsKLSAgICB2b2lkIHNjaGVkdWxlT3JXcml0ZU1lbW9yeVN0b3JlKCk7CiAgICAg
dm9pZCBjbGVhcigpOwogCiAgICAgdm9pZCBmaW5pc2hBbGxQZW5kaW5nV29ya1N5bmNocm9ub3Vz
bHkoKTsKQEAgLTUzLDYgKzUyLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZigpOwogICAgIHZv
aWQgZGVyZWYoKTsKIAorICAgIGVudW0gY2xhc3MgRm9yY2VJbW1lZGlhdGVXcml0ZSB7CisgICAg
ICAgIE5vLAorICAgICAgICBZZXMsCisgICAgfTsKKyAgICB2b2lkIHNjaGVkdWxlT3JXcml0ZU1l
bW9yeVN0b3JlKEZvcmNlSW1tZWRpYXRlV3JpdGUpOworCiBwcml2YXRlOgogICAgIFN0cmluZyBz
dG9yYWdlRGlyZWN0b3J5UGF0aCgpIGNvbnN0OwogICAgIFN0cmluZyByZXNvdXJjZUxvZ0ZpbGVQ
YXRoKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCA0Mjc1MDU2Mjg5MS4uNTU2MTE2N2E1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzI3LDYgKzMyNywxMCBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEo
T3B0aW9uU2V0PFdlYgogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5k
aW5nQ2FsbGJhY2soKTsKICAgICAgICAgfSk7CiAgICAgfQorCisgICAgLy8gRklYTUU6IEl0J3Mg
Yml6YXJyZSB0aGF0IHRoaXMgY2FsbCBpcyBvbiBXZWJQcm9jZXNzUHJveHkgYW5kIHRoYXQgaXQg
ZG9lc24ndCB3b3JrIGlmIHRoZXJlIGFyZSBubyB2aXNpdGVkIHBhZ2VzLgorICAgIC8vIFRoaXMg
c2hvdWxkIGFjdHVhbGx5IGJlIGEgZnVuY3Rpb24gb2YgV2Vic2l0ZURhdGFTdG9yZSBhbmQgaXQg
c2hvdWxkIHdvcmsgZXZlbiBpZiB0aGVyZSBhcmUgbm8gV2ViVmlld3MgaW5zdGFuY2VzLgorICAg
IGNhbGxiYWNrQWdncmVnYXRvci0+Y2FsbElmTmVlZGVkKCk7CiB9CiAgICAgCiB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA3ZTYxOTEzMjViNC4uYzYwZDdkNTQ2NzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0
aW9uLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUgIldlYnNpdGVE
YXRhVHlwZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2RpbmcuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJl
YWRDb3BpZXIuaD4KQEAgLTU0LDE1ICs1MywxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0
aWMgaW5saW5lIFN0cmluZyBpc29sYXRlZFByaW1hcnlEb21haW4oY29uc3QgVCYgdmFsdWUpCiAg
ICAgcmV0dXJuIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnByaW1hcnlEb21haW4odmFsdWUpLmlz
b2xhdGVkQ29weSgpOwogfQogCi1zdGF0aWMgY29uc3QgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4mIGRhdGFUeXBlc1RvUmVtb3ZlKCkKK2NvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
JiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUeXBlcygpCiB7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+PiBk
YXRhVHlwZXMoc3RkOjppbml0aWFsaXplcl9saXN0PFdlYnNpdGVEYXRhVHlwZT4oewogICAgICAg
ICBXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMsCiAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6SW5k
ZXhlZERCRGF0YWJhc2VzLAogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwK
LSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgICAgICBXZWJzaXRlRGF0YVR5cGU6Ok1lZGlh
RGV2aWNlSWRlbnRpZmllciwKLSNlbmRpZgogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6Ok1lZGlh
S2V5cywKICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNo
ZSwKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTE0OSwxMSArMTQ1LDEyIEBA
IHN0YXRpYyBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbWVyZ2VPcGVyYXRpbmdEYXRlcyhjb25zdCBW
ZWN0b3I8T3BlcmF0aW5nRGF0ZT4mIGV4CiAgICAgcmV0dXJuIG1lcmdlZERhdGVzOwogfQogCi1X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyJiYgdXBkYXRlQ29va2llUGFydGl0
aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIpCitXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYpPiYmIHRl
c3RpbmdDYWxsYmFjaywgVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIm
JiB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcikKICAgICA6IG1fc3Rh
dGlzdGljc1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUgUHJvY2VzcyBEYXRhIFF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtR
dWV1ZTo6UU9TOjpVdGlsaXR5KSkKICAgICAsIG1fcGVyc2lzdGVudFN0b3JhZ2UoKnRoaXMsIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCiAgICAgLCBtX3VwZGF0ZUNvb2tpZVBhcnRp
dGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKFdURk1vdmUodXBkYXRlQ29va2llUGFydGl0aW9uaW5n
Rm9yRG9tYWluc0hhbmRsZXIpKQogICAgICwgbV9kYWlseVRhc2tzVGltZXIoUnVuTG9vcDo6bWFp
bigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJmb3JtRGFpbHlU
YXNrcykKKyAgICAsIG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhXVEZNb3ZlKHRlc3RpbmdD
YWxsYmFjaykpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTkyLDcg
KzE4OSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRh
UmVjb3JkcygpCiAgICAgc2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQodHJ1ZSk7CiAKICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3ByZXZhbGVudFJlc291cmNlRG9tYWlucyA9IENyb3Nz
VGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShwcmV2YWxlbnRSZXNvdXJjZURvbWFp
bnMpLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFibGUgewot
ICAgICAgICBXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yVG9wUHJpdmF0ZWx5
Q29udHJvbGxlZERvbWFpbnNJbkFsbFBlcnNpc3RlbnREYXRhU3RvcmVzKGRhdGFUeXBlc1RvUmVt
b3ZlKCksIFdURk1vdmUocHJldmFsZW50UmVzb3VyY2VEb21haW5zKSwgbV9wYXJhbWV0ZXJzLnNo
b3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0oY29uc3QgSGFzaFNldDxTdHJpbmc+JiBk
b21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAgIFdlYlByb2Nl
c3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
c0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojptb25pdG9yZWREYXRhVHlwZXMoKSwgV1RGTW92ZShwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMp
LCBtX3BhcmFtZXRlcnMuc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXShjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRvcERvbWFpbnMgPSBDcm9zc1RocmVhZENv
cGllcjxIYXNoU2V0PFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRh
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBwcmV2YWxlbnRSZXNv
dXJjZURvbWFpbiA6IHRvcERvbWFpbnMpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgc3Rh
dGlzdGljID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmV2YWxl
bnRSZXNvdXJjZURvbWFpbik7CkBAIC0yMzIsNyArMjI5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKQogICAg
ICAgICB9KTsKICAgICB9CiAKLSAgICBtX3BlcnNpc3RlbnRTdG9yYWdlLnNjaGVkdWxlT3JXcml0
ZU1lbW9yeVN0b3JlKCk7CisgICAgbV9wZXJzaXN0ZW50U3RvcmFnZS5zY2hlZHVsZU9yV3JpdGVN
ZW1vcnlTdG9yZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OkZvcmNl
SW1tZWRpYXRlV3JpdGU6Ok5vKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzPiYmIG9yaWdpbnMpCkBAIC0yNTAsMTQgKzI0NywxOSBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNp
dGVEYXRhKCkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAo
KSBtdXRhYmxlIHsKLSAgICAgICAgV2ViUHJvY2Vzc1Byb3h5Ojp0b3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YShkYXRhVHlwZXNUb1JlbW92ZSgpLCBtX3BhcmFtZXRl
cnMuc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAoSGFzaFNldDxTdHJpbmc+JiYg
dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEpIG11dGFibGUgewor
ICAgICAgICAvLyBGSVhNRTogVGhpcyBtZXRob2QgYmVpbmcgYSBzdGF0aWMgY2FsbCBvbiBXZWJQ
cm9jZXNzUHJveHkgaXMgd3JvbmcuCisgICAgICAgIC8vIEl0IHNob3VsZCBiZSBvbiB0aGUgZGF0
YSBzdG9yZSB0aGF0IHRoaXMgb2JqZWN0IGJlbG9uZ3MgdG8uCisgICAgICAgIFdlYlByb2Nlc3NQ
cm94eTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEoV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25pdG9yZWREYXRhVHlwZXMoKSwgbV9wYXJhbWV0
ZXJzLnNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gKEhhc2hTZXQ8U3RyaW5nPiYm
IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRvcERvbWFpbnMgPSBDcm9zc1RocmVhZENv
cGllcjxIYXNoU2V0PFN0cmluZz4+Ojpjb3B5KHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5z
V2l0aFdlYnNpdGVEYXRhKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRv
JiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluIDogdG9wRG9tYWlucykgewogICAgICAgICAg
ICAgICAgICAgICBhdXRvJiBzdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pOwogICAgICAgICAgICAg
ICAgICAgICBzdGF0aXN0aWMuZ3JhbmRmYXRoZXJlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIG1fZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcCA9IFdhbGxU
aW1lOjpub3coKSArIG1fcGFyYW1ldGVycy5ncmFuZGZhdGhlcmluZ1RpbWU7CisgICAgICAgICAg
ICAgICAgbV9wZXJzaXN0ZW50U3RvcmFnZS5zY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZShSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OkZvcmNlSW1tZWRpYXRlV3JpdGU6
Olllcyk7CiAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbG9nVGVzdGluZ0V2ZW50KEFT
Q0lJTGl0ZXJhbCgiR3JhbmRmYXRoZXJlZCIpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBA
IC00ODMsMjEgKzQ4NSwyMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c2NoZWR1bGVDbGVhckluTWVtb3J5KCkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKQor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXIgc2hvdWxkR3JhbmRmYXRoZXIpCiB7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgIG1fc3Rh
dGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBzaG91bGRHcmFuZGZhdGhlcl0gewogICAgICAgICBjbGVhckluTWVtb3J5KCk7CiAgICAg
ICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UuY2xlYXIoKTsKLSAgICAgICAgZ3JhbmRmYXRoZXJFeGlz
dGluZ1dlYnNpdGVEYXRhKCk7CisgICAgICAgIAorICAgICAgICBpZiAoc2hvdWxkR3JhbmRmYXRo
ZXIgPT0gU2hvdWxkR3JhbmRmYXRoZXI6OlllcykKKyAgICAgICAgICAgIGdyYW5kZmF0aGVyRXhp
c3RpbmdXZWJzaXRlRGF0YSgpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2Us
IFNob3VsZEdyYW5kZmF0aGVyIHNob3VsZEdyYW5kZmF0aGVyKQogewogICAgIC8vIEZvciBub3cs
IGJlIGNvbnNlcnZhdGl2ZSBhbmQgY2xlYXIgZXZlcnl0aGluZyByZWdhcmRsZXNzIG9mIG1vZGlm
aWVkU2luY2UuCiAgICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVkU2luY2UpOwotICAgIHNjaGVkdWxl
Q2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKKyAgICBzY2hlZHVsZUNsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50KHNob3VsZEdyYW5kZmF0aGVyKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyBz
ZWNvbmRzKQpAQCAtODI0LDUgKzgyOCwyMCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKCkKIHsKICAgICBtX3BhcmFt
ZXRlcnMgPSB7IH07CiB9Ci0gICAgCisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudCkKK3sKKyAgICBpZiAoIW1f
c3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFJ1
bkxvb3A6OmlzTWFpbigpKQorICAgICAgICBtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soZXZl
bnQpOworICAgIGVsc2UgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZXZlbnQgPSBldmVudC5pc29sYXRlZENv
cHkoKV0geworICAgICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaykKKyAg
ICAgICAgICAgICAgICBtX3N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soZXZlbnQpOworICAgICAg
ICB9KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApp
bmRleCBjZDViNTA5ODIxYS4uNTIxYmQzMmNkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5j
bHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTU5LDEzICs2MCwxNSBAQCBlbnVtIGNsYXNzIFNob3Vs
ZENsZWFyRmlyc3Q7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwg
OiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgewogcHVi
bGljOgogICAgIHVzaW5nIFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVy
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1v
dmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3Qp
PjsKLSAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgVXBkYXRlQ29v
a2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXImJiB1cGRhdGVDb29raWVQYXJ0aXRpb25p
bmdGb3JEb21haW5zSGFuZGxlciA9IHsgfSkKKyAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSwgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0Nh
bGxiYWNrLCBVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciYmIHVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyID0geyB9KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUodXBkYXRlQ29va2llUGFydGl0
aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LCBXVEZNb3ZlKHRlc3RpbmdDYWxsYmFjayksIFdURk1vdmUodXBkYXRlQ29va2llUGFy
dGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIpKSk7CiAgICAgfQogCiAgICAgfldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSgpOwogCisgICAgc3RhdGljIGNvbnN0IE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+JiBtb25pdG9yZWREYXRhVHlwZXMoKTsKKwogICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKTsgfQogICAg
IFdvcmtRdWV1ZSYgc3RhdGlzdGljc1F1ZXVlKCkgeyByZXR1cm4gbV9zdGF0aXN0aWNzUXVldWUu
Z2V0KCk7IH0KIApAQCAtOTgsOCArMTAxLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxl
Q29va2llUGFydGl0aW9uaW5nU3RhdGVSZXNldCgpOwogCiAgICAgdm9pZCBzY2hlZHVsZUNsZWFy
SW5NZW1vcnkoKTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
KTsKLSAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICAKKyAgICBl
bnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcywK
KyAgICB9OworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91
bGRHcmFuZGZhdGhlcik7CisgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwg
U2hvdWxkR3JhbmRmYXRoZXIpOwogCiAgICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKFNlY29uZHMpOwogICAgIHZvaWQgc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUo
U2Vjb25kcyk7CkBAIC0xMTcsOSArMTI1LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIG1lcmdlV2l0
aERhdGFGcm9tRGVjb2RlcihXZWJDb3JlOjpLZXllZERlY29kZXImKTsKICAgICB2b2lkIGNsZWFy
SW5NZW1vcnkoKTsKICAgICB2b2lkIGdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSgpOwot
ICAgIAorCisgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKEZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKSB7IG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CisgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29u
c3QgU3RyaW5nJik7CisKIHByaXZhdGU6Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlKGNvbnN0IFN0cmluZyYsIFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5k
bGVyJiYpOworICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcm
LCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIFVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyJiYpOwogCiAgICAgdm9pZCByZW1v
dmVEYXRhUmVjb3JkcygpOwogCkBAIC0xNzgsNiArMTg5LDggQEAgcHJpdmF0ZToKICAgICBQYXJh
bWV0ZXJzIG1fcGFyYW1ldGVyczsKIAogICAgIGJvb2wgbV9kYXRhUmVjb3Jkc0JlaW5nUmVtb3Zl
ZCB7IGZhbHNlIH07CisKKyAgICBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4gbV9zdGF0
aXN0aWNzVGVzdGluZ0NhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCmluZGV4IGM5OWEyMGUwZmJhLi5mNjQwYjRlMWRmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKQEAgLTgxMyw4ICs4MTMsMTkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRh
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgc3RkOjpjaHIKICAgICB9CiAj
ZW5kaWYKIAotICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKSAmJiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCi0gICAgICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudChtb2RpZmllZFNpbmNlKTsKKyAgICAvLyBGSVhNRSA8cmRhcjovL3Byb2JsZW0vMzM0OTEy
MjI+OyBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50IGRvZXMgbm90IGhhdmUgYSBj
b21wbGV0aW9uIGhhbmRsZXIsCisgICAgLy8gc28gdGhlIGNvbXBsZXRpb24gaGFuZGxlciBmb3Ig
dGhpcyByZW1vdmVEYXRhKCkgY2FsbCBjYW4gYmUgY2FsbGVkIHByZW1hdHVyZWx5LgorICAgIGlm
IChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKSAmJiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKKyAgICAgICAgYXV0byBkZWxldGVk
VHlwZXNSYXcgPSBkYXRhVHlwZXMudG9SYXcoKTsKKyAgICAgICAgYXV0byBtb25pdG9yZWRUeXBl
c1JhdyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVz
KCkudG9SYXcoKTsKKworICAgICAgICAvLyBJZiB3ZSBhcmUgZGVsZXRpbmcgYWxsIG9mIHRoZSBk
YXRhIHR5cGVzIHRoYXQgdGhlIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBzdG9yZSBtb25pdG9y
cworICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byByZS1ncmFuZGZhdGhlciBvbGQgZGF0YS4K
KyAgICAgICAgaWYgKChtb25pdG9yZWRUeXBlc1JhdyAmIGRlbGV0ZWRUeXBlc1JhdykgPT0gbW9u
aXRvcmVkVHlwZXNSYXcpCisgICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNj
aGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQobW9kaWZpZWRTaW5jZSwgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpTaG91bGRHcmFuZGZhdGhlcjo6Tm8pOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQobW9kaWZpZWRTaW5jZSwgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpTaG91bGRHcmFuZGZhdGhlcjo6WWVzKTsKKyAgICB9CiAKICAgICAvLyBUaGVy
ZSdzIGEgY2hhbmNlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkgcGVuZGluZyBjYWxsYmFja3MuIElm
IHNvLCB3ZSB3YW50IHRvIGRpc3BhdGNoIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgcmlnaHQgYXdh
eS4KICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwpAQCAtMTA4Miw4ICsx
MDkzLDE5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGNvbnN0IFZlCiAgICAgfQogI2VuZGlmCiAKLSAgICBp
ZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljcykgJiYgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQotICAgICAgICBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKKyAgICAv
LyBGSVhNRSA8cmRhcjovL3Byb2JsZW0vMzM0OTEyMjI+OyBzY2hlZHVsZUNsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50IGRvZXMgbm90IGhhdmUgYSBjb21wbGV0aW9uIGhhbmRsZXIsCisgICAgLy8g
c28gdGhlIGNvbXBsZXRpb24gaGFuZGxlciBmb3IgdGhpcyByZW1vdmVEYXRhKCkgY2FsbCBjYW4g
YmUgY2FsbGVkIHByZW1hdHVyZWx5LgorICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSAmJiBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MpIHsKKyAgICAgICAgYXV0byBkZWxldGVkVHlwZXNSYXcgPSBkYXRhVHlwZXMudG9SYXco
KTsKKyAgICAgICAgYXV0byBtb25pdG9yZWRUeXBlc1JhdyA9IFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKCkudG9SYXcoKTsKKworICAgICAgICAvLyBJ
ZiB3ZSBhcmUgZGVsZXRpbmcgYWxsIG9mIHRoZSBkYXRhIHR5cGVzIHRoYXQgdGhlIHJlc291cmNl
IGxvYWQgc3RhdGlzdGljcyBzdG9yZSBtb25pdG9ycworICAgICAgICAvLyB3ZSBkbyBub3QgbmVl
ZCB0byByZS1ncmFuZGZhdGhlciBvbGQgZGF0YS4KKyAgICAgICAgaWYgKChtb25pdG9yZWRUeXBl
c1JhdyAmIGRlbGV0ZWRUeXBlc1JhdykgPT0gbW9uaXRvcmVkVHlwZXNSYXcpCisgICAgICAgICAg
ICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnQoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpTaG91bGRHcmFuZGZhdGhlcjo6
Tm8pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpTaG91bGRHcmFuZGZhdGhlcjo6WWVzKTsKKyAgICB9CiAKICAgICAvLyBUaGVy
ZSdzIGEgY2hhbmNlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkgcGVuZGluZyBjYWxsYmFja3MuIElm
IHNvLCB3ZSB3YW50IHRvIGRpc3BhdGNoIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgcmlnaHQgYXdh
eS4KICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwpAQCAtMTI3MCwxOCAr
MTI5MiwzMyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGVuYWJs
ZWQpIHsKKyAgICAgICAgQVNTRVJUKCFtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpOworICAgICAg
ICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQW5kU2V0VGVzdGluZ0NhbGxiYWNrKG51bGxw
dHIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbnVsbHB0cjsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xz
KCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChmYWxzZSk7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0FuZFNldFRlc3RpbmdDYWxsYmFjayhGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSB7
CisgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3RhdGlzdGljc1Rlc3RpbmdD
YWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNp
ZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICAgICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUo
bV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFt0aGlzXSAo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KSB7Ci0g
ICAgICAgICAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JUb3BQcml2YXRlbHlPd25lZERv
bWFpbnMoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIHNob3VsZENsZWFyRmlyc3QpOwot
ICAgICAgICB9KTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShtX2NvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZShjYWxsYmFjayksIFt0aGlzXSAoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KSB7CisgICAgICAgIHVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhkb21haW5zVG9S
ZW1vdmUsIGRvbWFpbnNUb0FkZCwgc2hvdWxkQ2xlYXJGaXJzdCk7CisgICAgfSk7CiAjZWxzZQot
ICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmNyZWF0ZShtX2NvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSk7CisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnksIG51bGxwdHIpOwogI2VuZGlmCi0gICAgfSBlbHNlCi0gICAgICAgIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG51bGxwdHI7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCi0gICAgICAgIHByb2Nlc3NQb29sLT5zZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHRydWUpOwogfQogCiBEYXRhYmFzZVByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6ZGF0YWJhc2VQcm9jZXNzUGFy
YW1ldGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMjg2OWI5ZGQzOWIuLjhlNzc0OWVkMmFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCkBAIC0xMjcsNiArMTI3LDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkUGVuZGlu
Z0Nvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmKTsKICAgICB2b2lkIHJlbW92ZVBlbmRpbmdD
b29raWUoY29uc3QgV2ViQ29yZTo6Q29va2llJik7CiAKKyAgICB2b2lkIGVuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NBbmRTZXRUZXN0aW5nQ2FsbGJhY2soRnVuY3Rpb248dm9pZCAoY29uc3Qg
U3RyaW5nJik+JiYgY2FsbGJhY2spOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYnNpdGVE
YXRhU3RvcmUoV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0
b3JlKENvbmZpZ3VyYXRpb24sIFdlYkNvcmU6OlNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjI3Mzk1ZTU1YjMuLmJkM2E3YjBm
NmIyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTctMDctMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgZ3JhbmRmYXRoZXJpbmcgaGFw
cGVucyBtdWNoIHRvbyBvZnRlbi4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyNjU1ODM0PiBh
bmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDgyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5wbGlzdDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbTogQWRkZWQuCisgICAgICAgIChU
RVNUKToKKwogMjAxNy0wNy0yNSAgTWF0dGhldyBTdGV3YXJ0ICA8bWF0dGhld19yX3N0ZXdhcnRA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBhdXRvaW5zdGFsbGVyIGZhaWxpbmcgb24gYXV0b2lu
c3RhbGxfZXZlcnl0aGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNzNjMzgwYWQ5My4u
YzUyZTU0NzJiN2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzMsNiArMTczLDggQEAK
IAkJNTFCQ0VFNEUxQzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwg
Ki87IH07CiAJCTUxQkNFRTRGMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nl
c3MtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3Mt
Mi5odG1sICovOyB9OwogCQk1MUM2ODNERTFFQTEzNEU4MDA2NTAxODMgLyogV0tVUkxTY2hlbWVI
YW5kbGVyLTEubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUM2ODNERDFFQTEzNERCMDA2NTAxODMgLyogV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0gKi87
IH07CisJCTUxQzhFMUE1MUYyNkFGNEMwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDOEUx
QTQxRjI2QUM1NDAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gKi87IH07CisJ
CTUxQzhFMUE5MUYyN0Y0OTYwMEJGNzMxQiAvKiBFbXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLnBsaXN0IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQzhFMUE4MUYyN0Y0NzMwMEJGNzMxQiAvKiBFbXB0eUdyYW5kZmF0
aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0ICovOyB9OwogCQk1MUNEMUM2QzFCMzhD
RTQzMDAxNDJDQTUgLyogTW9kYWxBbGVydHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM2QTFCMzhDRTM2MDAxNDJDQTUgLyogTW9kYWxBbGVy
dHMubW0gKi87IH07CiAJCTUxQ0QxQzcyMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMt
aW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0QxQzcxMUIzOEQ0ODQwMDE0MkNBNSAvKiBt
b2RhbC1hbGVydHMtaW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sICovOyB9OwogCQk1MUQx
MjQ5ODFFNzYzQjAyMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQ5NzFFNzYzQUY4MDAyQjI4
MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gKi87IH07CkBAIC0zNzYsNyArMzc4LDYgQEAKIAkJ
N0NDRTdFQzExQTQxMUE3RTAwNDQ3QzRDIC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI0RjhGQTMxNTlE
NTJCMTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tICovOyB9OwogCQk3Q0NF
N0VDMjFBNDExQTdFMDA0NDdDNEMgLyogSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyNkZDNkIxNTlE
MDYxMDAwQ0MzNzY1IC8qIEhUTUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbS5tbSAqLzsgfTsKIAkJ
N0NDRTdFQzMxQTQxMUE3RTAwNDQ3QzRDIC8qIEluc3BlY3RvckJhci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MDdFOEE2MTRDNjU0NUIwMDVENkIz
QiAvKiBJbnNwZWN0b3JCYXIubW0gKi87IH07Ci0JCTk1NjQ2RTVCMUYxREI2MEUwMERFMEVCOSAv
KiBJbnNwZWN0b3JWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NTNGNDc5MTFGMURCNDAzMDBFM0QxRTMgLyogSW5zcGVjdG9yVmFsdWUuY3Bw
ICovOyB9OwogCQk3Q0NFN0VDNDFBNDExQTdFMDA0NDdDNEMgLyogSlNXcmFwcGVyRm9yTm9kZUlu
V2ViRnJhbWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QkI0MTYwMTE2ODE1QjI2MDA4MjQyMzggLyogSlNXcmFwcGVyRm9yTm9kZUluV2ViRnJhbWUu
bW0gKi87IH07CiAJCTdDQ0U3RUM1MUE0MTFBN0UwMDQ0N0M0QyAvKiBNZW1vcnlDYWNoZURpc2Fi
bGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlD
YWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJN0NDRTdF
QzYxQTQxMUE3RTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxN0U3REZCMTUxMTBFQTYwMEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW0gKi87IH07CkBAIC01MTIsNiArNTEzLDcgQEAKIAkJOTNGNTZEQTcx
RTVGOTE3NDAwM0VERTg0IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzRTAzMzFEMEE1RjI3MDBGRUJDRjMgLyog
bGliaWN1Y29yZS5keWxpYiAqLzsgfTsKIAkJOTNGNTZEQTkxRTVGOTE5RDAwM0VERTg0IC8qIFdL
V2ViVmlld1NuYXBzaG90Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1t
ICovOyB9OwogCQk5M0Y3RTg2RjE0REM4RTVDMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y3RTg2RTE0REM4RTVCMDBDODRBOTkgLyogTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgKi87IH07CisJCTk1NjQ2RTVC
MUYxREI2MEUwMERFMEVCOSAvKiBJbnNwZWN0b3JWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTNGNDc5MTFGMURCNDAzMDBFM0QxRTMgLyog
SW5zcGVjdG9yVmFsdWUuY3BwICovOyB9OwogCQk5OTg0RkFDQzFDRkZBRjYwMDA4RDE5OEMgLyog
V0tXZWJWaWV3VGV4dElucHV0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1
dC5tbSAqLzsgfTsKIAkJOTk4NEZBQ0UxQ0ZGQjA5MDAwOEQxOThDIC8qIGVkaXRhYmxlLWJvZHku
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5OTg0RkFDRDFDRkZCMDM4MDA4RDE5OEMgLyogZWRpdGFibGUtYm9keS5odG1sICovOyB9Owog
CQk5QjA3ODZBNTFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93
Um9vdHNPcGVuX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjA3ODZBNDFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtl
QWxsU2hhZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgKi87IH07CkBAIC03NDMsNiArNzQ1LDcgQEAK
IAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0QVBJLnJlc291cmNlczsKIAkJCWRzdFN1YmZvbGRlclNw
ZWMgPSA3OwogCQkJZmlsZXMgPSAoCisJCQkJNTFDOEUxQTkxRjI3RjQ5NjAwQkY3MzFCIC8qIEVt
cHR5R3JhbmRmYXRoZXJlZFJlc291cmNlTG9hZFN0YXRpc3RpY3MucGxpc3QgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJRjQ1QjYzRkIxRjE5N0Y0QTAwOUQzOEI5IC8qIGltYWdlLW1hcC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0MDdGRTM5MUYxRDBERkMwMDE3Q0YyNSAvKiBl
bm9ybW91cy5zdmcgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRENUU0RTgxRjBDNUQzODAw
OEMxQTQ5IC8qIGRyYWdzdGFydC1jbGVhci1zZWxlY3Rpb24uaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKQEAgLTEyMTAsNiArMTIxMyw4IEBACiAJCTUxQkNFRTRDMUM4NEY1MkMwMDQyQzgyRSAv
KiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gIkluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUJDRUU0RDFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNz
LTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJNdWx0aVByb2Nl
c3MtMi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDNjgzREQxRUExMzRE
QjAwNjUwMTgzIC8qIFdLVVJMU2NoZW1lSGFuZGxlci0xLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gIldLVVJMU2NoZW1lSGFuZGxlci0xLm1tIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFDOEUxQTQxRjI2QUM1NDAwQkY3MzFCIC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUM4RTFBODFGMjdGNDcz
MDBCRjczMUIgLyogRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlz
dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGUu
YnBsaXN0OyBwYXRoID0gRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5w
bGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDQjRBRDcxQjNBMDc5QzAwQzFC
MUM2IC8qIE1vZGFsQWxlcnRzU1BJLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1vZGFsQWxlcnRzU1BJLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFDRDFDNkExQjM4Q0UzNjAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9kYWxBbGVydHMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxQ0QxQzcxMUIzOEQ0ODQwMDE0MkNBNSAvKiBtb2RhbC1hbGVydHMt
aW4tbmV3LWFib3V0LWJsYW5rLXdpbmRvdy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm1vZGFsLWFsZXJ0cy1p
bi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTM5OCw2ICsxNDAzLDcgQEAKIAkJOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdL
V2ViVmlld1NuYXBzaG90Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV0tXZWJWaWV3U25hcHNob3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
RjdFODZCMTREQzhFNEQwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
cmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGN0U4NkUxNERDOEU1QjAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZyYW1lc19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1M0Y0NzkxMUYxREI0MDMwMEUzRDFFMyAvKiBJ
bnNwZWN0b3JWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAv
KiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS1dlYlZpZXdUZXh0SW5wdXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5ODRGQUNEMUNGRkIwMzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZWRpdGFibGUtYm9keS5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUIwNzg2QTIxQzU4ODMwRjAwRDE1OUUzIC8qIEluamVjdGVkQnVu
ZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW4uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU0MCw3ICsxNTQ2LDYgQEAKIAkJQzJDRjk3NTkx
NkNFQzY5RTAwNTRFOTlEIC8qIEpTQ29udGV4dEJhY2tGb3J3YXJkQ2FjaGUyLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBKU0NvbnRleHRCYWNrRm9yd2FyZENhY2hlMi5odG1sOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkVCMkREMTE2Q0FDN0FDMDA5QjUyRUUgLyog
V2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRDb250ZXh0Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTA3RThBNjE0QzY1NDVCMDA1RDZCM0Ig
LyogSW5zcGVjdG9yQmFyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gSW5zcGVjdG9yQmFyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NTNGNDc5
MTFGMURCNDAzMDBFM0QxRTMgLyogSW5zcGVjdG9yVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9yVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTEw
MUM0RTE3NkI4QkI5MDBFRTlCMTUgLyogZmluZFJhbmdlcy5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gZmluZFJhbmdlcy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDNTFBRkI5ODE2OUY0OUZGMDA5Q0NGNjYgLyogRmluZE1hdGNoZXMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaW5kTWF0Y2hlcy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzU0MEY3NzUxNTJFNERBMDAwQTQwQzhDIC8qIFNpbXBsaWZ5TWFy
a3VwLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2ltcGxpZnlN
YXJrdXAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODkwLDYgKzE4OTUsNyBA
QAogCQkJCUExMkREQkZDMUU4MzZGRjEwMENGNkNBRSAvKiBSZW5kZXJlZEltYWdlV2l0aE9wdGlv
bnNQbHVnSW4ubW0gKi8sCiAJCQkJQTEyRERDMDExRTgzNzRGNTAwQ0Y2Q0FFIC8qIFJlbmRlcmVk
SW1hZ2VXaXRoT3B0aW9uc1Byb3RvY29sLmggKi8sCiAJCQkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJC
ODAwIC8qIFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tICovLAorCQkJCTUxQzhFMUE0
MUYyNkFDNTQwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tICovLAogCQkJCUEx
ODBDMEY5MUVFNjdERjAwMDQ2OEY0NyAvKiBSdW5PcGVuUGFuZWwubW0gKi8sCiAJCQkJMzdCQ0E2
MUIxQjU5NkJBOTAwMjAxMkNBIC8qIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0Fj
dGlvbnMubW0gKi8sCiAJCQkJMkQ5QTUzQUUxQjMxRkE4RDAwNzRENUFBIC8qIFNocmlua1RvRml0
Lm1tICovLApAQCAtMjA4Niw2ICsyMDkyLDcgQEAKIAkJCQk1NzE0RUNCQzFDQThDMjE4MDAwNTFB
QzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwyLmh0bWwgKi8sCiAJCQkJNTcxNEVDQkEx
Q0E4QkZEMTAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRnJhbWUuaHRtbCAq
LywKIAkJCQlBMTU1MDIyQjFFMDUwQkM1MDBBMjRDNTcgLyogZHVwbGljYXRlLWNvbXBsZXRpb24t
aGFuZGxlci1jYWxscy5odG1sICovLAorCQkJCTUxQzhFMUE4MUYyN0Y0NzMwMEJGNzMxQiAvKiBF
bXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0ICovLAogCQkJCTk5
ODRGQUNEMUNGRkIwMzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi8sCiAJCQkJRjQw
N0ZFMzgxRjFEMERFNjAwMTdDRjI1IC8qIGVub3Jtb3VzLnN2ZyAqLywKIAkJCQlGNEMyQUIyMTFE
RDZEOTQxMDBFMDZENUIgLyogZW5vcm1vdXMtdmlkZW8td2l0aC1zb3VuZC5odG1sICovLApAQCAt
MzA2Nyw2ICszMDc0LDcgQEAKIAkJCQk3QzgzRTBCQjFEMEE2NTAwMDBGRUJDRjMgLyogRmluZElu
UGFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY0MUE0MTFBRTYwMDQ0N0M0QyAvKiBG
aW5kTWF0Y2hlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDQwMUQwQTYzRTMwMEZFQkNG
MyAvKiBGaXJzdFJlc3BvbmRlclNjcm9sbGluZ1Bvc2l0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTFDOEUxQTUxRjI2QUY0QzAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBCQzFEMEE2NTA3MDBGRUJDRjMgLyogRml4ZWRMYXlv
dXRTaXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5MDlBN0UxRDg3NzQ4MDAwN0UxMEY4IC8q
IEZsb2F0UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5MDlBN0YxRDg3NzQ4MDAwN0Ux
MEY4IC8qIEZsb2F0UmVjdC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0VtcHR5R3JhbmRmYXRoZXJlZFJlc291cmNl
TG9hZFN0YXRpc3RpY3MucGxpc3QgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJD
b2NvYS9FbXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMxMTRlZGM2ZmFlYzRjMzJiNTA3ZTRmYWNjMjcwZWMzMGYyMzViZWIKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDE0Ngp6Y21ZYykkakt9JkYpK0JvJGkmUlQlRXJ6U210VC10bHZ0OVBt
K3EyU2wzRS11QWUyOztVdFNGNDJiVGJhaSVUKy0KemZyMnVyY2A1I0I/blF9dERRU3IlOEwzNDtg
SDstcSlaJnVGKz1CNDMpU318ZHtKYUdWbHBVfGRLRTFXPygrdlNtCmE0bllPZWtlSnhHYk90YkJX
UTVRUm9LUEFAV2RaPEV3a3NfRgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LmE5YTY5YzRkODM1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQpAQCAtMCwwICsxLDEyMCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
c2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lm
IFdLX0FQSV9FTkFCTEVECisKK1RFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgR3JhbmRmYXRo
ZXJDYWxsYmFjaykKK3sKKyAgICBhdXRvICpkYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3Jl
IGRlZmF1bHREYXRhU3RvcmVdOworICAgIFtkYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkOk5PXTsKKworICAgIE5TVVJMICpzdGF0aXN0aWNzRGlyZWN0b3J5VVJMID0g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L1Rlc3RXZWJLaXRBUEkv
V2Vic2l0ZURhdGEvUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxk
ZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBOU1VSTCAqZmlsZVVSTCA9IFtzdGF0aXN0
aWNzRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImZ1bGxfYnJvd3Np
bmdfc2Vzc2lvbl9yZXNvdXJjZUxvZy5wbGlzdCJdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmZpbGVVUkwgZXJyb3I6bmlsXTsKKyAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpzdGF0aXN0aWNzRGly
ZWN0b3J5VVJMIGVycm9yOm5pbF07CisgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpzdGF0aXN0aWNzRGlyZWN0b3J5VVJMLnBh
dGhdKTsKKworICAgIHN0YXRpYyBib29sIGRvbmVGbGFnOworICAgIHN0YXRpYyBib29sIGdyYW5k
ZmF0aGVyZWRGbGFnOworCisgICAgW2RhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Rlc3RpbmdDYWxsYmFjazpeKFdLV2Vic2l0ZURhdGFTdG9yZSAqLCBOU1N0cmluZyAqbWVzc2Fn
ZSkgeworICAgICAgICBBU1NFUlRfVFJVRShbbWVzc2FnZSBpc0VxdWFsVG9TdHJpbmc6QCJHcmFu
ZGZhdGhlcmVkIl0pOworICAgICAgICBncmFuZGZhdGhlcmVkRmxhZyA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdyYW5kZmF0aGVyZWRGbGFnKTsKKwor
ICAgIC8vIFNwaW4gdGhlIHJ1bmxvb3AgdW50aWwgdGhlIHJlc291cmNlIGxvYWQgc3RhdGlzdGlj
cyBmaWxlIGhhcyB3cml0dGVuIHRvIGRpc2suCisgICAgLy8gSWYgdGhlIHRlc3QgZW50ZXJzIGEg
c3BpbiBsb29wIGhlcmUsIGl0IGhhcyBmYWlsZWQuCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgaWYgKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpm
aWxlVVJMLnBhdGhdKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnNwaW5SdW5Mb29wKDEpOworICAgIH0KKworICAgIGdyYW5kZmF0aGVyZWRGbGFnID0g
ZmFsc2U7CisgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0
b3JlIF9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZV0gIG1vZGlmaWVkU2luY2U6
W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XiB7CisgICAgICAgIGRvbmVG
bGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZUZsYWcpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKKworICAg
IC8vIFRoZSB3ZWJzaXRlIGRhdGEgc3RvcmUgcmVtb3ZlIHNob3VsZCBoYXZlIGNvbXBsZXRlZCwg
YnV0IHNpbmNlIHdlIHJlbW92ZWQgYWxsIG9mIHRoZSBkYXRhIHR5cGVzIHRoYXQgYXJlIG1vbml0
b3JlZCBieSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MsCisgICAgLy8gbm8gZ3JhbmRmYXRoZXJp
bmcgY2FsbCBzaG91bGQgaGF2ZSBiZWVuIG1hZGUuCisgICAgRVhQRUNUX0ZBTFNFKGdyYW5kZmF0
aGVyZWRGbGFnKTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVVUkwucGF0aF0pOworCisgICAgZG9uZUZsYWcgPSBm
YWxzZTsKKyAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltOU1NldCBzZXRXaXRoT2Jq
ZWN0czpXS1dlYnNpdGVEYXRhVHlwZUNvb2tpZXMsIF9XS1dlYnNpdGVEYXRhVHlwZVJlc291cmNl
TG9hZFN0YXRpc3RpY3MsIG5pbF0gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBj
b21wbGV0aW9uSGFuZGxlcjpeIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOwor
CisgICAgLy8gU2luY2Ugd2UgZGlkIG5vdCByZW1vdmUgZXZlcnkgZGF0YSB0eXBlIGNvdmVyZWQg
YnkgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzLCB3ZSBkbyBleHBlY3QgdGhhdCBncmFuZGZhdGhl
cmluZyB0b29rIHBsYWNlIGFnYWluLgorICAgIC8vIElmIHRoZSB0ZXN0IGhhbmdzIHdhaXRpbmcg
b24gZWl0aGVyIG9mIHRoZXNlIGNvbmRpdGlvbnMsIGl0IGhhcyBmYWlsZWQuCisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZncmFuZGZhdGhlcmVkRmxhZyk7CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBTcGluIHRoZSBydW5sb29wIHVudGls
IHRoZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MgZmlsZSBoYXMgd3JpdHRlbiB0byBkaXNrLgor
ICAgIC8vIElmIHRoZSB0ZXN0IGVudGVycyBhIHNwaW4gbG9vcCBoZXJlLCBpdCBoYXMgZmFpbGVk
LgorICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmIChbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZVVSTC5wYXRoXSkKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxKTsKKyAgICB9
Cit9CisKK1RFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgU2hvdWxkTm90R3JhbmRmYXRoZXJP
blN0YXJ0dXApCit7CisgICAgYXV0byAqZGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBk
ZWZhdWx0RGF0YVN0b3JlXTsKKyAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZDpOT107CisKKyAgICBOU1VSTCAqc3RhdGlzdGljc0RpcmVjdG9yeVVSTCA9IFtO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9UZXN0V2ViS2l0QVBJL1dl
YnNpdGVEYXRhL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJ
blBhdGhdIGlzRGlyZWN0b3J5OllFU107CisgICAgTlNVUkwgKnRhcmdldFVSTCA9IFtzdGF0aXN0
aWNzRGlyZWN0b3J5VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImZ1bGxfYnJvd3Np
bmdfc2Vzc2lvbl9yZXNvdXJjZUxvZy5wbGlzdCJdOworICAgIE5TVVJMICp0ZXN0UmVzb3VyY2VV
UkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiRW1wdHlHcmFuZGZh
dGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIgd2l0aEV4dGVuc2lvbjpAInBsaXN0IiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpzdGF0aXN0aWNzRGlyZWN0
b3J5VVJMIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJy
b3I6bmlsXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRV
Ukw6dGVzdFJlc291cmNlVVJMIHRvVVJMOnRhcmdldFVSTCBlcnJvcjpuaWxdOworCisgICAgRVhQ
RUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRo
OnRhcmdldFVSTC5wYXRoXSk7CisKKyAgICBzdGF0aWMgYm9vbCBjYWxsYmFja0ZsYWc7CisgICAg
W2RhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpeKFdL
V2Vic2l0ZURhdGFTdG9yZSAqLCBOU1N0cmluZyAqbWVzc2FnZSkgeworICAgICAgICBBU1NFUlRf
VFJVRShbbWVzc2FnZSBpc0VxdWFsVG9TdHJpbmc6QCJQb3B1bGF0ZWRXaXRob3V0R3JhbmRmYXRo
ZXJpbmciXSk7CisgICAgICAgIGNhbGxiYWNrRmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNhbGxiYWNrRmxhZyk7Cit9CisjZW5kaWYKKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>