<?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>158265</bug_id>
          
          <creation_ts>2016-06-01 11:10:33 -0700</creation_ts>
          <short_desc>Modernize lambda usage for all callers of RunLoop::dispatch()</short_desc>
          <delta_ts>2016-06-03 07:43:39 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=158277</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>158346</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1198203</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 11:10:33 -0700</bug_when>
    <thetext>Modernize lambda usage for all callers of RunLoop::dispatch()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198221</commentid>
    <comment_count>1</comment_count>
      <attachid>280256</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 11:51:56 -0700</bug_when>
    <thetext>Created attachment 280256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198231</commentid>
    <comment_count>2</comment_count>
      <attachid>280256</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-01 12:26:49 -0700</bug_when>
    <thetext>Comment on attachment 280256
Patch

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

R=me with comments.

&gt; Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp:-44
&gt; -

I believe we usually have a blank line after #if and namespace statements.

&gt; Source/WebCore/platform/graphics/mac/DisplayRefreshMonitorMac.cpp:107
&gt;          if (auto* monitor = weakPtr.get())

This does not look safe. Shouldn&apos;t we assign to a RefPtr&lt;&gt; right away so that we at least keep it alive until the next line?

&gt; Source/WebCore/platform/network/DataURLDecoder.cpp:175
&gt; +    decodeQueue().dispatch([decodeTask = createDecodeTask(url, scheduleContext, WTFMove(completionHandler))]() mutable {

Not a big deal but I kinda preferred the previous code here given the length of the line now.

&gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:207
&gt; +            RunLoop::main().dispatch([completionHandler = WTFMove(completionHandler), securityOrigins = WTFMove(securityOrigins)] {

securityOrigins = indexedDatabaseOrigins() ?

&gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:210
&gt; +                    websiteData.entries.append(WebsiteData::Entry { securityOrigin, WebsiteDataType::IndexedDBDatabases, 0 });

Do we really need the explicit WebsiteData::Entry ?

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:548
&gt; +    // FIXME: Key contains strings, and we&apos;re not making isolated copies of them here.

Please drop this comment. It *is* OK because the Key copy constructor creates isolated copies of all its String data members.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:669
&gt; +            // FIXME: Record is a reasonably complex type with non-threadsafe RefCounted objects,

struct Record {
        WTF_MAKE_FAST_ALLOCATED;
    public:
        Key key;
        std::chrono::system_clock::time_point timeStamp;
        Data header;
        Data body;
    };

What&apos;s refcounted or unsafe here. I am not sure this FIXME comment is warranted.

&gt; Source/WebKit2/Platform/IPC/Connection.cpp:140
&gt; +                dispatchMessageAndResetDidScheduleDispatchMessagesForConnection(protectedConnection.get());

The .get() is redundant I believe.

&gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:558
&gt;      RefPtr&lt;StorageManager&gt; storageManager(this);

Did you mean to remove this line?

&gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:592
&gt; +    m_queue-&gt;dispatch([this, protectedThis = Ref&lt;StorageManager&gt;(*this), copiedOrigins, completionHandler = WTFMove(completionHandler)]() mutable {

We should definitely WTFMove(copiedOrigins) in I think. We don&apos;t want to copy this whole vector after we already made a deep isolated copy.

&gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:636
&gt; +            localStorageNamespace-&gt;clearStorageAreasMatchingOrigin(copiedOrigin.get());

Do we really need this .get()?

&gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:639
&gt; +            transientLocalStorageNamespace-&gt;clearStorageAreasMatchingOrigin(copiedOrigin.get());

Do we really need this .get()?

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:274
&gt; +            WTF::RunLoop::main().dispatch([callbackAggregator, origins = WTFMove(origins), websiteData = WTFMove(websiteData)]() mutable {

Do we really need the explicit WTF:: ?

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:377
&gt; +            WTF::RunLoop::main().dispatch([callbackAggregator, origins = WTFMove(origins), websiteData = WTFMove(websiteData)]() mutable {

Do we really need the explicit WTF:: ?

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:1682
&gt; +        RunLoop::main().dispatch([lastRef = adoptRef(this)] {

adoptRef(*this) ? Otherwise we get a PassRefPtr :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198232</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-01 12:27:08 -0700</bug_when>
    <thetext>Also note iOS does not seem to be building.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198246</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 13:10:19 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 280256 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280256&amp;action=review
&gt; 
&gt; R=me with comments.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/mac/DisplayRefreshMonitorMac.cpp:107
&gt; &gt;          if (auto* monitor = weakPtr.get())
&gt; 
&gt; This does not look safe. Shouldn&apos;t we assign to a RefPtr&lt;&gt; right away so
&gt; that we at least keep it alive until the next line?

It&apos;s definitely not safe, hence the comment. I didn&apos;t feel expert enough in the expectations here to make that change.

I plan to file a followup and assign to Simon.

&gt; 
&gt; &gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:207
&gt; &gt; +            RunLoop::main().dispatch([completionHandler = WTFMove(completionHandler), securityOrigins = WTFMove(securityOrigins)] {
&gt; 
&gt; securityOrigins = indexedDatabaseOrigins() ?

Sure.

&gt; 
&gt; &gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:210
&gt; &gt; +                    websiteData.entries.append(WebsiteData::Entry { securityOrigin, WebsiteDataType::IndexedDBDatabases, 0 });
&gt; 
&gt; Do we really need the explicit WebsiteData::Entry ?

Not sure - I didn&apos;t give much look at things except specifically for the lambdas.
I&apos;ll try.

&gt; &gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:548
&gt; &gt; +    // FIXME: Key contains strings, and we&apos;re not making isolated copies of them here.
&gt; 
&gt; Please drop this comment. It *is* OK because the Key copy constructor
&gt; creates isolated copies of all its String data members.

This is a break from all other classes that have explicit isolatedCopys which let somebody reading the code verify that things are safe.

We should change that.

&gt; &gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:669
&gt; &gt; +            // FIXME: Record is a reasonably complex type with non-threadsafe RefCounted objects,
&gt; 
&gt; struct Record {
&gt;         WTF_MAKE_FAST_ALLOCATED;
&gt;     public:
&gt;         Key key;
&gt;         std::chrono::system_clock::time_point timeStamp;
&gt;         Data header;
&gt;         Data body;
&gt;     };
&gt; 
&gt; What&apos;s refcounted or unsafe here. I am not sure this FIXME comment is
&gt; warranted.

It was based on the fact that Key doesn&apos;t follow the established pattern in the project of having explicit isolatedCopies.

&gt; 
&gt; &gt; Source/WebKit2/Platform/IPC/Connection.cpp:140
&gt; &gt; +                dispatchMessageAndResetDidScheduleDispatchMessagesForConnection(protectedConnection.get());
&gt; 
&gt; The .get() is redundant I believe.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:558
&gt; &gt;      RefPtr&lt;StorageManager&gt; storageManager(this);
&gt; 
&gt; Did you mean to remove this line?

Yes - The protector is moved into the lambda scope.

&gt; &gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:592
&gt; &gt; +    m_queue-&gt;dispatch([this, protectedThis = Ref&lt;StorageManager&gt;(*this), copiedOrigins, completionHandler = WTFMove(completionHandler)]() mutable {
&gt; 
&gt; We should definitely WTFMove(copiedOrigins) in I think. We don&apos;t want to
&gt; copy this whole vector after we already made a deep isolated copy.

Definitely, just missed this one.

&gt; &gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:636
&gt; &gt; +            localStorageNamespace-&gt;clearStorageAreasMatchingOrigin(copiedOrigin.get());
&gt; 
&gt; Do we really need this .get()?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:639
&gt; &gt; +            transientLocalStorageNamespace-&gt;clearStorageAreasMatchingOrigin(copiedOrigin.get());
&gt; 
&gt; Do we really need this .get()?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:274
&gt; &gt; +            WTF::RunLoop::main().dispatch([callbackAggregator, origins = WTFMove(origins), websiteData = WTFMove(websiteData)]() mutable {
&gt; 
&gt; Do we really need the explicit WTF:: ?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:377
&gt; &gt; +            WTF::RunLoop::main().dispatch([callbackAggregator, origins = WTFMove(origins), websiteData = WTFMove(websiteData)]() mutable {
&gt; 
&gt; Do we really need the explicit WTF:: ?
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:1682
&gt; &gt; +        RunLoop::main().dispatch([lastRef = adoptRef(this)] {
&gt; 
&gt; adoptRef(*this) ? Otherwise we get a PassRefPtr :(

lulz</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198247</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-01 13:12:14 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; Comment on attachment 280256 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=280256&amp;action=review
&gt; &gt; 
&gt; &gt; R=me with comments.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/mac/DisplayRefreshMonitorMac.cpp:107
&gt; &gt; &gt;          if (auto* monitor = weakPtr.get())
&gt; &gt; 
&gt; &gt; This does not look safe. Shouldn&apos;t we assign to a RefPtr&lt;&gt; right away so
&gt; &gt; that we at least keep it alive until the next line?
&gt; 
&gt; It&apos;s definitely not safe, hence the comment. I didn&apos;t feel expert enough in
&gt; the expectations here to make that change.
&gt; 
&gt; I plan to file a followup and assign to Simon.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:207
&gt; &gt; &gt; +            RunLoop::main().dispatch([completionHandler = WTFMove(completionHandler), securityOrigins = WTFMove(securityOrigins)] {
&gt; &gt; 
&gt; &gt; securityOrigins = indexedDatabaseOrigins() ?
&gt; 
&gt; Sure.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:210
&gt; &gt; &gt; +                    websiteData.entries.append(WebsiteData::Entry { securityOrigin, WebsiteDataType::IndexedDBDatabases, 0 });
&gt; &gt; 
&gt; &gt; Do we really need the explicit WebsiteData::Entry ?
&gt; 
&gt; Not sure - I didn&apos;t give much look at things except specifically for the
&gt; lambdas.
&gt; I&apos;ll try.
&gt; 
&gt; &gt; &gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:548
&gt; &gt; &gt; +    // FIXME: Key contains strings, and we&apos;re not making isolated copies of them here.
&gt; &gt; 
&gt; &gt; Please drop this comment. It *is* OK because the Key copy constructor
&gt; &gt; creates isolated copies of all its String data members.
&gt; 
&gt; This is a break from all other classes that have explicit isolatedCopys
&gt; which let somebody reading the code verify that things are safe.
&gt; 
&gt; We should change that.

Yes, this is on my TODO list. I&apos;ll probably get to it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198248</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 13:13:50 -0700</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:558
&gt; &gt; &gt;      RefPtr&lt;StorageManager&gt; storageManager(this);
&gt; &gt; 
&gt; &gt; Did you mean to remove this line?
&gt; 
&gt; Yes - The protector is moved into the lambda scope.

Lambda capture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198278</commentid>
    <comment_count>7</comment_count>
      <attachid>280265</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 14:05:29 -0700</bug_when>
    <thetext>Created attachment 280265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198279</commentid>
    <comment_count>8</comment_count>
      <attachid>280265</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 14:06:17 -0700</bug_when>
    <thetext>Comment on attachment 280265
Patch

Will cq+ after EWS signs off</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198298</commentid>
    <comment_count>9</comment_count>
      <attachid>280265</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-01 15:05:05 -0700</bug_when>
    <thetext>Comment on attachment 280265
Patch

Rejecting attachment 280265 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;, 280265, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ss/WebProcessProxy.cpp
patching file Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp
patching file Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp
patching file Source/WebKit2/WebProcess/Plugins/PluginView.cpp
patching file Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp
patching file Source/WebKit2/WebProcess/WebPage/ViewUpdateDispatcher.cpp

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

Full output: http://webkit-queues.webkit.org/results/1419923</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198300</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 15:11:53 -0700</bug_when>
    <thetext>FontCacheCoreText.cpp changes from this morning were apparently reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198301</commentid>
    <comment_count>11</comment_count>
      <attachid>280271</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 15:14:27 -0700</bug_when>
    <thetext>Created attachment 280271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198333</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 16:35:57 -0700</bug_when>
    <thetext>The patch passed tests in the CQ 42 minutes ago but still hasn&apos;t landed. sigh. Landing manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198334</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 16:38:00 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/201575</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280256</attachid>
            <date>2016-06-01 11:51:56 -0700</date>
            <delta_ts>2016-06-01 14:05:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158265-20160601115314.patch</filename>
            <type>text/plain</type>
            <size>83888</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWViMGIwMGQzYjlkZTA5
Nzg5NjU4OTE2NGM5YWFiNzI2ZmQ3Njk3Zi4uNDY3MmE4NDJhNGI4YjA3YzNhOTQxYzA1YjdhOTY5
OGQ0NGEwMWVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE2LTA2LTAxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgbGFtYmRh
IHVzYWdlIGZvciBhbGwgY2FsbGVycyBvZiBSdW5Mb29wOjpkaXNwYXRjaCgpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjY1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChSZWZh
Y3Rvciwgbm8gYmVoYXZpb3IgY2hhbmdlKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9j
ZXNzSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJv
Y2Vzc0lEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRpZENvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsZWFyT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZUluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUHV0T3JBZGQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRSZWNvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OkluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xl
YXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmNy
ZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRl
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpwdXRPckFkZCk6
CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmdldFJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
blByb2Nlc3NJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5Q
cm9jZXNzSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJblByb2Nlc3NJREJTZXJ2ZXI6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRTdGFydFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xvc2VGcm9tU2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6bm90aWZ5T3BlbkRCUmVxdWVzdEJs
b2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNv
bm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjph
Ym9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
blByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpjb25maXJtRGlkQ2xvc2VGcm9tU2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyk6
CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNl
TmFtZXMpOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y29ubmVjdCk6CisgICAgICAgIAor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRl
eGVkREJTeW5jaHJvbm91c2x5KToKKyAgICAgICAgCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
VGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGVkU2Ny
b2xsaW5nVHJlZTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9s
bGluZ1RyZWU6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6Y3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2
ZW50UGhhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpzZXRB
Y3RpdmVTY3JvbGxTbmFwSW5kaWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9s
bGluZ1RyZWU6OmRlZmVyVGVzdHNGb3JSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
ZWRTY3JvbGxpbmdUcmVlOjpyZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24pOgorICAgICAgICAK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnBsYXRmb3JtUHJlY2FjaGUpOgorICAgICAg
ICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlz
cGxheUxpbmtGaXJlZCk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0
YVVSTERlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmNyZWF0
ZURlY29kZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmRlY29kZSk6
CisKIDIwMTYtMDYtMDEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBhY2NpZGVudGFsIGZwcmludGYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjhmNmQ0ZWZjZTkx
MjUxZWVhN2UxYjBkYzJmMTg1NjZjMmJjNmNkOS4uNTMwYjdmNGEzNTFkMjYwOTQyNmYwNmM5NTM5
MzA2MDk0NTM4NWQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE2LTA2LTAxICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgbGFt
YmRhIHVzYWdlIGZvciBhbGwgY2FsbGVycyBvZiBSdW5Mb29wOjpkaXNwYXRjaCgpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjY1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nl
c3MvRGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNz
OjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpmZXRjaERpc2tDYWNo
ZUVudHJpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRl
RGF0YSk6CisgICAgICAgIAorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6
OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cmV0cmlldmVGcm9tTWVt
b3J5KToKKyAgICAgICAgCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5jb21p
bmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVz
c2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSk6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmVucXVldWVJbmNvbWluZ01lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbToKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcik6CisgICAgICAgIAorICAgICAgICAq
IFNoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW06CisgICAgICAgICgtW1dLTlNVUkxTZXNz
aW9uTG9jYWwgX2dldENvb2tpZUhlYWRlcnNGb3JUYXNrOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHA6
CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6Omxvb2t1cENvbnRlbnRF
eHRlbnNpb24pOgorICAgICAgICAoQVBJOjpVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlOjpjb21w
aWxlQ29udGVudEV4dGVuc2lvbik6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmU6OnJlbW92ZUNvbnRlbnRFeHRlbnNpb24pOgorICAgICAgICAKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJv
Y2Vzc0xhdW5jaGVyOjpQcm9jZXNzTGF1bmNoZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVu
Y2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb25uZWN0
VG9TZXJ2aWNlKToKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0U2Vzc2lv
blN0b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0
ZVNlc3Npb25TdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2Vy
OjpkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbnMpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9y
T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3Rv
cmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKToKKyAgICAgICAgCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6aXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk6CisgICAgICAgIAorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmlzUmVzcG9uc2l2ZSk6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZmV0Y2hEYXRhKToKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnBsdWdpblRocmVhZEFzeW5jQ2FsbCk6CisgICAgICAgIAorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6dW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKToKKyAgICAgICAgCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50
RGlzcGF0Y2hlcjo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6RXZlbnREaXNwYXRj
aGVyOjp0b3VjaEV2ZW50KToKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld1VwZGF0ZURp
c3BhdGNoZXI6OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZSk6CisKIDIwMTYtMDUtMzEgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbCBvdXQgcjIwMTQ4MSwgcjIwMTUyMzogMC4zJSByZWdyZXNzaW9uIGluIE9jdGFuZSBjb2Rl
LWxvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggOGVhMjk3NmE4OTdhN2RlYTdk
NjFjNWY3MzExZDE1MGQ3YTdjM2U5My4uZDk3NTYxNWU5OGMxYmU4MWQ2NzA3YjQwNDExN2UyNGEz
NGI1NjY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTQxLDcgKzQxLDYgQEAK
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIFJlZjxJ
blByb2Nlc3NJREJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKCkKIHsKICAgICBS
ZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBzZXJ2ZXIgPSBhZG9wdFJlZigqbmV3IEluUHJvY2Vzc0lE
QlNlcnZlcik7CkBAIC05MSwzNTEgKzkwLDMwMSBAQCBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25U
b0NsaWVudCYgSW5Qcm9jZXNzSURCU2VydmVyOjpjb25uZWN0aW9uVG9DbGllbnQoKSBjb25zdAog
CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHBy
b3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0
aGlzKSwgcmVxdWVzdERhdGFdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKHJl
cXVlc3REYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERl
bGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVm
UHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9j
b25uZWN0aW9uVG9TZXJ2ZXItPmRpZERlbGV0ZURhdGFiYXNlKHJlc3VsdERhdGEpOwogICAgIH0p
OwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVy
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVy
PigqdGhpcyksIHJlcXVlc3REYXRhXSB7CiAgICAgICAgIG1fc2VydmVyLT5vcGVuRGF0YWJhc2Uo
cmVxdWVzdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
T3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVm
UHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9j
b25uZWN0aW9uVG9TZXJ2ZXItPmRpZE9wZW5EYXRhYmFzZShyZXN1bHREYXRhKTsKICAgICB9KTsK
IH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVy
cm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcywgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0geworICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJT
ZXJ2ZXI+KCp0aGlzKSwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0gewogICAgICAgICBt
X2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGVycm9yKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCiB7Ci0gICAgUmVmUHRyPEluUHJv
Y2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
ZXJyb3JdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgZXJyb3JdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZENvbW1pdFRy
YW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpOwogICAgIH0pOwogfQogCiB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcywgcmVzdWx0RGF0YV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0
aGlzKSwgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ3Jl
YXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXMo
dGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzLCByZXN1bHREYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXN1bHRE
YXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVPYmplY3RTdG9y
ZShyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAg
ICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzdWx0RGF0
YV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVzdWx0RGF0YV0gewogICAgICAg
ICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ2xlYXJPYmplY3RTdG9yZShyZXN1bHREYXRhKTsK
ICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENyZWF0ZUluZGV4KGNv
bnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lE
QlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKKyAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURC
U2VydmVyPigqdGhpcyksIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmRpZENyZWF0ZUluZGV4KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cywgcmVzdWx0RGF0YV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVzdWx0RGF0
YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkRGVsZXRlSW5kZXgocmVzdWx0
RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRQdXRPckFk
ZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nl
c3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHREYXRhXSB7CisgICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vz
c0lEQlNlcnZlcj4oKnRoaXMpLCByZXN1bHREYXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRv
U2VydmVyLT5kaWRQdXRPckFkZChyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRpZEdldFJlY29yZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhp
cyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
LCByZXN1bHREYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXN1bHREYXRh
XSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRSZWNvcmQocmVzdWx0RGF0
YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRDb3VudChj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHREYXRhXSB7CisgICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lE
QlNlcnZlcj4oKnRoaXMpLCByZXN1bHREYXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2Vy
dmVyLT5kaWRHZXRDb3VudChyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZERlbGV0ZVJlY29yZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhp
cyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
LCByZXN1bHREYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXN1bHREYXRh
XSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVSZWNvcmQocmVzdWx0
RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRPcGVuQ3Vy
c29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJv
Y2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKKyAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9j
ZXNzSURCU2VydmVyPigqdGhpcyksIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9u
VG9TZXJ2ZXItPmRpZE9wZW5DdXJzb3IocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJl
c3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEl0ZXJhdGVDdXJz
b3IocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjph
Ym9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVu
dGlmaWVyKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXMo
dGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzLCByZXNvdXJjZUlkZW50aWZpZXJdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyks
IHJlc291cmNlSWRlbnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+YWJvcnRUcmFuc2FjdGlv
bihyZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXNv
dXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIHJlc291cmNlSWRlbnRpZmllcl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+
KCp0aGlzKSwgcmVzb3VyY2VJZGVudGlmaWVyXSB7CiAgICAgICAgIG1fc2VydmVyLT5jb21taXRU
cmFuc2FjdGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24o
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vz
c0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlz
KSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyXSB7
CiAgICAgICAgIG1fc2VydmVyLT5kaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIp
OwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlc3VsdERhdGEsIGNvbnN0IElEQk9iamVjdFN0b3Jl
SW5mbyYgaW5mbykKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcywgcmVzdWx0RGF0YSwgaW5mb10geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlz
KSwgcmVzdWx0RGF0YSwgaW5mb10gewogICAgICAgICBtX3NlcnZlci0+Y3JlYXRlT2JqZWN0U3Rv
cmUocmVzdWx0RGF0YSwgaW5mbyk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1l
XSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3Rv
cmVOYW1lXSB7CiAgICAgICAgIG1fc2VydmVyLT5kZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0
YSwgb2JqZWN0U3RvcmVOYW1lKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lE
QlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50
aWZpZXJdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlcXVlc3REYXRhLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmNsZWFyT2JqZWN0U3RvcmUo
cmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKIHsKLSAgICBSZWZQdHI8SW5Qcm9j
ZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIGluZm9dIHsKKyAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8
SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlcXVlc3REYXRhLCBpbmZvXSB7CiAgICAgICAg
IG1fc2VydmVyLT5jcmVhdGVJbmRleChyZXF1ZXN0RGF0YSwgaW5mbyk7CiAgICAgfSk7CiB9CiAK
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFt
ZV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVxdWVzdERhdGEsIG9iamVjdFN0
b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lXSB7CiAgICAgICAgIG1fc2VydmVyLT5kZWxldGVJbmRl
eChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOwogICAgIH0p
OwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJW
YWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92
ZXJ3cml0ZU1vZGUpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMsIHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZV0gewor
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVl
LCBvdmVyd3JpdGVNb2RlXSB7CiAgICAgICAgIG1fc2VydmVyLT5wdXRPckFkZChyZXF1ZXN0RGF0
YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUpOwogICAgIH0pOwogfQogCiB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCiB7Ci0gICAgUmVmUHRy
PEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLQotICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIGtl
eVJhbmdlRGF0YV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVxdWVzdERhdGEs
IGtleVJhbmdlRGF0YV0gewogICAgICAgICBtX3NlcnZlci0+Z2V0UmVjb3JkKHJlcXVlc3REYXRh
LCBrZXlSYW5nZURhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmIGtleVJhbmdlRGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVy
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YV0geworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblBy
b2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YV0gewogICAg
ICAgICBtX3NlcnZlci0+Z2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiAgICAg
fSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdl
RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOwotCi0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4o
KnRoaXMpLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhXSB7CiAgICAgICAgIG1fc2VydmVyLT5k
ZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiAgICAgfSk7CiB9CiAKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKLSAgICBSZWZQdHI8SW5Q
cm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotCi0gICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YSwgaW5mb10g
eworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVxdWVzdERhdGEsIGluZm9dIHsKICAg
ICAgICAgbV9zZXJ2ZXItPm9wZW5DdXJzb3IocmVxdWVzdERhdGEsIGluZm8pOwogICAgIH0pOwog
fQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSwgdW5zaWduZWQgbG9u
ZyBjb3VudCkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOwotCi0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzLCByZXF1ZXN0RGF0YSwga2V5LCBjb3VudF0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+
KCp0aGlzKSwgcmVxdWVzdERhdGEsIGtleSwgY291bnRdIHsKICAgICAgICAgbV9zZXJ2ZXItPml0
ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGtleSwgY291bnQpOwogICAgIH0pOwogfQogCiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQog
ewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0K
LSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm9dIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVy
PigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm9dIHsKICAgICAgICAg
bV9zZXJ2ZXItPmVzdGFibGlzaFRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGluZm8pOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZmlyZVZl
cnNpb25DaGFuZ2VFdmVudChJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURC
U2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKLSAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uXSB7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPElu
UHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0g
Y29ubmVjdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJz
aW9uXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5maXJlVmVyc2lvbkNoYW5nZUV2
ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1
ZXN0ZWRWZXJzaW9uKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8SW5Qcm9j
ZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBl
cnJvcl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBlcnJvcl0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkU3RhcnRUcmFu
c2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKTsKICAgICB9KTsKIH0KIAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsb3NlRnJvbVNlcnZlcihJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgSURCRXJyb3ImIGVycm9y
KQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7
Ci0gICAgdWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb24u
aWRlbnRpZmllcigpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcywgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgZXJyb3JdIHsKKyAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Q
cm9jZXNzSURCU2VydmVyPigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIgPSBj
b25uZWN0aW9uLmlkZW50aWZpZXIoKSwgZXJyb3JdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9T
ZXJ2ZXItPmRpZENsb3NlRnJvbVNlcnZlcihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBl
cnJvcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpub3RpZnlPcGVu
REJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKQogewotICAg
IFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0SWRl
bnRpZmllciwgb2xkVmVyc2lvbiwgbmV3VmVyc2lvbl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+
KCp0aGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb25dIHsKICAg
ICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPm5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKHJl
cXVlc3RJZGVudGlmaWVyLCBvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKTsKICAgICB9KTsKIH0KIAog
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRf
dCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
XSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyXSB7CiAgICAgICAgIG1fc2VydmVyLT5kYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3Rl
ZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50
aWZpZXJdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+
YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0
cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlm
aWVyKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhp
cyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
LCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllcl0geworICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJ
blByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
cmVxdWVzdElkZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRpZEZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIp
OwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRCUmVxdWVzdENh
bmNlbGxlZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7Ci0gICAgUmVmUHRy
PEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXSB7Cisg
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
PEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXF1ZXN0RGF0YV0gewogICAgICAgICBtX3Nl
cnZlci0+b3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CiB9CiAK
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjb25maXJtRGlkQ2xvc2VGcm9tU2VydmVyKHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vz
c0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXJdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIo
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgbWFpbkZyYW1lT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmln
aW4sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMsIG1haW5GcmFtZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgY2Fs
bGJhY2tJRF0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgbWFpbkZyYW1lT3JpZ2lu
LCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEXSB7CiAgICAgICAgIG1fc2VydmVyLT5nZXRBbGxE
YXRhYmFzZU5hbWVzKG1fY29ubmVjdGlvblRvU2VydmVyLT5pZGVudGlmaWVyKCksIG1haW5GcmFt
ZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgY2FsbGJhY2tJRCk7CiAgICAgfSk7CiB9CiAKIHZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxi
YWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVzKQogewotICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBjYWxsYmFja0lELCBkYXRh
YmFzZU5hbWVzXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCBjYWxsYmFja0lELCBk
YXRhYmFzZU5hbWVzXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRBbGxE
YXRhYmFzZU5hbWVzKGNhbGxiYWNrSUQsIGRhdGFiYXNlTmFtZXMpOwogICAgIH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBh
NzA3MGRjMGY0ZTZhYjZlYTM4NjlhZGUzNDMzM2E3MTAwMDIwYzI0Li4zNmRlZDU5NDY1MGFlM2My
MmU2ODJlZjNlNDUwY2UxY2ExM2I2NDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgV2ViU29j
a2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJv
dG9jb2xzLCBFeGNlCiAgICAgICAgICAgICAvLyB1c2luZyB0aGUgZXJyb3IgZXZlbnQuIEJ1dCBz
aW5jZSB0aGlzIGNvZGUgZXhlY3V0ZXMgYXMgcGFydCBvZiB0aGUgV2ViU29ja2V0J3MKICAgICAg
ICAgICAgIC8vIGNvbnN0cnVjdG9yLCB3ZSBoYXZlIHRvIHdhaXQgdW50aWwgdGhlIGNvbnN0cnVj
dG9yIGhhcyBjb21wbGV0ZWQgYmVmb3JlIGZpcmluZyB0aGUKICAgICAgICAgICAgIC8vIGV2ZW50
OyBvdGhlcndpc2UsIHVzZXJzIGNhbid0IGNvbm5lY3QgdG8gdGhlIGV2ZW50LgotICAgICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzXSgpIHsKKyAgICAgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxXZWJTb2NrZXQ+
KCp0aGlzKV0oKSB7CiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hPclF1ZXVlRXJyb3JFdmVudCgp
OwogICAgICAgICAgICAgICAgIHN0b3AoKTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXgg
N2U4NDgxYTZiZWFlYTQ5ZWM3ZDBlZDVmOTc3Y2UzZmNmMzczYjU3YS4uNGI5YWM5YWQzZjdkNzA2
Y2Y4YmY2MjZhNjNlMzEyNTE3NjM3NDIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yODIzLDE0ICsyODIzLDEx
IEBAIElEQlZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0Zvcklu
ZGV4ZWREQlN5bmNocm9ub3VzbHkoKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCiAg
ICAgSURCVmFsdWUgdmFsdWU7Ci0gICAgSURCVmFsdWUqIHZhbHVlUHRyID0gJnZhbHVlOwotCiAg
ICAgTG9jayBsb2NrOwogICAgIENvbmRpdGlvbiBjb25kaXRpb247Ci0gICAgQ29uZGl0aW9uKiBj
b25kaXRpb25QdHIgPSAmY29uZGl0aW9uOwogICAgIGxvY2subG9jaygpOwogCi0gICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBjb25kaXRpb25QdHIsIHZhbHVlUHRyXSB7CisgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBjb25kaXRpb25QdHIgPSAmY29uZGl0aW9u
LCB2YWx1ZVB0ciA9ICZ2YWx1ZV0gewogICAgICAgICB3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhl
ZERCKFtjb25kaXRpb25QdHIsIHZhbHVlUHRyXShjb25zdCBJREJWYWx1ZSYgcmVzdWx0KSB7CiAg
ICAgICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICAgICAgdmFsdWVQdHIt
PnNldEFzSXNvbGF0ZWRDb3B5KHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcAppbmRleCAwMTVlMTgzYTA1
OWU4YmJiOTRkYzQxN2NjMWJjYzcyNWFlYmMwNTAyLi43OTc1ZDk4NDUyYzZmMTY3MjhlNDNlYjlk
MTYzOWUxNzk5N2NhYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTgzLDkgKzgzLDcgQEAgdm9pZCBU
aHJlYWRlZFNjcm9sbGluZ1RyZWU6OmludmFsaWRhdGUoKQogICAgIC8vIFNpbmNlIHRoaXMgY2Fu
IHBvdGVudGlhbGx5IGJlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgc2Nyb2xsaW5nIGNvb3Jk
aW5hdG9yLAogICAgIC8vIHdlIG5lZWQgdG8gcmVsZWFzZSBpdCBvbiB0aGUgbWFpbiB0aHJlYWQg
c2luY2UgaXQgaGFzIG1lbWJlciB2YXJpYWJsZXMgKHN1Y2ggYXMgdGltZXJzKQogICAgIC8vIHRo
YXQgZXhwZWN0IHRvIGJlIGRlc3Ryb3llZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBTY3Jv
bGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLnJlbGVhc2UoKS5sZWFrUmVmKCk7Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtzY3JvbGxpbmdDb29yZGluYXRvcl0gewotICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+
ZGVyZWYoKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5h
dG9yID0gV1RGTW92ZShtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yKV0gewogICAgIH0pOwogfQogCkBA
IC0xMDMsMTAgKzEwMSw3IEBAIHZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdU
cmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBjCiAgICAgaWYgKG5vZGVJ
RCA9PSByb290Tm9kZSgpLT5zY3JvbGxpbmdOb2RlSUQoKSkKICAgICAgICAgc2V0TWFpbkZyYW1l
U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOwogCi0gICAgUmVmUHRyPEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I+IHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGlu
YXRvcjsKLSAgICBib29sIGxvY2FsSXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCA9IGlzSGFu
ZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwoKTsKLSAgICAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsb2Nh
bElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwsIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rp
b25dIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9y
ID0gbV9zY3JvbGxpbmdDb29yZGluYXRvciwgbm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgbG9jYWxJ
c0hhbmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xsID0gaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9s
bCgpLCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uXSB7CiAgICAgICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5zY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChu
b2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsb2NhbElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGws
IHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOwogICAgIH0pOwogfQpAQCAtMTE2LDggKzEx
MSw3IEBAIHZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpjdXJyZW50U25hcFBvaW50SW5kaWNl
c0RpZENoYW5nZShTY3JvbGxpbmdOb2RlSUQgbm9kCiAgICAgaWYgKCFtX3Njcm9sbGluZ0Nvb3Jk
aW5hdG9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcj4gc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yOwot
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIG5vZGVJ
RCwgaG9yaXpvbnRhbCwgdmVydGljYWxdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3Njcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvciwgbm9kZUlELCBo
b3Jpem9udGFsLCB2ZXJ0aWNhbF0gewogICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0
QWN0aXZlU2Nyb2xsU25hcEluZGljZXMobm9kZUlELCBob3Jpem9udGFsLCB2ZXJ0aWNhbCk7CiAg
ICAgfSk7CiB9CkBAIC0xMjgsOCArMTIyLDcgQEAgdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6
OmhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZSkKICAg
ICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yPiBzY3JvbGxpbmdDb29yZGluYXRvciA9IG1f
c2Nyb2xsaW5nQ29vcmRpbmF0b3I7Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzY3Jv
bGxpbmdDb29yZGluYXRvciwgcGhhc2VdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3Njcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvciwgcGhhc2VdIHsK
ICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmhhbmRsZVdoZWVsRXZlbnRQaGFzZShwaGFz
ZSk7CiAgICAgfSk7CiB9CkBAIC0xMzksOCArMTMyLDcgQEAgdm9pZCBUaHJlYWRlZFNjcm9sbGlu
Z1RyZWU6OnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzKFNjcm9sbGluZ05vZGVJRCBub2RlSUQs
IHUKICAgICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gc2Nyb2xsaW5nQ29vcmRp
bmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yOwotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIG5vZGVJRCwgaG9yaXpvbnRhbEluZGV4LCB2ZXJ0
aWNhbEluZGV4XSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzY3JvbGxpbmdDb29y
ZGluYXRvciA9IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIG5vZGVJRCwgaG9yaXpvbnRhbEluZGV4
LCB2ZXJ0aWNhbEluZGV4XSB7CiAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRBY3Rp
dmVTY3JvbGxTbmFwSW5kaWNlcyhub2RlSUQsIGhvcml6b250YWxJbmRleCwgdmVydGljYWxJbmRl
eCk7CiAgICAgfSk7CiB9CkBAIC0xNTAsOCArMTQyLDcgQEAgdm9pZCBUaHJlYWRlZFNjcm9sbGlu
Z1RyZWU6OmRlZmVyVGVzdHNGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxh
YmwKICAgICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFJlZlB0cjxBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yPiBzY3JvbGxpbmdDb29yZGluYXRv
ciA9IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3I7Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtzY3JvbGxpbmdDb29yZGluYXRvciwgaWRlbnRpZmllciwgcmVhc29uXSB7CisgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtzY3JvbGxpbmdDb29yZGluYXRvciA9IG1fc2Nyb2xsaW5nQ29v
cmRpbmF0b3IsIGlkZW50aWZpZXIsIHJlYXNvbl0gewogICAgICAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+ZGVmZXJUZXN0c0ZvclJlYXNvbihpZGVudGlmaWVyLCByZWFzb24pOwogICAgIH0pOwog
fQpAQCAtMTYxLDggKzE1Miw3IEBAIHZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpyZW1vdmVU
ZXN0RGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTCiAgICAgaWYgKCFt
X3Njcm9sbGluZ0Nvb3JkaW5hdG9yKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRy
PEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I+IHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9zY3Jv
bGxpbmdDb29yZGluYXRvcjsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLCBpZGVudGlmaWVyLCByZWFzb25dIHsKKyAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvciwg
aWRlbnRpZmllciwgcmVhc29uXSB7CiAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5yZW1v
dmVUZXN0RGVmZXJyYWxGb3JSZWFzb24oaWRlbnRpZmllciwgcmVhc29uKTsKICAgICB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
YWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCAwOWU2ZjNkYzU1NzE2ZThiMWE0NDhiM2I3OGM1
ZTA4YjNlYTJhNjRmLi5iMmI5NWVmNjQ0OWY5NGZmYjA4ZDI5ZmQ4MmRlMzZmZjNjYzQ1YmIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2Fj
aGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC04MzEsMTQgKzgzMSwxMyBAQCBGb250Q2FjaGU6
OlByZWNhY2hlVGFzayYgRm9udENhY2hlOjpwbGF0Zm9ybVByZWNhY2hlKGNvbnN0IEF0b21pY1N0
cmluZyYgZmFtaWx5LAogCiAgICAgYXV0byYgcmVzdWx0VGFzayA9ICp0YXNrOwogCi0gICAgcXVl
dWUuZGlzcGF0Y2goW3Rhc2sgPSB0YXNrLnJlbGVhc2UoKV0geworICAgIHF1ZXVlLmRpc3BhdGNo
KFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF0YXNrLT5p
c0NhbmNlbGVkKSB7CiAgICAgICAgICAgICBhdXRvIGZhbWlseSA9IHRhc2stPmZhbWlseS5pc29s
YXRlZENvcHkoKTsKICAgICAgICAgICAgIHRhc2stPnJlc3VsdCA9IGNyZWF0ZUZvbnRQbGF0Zm9y
bURhdGFUaHJlYWRTYWZlKHRhc2stPmZvbnREZXNjcmlwdGlvbiwgZmFtaWx5LCBudWxscHRyLCBu
dWxscHRyLCB0YXNrLT5pc1doaXRlbGlzdGVkLCB0YXNrLT5zaG91bGRBdXRvQWN0aXZhdGVJZk5l
ZWRlZCk7CiAgICAgICAgIH0KIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Rh
c2tdIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQcmVjYWNoZVRhc2s+IGRlbGV0ZXIo
dGFzayk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGFzayA9IFdURk1vdmUo
dGFzayldIHsKICAgICAgICAgICAgIHRhc2stPmNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUodGFz
ay0+cmVzdWx0KSwgdGFzay0+aXNDYW5jZWxlZCk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAppbmRleCA2M2M3NGU4NDMzNjRmOWJlMmQxODQ0
ZjQwNGZiNTk4NGRkMGQwNjlmLi41YThkNjZhZjAyODY3ZThkODBhZDA5YzBjNzk0ZmMyN2I4MDQ0
ZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcApAQCAtMTAxLDkgKzEwMSw5
IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5TGlua0ZpcmVkKGRvdWJs
ZSBub3dTZWNvbmRzLCBkb3VibGUgb3V0cHV0CiAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGJl
IHVzaW5nIHdlYktpdE1vbm90b25pY05vdz8KICAgICBzZXRNb25vdG9uaWNBbmltYXRpb25TdGFy
dFRpbWUod2ViS2l0TW9ub3RvbmljTm93ICsgdGltZVVudGlsT3V0cHV0KTsKIAotICAgIGF1dG8g
d2Vha1B0ciA9IG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOwogCi0gICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt3ZWFrUHRyXSB7CisgICAgLy8gRklYTUU6IElzIGl0IHJlYWxseSBv
a2F5IHRvIGNyZWF0ZSBhIHdlYWtQdHIgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCBhbmQgdGhlbiB1
c2UgaXQgb24gdGhlIG1haW4gdGhyZWFkPworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
d2Vha1B0ciA9IG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpXSB7CiAgICAgICAgIGlmIChh
dXRvKiBtb25pdG9yID0gd2Vha1B0ci5nZXQoKSkKICAgICAgICAgICAgIGhhbmRsZURpc3BsYXlS
ZWZyZXNoZWROb3RpZmljYXRpb25Pbk1haW5UaHJlYWQobW9uaXRvcik7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCmlu
ZGV4IDc3OThmOTE5ZTk0ZmViZTA5YmMwYzE4NGQ2N2Q4OWM4N2RkNzQwYzcuLjNlY2RhMmFiY2Vj
NmFkNGY0NjBjNTlmNmEwZTcxMTdiNTlhZGMxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBjcmVhdGVEZWNvZGVUYXNrKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTY2hlZHUKICAgICBhdXRvIG1lZGlhVHlwZSA9IChpc0Jhc2U2NCA/
IGhlYWRlci5zdWJzdHJpbmcoMCwgaGVhZGVyLmxlbmd0aCgpIC0gc3RybGVuKGJhc2U2NFN0cmlu
ZykpIDogaGVhZGVyKS50b1N0cmluZygpOwogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
RGVjb2RlVGFzaz4oRGVjb2RlVGFzayB7Ci0gICAgICAgIFdURk1vdmUodXJsU3RyaW5nKSwKKyAg
ICAgICAgdXJsU3RyaW5nLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBXVEZNb3ZlKGVuY29kZWRE
YXRhKSwKICAgICAgICAgaXNCYXNlNjQsCiAgICAgICAgIHNjaGVkdWxlQ29udGV4dCwKQEAgLTE3
Miw4ICsxNzIsNyBAQCB2b2lkIGRlY29kZShjb25zdCBVUkwmIHVybCwgY29uc3QgU2NoZWR1bGVD
b250ZXh0JiBzY2hlZHVsZUNvbnRleHQsIERlY29kZUNvbXBsZQogewogICAgIEFTU0VSVCh1cmwu
cHJvdG9jb2xJc0RhdGEoKSk7CiAKLSAgICBhdXRvIGRlY29kZVRhc2sgPSBjcmVhdGVEZWNvZGVU
YXNrKHVybCwgc2NoZWR1bGVDb250ZXh0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgZGVjb2RlUXVldWUoKS5kaXNwYXRjaChbZGVjb2RlVGFzayA9IFdURk1vdmUoZGVjb2RlVGFz
ayldKCkgbXV0YWJsZSB7CisgICAgZGVjb2RlUXVldWUoKS5kaXNwYXRjaChbZGVjb2RlVGFzayA9
IGNyZWF0ZURlY29kZVRhc2sodXJsLCBzY2hlZHVsZUNvbnRleHQsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGRlY29kZVRhc2stPmlzQmFzZTY0
KQogICAgICAgICAgICAgZGVjb2RlQmFzZTY0KCpkZWNvZGVUYXNrKTsKICAgICAgICAgZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNw
cAppbmRleCBjMmQ3MGQyZWNmOWZlMTFmMGY5NmM0Yjk5ODZiMGU1M2ZkZWEyNGUyLi4yOWJhNjc2
NDBhMTAzNTM4MjQ2YTUwODc5Yzk3NWJlYjc5NGU3ODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApAQCAtMTk0LDQyICsxOTQs
MjIgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmNyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29u
bmVjdGlvbigpCiAKIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgdWludDY0
X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewotICAgICAg
ICBleHBsaWNpdCBDYWxsYmFja0FnZ3JlZ2F0b3Ioc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJzaXRl
RGF0YSk+IGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICAgICAgOiBtX2NvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICB7Ci0gICAgICAgIH0KLQot
ICAgICAgICB+Q2FsbGJhY2tBZ2dyZWdhdG9yKCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgICAgICAgICBhdXRvIHdl
YnNpdGVEYXRhID0gV1RGTW92ZShtX3dlYnNpdGVEYXRhKTsKLQotICAgICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciwgd2Vic2l0ZURhdGFdIHsKLSAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3ZWJzaXRlRGF0YSk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoV2Vic2l0ZURh
dGEpPiBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAgICAgICBXZWJzaXRlRGF0YSBtX3dlYnNpdGVE
YXRhOwotICAgIH07Ci0KLSAgICBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBhZG9wdFJlZihuZXcgQ2FsbGJhY2tBZ2dyZWdhdG9yKFt0aGlzLCBjYWxsYmFj
a0lEXShXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkgeworICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBbdGhpcywgY2FsbGJhY2tJRF0oY29uc3QgV2Vic2l0ZURhdGEmIHdlYnNpdGVEYXRhKSB7
CiAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkRhdGFi
YXNlUHJvY2Vzc1Byb3h5OjpEaWRGZXRjaFdlYnNpdGVEYXRhKGNhbGxiYWNrSUQsIHdlYnNpdGVE
YXRhKSwgMCk7Ci0gICAgfSkpOworICAgIH07CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Oklu
ZGV4ZWREQkRhdGFiYXNlcykpIHsKICAgICAgICAgLy8gRklYTUU6IFBpY2sgdGhlIHJpZ2h0IGRh
dGFiYXNlIHN0b3JlIGJhc2VkIG9uIHRoZSBzZXNzaW9uIElELgotICAgICAgICBwb3N0RGF0YWJh
c2VUYXNrKENyb3NzVGhyZWFkVGFzayhbY2FsbGJhY2tBZ2dyZWdhdG9yLCB3ZWJzaXRlRGF0YVR5
cGVzLCB0aGlzXSB7Ci0KKyAgICAgICAgcG9zdERhdGFiYXNlVGFzayhDcm9zc1RocmVhZFRhc2so
W3RoaXMsIHdlYnNpdGVEYXRhVHlwZXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4gc2VjdXJpdHlPcmlnaW5zID0gaW5kZXhlZERhdGFiYXNlT3JpZ2lucygp
OwogCi0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVn
YXRvciwgc2VjdXJpdHlPcmlnaW5zXSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNl
Y3VyaXR5T3JpZ2lucyA9IFdURk1vdmUoc2VjdXJpdHlPcmlnaW5zKV0geworICAgICAgICAgICAg
ICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogICAgICAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCi0gICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJz
aXRlRGF0YTo6RW50cnkgeyBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVk
REJEYXRhYmFzZXMsIDAgfSk7CisgICAgICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJp
ZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IHNlY3VyaXR5T3JpZ2luLCBXZWJzaXRlRGF0
YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcywgMCB9KTsKKworICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHdlYnNpdGVEYXRhKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KSk7
CiAgICAgfQpAQCAtMjM4LDU3ICsyMTgsMjUgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmZldGNo
V2Vic2l0ZURhdGEoU2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWIKIAog
dm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCB1aW50NjRfdCBjYWxs
YmFja0lEKQogewotICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7Ci0gICAgICAgIGV4cGxp
Y2l0IENhbGxiYWNrQWdncmVnYXRvcihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25I
YW5kbGVyKQotICAgICAgICAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB+Q2FsbGJhY2tB
Z2dyZWdhdG9yKCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKLQotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUobV9j
b21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpmdW5jdGlvbjx2
b2lkICgpPiBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAgIH07Ci0KLSAgICBSZWZQdHI8Q2FsbGJh
Y2tBZ2dyZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZihuZXcgQ2FsbGJhY2tB
Z2dyZWdhdG9yKFt0aGlzLCBjYWxsYmFja0lEXSgpIHsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5k
bGVyID0gW3RoaXMsIGNhbGxiYWNrSURdKCkgewogICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6RGlkRGVsZXRlV2Vi
c2l0ZURhdGEoY2FsbGJhY2tJRCksIDApOwotICAgIH0pKTsKKyAgICB9OwogCiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKQotICAgICAgICBpZGJTZXJ2ZXIoKS5j
bG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZpZWRTaW5jZSwgW2NhbGxi
YWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICAgICAgaWRiU2VydmVyKCkuY2xvc2VBbmREZWxldGVE
YXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICNlbmRpZgogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4m
IHNlY3VyaXR5T3JpZ2luRGF0YXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgc3RydWN0
IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxD
YWxsYmFja0FnZ3JlZ2F0b3I+IHsKLSAgICAgICAgZXhwbGljaXQgQ2FsbGJhY2tBZ2dyZWdhdG9y
KHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgICAgICA6
IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAg
IHsKLSAgICAgICAgfQotCi0gICAgICAgIH5DYWxsYmFja0FnZ3JlZ2F0b3IoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fY29tcGxldGlvbkhh
bmRsZXI7Ci0gICAgfTsKLQotICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNr
QWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoW3RoaXMsIGNhbGxi
YWNrSURdKCkgeworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgY2FsbGJhY2tJ
RF0oKSB7CiAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpEaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoY2Fs
bGJhY2tJRCksIDApOwotICAgIH0pKTsKKyAgICB9OwogCiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpJbmRleGVkREJEYXRhYmFzZXMpKQotICAgICAgICBpZGJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0
ZURhdGFiYXNlc0Zvck9yaWdpbnMoc2VjdXJpdHlPcmlnaW5EYXRhcywgW2NhbGxiYWNrQWdncmVn
YXRvcl0geyB9KTsKKyAgICAgICAgaWRiU2VydmVyKCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNG
b3JPcmlnaW5zKHNlY3VyaXR5T3JpZ2luRGF0YXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKaW5kZXggZjBjZmI1YTczOTJiNDFlNGVkMTEzNDg0NzJkZjZiMWQwYTcw
NTNlNi4uN2UxOTJiMTA2NjJhMGE3MDk4MGRmMjA2MWNlZjJkZThjM2Y3YjdjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzI2
LDcgKzMyNiw3IEBAIHN0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhTZXNzaW9uSUQg
c2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjCiAKICAgICAgICAgICAgICAgICBk
ZWxldGUgb3JpZ2luc0FuZFNpemVzOwogCi0gICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciwgZW50cmllc10geworICAgICAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIsIGVudHJpZXMgPSBX
VEZNb3ZlKGVudHJpZXMpXSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGVudHJpZXMpOwogICAgICAgICAgICAgICAgIH0pOwogCkBAIC0zNTAsNyArMzUwLDcgQEAgc3Rh
dGljIHZvaWQgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YUZldGMKICAgICAgICAgZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6
OkVudHJ5IHsgV1RGTW92ZShvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwgMCB9
KTsKICNlbmRpZgogCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFu
ZGxlciwgZW50cmllc10geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlv
bkhhbmRsZXIsIGVudHJpZXMgPSBXVEZNb3ZlKGVudHJpZXMpXSB7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGVudHJpZXMpOwogICAgIH0pOwogfQpAQCAtMzY3LDEwICszNjcsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9w
dGlvblNldDxXZWJzaXRlRGF0YQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgICAgIGF1dG8gd2Vic2l0ZURhdGEg
PSBXVEZNb3ZlKG1fd2Vic2l0ZURhdGEpOwotCi0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCB3ZWJzaXRlRGF0YV0geworICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9j
b21wbGV0aW9uSGFuZGxlciksIHdlYnNpdGVEYXRhID0gV1RGTW92ZShtX3dlYnNpdGVEYXRhKV0g
ewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYnNpdGVEYXRhKTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDJiZjAzZWVj
NTJlZWVkZTE5OWQzNWYyMTdmZjU0NTc3NGI0MDc3ODkuLmNmZDM4NWM5ZGM4NDY3NDQ1ODE2Mzlh
YjllMDgzYzAzZTc1MGJjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC01NDUsNiArNTQ1
LDggQEAgdm9pZCBTdG9yYWdlOjpyZW1vdmUoY29uc3QgS2V5JiBrZXkpCiAKICAgICByZW1vdmVG
cm9tUGVuZGluZ1dyaXRlT3BlcmF0aW9ucyhrZXkpOwogCisgICAgLy8gRklYTUU6IEtleSBjb250
YWlucyBzdHJpbmdzLCBhbmQgd2UncmUgbm90IG1ha2luZyBpc29sYXRlZCBjb3BpZXMgb2YgdGhl
bSBoZXJlLgorICAgIC8vIElzIHRoaXMgb2theSBmb3Igc29tZSByZWFzb24/CiAgICAgc2VyaWFs
QmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpcywga2V5XSB7CiAgICAgICAgIFdlYkNv
cmU6OmRlbGV0ZUZpbGUocmVjb3JkUGF0aEZvcktleShrZXkpKTsKICAgICAgICAgbV9ibG9iU3Rv
cmFnZS5yZW1vdmUoYmxvYlBhdGhGb3JLZXkoa2V5KSk7CkBAIC02NjMsNyArNjY1LDEwIEBAIHRl
bXBsYXRlIDxjbGFzcyBUPiBib29sIHJldHJpZXZlRnJvbU1lbW9yeShjb25zdCBUJiBvcGVyYXRp
b25zLCBjb25zdCBLZXkmIGtleSwKICAgICAgICAgaWYgKG9wZXJhdGlvbi0+cmVjb3JkLmtleSA9
PSBrZXkpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQ
cm9jZXNzKSBmb3VuZCB3cml0ZSBvcGVyYXRpb24gaW4gcHJvZ3Jlc3MiKTsKICAgICAgICAgICAg
IGF1dG8gcmVjb3JkID0gb3BlcmF0aW9uLT5yZWNvcmQ7Ci0gICAgICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3JlY29yZCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKworICAgICAgICAg
ICAgLy8gRklYTUU6IFJlY29yZCBpcyBhIHJlYXNvbmFibHkgY29tcGxleCB0eXBlIHdpdGggbm9u
LXRocmVhZHNhZmUgUmVmQ291bnRlZCBvYmplY3RzLAorICAgICAgICAgICAgLy8geWV0IHdlJ3Jl
IHBhc3NpbmcgYSBub24taXNvbGF0ZWQgY29weSB0byBhIGRpZmZlcmVudCB0aHJlYWQuCisgICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JlY29yZCwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZTo6UmVjb3JkPihyZWNvcmQpKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggMmYyNmM2YTNkNWIwNTdiYjgyZmU4
ZDg1ZGQ3ZDE0YTE2NTI2YzJhOS4uZjFiZDU1MWVlYWJhZjMxYmExN2Y3NTE0OWFlNTZjMjUxYmE1
ZDAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAt
MTM2LDkgKzEzNiw4IEBAIGJvb2wgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6cHJvY2Vz
c0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uCiAgICAgICAgIHN0ZDo6bG9j
a19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwogICAgICAgICAKICAgICAgICAgaWYgKG1fZGlk
U2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29ya1NldC5hZGQoJmNvbm5lY3Rpb24pLmlzTmV3RW50
cnkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0ZWRDb25uZWN0aW9u
KCZjb25uZWN0aW9uKTsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkQ29ubmVjdGlvbl0gewotICAgICAgICAgICAgICAgIGRpc3BhdGNoTWVzc2Fn
ZUFuZFJlc2V0RGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzRm9yQ29ubmVjdGlvbigqcHJvdGVj
dGVkQ29ubmVjdGlvbik7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZENvbm5lY3Rpb24gPSBSZWY8Q29ubmVjdGlvbj4oY29ubmVjdGlvbildKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICAgICAgZGlzcGF0Y2hNZXNzYWdlQW5kUmVzZXREaWRTY2hl
ZHVsZURpc3BhdGNoTWVzc2FnZXNGb3JDb25uZWN0aW9uKHByb3RlY3RlZENvbm5lY3Rpb24uZ2V0
KCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIApAQCAtNjQ3LDEzICs2NDYsMTMgQEAg
dm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxN
ZXNzYWdlRGVjb2Rlcj4gbWVzc2FnZSkKIAogICAgIGlmICghbV93b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXJzLmlzVmFsaWRLZXkobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkgewogICAg
ICAgICBSZWZQdHI8Q29ubmVjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICAgICAgU3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUgPSBtZXNzYWdlLT5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCk7Ci0gICAgICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRNZXNzYWdlUmVjZWl2ZXJO
YW1lKG1lc3NhZ2VSZWNlaXZlck5hbWUuaXNFbXB0eSgpID8gIjx1bmtub3duIG1lc3NhZ2UgcmVj
ZWl2ZXI+IiA6IFN0cmluZyhtZXNzYWdlUmVjZWl2ZXJOYW1lLmRhdGEoKSwgbWVzc2FnZVJlY2Vp
dmVyTmFtZS5zaXplKCkpKTsKLSAgICAgICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lID0g
bWVzc2FnZS0+bWVzc2FnZU5hbWUoKTsKLSAgICAgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZE1l
c3NhZ2VOYW1lKG1lc3NhZ2VOYW1lLmlzRW1wdHkoKSA/ICI8dW5rbm93biBtZXNzYWdlPiIgOiBT
dHJpbmcobWVzc2FnZU5hbWUuZGF0YSgpLCBtZXNzYWdlTmFtZS5zaXplKCkpKTsKKyAgICAgICAg
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWVSZWZlcmVuY2UgPSBtZXNzYWdlLT5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCk7CisgICAgICAgIFN0cmluZyBtZXNzYWdlUmVjZWl2ZXJOYW1l
KG1lc3NhZ2VSZWNlaXZlck5hbWVSZWZlcmVuY2UuaXNFbXB0eSgpID8gIjx1bmtub3duIG1lc3Nh
Z2UgcmVjZWl2ZXI+IiA6IFN0cmluZyhtZXNzYWdlUmVjZWl2ZXJOYW1lUmVmZXJlbmNlLmRhdGEo
KSwgbWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVyZW5jZS5zaXplKCkpKTsKKyAgICAgICAgU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VOYW1lUmVmZXJlbmNlID0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKTsK
KyAgICAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1lUmVmZXJlbmNlLmlzRW1wdHko
KSA/ICI8dW5rbm93biBtZXNzYWdlPiIgOiBTdHJpbmcobWVzc2FnZU5hbWVSZWZlcmVuY2UuZGF0
YSgpLCBtZXNzYWdlTmFtZVJlZmVyZW5jZS5zaXplKCkpKTsKIAotICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMsIGNhcHR1cmVkTWVzc2FnZVJlY2VpdmVyTmFt
ZSwgY2FwdHVyZWRNZXNzYWdlTmFtZV0gewotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlz
cGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY2FwdHVyZWRNZXNzYWdlUmVjZWl2ZXJOYW1l
LnN0cmluZygpLnV0ZjgoKSwgY2FwdHVyZWRNZXNzYWdlTmFtZS5zdHJpbmcoKS51dGY4KCkpOwor
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8Q29u
bmVjdGlvbj4oKnRoaXMpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lID0gV1RGTW92ZShtZXNzYWdlUmVj
ZWl2ZXJOYW1lKSwgbWVzc2FnZU5hbWUgPSBXVEZNb3ZlKG1lc3NhZ2VOYW1lKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUudXRmOCgpLCBtZXNzYWdlTmFtZS51dGY4KCkpOwog
ICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc4MiwyMCArNzgxLDE5IEBA
IHZvaWQgQ29ubmVjdGlvbjo6Y29ubmVjdGlvbkRpZENsb3NlKCkKICAgICBpZiAobV9kaWRDbG9z
ZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKQogICAgICAgICBtX2RpZENsb3NlT25Db25u
ZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2sodGhpcyk7CiAKLSAgICBSZWZQdHI8Q29ubmVjdGlvbj4g
Y29ubmVjdGlvbih0aGlzKTsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Nvbm5lY3Rp
b25dIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8
Q29ubmVjdGlvbj4oKnRoaXMpXSgpIG11dGFibGUgewogICAgICAgICAvLyBJZiB0aGUgY29ubmVj
dGlvbiBoYXMgYmVlbiBleHBsaWNpdGx5IGludmFsaWRhdGVkIGJlZm9yZSBkaXNwYXRjaENvbm5l
Y3Rpb25EaWRDbG9zZSB3YXMgY2FsbGVkLAogICAgICAgICAvLyB0aGVuIHRoZSBjbGllbnQgd2ls
bCBiZSBudWxsIGhlcmUuCi0gICAgICAgIGlmICghY29ubmVjdGlvbi0+bV9jbGllbnQpCisgICAg
ICAgIGlmICghcHJvdGVjdGVkVGhpcy0+bV9jbGllbnQpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgLy8gQmVjYXVzZSB3ZSBkZWZpbmUgYSBjb25uZWN0aW9uIGFzIGJlaW5nICJ2YWxp
ZCIgYmFzZWQgb24gd2hldGVyIGl0IGhhcyBhIG51bGwgY2xpZW50LCB3ZSBudWxsIG91dAogICAg
ICAgICAvLyB0aGUgY2xpZW50IGJlZm9yZSBjYWxsaW5nIGRpZENsb3NlIGhlcmUuIE90aGVyd2lz
ZSwgc2VuZFN5bmMgd2lsbCB0cnkgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhlIGNvbm5lY3Rpb24g
YW5kCiAgICAgICAgIC8vIHdpbGwgdGhlbiB3YWl0IGluZGVmaW5pdGVseSBmb3IgYSByZXBseS4K
LSAgICAgICAgQ2xpZW50KiBjbGllbnQgPSBjb25uZWN0aW9uLT5tX2NsaWVudDsKLSAgICAgICAg
Y29ubmVjdGlvbi0+bV9jbGllbnQgPSBudWxscHRyOworICAgICAgICBDbGllbnQqIGNsaWVudCA9
IHByb3RlY3RlZFRoaXMtPm1fY2xpZW50OworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2NsaWVu
dCA9IG51bGxwdHI7CiAKLSAgICAgICAgY2xpZW50LT5kaWRDbG9zZSgqY29ubmVjdGlvbik7Cisg
ICAgICAgIGNsaWVudC0+ZGlkQ2xvc2UocHJvdGVjdGVkVGhpcy5nZXQoKSk7CiAgICAgfSk7CiB9
CiAKQEAgLTg4OCw4ICs4ODYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmVucXVldWVJbmNvbWluZ01l
c3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBpbmNvbWluZwogICAgICAgICBt
X2luY29taW5nTWVzc2FnZXMuYXBwZW5kKFdURk1vdmUoaW5jb21pbmdNZXNzYWdlKSk7CiAgICAg
fQogCi0gICAgUmVmUHRyPENvbm5lY3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmPENvbm5lY3Rpb24+KCp0aGlzKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hPbmVNZXNzYWdlKCk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvbWFjL0Nv
bm5lY3Rpb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rp
b25NYWMubW0KaW5kZXggODYyNmJmMjljYjliNGZiMmY4ZGJhNTk3MjczZDU4ODlkNDM5ZGFhNC4u
NWZlMGJmYmYwY2E4N2I4NTk3M2Q4YjBmY2YzMjAyMjQzOThlYjI5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQpAQCAtNTE4LDEzICs1
MTgsMTMgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbGVyKCkKICAg
ICBpZiAoZGVjb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXIt
Pm1lc3NhZ2VOYW1lKCkgPT0gIlNldEV4Y2VwdGlvblBvcnQiKSB7CiAgICAgICAgIGlmIChtX2lz
U2VydmVyKSB7CiAgICAgICAgICAgICAvLyBTZXJ2ZXIgY29ubmVjdGlvbnMgYXJlbid0IHN1cHBv
c2VkIHRvIGhhdmUgdGhlaXIgZXhjZXB0aW9uIHBvcnRzIG92ZXJyaWRlbi4gVHJlYXQgdGhpcyBh
cyBhbiBpbnZhbGlkIG1lc3NhZ2UuCi0gICAgICAgICAgICBSZWZQdHI8Q29ubmVjdGlvbj4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKLSAgICAgICAgICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lID0gZGVjb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpOwotICAgICAgICAgICAg
U3RyaW5nQ2FwdHVyZSBjYXB0dXJlZE1lc3NhZ2VSZWNlaXZlck5hbWUoU3RyaW5nKG1lc3NhZ2VS
ZWNlaXZlck5hbWUuZGF0YSgpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnNpemUoKSkpOwotICAgICAg
ICAgICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lID0gZGVjb2Rlci0+bWVzc2FnZU5hbWUo
KTsKLSAgICAgICAgICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRNZXNzYWdlTmFtZShTdHJpbmco
bWVzc2FnZU5hbWUuZGF0YSgpLCBtZXNzYWdlTmFtZS5zaXplKCkpKTsKLSAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcywgY2FwdHVyZWRNZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBjYXB0dXJlZE1lc3NhZ2VOYW1lXSB7Ci0gICAgICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoY2FwdHVyZWRNZXNzYWdl
UmVjZWl2ZXJOYW1lLnN0cmluZygpLnV0ZjgoKSwgY2FwdHVyZWRNZXNzYWdlTmFtZS5zdHJpbmco
KS51dGY4KCkpOworICAgICAgICAgICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWVSZWZlcmVuY2UgPSBkZWNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCk7CisgICAgICAgICAg
ICBTdHJpbmcgbWVzc2FnZVJlY2VpdmVyTmFtZShTdHJpbmcobWVzc2FnZVJlY2VpdmVyTmFtZVJl
ZmVyZW5jZS5kYXRhKCksIG1lc3NhZ2VSZWNlaXZlck5hbWVSZWZlcmVuY2Uuc2l6ZSgpKSk7Cisg
ICAgICAgICAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWVSZWZlcmVuY2UgPSBkZWNvZGVy
LT5tZXNzYWdlTmFtZSgpOworICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lKFN0cmluZyht
ZXNzYWdlTmFtZVJlZmVyZW5jZS5kYXRhKCksIG1lc3NhZ2VOYW1lUmVmZXJlbmNlLnNpemUoKSkp
OworCisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBSZWY8Q29ubmVjdGlvbj4oKnRoaXMpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lID0gV1RGTW92ZSht
ZXNzYWdlUmVjZWl2ZXJOYW1lKSwgbWVzc2FnZU5hbWUgPSBXVEZNb3ZlKG1lc3NhZ2VOYW1lKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaERpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShtZXNzYWdlUmVjZWl2ZXJOYW1lLnV0ZjgoKSwgbWVzc2FnZU5h
bWUudXRmOCgpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VT
aGltLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbQpp
bmRleCA3MDExNzYzYzM4NTRiZjdiZjQwNjUyODA2MjBiNDY4OTEwYWIwNGNkLi4wOWNmMWNjYzk2
NTM0Nzg5YzM1OTZiOGEwNjFjNWU1ZWMxYjcxMTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW0KQEAgLTEyMywxMCArMTIzLDkgQEAgLSAodm9p
ZClfZ2V0Q29va2llSGVhZGVyc0ZvclRhc2s6KE5TVVJMU2Vzc2lvblRhc2sqKXRhc2sgY29tcGxl
dGlvbkhhbmRsZXI6KENvbXAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0
cjxOU1VSTFNlc3Npb25UYXNrPiBzdHJvbmdUYXNrID0gdGFzazsKICAgICBDb21wbGV0aW9uSGFu
ZGxlckJsb2NrIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IFtjb21wbGV0aW9uSGFuZGxlciBjb3B5
XTsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0cm9uZ1Rhc2ssIGNvbXBsZXRpb25I
YW5kbGVyQ29weV0gewotICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBoZWFkZXJz
ID0gYWRvcHRDRihXZWJLaXQ6OndlYktpdENvb2tpZVN0b3JhZ2VDb3B5UmVxdWVzdEhlYWRlckZp
ZWxkc0ZvclVSTChudWxscHRyLCAoQ0ZVUkxSZWYpW1tzdHJvbmdUYXNrIGN1cnJlbnRSZXF1ZXN0
XSBVUkxdKSk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0YXNrID0gUmV0YWluUHRy
PE5TVVJMU2Vzc2lvblRhc2s+KHRhc2spLCBjb21wbGV0aW9uSGFuZGxlckNvcHldIHsKKyAgICAg
ICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVycyA9IGFkb3B0Q0YoV2ViS2l0Ojp3
ZWJLaXRDb29raWVTdG9yYWdlQ29weVJlcXVlc3RIZWFkZXJGaWVsZHNGb3JVUkwobnVsbHB0ciwg
KENGVVJMUmVmKVtbdGFzayBjdXJyZW50UmVxdWVzdF0gVVJMXSkpOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlckNvcHkoaGVhZGVycy5nZXQoKSk7CiAgICAgICAgIFtjb21wbGV0aW9uSGFuZGxl
ckNvcHkgcmVsZWFzZV07CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAppbmRleCA1
ZjI2MjA0NTlmM2VhNWYwZjkzNGM1NzYwNjc3MzgzOTgyYTYwYTZlLi4wODI0ZTEyYWEzY2RhNTE2
MDFhZjVmZDlmOTEwYzA5ZWIzYjMyOGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAKQEAg
LTMwNiwzMSArMzA2LDI3IEBAIHN0YXRpYyBSZWZQdHI8QVBJOjpVc2VyQ29udGVudEV4dGVuc2lv
bj4gY3JlYXRlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllCiAKIHZvaWQgVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZTo6bG9va3VwQ29udGVudEV4dGVuc2lvbihjb25zdCBXVEY6OlN0
cmluZyYgaWRlbnRpZmllciwgc3RkOjpmdW5jdGlvbjx2b2lkKFJlZlB0cjxBUEk6OlVzZXJDb250
ZW50RXh0ZW5zaW9uPiwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgUmVmUHRyPFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU+IHNlbGYodGhpcyk7Ci0gICAgU3Ry
aW5nQ2FwdHVyZSBpZGVudGlmaWVyQ2FwdHVyZShpZGVudGlmaWVyKTsKLSAgICBTdHJpbmdDYXB0
dXJlIHBhdGhDYXB0dXJlKG1fc3RvcmVQYXRoKTsKLQotICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRj
aChbc2VsZiwgaWRlbnRpZmllckNhcHR1cmUsIHBhdGhDYXB0dXJlLCBjb21wbGV0aW9uSGFuZGxl
cl0gewotICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgocGF0aENhcHR1cmUuc3Ry
aW5nKCksIGlkZW50aWZpZXJDYXB0dXJlLnN0cmluZygpKTsKKyAgICBtX3JlYWRRdWV1ZS0+ZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8T2JqZWN0PigqdGhpcyksIGlkZW50aWZpZXIgPSBp
ZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRl
ZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0
aCwgaWRlbnRpZmllcik7CiAgICAgICAgIAogICAgICAgICBDb250ZW50RXh0ZW5zaW9uTWV0YURh
dGEgbWV0YURhdGE7CiAgICAgICAgIERhdGEgZmlsZURhdGE7CiAgICAgICAgIGlmICghb3BlbkFu
ZE1hcENvbnRlbnRFeHRlbnNpb24ocGF0aCwgbWV0YURhdGEsIGZpbGVEYXRhKSkgewotICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBjb21wbGV0aW9uSGFuZGxlcl0g
eworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxw
dHIsIEVycm9yOjpMb29rdXBGYWlsZWQpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtZXRhRGF0YS52ZXJzaW9u
ICE9IFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OkN1cnJlbnRDb250ZW50RXh0ZW5zaW9uRmls
ZVZlcnNpb24pIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwg
Y29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihudWxscHRyLCBFcnJvcjo6VmVyc2lvbk1pc21hdGNoKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIGlkZW50aWZpZXJDYXB0dXJlLCBmaWxl
RGF0YSwgbWV0YURhdGEsIGNvbXBsZXRpb25IYW5kbGVyXSB7Ci0gICAgICAgICAgICBSZWZQdHI8
QVBJOjpVc2VyQ29udGVudEV4dGVuc2lvbj4gdXNlckNvbnRlbnRFeHRlbnNpb24gPSBjcmVhdGVF
eHRlbnNpb24oaWRlbnRpZmllckNhcHR1cmUuc3RyaW5nKCksIG1ldGFEYXRhLCBmaWxlRGF0YSk7
CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpLCBmaWxl
RGF0YSA9IFdURk1vdmUoZmlsZURhdGEpLCBtZXRhRGF0YSA9IFdURk1vdmUobWV0YURhdGEpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAg
ICAgICBSZWZQdHI8QVBJOjpVc2VyQ29udGVudEV4dGVuc2lvbj4gdXNlckNvbnRlbnRFeHRlbnNp
b24gPSBjcmVhdGVFeHRlbnNpb24oaWRlbnRpZmllciwgbWV0YURhdGEsIGZpbGVEYXRhKTsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHVzZXJDb250ZW50RXh0ZW5zaW9uLCB7IH0pOwog
ICAgICAgICB9KTsKICAgICB9KTsKQEAgLTMzOCwyNiArMzM0LDIxIEBAIHZvaWQgVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZTo6bG9va3VwQ29udGVudEV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmlu
ZyYgaWRlbnRpCiAKIHZvaWQgVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZTo6Y29tcGlsZUNvbnRl
bnRFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdURjo6U3RyaW5nJiYg
anNvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKFJlZlB0cjxBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9u
Piwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUmVmUHRyPFVz
ZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU+IHNlbGYodGhpcyk7Ci0gICAgU3RyaW5nQ2FwdHVyZSBp
ZGVudGlmaWVyQ2FwdHVyZShpZGVudGlmaWVyKTsKLSAgICBTdHJpbmdDYXB0dXJlIGpzb25DYXB0
dXJlKFdURk1vdmUoanNvbikpOwotICAgIFN0cmluZ0NhcHR1cmUgcGF0aENhcHR1cmUobV9zdG9y
ZVBhdGgpOwotCi0gICAgbV9jb21waWxlUXVldWUtPmRpc3BhdGNoKFtzZWxmLCBpZGVudGlmaWVy
Q2FwdHVyZSwganNvbkNhcHR1cmUsIHBhdGhDYXB0dXJlLCBjb21wbGV0aW9uSGFuZGxlcl0gKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChwYXRoQ2FwdHVy
ZS5zdHJpbmcoKSwgaWRlbnRpZmllckNhcHR1cmUuc3RyaW5nKCkpOworICAgIG1fY29tcGlsZVF1
ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZjxPYmplY3Q+KCp0aGlzKSwgaWRlbnRp
ZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGpzb24gPSBqc29uLmlzb2xhdGVkQ29w
eSgpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
IGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIpOwogCiAg
ICAgICAgIENvbnRlbnRFeHRlbnNpb25NZXRhRGF0YSBtZXRhRGF0YTsKICAgICAgICAgRGF0YSBm
aWxlRGF0YTsKLSAgICAgICAgYXV0byBlcnJvciA9IGNvbXBpbGVkVG9GaWxlKGpzb25DYXB0dXJl
LnJlbGVhc2VTdHJpbmcoKSwgcGF0aCwgbWV0YURhdGEsIGZpbGVEYXRhKTsKKyAgICAgICAgYXV0
byBlcnJvciA9IGNvbXBpbGVkVG9GaWxlKFdURk1vdmUoanNvbiksIHBhdGgsIG1ldGFEYXRhLCBm
aWxlRGF0YSk7CiAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtzZWxmLCBlcnJvciwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIGVycm9yID0gV1RGTW92ZShlcnJvciksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihudWxscHRyLCBlcnJvcik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2Vs
ZiwgaWRlbnRpZmllckNhcHR1cmUsIGZpbGVEYXRhLCBtZXRhRGF0YSwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKLSAgICAgICAgICAgIFJlZlB0cjxBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9uPiB1c2Vy
Q29udGVudEV4dGVuc2lvbiA9IGNyZWF0ZUV4dGVuc2lvbihpZGVudGlmaWVyQ2FwdHVyZS5zdHJp
bmcoKSwgbWV0YURhdGEsIGZpbGVEYXRhKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgaWRlbnRpZmllciA9
IFdURk1vdmUoaWRlbnRpZmllciksIGZpbGVEYXRhID0gV1RGTW92ZShmaWxlRGF0YSksIG1ldGFE
YXRhID0gV1RGTW92ZShtZXRhRGF0YSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgICAgIFJlZlB0cjxBUEk6OlVzZXJDb250ZW50RXh0
ZW5zaW9uPiB1c2VyQ29udGVudEV4dGVuc2lvbiA9IGNyZWF0ZUV4dGVuc2lvbihpZGVudGlmaWVy
LCBtZXRhRGF0YSwgZmlsZURhdGEpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodXNl
ckNvbnRlbnRFeHRlbnNpb24sIHsgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtMzY1LDIx
ICszNTYsMTcgQEAgdm9pZCBVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlOjpjb21waWxlQ29udGVu
dEV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnQKIAogdm9pZCBVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlOjpyZW1vdmVDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBp
ZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgUmVmUHRyPFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU+IHNlbGYo
dGhpcyk7Ci0gICAgU3RyaW5nQ2FwdHVyZSBpZGVudGlmaWVyQ2FwdHVyZShpZGVudGlmaWVyKTsK
LSAgICBTdHJpbmdDYXB0dXJlIHBhdGhDYXB0dXJlKG1fc3RvcmVQYXRoKTsKLQotICAgIG1fcmVt
b3ZlUXVldWUtPmRpc3BhdGNoKFtzZWxmLCBpZGVudGlmaWVyQ2FwdHVyZSwgcGF0aENhcHR1cmUs
IGNvbXBsZXRpb25IYW5kbGVyXSB7Ci0gICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0
aChwYXRoQ2FwdHVyZS5zdHJpbmcoKSwgaWRlbnRpZmllckNhcHR1cmUuc3RyaW5nKCkpOworICAg
IG1fcmVtb3ZlUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmPE9iamVjdD4oKnRo
aXMpLCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0g
bV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0
cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIpOwogCiAgICAgICAgIGlmICghV2ViQ29y
ZTo6ZGVsZXRlRmlsZShwYXRoKSkgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtzZWxmLCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEVycm9yOjpSZW1vdmVGYWlsZWQpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIH0pOwogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NM
YXVuY2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xh
dW5jaGVyLmNwcAppbmRleCBkYTJiODBlNjRhNGI2ODg5OTNjYWZmYTVlMGUxYmY5NjFlOWUyYjQx
Li5hOTAzZGI3NTVhYmRhZjhmMDhiYTY1ZmE0YzQxOWVmMGU5MGI5YTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcApA
QCAtNDUsOCArNDUsNyBAQCBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NMYXVuY2hlcihDbGllbnQq
IGNsaWVudCwgY29uc3QgTGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aQogewogICAgIG1faXNMYXVu
Y2hpbmcgPSB0cnVlOwogCi0gICAgUmVmUHRyPFByb2Nlc3NMYXVuY2hlcj4gcHJvY2Vzc0xhdW5j
aGVyKHRoaXMpOwotICAgIHByb2Nlc3NMYXVuY2hlcldvcmtRdWV1ZSgpLmRpc3BhdGNoKFtwcm9j
ZXNzTGF1bmNoZXJdIHsKKyAgICBwcm9jZXNzTGF1bmNoZXJXb3JrUXVldWUoKS5kaXNwYXRjaChb
cHJvY2Vzc0xhdW5jaGVyID0gUmVmPFByb2Nlc3NMYXVuY2hlcj4oKnRoaXMpXSgpIG11dGFibGUg
ewogICAgICAgICBwcm9jZXNzTGF1bmNoZXItPmxhdW5jaFByb2Nlc3MoKTsKICAgICB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vz
c0xhdW5jaGVyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Q
cm9jZXNzTGF1bmNoZXJNYWMubW0KaW5kZXggODNkMDU5NDgyZDQ1NGU4NTliYTU2ZjI0YWYxOTA1
ODJhM2E2Y2NmNC4uNDllZGRiZmI4MjlhMDRmM2M0OTdlMTYxNTYxNGFlNmUxNmU3NmRiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1
bmNoZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Q
cm9jZXNzTGF1bmNoZXJNYWMubW0KQEAgLTE4MCw5ICsxODAsOCBAQCBzdGF0aWMgdm9pZCBjb25u
ZWN0VG9TZXJ2aWNlKGNvbnN0IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNo
T3B0aW9ucwogICAgICAgICAgICAgLy8gQW5kIHRoZSByZWNlaXZlIHJpZ2h0LgogICAgICAgICAg
ICAgbWFjaF9wb3J0X21vZF9yZWZzKG1hY2hfdGFza19zZWxmKCksIGxpc3RlbmluZ1BvcnQsIE1B
Q0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAtMSk7CiAKLSAgICAgICAgICAgIFJlZlB0cjxQcm9jZXNz
TGF1bmNoZXI+IHByb3RlY3Rvcih0aGF0KTsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbcHJvdGVjdG9yLCBkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb25dIHsK
LSAgICAgICAgICAgICAgICAoKnByb3RlY3Rvci4qZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1
bmN0aW9uKSgwLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoYXQgPSBSZWZQdHI8UHJvY2Vzc0xh
dW5jaGVyPih0aGF0KSwgZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uXSgpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgICgqcHJvdGVjdGVkVGhhdC4qZGlkRmluaXNoTGF1bmNoaW5n
UHJvY2Vzc0Z1bmN0aW9uKSgwLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoKSk7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09
IFhQQ19UWVBFX0RJQ1RJT05BUlkpOwpAQCAtMTkyLDkgKzE5MSw4IEBAIHN0YXRpYyB2b2lkIGNv
bm5lY3RUb1NlcnZpY2UoY29uc3QgUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVu
Y2hPcHRpb25zCiAgICAgICAgICAgICBwaWRfdCBwcm9jZXNzSWRlbnRpZmllciA9IHhwY19jb25u
ZWN0aW9uX2dldF9waWQoY29ubmVjdGlvbi5nZXQoKSk7CiAKICAgICAgICAgICAgIC8vIFdlJ3Zl
IGZpbmlzaGVkIGxhdW5jaGluZyB0aGUgcHJvY2VzcywgbWVzc2FnZSBiYWNrIHRvIHRoZSBtYWlu
IHJ1biBsb29wLiBUaGlzIHRha2VzIG93bmVyc2hpcCBvZiB0aGUgY29ubmVjdGlvbi4KLSAgICAg
ICAgICAgIFJlZlB0cjxQcm9jZXNzTGF1bmNoZXI+IHByb3RlY3Rvcih0aGF0KTsKLSAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdG9yLCBkaWRGaW5pc2hMYXVuY2hp
bmdQcm9jZXNzRnVuY3Rpb24sIHByb2Nlc3NJZGVudGlmaWVyLCBsaXN0ZW5pbmdQb3J0LCBjb25u
ZWN0aW9uXSB7Ci0gICAgICAgICAgICAgICAgKCpwcm90ZWN0b3IuKmRpZEZpbmlzaExhdW5jaGlu
Z1Byb2Nlc3NGdW5jdGlvbikocHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcihsaXN0ZW5pbmdQb3J0LCBjb25uZWN0aW9uKSk7CisgICAgICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoYXQgPSBSZWZQdHI8UHJvY2Vzc0xhdW5jaGVy
Pih0aGF0KSwgZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uLCBwcm9jZXNzSWRlbnRp
ZmllciwgbGlzdGVuaW5nUG9ydCwgY29ubmVjdGlvbl0geworICAgICAgICAgICAgICAgICgqcHJv
dGVjdGVkVGhhdC4qZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uKShwcm9jZXNzSWRl
bnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQsIGNvbm5l
Y3Rpb24pKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCAyYjY5ZDcx
MjZhZTg1OTFiMDVjNTg2YjhjM2I1NzJmNmUwM2ExZTAyLi41OWFhZGMxMTIwZTk0ZmZiMTAwOWIy
MzE4NjdhMWI5MzZiYmFhNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC01NTcsMTUgKzU1NywxNSBAQCB2b2lkIFN0
b3JhZ2VNYW5hZ2VyOjpnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoc3RkOjpmdW5jdGlvbjx2b2lk
IChIYXNoU2V0PFJlZlB0cgogewogICAgIFJlZlB0cjxTdG9yYWdlTWFuYWdlcj4gc3RvcmFnZU1h
bmFnZXIodGhpcyk7CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbc3RvcmFnZU1hbmFnZXIsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8U3RvcmFn
ZU1hbmFnZXI+KCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmln
aW4+PiBvcmlnaW5zOwogCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYgc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UgOiBzdG9yYWdlTWFuYWdlci0+bV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFs
dWVzKCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIG9yaWdpbiA6IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5vcmlnaW5zKCkpCiAg
ICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoV1RGTW92ZShvcmlnaW4pKTsKICAgICAgICAgfQog
Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbb3JpZ2lucywgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUob3JpZ2lucykpOwogICAgICAg
ICB9KTsKICAgICB9KTsKQEAgLTU3MywxMCArNTczLDggQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6
Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKHN0ZDo6ZnVuY3Rpb248dm9pZCAoSGFzaFNldDxSZWZQ
dHIKIAogdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VPcmlnaW5zKHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQdHI8
U3RvcmFnZU1hbmFnZXI+IHN0b3JhZ2VNYW5hZ2VyKHRoaXMpOwotCi0gICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW3N0b3JhZ2VNYW5hZ2VyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBmb3IgKGF1dG8mIHNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlIDogc3RvcmFnZU1hbmFnZXItPm1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Vz
LnZhbHVlcygpKQorICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmPFN0b3JhZ2VNYW5hZ2VyPigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGZvciAoYXV0byYgc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkK
ICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbGVhckFsbFN0b3JhZ2VBcmVh
cygpOwogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CkBAIC01OTEsMTAgKzU4OSw5IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRl
bGV0ZVNlc3Npb25TdG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFJlZlB0cjxX
CiAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQogICAgICAgICBjb3BpZWRPcmlnaW5z
LnVuY2hlY2tlZEFwcGVuZChvcmlnaW4tPmlzb2xhdGVkQ29weSgpKTsKIAotICAgIFJlZlB0cjxT
dG9yYWdlTWFuYWdlcj4gc3RvcmFnZU1hbmFnZXIodGhpcyk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3N0b3JhZ2VNYW5hZ2VyLCBjb3BpZWRPcmlnaW5zLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFN0b3JhZ2VNYW5hZ2VyPigqdGhpcyksIGNv
cGllZE9yaWdpbnMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogY29waWVkT3JpZ2lu
cykgewotICAgICAgICAgICAgZm9yIChhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IHN0
b3JhZ2VNYW5hZ2VyLT5tX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAg
ICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9y
YWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKICAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbigqb3JpZ2luKTsKICAgICAg
ICAgfQogCkBAIC02MDQsMjAgKzYwMSwxOCBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVT
ZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxSZWZQdHI8VwogCiB2
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQdHI8U3RvcmFnZU1hbmFnZXI+IHN0b3JhZ2VNYW5h
Z2VyKHRoaXMpOwotCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3N0b3JhZ2VNYW5hZ2VyLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewor
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFN0b3JhZ2VN
YW5hZ2VyPigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2lu
Pj4gb3JpZ2luczsKIAotICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHN0b3JhZ2VNYW5hZ2Vy
LT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpKQorICAgICAgICBmb3Ig
KGF1dG8mIG9yaWdpbiA6IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkp
CiAgICAgICAgICAgICBvcmlnaW5zLmFkZChXVEZNb3ZlKG9yaWdpbikpOwogCi0gICAgICAgIGZv
ciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogc3RvcmFnZU1hbmFnZXIt
Pm1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgeworICAgICAgICBm
b3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBv
cmlnaW4gOiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKICAgICAg
ICAgICAgICAgICBvcmlnaW5zLmFkZChXVEZNb3ZlKG9yaWdpbikpOwogICAgICAgICB9CiAKLSAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5zLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShvcmlnaW5zKSk7CiAgICAgICAgIH0p
OwogICAgIH0pOwpAQCAtNjI1LDEyICs2MjAsMTAgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6Z2V0
TG9jYWxTdG9yYWdlT3JpZ2lucyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKEhhc2hTZXQ8UmVmUHRyPFcK
IAogdm9pZCBTdG9yYWdlTWFuYWdlcjo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhzdGQ6
OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdp
bkRldGFpbHM+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQdHI8U3RvcmFnZU1h
bmFnZXI+IHN0b3JhZ2VNYW5hZ2VyKHRoaXMpOworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmPFN0b3JhZ2VNYW5hZ2VyPigqdGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAg
IGF1dG8gb3JpZ2luRGV0YWlscyA9IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5vcmln
aW5EZXRhaWxzKCk7CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbc3RvcmFnZU1hbmFnZXIsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
Ci0gICAgICAgIGF1dG8gb3JpZ2luRGV0YWlscyA9IHN0b3JhZ2VNYW5hZ2VyLT5tX2xvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlci0+b3JpZ2luRGV0YWlscygpOwotCi0gICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbb3JpZ2luRGV0YWlscywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtvcmlnaW5EZXRhaWxzID0gV1RGTW92ZShvcmlnaW5EZXRhaWxzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUob3JpZ2luRGV0YWlscykpOwog
ICAgICAgICB9KTsKICAgICB9KTsKQEAgLTYzOCwzMyArNjMxLDI4IEBAIHZvaWQgU3RvcmFnZU1h
bmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoc3RkOjpmdW5jdGlvbjx2b2lkIChW
ZWN0b3I8TG9jCiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJp
ZXNGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQogewotICAg
IFJlZlB0cjxTdG9yYWdlTWFuYWdlcj4gc3RvcmFnZU1hbmFnZXIodGhpcyk7Ci0KLSAgICBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IGNvcGllZE9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLmlzb2xhdGVk
Q29weSgpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFtzdG9yYWdlTWFuYWdlciwgY29waWVkT3Jp
Z2luXSB7Ci0gICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogc3RvcmFn
ZU1hbmFnZXItPm1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgICAg
IGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbigq
Y29waWVkT3JpZ2luKTsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZjxTdG9yYWdlTWFuYWdlcj4oKnRoaXMpLCBjb3BpZWRPcmlnaW4gPSBzZWN1cml0eU9y
aWdpbi5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgZm9yIChhdXRvJiBsb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCisg
ICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hp
bmdPcmlnaW4oY29waWVkT3JpZ2luLmdldCgpKTsKIAotICAgICAgICBmb3IgKGF1dG8mIHRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IHN0b3JhZ2VNYW5hZ2VyLT5tX3RyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICB0cmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4oKmNvcGll
ZE9yaWdpbik7CisgICAgICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlIDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAg
ICAgICAgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01h
dGNoaW5nT3JpZ2luKGNvcGllZE9yaWdpbi5nZXQoKSk7CiAKLSAgICAgICAgc3RvcmFnZU1hbmFn
ZXItPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdpdGhPcmln
aW4oY29waWVkT3JpZ2luLmdldCgpKTsKKyAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihjb3BpZWRPcmlnaW4ucHRyKCkpOwogICAg
IH0pOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VPcmlnaW5z
TW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUs
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQ
dHI8U3RvcmFnZU1hbmFnZXI+IHN0b3JhZ2VNYW5hZ2VyKHRoaXMpOwotCi0gICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3N0b3JhZ2VNYW5hZ2VyLCB0aW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIGRlbGV0ZWRP
cmlnaW5zID0gc3RvcmFnZU1hbmFnZXItPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5k
ZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKHRpbWUpOworICAgIG1fcXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFN0b3JhZ2VNYW5hZ2VyPigqdGhpcyksIHRpbWUs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CisgICAgICAgIGF1dG8gZGVsZXRlZE9yaWdpbnMgPSBtX2xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci0+ZGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZSh0aW1lKTsKIAogICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IGRlbGV0ZWRPcmlnaW5zKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IHN0b3JhZ2VNYW5hZ2VyLT5tX2xvY2Fs
U3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCisgICAgICAgICAgICBmb3IgKGF1dG8mIGxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKICAg
ICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0
Y2hpbmdPcmlnaW4ob3JpZ2luLmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoYXV0
byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogc3RvcmFnZU1hbmFnZXItPm1fdHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAgZm9yIChhdXRv
JiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZXMudmFsdWVzKCkpCiAgICAgICAgICAgICB0cmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7CiAKICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTY3OSwxNiArNjY3
LDE1IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JP
cmlnaW5zKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViCiAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBv
cmlnaW5zKQogICAgICAgICBjb3BpZWRPcmlnaW5zLnVuY2hlY2tlZEFwcGVuZChvcmlnaW4tPmlz
b2xhdGVkQ29weSgpKTsKIAotICAgIFJlZlB0cjxTdG9yYWdlTWFuYWdlcj4gc3RvcmFnZU1hbmFn
ZXIodGhpcyk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3N0b3JhZ2VNYW5hZ2VyLCBjb3BpZWRP
cmlnaW5zLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmPFN0b3JhZ2VNYW5hZ2VyPigqdGhpcyksIGNvcGllZE9yaWdpbnMgPSBXVEZNb3ZlKGNvcGll
ZE9yaWdpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IGNvcGllZE9yaWdpbnMp
IHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogc3RvcmFn
ZU1hbmFnZXItPm1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAgICAg
IGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2VzLnZhbHVlcygpKQogICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xl
YXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbigqb3JpZ2luKTsKIAotICAgICAgICAgICAgZm9y
IChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBzdG9yYWdlTWFuYWdlci0+
bV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICAgICAg
Zm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCiAgICAgICAgICAgICAgICAgdHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKCpv
cmlnaW4pOwogCi0gICAgICAgICAgICBzdG9yYWdlTWFuYWdlci0+bV9sb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihvcmlnaW4uZ2V0KCkpOworICAg
ICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRlbGV0ZURhdGFiYXNlV2l0
aE9yaWdpbihvcmlnaW4uZ2V0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNTc5NWIyNWNjNzZiMjZhMmM1M2YxNzBh
OWYyNjI5ZWYyYTM3ZTNjZS4uMTIwNDY0MjYxZDlmNDY0ZThjZjJhZmQyYzBkOTc1YWIwYjBiYjJh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI3MTQs
NyArMjcxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUoc3RkOjpm
dW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFjCiB2b2lkIFdlYlBhZ2VQcm94eTo6
aXNXZWJQcm9jZXNzUmVzcG9uc2l2ZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wgaXNXZWJQcm9j
ZXNzUmVzcG9uc2l2ZSk+IGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkp
IHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0Z1bmN0aW9uXSB7
CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tGdW5jdGlvbiA9IFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbildIHsKICAgICAgICAgICAgIGJvb2wgaXNXZWJQcm9jZXNz
UmVzcG9uc2l2ZSA9IHRydWU7CiAgICAgICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKGlzV2ViUHJv
Y2Vzc1Jlc3BvbnNpdmUpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZmQ1YmM1ZmJmOTAxMDVhNWIwNDAxN2Q0ZjNmOTc4
YjlmNDk3MDk1ZS4uMzM4YTgyZGI4ZTI1NzQ2NzMyMmI4YWI4NDkzMDY0ZTI1NGYzNTI1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTk5OCw3
ICs5OTgsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6aXNSZXNwb25zaXZlKHN0ZDo6ZnVuY3Rp
b248dm9pZChib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdgogewogICAgIGlmIChtX2lzUmVzcG9u
c2l2ZSA9PSBOb09yTWF5YmU6Ok5vKSB7CiAgICAgICAgIGlmIChjYWxsYmFjaykgewotICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja10geworICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSB7
CiAgICAgICAgICAgICAgICAgYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlID0gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgY2FsbGJhY2soaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk7CiAgICAgICAg
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA2NzQ4NzdhY2RkY2U5Mzk3OGJiODllNTg1
MTRkZjA4MjI4OTViMmNiLi5mZjBiMzA1YTIyMjdmNTZiNDI2ODkwMTAyOWUyNDZkNDRlNjA5MDMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0yMzUsOCArMjM1LDcgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBP
cHRpb25TZXQKICAgICAgICAgICAgIGlmIChwZW5kaW5nQ2FsbGJhY2tzKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY2Fs
bGJhY2tBZ2dyZWdhdG9yKHRoaXMpOwotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yID0gUmVmPENhbGxiYWNrQWdncmVnYXRvcj4oKnRo
aXMpXSgpIG11dGFibGUgewogCiAgICAgICAgICAgICAgICAgV1RGOjpWZWN0b3I8V2Vic2l0ZURh
dGFSZWNvcmQ+IHJlY29yZHM7CiAgICAgICAgICAgICAgICAgcmVjb3Jkcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YVJlY29yZHMuc2l6ZSgp
KTsKQEAgLTI2NSwxNyArMjY0LDE1IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRh
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0CiAgICAgICAg
IGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFtmZXRjaE9wdGlvbnMsIG1lZGlhQ2FjaGVEaXJlY3RvcnksIGNhbGxiYWNr
QWdncmVnYXRvcl0gewogICAgICAgICAgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4+PiBvcmlnaW5zID0gV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6b3JpZ2luc0lu
TWVkaWFDYWNoZShtZWRpYUNhY2hlRGlyZWN0b3J5LnN0cmluZygpKTsKLSAgICAgICAgICAgIFdl
YnNpdGVEYXRhKiB3ZWJzaXRlRGF0YSA9IG5ldyBXZWJzaXRlRGF0YTsKKyAgICAgICAgICAgIFdl
YnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKGF1
dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YTo6RW50
cnkgZW50cnkgeyBvcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCAwIH07Ci0gICAg
ICAgICAgICAgICAgd2Vic2l0ZURhdGEtPmVudHJpZXMuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsK
KyAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXVEZNb3ZlKGVudHJ5
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFdURjo6UnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IsIG9yaWdpbnMsIHdlYnNpdGVE
YXRhXSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5n
Q2FsbGJhY2soV1RGTW92ZSgqd2Vic2l0ZURhdGEpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBkZWxldGUgd2Vic2l0ZURhdGE7CisgICAgICAgICAgICBXVEY6OlJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yLCBvcmlnaW5zID0gV1RGTW92ZShv
cmlnaW5zKSwgd2Vic2l0ZURhdGEgPSBXVEZNb3ZlKHdlYnNpdGVEYXRhKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFj
ayhXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAj
ZW5kaWYKQEAgLTM2NSw3ICszNjIsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0
YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldAogICAgICAg
ICBtX3F1ZXVlLT5kaXNwYXRjaChbZmV0Y2hPcHRpb25zLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5LCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lLCBjYWxsYmFja0Fn
Z3JlZ2F0b3JdIHsKICAgICAgICAgICAgIGF1dG8gc3RvcmFnZSA9IFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5zdHJpbmco
KSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZS5zdHJpbmcoKSk7CiAK
LSAgICAgICAgICAgIFdlYnNpdGVEYXRhKiB3ZWJzaXRlRGF0YSA9IG5ldyBXZWJzaXRlRGF0YTsK
KyAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogCiAgICAgICAgICAgICBIYXNo
U2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CiAgICAgICAgICAg
ICBzdG9yYWdlLT5nZXRPcmlnaW5zV2l0aENhY2hlKG9yaWdpbnMpOwpAQCAtMzc0LDEzICszNzEs
MTEgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQKICAgICAgICAgICAgICAgICB1aW50NjRfdCBz
aXplID0gZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1
dGVTaXplcykgPyBzdG9yYWdlLT5kaXNrVXNhZ2VGb3JPcmlnaW4oKm9yaWdpbikgOiAwOwogICAg
ICAgICAgICAgICAgIFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7IG9yaWdpbiwgV2Vic2l0ZURh
dGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgc2l6ZSB9OwogCi0gICAgICAgICAg
ICAgICAgd2Vic2l0ZURhdGEtPmVudHJpZXMuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKKyAgICAg
ICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFdURjo6UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtjYWxsYmFja0FnZ3JlZ2F0b3IsIG9yaWdpbnMsIHdlYnNpdGVEYXRhXSgpIG11dGFibGUgewot
ICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNr
KFdURk1vdmUoKndlYnNpdGVEYXRhKSk7Ci0KLSAgICAgICAgICAgICAgICBkZWxldGUgd2Vic2l0
ZURhdGE7CisgICAgICAgICAgICBXVEY6OlJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJh
Y2tBZ2dyZWdhdG9yLCBvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgd2Vic2l0ZURhdGEgPSBX
VEZNb3ZlKHdlYnNpdGVEYXRhKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMzk0LDcgKzM4OSw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0CiAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKICAgICAgICAgICAgIFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgod2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkuc3RyaW5nKCkpLT5vcmlnaW5zKG9yaWdpbnMpOwogCi0gICAgICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2luc10oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9y
LCBvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIG9y
aWdpbiA6IG9yaWdpbnMpCiAgICAgICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMu
YXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IFdURk1vdmUob3JpZ2luKSwgV2Vic2l0ZURhdGFU
eXBlOjpXZWJTUUxEYXRhYmFzZXMsIDAgfSk7CkBAIC00MjUsNyArNDIwLDcgQEAgdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5
cGVzLCBPcHRpb25TZXQKICAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnksIGNhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAgICAgICAgYXV0byBvcmln
aW5zID0gbWVkaWFLZXlPcmlnaW5zKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnkuc3RyaW5nKCkp
OwogCi0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVn
YXRvciwgb3JpZ2luc10oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yLCBvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKICAg
ICAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCiAgICAgICAgICAgICAg
ICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IFdU
Rk1vdmUob3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpNZWRpYUtleXMsIDAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcAppbmRleCBiOWIyOTZjZTFiZTg2ZGRlMjc2ZDdmMjY0NDMwYzI1MDY4
ZmE5OTRmLi4zMTUxZTE0ZWI1ZTk1ZTQ2YjA2ZjBkN2NmMTA5ODVjYTI0ZjYyZjRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTMwMiw5ICszMDIsOCBAQCB2b2lkIE5ldHNjYXBlUGx1
Z2luOjpwb3BQb3B1cHNFbmFibGVkU3RhdGUoKQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbHVn
aW5UaHJlYWRBc3luY0NhbGwodm9pZCAoKmZ1bmN0aW9uKSh2b2lkKiksIHZvaWQqIHVzZXJEYXRh
KQogewotICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gcGx1Z2luKHRoaXMpOwotICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcGx1Z2luLCBmdW5jdGlvbiwgdXNlckRhdGFdIHsKLSAgICAg
ICAgaWYgKCFwbHVnaW4tPm1faXNTdGFydGVkKQorICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IFJlZjxOZXRzY2FwZVBsdWdpbj4oKnRoaXMpLCBmdW5jdGlvbiwg
dXNlckRhdGFdIHsKKyAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5tX2lzU3RhcnRlZCkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBmdW5jdGlvbih1c2VyRGF0YSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggY2Fh
MzFkNjZkZjk3NTU5MWJlMGJjNDI5NGIyNzYxZWVjYjBmMGE2NS4uMWFiZDY4ZTQ2NjQ1NjYzMmY4
ZWM4NjdmYjhiYmE5YWNmNWQwYzI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTY3OSw4ICsxNjc5LDcgQEAgdm9pZCBQbHVn
aW5WaWV3Ojp1bnByb3RlY3RQbHVnaW5Gcm9tRGVzdHJ1Y3Rpb24oKQogICAgIC8vIHRoZSBkZXN0
cm95ZWQgb2JqZWN0IGhpZ2hlciBvbiB0aGUgc3RhY2suIFRvIHByZXZlbnQgdGhpcywgaWYgdGhl
IHBsdWctaW4gaGFzCiAgICAgLy8gb25seSBvbmUgcmVtYWluaW5nIHJlZmVyZW5jZSwgY2FsbCBk
ZXJlZigpIGFzeW5jaHJvbm91c2x5LgogICAgIGlmIChoYXNPbmVSZWYoKSkgewotICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXNdIHsKLSAgICAgICAgICAgIGRlcmVmKCk7Cisg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbGFzdFJlZiA9IGFkb3B0UmVmKHRoaXMp
XSB7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCBi
OTYzOThlZDM1YzNiMDc4MjRmMjRjOWM1MGU4ZjMyM2ZhMTE0MGFkLi5kOWEwMzFlMDk3MmJkY2Fh
YzJjN2Y1YmY1NjBmMzk0OWE0MGRlY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMTM4LDE4ICsxMzgsMTYg
QEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW4KICAgICBVTlVTRURfUEFSQU0oY2FuUnViYmVyQmFu
ZEF0Qm90dG9tKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPEV2ZW50RGlzcGF0Y2hlcj4gZXZlbnRE
aXNwYXRjaGVyID0gdGhpczsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2V2ZW50RGlz
cGF0Y2hlciwgcGFnZUlELCB3aGVlbEV2ZW50XSB7Ci0gICAgICAgIGV2ZW50RGlzcGF0Y2hlci0+
ZGlzcGF0Y2hXaGVlbEV2ZW50KHBhZ2VJRCwgd2hlZWxFdmVudCk7CisgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEV2ZW50RGlzcGF0Y2hlcj4oKnRoaXMp
LCBwYWdlSUQsIHdoZWVsRXZlbnRdKCkgbXV0YWJsZSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMt
PmRpc3BhdGNoV2hlZWxFdmVudChwYWdlSUQsIHdoZWVsRXZlbnQpOwogICAgIH0pOyAKIH0KIAog
I2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCiB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6Z2Vz
dHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQm
IGdlc3R1cmVFdmVudCkKIHsKLSAgICBSZWZQdHI8RXZlbnREaXNwYXRjaGVyPiBldmVudERpc3Bh
dGNoZXIgPSB0aGlzOwotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZXZlbnREaXNwYXRj
aGVyLCBwYWdlSUQsIGdlc3R1cmVFdmVudF0gewotICAgICAgICBldmVudERpc3BhdGNoZXItPmRp
c3BhdGNoR2VzdHVyZUV2ZW50KHBhZ2VJRCwgZ2VzdHVyZUV2ZW50KTsKKyAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8RXZlbnREaXNwYXRjaGVyPigqdGhp
cyksIHBhZ2VJRCwgZ2VzdHVyZUV2ZW50XSgpIG11dGFibGUgeworICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kaXNwYXRjaEdlc3R1cmVFdmVudChwYWdlSUQsIGdlc3R1cmVFdmVudCk7CiAgICAgfSk7
CiB9CiAjZW5kaWYKQEAgLTE5MSw4ICsxODksNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6dG91
Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgdAog
ICAgIH0KIAogICAgIGlmICh1cGRhdGVMaXN0V2FzRW1wdHkpIHsKLSAgICAgICAgUmVmUHRyPEV2
ZW50RGlzcGF0Y2hlcj4gZXZlbnREaXNwYXRjaGVyID0gdGhpczsKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtldmVudERpc3BhdGNoZXJdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEV2ZW50RGlzcGF0Y2hlcj4oKnRoaXMp
XSgpIG11dGFibGUgewogICAgICAgICAgICAgZXZlbnREaXNwYXRjaGVyLT5kaXNwYXRjaFRvdWNo
RXZlbnRzKCk7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCmluZGV4IGY2
NWIwMmY0MjkxMTNkYTk5M2RlNjUxYWEzZDA3NzNhYzkxODk4ZDUuLjM5ZGY5Y2VkZWEzZDZkNTI2
ZDFkNmZkMDNmYTZlNzQxMzA1OGJkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcApAQCAtNjcsOSAr
NjcsOCBAQCB2b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVyOjp2aXNpYmxlQ29udGVudFJlY3RVcGRh
dGUodWludDY0X3QgcGFnZUlELCBjb25zdCBWaXNpYgogICAgICAgICAgICAgaXRlcmF0b3ItPnZh
bHVlLnZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8gPSB2aXNpYmxlQ29udGVudFJlY3RVcGRh
dGVJbmZvOwogICAgIH0KICAgICBpZiAodXBkYXRlTGlzdFdhc0VtcHR5KSB7Ci0gICAgICAgIFJl
ZlB0cjxWaWV3VXBkYXRlRGlzcGF0Y2hlcj4gcHJvdGVjdG9yKHRoaXMpOwotICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3Rvcl0gewotICAgICAgICAgICAgcHJvdGVjdG9y
LT5kaXNwYXRjaFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSgpOworICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8Vmlld1VwZGF0ZURpc3BhdGNoZXI+
KCp0aGlzKV0geworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hWaXNpYmxlQ29u
dGVudFJlY3RVcGRhdGUoKTsKICAgICAgICAgfSk7CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280265</attachid>
            <date>2016-06-01 14:05:29 -0700</date>
            <delta_ts>2016-06-01 15:14:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158265-20160601140647.patch</filename>
            <type>text/plain</type>
            <size>83165</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWViMGIwMGQzYjlkZTA5
Nzg5NjU4OTE2NGM5YWFiNzI2ZmQ3Njk3Zi4uNmExNjBmMzYzZTkyMDc2MGZkYzY3MTkyNGViMDYz
MDI5MjkwYjRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE2LTA2LTAxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgbGFtYmRh
IHVzYWdlIGZvciBhbGwgY2FsbGVycyBvZiBSdW5Mb29wOjpkaXNwYXRjaCgpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjY1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChSZWZhY3Rv
ciwgbm8gYmVoYXZpb3IgY2hhbmdlKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNz
SURCU2VydmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vz
c0lEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGlkT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGlkQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZENvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsZWFyT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZUluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUHV0T3JBZGQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5Q
cm9jZXNzSURCU2VydmVyOjpkaWRJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
UHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
blByb2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZU9i
amVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpwdXRPckFkZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmdldFJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OkluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJblBy
b2Nlc3NJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9j
ZXNzSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
blByb2Nlc3NJREJTZXJ2ZXI6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRTdGFydFRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xvc2VGcm9tU2VydmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2Nr
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNvbm5l
Y3Rpb25DbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjphYm9y
dE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJblBy
b2Nlc3NJREJTZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpjb25maXJtRGlkQ2xvc2VGcm9tU2VydmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFt
ZXMpOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y29ubmVjdCk6CisgICAgICAgIAorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVk
REJTeW5jaHJvbm91c2x5KToKKyAgICAgICAgCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvVGhy
ZWFkZWRTY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xs
aW5nVHJlZTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGlu
Z1RyZWU6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cmVhZGVkU2Nyb2xsaW5nVHJlZTo6Y3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50
UGhhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpzZXRBY3Rp
dmVTY3JvbGxTbmFwSW5kaWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGlu
Z1RyZWU6OmRlZmVyVGVzdHNGb3JSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRT
Y3JvbGxpbmdUcmVlOjpyZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24pOgorICAgICAgICAKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnBsYXRmb3JtUHJlY2FjaGUpOgorICAgICAgICAK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFj
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxh
eUxpbmtGaXJlZCk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmNyZWF0ZURl
Y29kZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmRlY29kZSk6CisK
IDIwMTYtMDYtMDEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSBhY2NpZGVudGFsIGZwcmludGYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjhmNmQ0ZWZjZTkxMjUx
ZWVhN2UxYjBkYzJmMTg1NjZjMmJjNmNkOS4uNWMxYzc2MjM0OThkZjQwNDZjNTQ2YWU3NGRjYWRh
MjcyZWMwMjUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE2LTA2LTAxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgbGFtYmRh
IHVzYWdlIGZvciBhbGwgY2FsbGVycyBvZiBSdW5Mb29wOjpkaXNwYXRjaCgpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjY1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0
YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpmZXRj
aFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpkZWxldGVX
ZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlV2Vi
c2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpmZXRjaERpc2tDYWNoZUVudHJp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6
CisgICAgICAgIAorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJlbW92
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cmV0cmlldmVGcm9tTWVtb3J5KToK
KyAgICAgICAgCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5jb21pbmdNZXNz
YWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSk6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OmVucXVldWVJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcik6CisgICAgICAgIAorICAgICAgICAqIFNoYXJl
ZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW06CisgICAgICAgICgtW1dLTlNVUkxTZXNzaW9uTG9j
YWwgX2dldENvb2tpZUhlYWRlcnNGb3JUYXNrOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHA6CisgICAg
ICAgIChBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6Omxvb2t1cENvbnRlbnRFeHRlbnNp
b24pOgorICAgICAgICAoQVBJOjpVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlOjpjb21waWxlQ29u
dGVudEV4dGVuc2lvbik6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6
OnJlbW92ZUNvbnRlbnRFeHRlbnNpb24pOgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xh
dW5jaGVyOjpQcm9jZXNzTGF1bmNoZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9t
YWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb25uZWN0VG9TZXJ2
aWNlKToKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0U2Vzc2lvblN0b3Jh
Z2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVNlc3Np
b25TdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxl
dGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTWFuYWdlcjo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lu
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZU9y
aWdpbnNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRl
bGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKToKKyAgICAgICAgCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmlzUmVzcG9uc2l2ZSk6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZmV0Y2hEYXRhKToKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW46OnBsdWdpblRocmVhZEFzeW5jQ2FsbCk6CisgICAgICAgIAorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
dW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKToKKyAgICAgICAgCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkV2
ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0
Y2hlcjo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6RXZlbnREaXNwYXRjaGVyOjp0
b3VjaEV2ZW50KToKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdV
cGRhdGVEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld1VwZGF0ZURpc3BhdGNo
ZXI6OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZSk6CisKIDIwMTYtMDUtMzEgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbCBv
dXQgcjIwMTQ4MSwgcjIwMTUyMzogMC4zJSByZWdyZXNzaW9uIGluIE9jdGFuZSBjb2RlLWxvYWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblBy
b2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggOGVhMjk3NmE4OTdhN2RlYTdkNjFjNWY3
MzExZDE1MGQ3YTdjM2U5My4uMDkwMzczM2U2ZTJjOGM5MjEwOTRlNDFkZTUzZmM3ZTlhYTVmYTEw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lu
UHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTkxLDM1MSArOTEsMzAxIEBAIElE
QlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbm5l
Y3Rpb25Ub0NsaWVudCgpIGNvbnN0CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVE
YXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7Ci0gICAgUmVmUHRy
PEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXSB7Cisg
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
PEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXF1ZXN0RGF0YV0gewogICAgICAgICBtX3Nl
cnZlci0+ZGVsZXRlRGF0YWJhc2UocmVxdWVzdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcywgcmVzdWx0RGF0YV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVz
dWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkRGVsZXRlRGF0YWJh
c2UocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpv
cGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewotICAgIFJl
ZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YV0g
eworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVxdWVzdERhdGFdIHsKICAgICAgICAg
bV9zZXJ2ZXItPm9wZW5EYXRhYmFzZShyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRPcGVuRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcywgcmVzdWx0RGF0YV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVz
dWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkT3BlbkRhdGFiYXNl
KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
QWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQogewotICAgIFJlZlB0cjxJblByb2Nl
c3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVy
cm9yXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIGVycm9yXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRBYm9ydFRyYW5z
YWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpOwogICAgIH0pOwogfQogCiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJv
cikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0
aGlzKSwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0gewogICAgICAgICBtX2Nvbm5lY3Rp
b25Ub1NlcnZlci0+ZGlkQ29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBl
cnJvcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVP
YmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHREYXRhXSB7Cisg
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
PEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXN1bHREYXRhXSB7CiAgICAgICAgIG1fY29u
bmVjdGlvblRvU2VydmVyLT5kaWRDcmVhdGVPYmplY3RTdG9yZShyZXN1bHREYXRhKTsKICAgICB9
KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZU9iamVjdFN0b3JlKGNv
bnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lE
QlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKKyAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURC
U2VydmVyPigqdGhpcyksIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmRpZERlbGV0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3Rl
Y3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzLCByZXN1bHREYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMp
LCByZXN1bHREYXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDbGVhck9i
amVjdFN0b3JlKHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkQ3JlYXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsK
LSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzdWx0
RGF0YV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVzdWx0RGF0YV0gewogICAg
ICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ3JlYXRlSW5kZXgocmVzdWx0RGF0YSk7CiAg
ICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVJbmRleChjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHREYXRhXSB7CisgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNl
cnZlcj4oKnRoaXMpLCByZXN1bHREYXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVy
LT5kaWREZWxldGVJbmRleChyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZFB1dE9yQWRkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
CiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
LSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJl
c3VsdERhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlc3VsdERhdGFdIHsK
ICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZFB1dE9yQWRkKHJlc3VsdERhdGEpOwog
ICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0UmVjb3JkKGNvbnN0
IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNl
cnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2Vy
dmVyPigqdGhpcyksIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIt
PmRpZEdldFJlY29yZChyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZEdldENvdW50KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7
Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3Vs
dERhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlc3VsdERhdGFdIHsKICAg
ICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEdldENvdW50KHJlc3VsdERhdGEpOwogICAg
IH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlUmVjb3JkKGNvbnN0
IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNl
cnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2Vy
dmVyPigqdGhpcyksIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIt
PmRpZERlbGV0ZVJlY29yZChyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZE9wZW5DdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0
YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywg
cmVzdWx0RGF0YV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVzdWx0RGF0YV0g
ewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkT3BlbkN1cnNvcihyZXN1bHREYXRh
KTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEl0ZXJhdGVDdXJz
b3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9j
ZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzdWx0RGF0YV0geworICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nl
c3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25U
b1NlcnZlci0+ZGlkSXRlcmF0ZUN1cnNvcihyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiByZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lE
QlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc291cmNlSWRlbnRpZmllcl0geworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblBy
b2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVzb3VyY2VJZGVudGlmaWVyXSB7CiAgICAgICAgIG1f
c2VydmVyLT5hYm9ydFRyYW5zYWN0aW9uKHJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfSk7CiB9
CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8SW5Q
cm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzb3VyY2VJZGVudGlmaWVyXSB7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXNvdXJjZUlkZW50aWZpZXJdIHsKICAg
ICAgICAgbV9zZXJ2ZXItPmNvbW1pdFRyYW5zYWN0aW9uKHJlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1Zl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikK
IHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwot
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyXSB7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPElu
UHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0
cmFuc2FjdGlvbklkZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRpZEZpbmlzaEhhbmRs
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVzdWx0RGF0
YSwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogewotICAgIFJlZlB0cjxJblByb2Nl
c3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHREYXRhLCBpbmZvXSB7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPElu
UHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXN1bHREYXRhLCBpbmZvXSB7CiAgICAgICAgIG1f
c2VydmVyLT5jcmVhdGVPYmplY3RTdG9yZShyZXN1bHREYXRhLCBpbmZvKTsKICAgICB9KTsKIH0K
IAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7
Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZU5hbWVdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyks
IHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWVdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0
ZU9iamVjdFN0b3JlKHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUpOwogICAgIH0pOwogfQog
CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKIHsK
LSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVz
dERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0
aGlzKSwgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcl0gewogICAgICAgICBtX3Nl
cnZlci0+Y2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZv
KQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7
Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBy
ZXF1ZXN0RGF0YSwgaW5mb10geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVxdWVz
dERhdGEsIGluZm9dIHsKICAgICAgICAgbV9zZXJ2ZXItPmNyZWF0ZUluZGV4KHJlcXVlc3REYXRh
LCBpbmZvKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZUlu
ZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKIHsKLSAgICBSZWZQdHI8SW5Q
cm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIG9iamVjdFN0
b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMp
LCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWVdIHsKICAgICAg
ICAgbV9zZXJ2ZXItPmRlbGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIGluZGV4TmFtZSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpw
dXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleURh
dGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgY29uc3QgSW5kZXhlZERCOjpPYmpl
Y3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9j
ZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIGtleURhdGEsIHZh
bHVlLCBvdmVyd3JpdGVNb2RlXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXF1
ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGVdIHsKICAgICAgICAgbV9zZXJ2
ZXItPnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSk7
CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRSZWNvcmQoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJh
bmdlRGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOwotCi0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZl
cj4oKnRoaXMpLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhXSB7CiAgICAgICAgIG1fc2VydmVy
LT5nZXRSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiAgICAgfSk7CiB9CiAKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQogewotICAgIFJl
ZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YSwg
a2V5UmFuZ2VEYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXF1ZXN0RGF0
YSwga2V5UmFuZ2VEYXRhXSB7CiAgICAgICAgIG1fc2VydmVyLT5nZXRDb3VudChyZXF1ZXN0RGF0
YSwga2V5UmFuZ2VEYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0KLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFd
IHsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VE
YXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5DdXJzb3Io
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBp
bmZvKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhp
cyk7Ci0KLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMsIHJlcXVlc3REYXRhLCBpbmZvXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCBy
ZXF1ZXN0RGF0YSwgaW5mb10gewogICAgICAgICBtX3NlcnZlci0+b3BlbkN1cnNvcihyZXF1ZXN0
RGF0YSwgaW5mbyk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjppdGVy
YXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5
RGF0YSYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50KQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0KLSAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBrZXksIGNvdW50XSB7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXF1ZXN0RGF0YSwga2V5LCBjb3VudF0g
ewogICAgICAgICBtX3NlcnZlci0+aXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwga2V5LCBjb3Vu
dCk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjplc3RhYmxpc2hUcmFu
c2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJU
cmFuc2FjdGlvbkluZm8mIGluZm8pCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKLQotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcywgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mb10g
eworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllciwgaW5mb10gewogICAgICAgICBtX3NlcnZlci0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbyk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KElEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQogewot
ICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAg
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb24uaWRlbnRp
ZmllcigpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcywgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIHJl
cXVlc3RlZFZlcnNpb25dIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKSwgcmVxdWVzdElk
ZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb25dIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
cmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb24pOwogICAgIH0pOwogfQogCiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9y
KQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7
Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRo
aXMpLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7CiAgICAgICAgIG1fY29ubmVjdGlv
blRvU2VydmVyLT5kaWRTdGFydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJy
b3IpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xvc2VGcm9t
U2VydmVyKElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBJREJFcnJvciYgZXJyb3IpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICB1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCk7Ci0gICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBlcnJvcl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBlcnJvcl0gewog
ICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ2xvc2VGcm9tU2VydmVyKGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIsIGVycm9yKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2
NF90IG5ld1ZlcnNpb24pCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIHJlcXVlc3RJZGVudGlmaWVyLCBvbGRWZXJzaW9uLCBuZXdWZXJzaW9uXSB7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVy
c2lvbiwgbmV3VmVyc2lvbl0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+bm90aWZ5
T3BlbkRCUmVxdWVzdEJsb2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1Zl
cnNpb24pOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VD
b25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7
Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXJdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyks
IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRhdGFi
YXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICB9
KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVk
ZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJv
Y2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0
aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVy
XSB7CiAgICAgICAgIG1fc2VydmVyLT5hYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CiB9
CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVp
bnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNl
cnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJl
cXVlc3RJZGVudGlmaWVyXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllcl0gewogICAgICAgICBtX3Nl
cnZlci0+ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcywgcmVxdWVzdERhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlcXVl
c3REYXRhXSB7CiAgICAgICAgIG1fc2VydmVyLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVl
c3REYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbmZpcm1E
aWRDbG9zZUZyb21TZXJ2ZXIodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikK
IHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwot
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlz
KSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+Y29u
ZmlybURpZENsb3NlRnJvbVNlcnZlcihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAg
ICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXMo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBS
ZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgbWFpbkZyYW1lT3Jp
Z2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4o
KnRoaXMpLCBtYWluRnJhbWVPcmlnaW4sIG9wZW5pbmdPcmlnaW4sIGNhbGxiYWNrSURdIHsKICAg
ICAgICAgbV9zZXJ2ZXItPmdldEFsbERhdGFiYXNlTmFtZXMobV9jb25uZWN0aW9uVG9TZXJ2ZXIt
PmlkZW50aWZpZXIoKSwgbWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFja0lE
KTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFi
YXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGFi
YXNlTmFtZXMpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMsIGNhbGxiYWNrSUQsIGRhdGFiYXNlTmFtZXNdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVy
PigqdGhpcyksIGNhbGxiYWNrSUQsIGRhdGFiYXNlTmFtZXNdIHsKICAgICAgICAgbV9jb25uZWN0
aW9uVG9TZXJ2ZXItPmRpZEdldEFsbERhdGFiYXNlTmFtZXMoY2FsbGJhY2tJRCwgZGF0YWJhc2VO
YW1lcyk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwCmluZGV4IGE3MDcwZGMwZjRlNmFiNmVhMzg2OWFkZTM0MzMzYTcxMDAw
MjBjMjQuLjM2ZGVkNTk0NjUwYWUzYzIyZTY4MmVmM2U0NTBjZTFjYTEzYjY0MTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0yODMs
NyArMjgzLDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMsIEV4Y2UKICAgICAgICAgICAgIC8vIHVzaW5n
IHRoZSBlcnJvciBldmVudC4gQnV0IHNpbmNlIHRoaXMgY29kZSBleGVjdXRlcyBhcyBwYXJ0IG9m
IHRoZSBXZWJTb2NrZXQncwogICAgICAgICAgICAgLy8gY29uc3RydWN0b3IsIHdlIGhhdmUgdG8g
d2FpdCB1bnRpbCB0aGUgY29uc3RydWN0b3IgaGFzIGNvbXBsZXRlZCBiZWZvcmUgZmlyaW5nIHRo
ZQogICAgICAgICAgICAgLy8gZXZlbnQ7IG90aGVyd2lzZSwgdXNlcnMgY2FuJ3QgY29ubmVjdCB0
byB0aGUgZXZlbnQuCi0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXNd
KCkgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmPFdlYlNvY2tldD4oKnRoaXMpXSgpIHsKICAgICAgICAgICAgICAgICBkaXNw
YXRjaE9yUXVldWVFcnJvckV2ZW50KCk7CiAgICAgICAgICAgICAgICAgc3RvcCgpOwogICAgICAg
ICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCA3ZTg0ODFhNmJlYWVhNDllYzdkMGVkNWY5NzdjZTNmY2Yz
NzNiNTdhLi40YjlhYzlhZDNmN2Q3MDZjZjhiZjYyNmE2M2UzMTI1MTc2Mzc0MjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKQEAgLTI4MjMsMTQgKzI4MjMsMTEgQEAgSURCVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVl
Ojp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseSgpCiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAKICAgICBJREJWYWx1ZSB2YWx1ZTsKLSAgICBJREJWYWx1ZSog
dmFsdWVQdHIgPSAmdmFsdWU7Ci0KICAgICBMb2NrIGxvY2s7CiAgICAgQ29uZGl0aW9uIGNvbmRp
dGlvbjsKLSAgICBDb25kaXRpb24qIGNvbmRpdGlvblB0ciA9ICZjb25kaXRpb247CiAgICAgbG9j
ay5sb2NrKCk7CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIGNvbmRpdGlv
blB0ciwgdmFsdWVQdHJdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIGNv
bmRpdGlvblB0ciA9ICZjb25kaXRpb24sIHZhbHVlUHRyID0gJnZhbHVlXSB7CiAgICAgICAgIHdy
aXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoW2NvbmRpdGlvblB0ciwgdmFsdWVQdHJdKGNvbnN0
IElEQlZhbHVlJiByZXN1bHQpIHsKICAgICAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgICAgICAgICB2YWx1ZVB0ci0+c2V0QXNJc29sYXRlZENvcHkocmVzdWx0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJl
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1Ry
ZWUuY3BwCmluZGV4IDAxNWUxODNhMDU5ZThiYmI5NGRjNDE3Y2MxYmNjNzI1YWViYzA1MDIuLjc5
NzVkOTg0NTJjNmYxNjcyOGU0M2ViOWQxNjM5ZTE3OTk3Y2FiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcApA
QCAtODMsOSArODMsNyBAQCB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6aW52YWxpZGF0ZSgp
CiAgICAgLy8gU2luY2UgdGhpcyBjYW4gcG90ZW50aWFsbHkgYmUgdGhlIGxhc3QgcmVmZXJlbmNl
IHRvIHRoZSBzY3JvbGxpbmcgY29vcmRpbmF0b3IsCiAgICAgLy8gd2UgbmVlZCB0byByZWxlYXNl
IGl0IG9uIHRoZSBtYWluIHRocmVhZCBzaW5jZSBpdCBoYXMgbWVtYmVyIHZhcmlhYmxlcyAoc3Vj
aCBhcyB0aW1lcnMpCiAgICAgLy8gdGhhdCBleHBlY3QgdG8gYmUgZGVzdHJveWVkIGZyb20gdGhl
IG1haW4gdGhyZWFkLgotICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGlu
YXRvciA9IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IucmVsZWFzZSgpLmxlYWtSZWYoKTsKLSAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9yXSB7Ci0gICAgICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5kZXJlZigpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBXVEZNb3ZlKG1fc2Nyb2xsaW5nQ29vcmRpbmF0
b3IpXSB7CiAgICAgfSk7CiB9CiAKQEAgLTEwMywxMCArMTAxLDcgQEAgdm9pZCBUaHJlYWRlZFNj
cm9sbGluZ1RyZWU6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBu
b2RlSUQsIGMKICAgICBpZiAobm9kZUlEID09IHJvb3ROb2RlKCktPnNjcm9sbGluZ05vZGVJRCgp
KQogICAgICAgICBzZXRNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbik7CiAK
LSAgICBSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gc2Nyb2xsaW5nQ29vcmRpbmF0
b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yOwotICAgIGJvb2wgbG9jYWxJc0hhbmRsaW5nUHJv
Z3JhbW1hdGljU2Nyb2xsID0gaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCgpOwotICAgIAot
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIG5vZGVJ
RCwgc2Nyb2xsUG9zaXRpb24sIGxvY2FsSXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCwgc2Ny
b2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbl0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBub2RlSUQs
IHNjcm9sbFBvc2l0aW9uLCBsb2NhbElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwgPSBpc0hh
bmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xsKCksIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb25d
IHsKICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9z
aXRpb25BZnRlckFzeW5jU2Nyb2xsKG5vZGVJRCwgc2Nyb2xsUG9zaXRpb24sIGxvY2FsSXNIYW5k
bGluZ1Byb2dyYW1tYXRpY1Njcm9sbCwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CiAg
ICAgfSk7CiB9CkBAIC0xMTYsOCArMTExLDcgQEAgdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6
OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFNjcm9sbGluZ05vZGVJRCBub2QKICAg
ICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yPiBzY3JvbGxpbmdDb29yZGluYXRvciA9IG1f
c2Nyb2xsaW5nQ29vcmRpbmF0b3I7Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzY3Jv
bGxpbmdDb29yZGluYXRvciwgbm9kZUlELCBob3Jpem9udGFsLCB2ZXJ0aWNhbF0geworICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLCBub2RlSUQsIGhvcml6b250YWwsIHZlcnRpY2FsXSB7CiAgICAgICAgIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhub2RlSUQsIGhv
cml6b250YWwsIHZlcnRpY2FsKTsKICAgICB9KTsKIH0KQEAgLTEyOCw4ICsxMjIsNyBAQCB2b2lk
IFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlIHBoYXNlKQogICAgIGlmICghbV9zY3JvbGxpbmdDb29yZGluYXRvcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I+IHNj
cm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvcjsKLSAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBwaGFzZV0geworICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLCBwaGFzZV0gewogICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+aGFu
ZGxlV2hlZWxFdmVudFBoYXNlKHBoYXNlKTsKICAgICB9KTsKIH0KQEAgLTEzOSw4ICsxMzIsNyBA
QCB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMo
U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgdQogICAgIGlmICghbV9zY3JvbGxpbmdDb29yZGluYXRv
cikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlZlB0cjxBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yPiBzY3JvbGxpbmdDb29yZGluYXRvciA9IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3I7Ci0g
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzY3JvbGxpbmdDb29yZGluYXRvciwgbm9kZUlE
LCBob3Jpem9udGFsSW5kZXgsIHZlcnRpY2FsSW5kZXhdIHsKKyAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvciwg
bm9kZUlELCBob3Jpem9udGFsSW5kZXgsIHZlcnRpY2FsSW5kZXhdIHsKICAgICAgICAgc2Nyb2xs
aW5nQ29vcmRpbmF0b3ItPnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzKG5vZGVJRCwgaG9yaXpv
bnRhbEluZGV4LCB2ZXJ0aWNhbEluZGV4KTsKICAgICB9KTsKIH0KQEAgLTE1MCw4ICsxNDIsNyBA
QCB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6ZGVmZXJUZXN0c0ZvclJlYXNvbihXaGVlbEV2
ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibAogICAgIGlmICghbV9zY3JvbGxpbmdDb29yZGluYXRv
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I+IHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvcjsKLSAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBpZGVudGlmaWVy
LCByZWFzb25dIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3Jk
aW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvciwgaWRlbnRpZmllciwgcmVhc29uXSB7CiAg
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5kZWZlclRlc3RzRm9yUmVhc29uKGlkZW50aWZp
ZXIsIHJlYXNvbik7CiAgICAgfSk7CiB9CkBAIC0xNjEsOCArMTUyLDcgQEAgdm9pZCBUaHJlYWRl
ZFNjcm9sbGluZ1RyZWU6OnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVz
dFRyaWdnZXI6OlMKICAgICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gc2Nyb2xs
aW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yOwotICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIGlkZW50aWZpZXIsIHJlYXNvbl0g
eworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBt
X3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBpZGVudGlmaWVyLCByZWFzb25dIHsKICAgICAgICAgc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihpZGVudGlmaWVy
LCByZWFzb24pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IDA5ZTZm
M2RjNTU3MTZlOGIxYTQ0OGIzYjc4YzVlMDhiM2VhMmE2NGYuLmIyYjk1ZWY2NDQ5Zjk0ZmZiMDhk
MjlmZDgyZGUzNmZmM2NjNDViYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTgzMSwx
NCArODMxLDEzIEBAIEZvbnRDYWNoZTo6UHJlY2FjaGVUYXNrJiBGb250Q2FjaGU6OnBsYXRmb3Jt
UHJlY2FjaGUoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksCiAKICAgICBhdXRvJiByZXN1bHRU
YXNrID0gKnRhc2s7CiAKLSAgICBxdWV1ZS5kaXNwYXRjaChbdGFzayA9IHRhc2sucmVsZWFzZSgp
XSB7CisgICAgcXVldWUuZGlzcGF0Y2goW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXSgpIG11dGFibGUg
ewogICAgICAgICBpZiAoIXRhc2stPmlzQ2FuY2VsZWQpIHsKICAgICAgICAgICAgIGF1dG8gZmFt
aWx5ID0gdGFzay0+ZmFtaWx5Lmlzb2xhdGVkQ29weSgpOwogICAgICAgICAgICAgdGFzay0+cmVz
dWx0ID0gY3JlYXRlRm9udFBsYXRmb3JtRGF0YVRocmVhZFNhZmUodGFzay0+Zm9udERlc2NyaXB0
aW9uLCBmYW1pbHksIG51bGxwdHIsIG51bGxwdHIsIHRhc2stPmlzV2hpdGVsaXN0ZWQsIHRhc2st
PnNob3VsZEF1dG9BY3RpdmF0ZUlmTmVlZGVkKTsKICAgICAgICAgfQogCi0gICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbdGFza10gewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFByZWNhY2hlVGFzaz4gZGVsZXRlcih0YXNrKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt0YXNrID0gV1RGTW92ZSh0YXNrKV0gewogICAgICAgICAgICAgdGFzay0+Y29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZSh0YXNrLT5yZXN1bHQpLCB0YXNrLT5pc0NhbmNlbGVkKTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCmluZGV4
IDYzYzc0ZTg0MzM2NGY5YmUyZDE4NDRmNDA0ZmI1OTg0ZGQwZDA2OWYuLjVhOGQ2NmFmMDI4Njdl
OGQ4MGFkMDljMGM3OTRmYzI3YjgwNDRlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JN
YWMuY3BwCkBAIC0xMDEsOSArMTAxLDkgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6
OmRpc3BsYXlMaW5rRmlyZWQoZG91YmxlIG5vd1NlY29uZHMsIGRvdWJsZSBvdXRwdXQKICAgICAv
LyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgdXNpbmcgd2ViS2l0TW9ub3RvbmljTm93PwogICAgIHNl
dE1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSh3ZWJLaXRNb25vdG9uaWNOb3cgKyB0aW1lVW50
aWxPdXRwdXQpOwogCi0gICAgYXV0byB3ZWFrUHRyID0gbV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFr
UHRyKCk7CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtQdHJdIHsKKyAgICAv
LyBGSVhNRTogSXMgaXQgcmVhbGx5IG9rYXkgdG8gY3JlYXRlIGEgd2Vha1B0ciBvbiBhIGJhY2tn
cm91bmQgdGhyZWFkIGFuZCB0aGVuIHVzZSBpdCBvbiB0aGUgbWFpbiB0aHJlYWQ/CisgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrUHRyID0gbV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFr
UHRyKCldIHsKICAgICAgICAgaWYgKGF1dG8qIG1vbml0b3IgPSB3ZWFrUHRyLmdldCgpKQogICAg
ICAgICAgICAgaGFuZGxlRGlzcGxheVJlZnJlc2hlZE5vdGlmaWNhdGlvbk9uTWFpblRocmVhZCht
b25pdG9yKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggNzc5OGY5MTllOTRmZWJlMDliYzBjMTg0ZDY3ZDg5
Yzg3ZGQ3NDBjNy4uM2VjZGEyYWJjZWM2YWQ0ZjQ2MGM1OWY2YTBlNzExN2I1OWFkYzFlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5j
cHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+
IGNyZWF0ZURlY29kZVRhc2soY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjaGVkdQogICAgIGF1dG8g
bWVkaWFUeXBlID0gKGlzQmFzZTY0ID8gaGVhZGVyLnN1YnN0cmluZygwLCBoZWFkZXIubGVuZ3Ro
KCkgLSBzdHJsZW4oYmFzZTY0U3RyaW5nKSkgOiBoZWFkZXIpLnRvU3RyaW5nKCk7CiAKICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVUYXNrPihEZWNvZGVUYXNrIHsKLSAgICAgICAg
V1RGTW92ZSh1cmxTdHJpbmcpLAorICAgICAgICB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCksCiAg
ICAgICAgIFdURk1vdmUoZW5jb2RlZERhdGEpLAogICAgICAgICBpc0Jhc2U2NCwKICAgICAgICAg
c2NoZWR1bGVDb250ZXh0LApAQCAtMTcyLDggKzE3Miw3IEBAIHZvaWQgZGVjb2RlKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNjaGVkdWxlQ29udGV4dCwgRGVjb2RlQ29t
cGxlCiB7CiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzRGF0YSgpKTsKIAotICAgIGF1dG8gZGVj
b2RlVGFzayA9IGNyZWF0ZURlY29kZVRhc2sodXJsLCBzY2hlZHVsZUNvbnRleHQsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBkZWNvZGVRdWV1ZSgpLmRpc3BhdGNoKFtkZWNvZGVU
YXNrID0gV1RGTW92ZShkZWNvZGVUYXNrKV0oKSBtdXRhYmxlIHsKKyAgICBkZWNvZGVRdWV1ZSgp
LmRpc3BhdGNoKFtkZWNvZGVUYXNrID0gY3JlYXRlRGVjb2RlVGFzayh1cmwsIHNjaGVkdWxlQ29u
dGV4dCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSgpIG11dGFibGUgewogICAgICAgICBp
ZiAoZGVjb2RlVGFzay0+aXNCYXNlNjQpCiAgICAgICAgICAgICBkZWNvZGVCYXNlNjQoKmRlY29k
ZVRhc2spOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJv
Y2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCmluZGV4IGMyZDcwZDJlY2Y5ZmUxMWYwZjk2YzRiOTk4
NmIwZTUzZmRlYTI0ZTIuLmM4YzI2ZmM2MjY4MzM5M2JkMjFhM2Q4MDhiMTdlODk5MTc2ZTBiMjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nl
c3MuY3BwCkBAIC0xOTQsNDIgKzE5NCwyMCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6Y3JlYXRl
RGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCkKIAogdm9pZCBEYXRhYmFzZVByb2Nlc3M6
OmZldGNoV2Vic2l0ZURhdGEoU2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3
ZWJzaXRlRGF0YVR5cGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIHN0cnVjdCBDYWxs
YmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJh
Y2tBZ2dyZWdhdG9yPiB7Ci0gICAgICAgIGV4cGxpY2l0IENhbGxiYWNrQWdncmVnYXRvcihzdGQ6
OmZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4gY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAg
ICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCi0g
ICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIH5DYWxsYmFja0FnZ3JlZ2F0b3IoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgICAg
ICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVy
KTsKLSAgICAgICAgICAgIGF1dG8gd2Vic2l0ZURhdGEgPSBXVEZNb3ZlKG1fd2Vic2l0ZURhdGEp
OwotCi0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5k
bGVyLCB3ZWJzaXRlRGF0YV0gewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdl
YnNpdGVEYXRhKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpm
dW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+IG1fY29tcGxldGlvbkhhbmRsZXI7Ci0gICAgICAg
IFdlYnNpdGVEYXRhIG1fd2Vic2l0ZURhdGE7Ci0gICAgfTsKLQotICAgIFJlZlB0cjxDYWxsYmFj
a0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0Fn
Z3JlZ2F0b3IoW3RoaXMsIGNhbGxiYWNrSURdKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSB7Cisg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBjYWxsYmFja0lEXShjb25zdCBXZWJz
aXRlRGF0YSYgd2Vic2l0ZURhdGEpIHsKICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OkRpZEZldGNoV2Vic2l0ZURh
dGEoY2FsbGJhY2tJRCwgd2Vic2l0ZURhdGEpLCAwKTsKLSAgICB9KSk7CisgICAgfTsKIAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewogICAgICAgICAvLyBG
SVhNRTogUGljayB0aGUgcmlnaHQgZGF0YWJhc2Ugc3RvcmUgYmFzZWQgb24gdGhlIHNlc3Npb24g
SUQuCi0gICAgICAgIHBvc3REYXRhYmFzZVRhc2soQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsYmFja0Fn
Z3JlZ2F0b3IsIHdlYnNpdGVEYXRhVHlwZXMsIHRoaXNdIHsKLQotICAgICAgICAgICAgVmVjdG9y
PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IHNlY3VyaXR5T3JpZ2lucyA9IGluZGV4ZWREYXRhYmFz
ZU9yaWdpbnMoKTsKLQotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxs
YmFja0FnZ3JlZ2F0b3IsIHNlY3VyaXR5T3JpZ2luc10geworICAgICAgICBwb3N0RGF0YWJhc2VU
YXNrKENyb3NzVGhyZWFkVGFzayhbdGhpcywgd2Vic2l0ZURhdGFUeXBlcywgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgc2VjdXJpdHlPcmlnaW5zID0gaW5kZXhlZERhdGFiYXNlT3Jp
Z2lucygpXSB7CisgICAgICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CiAgICAg
ICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzZWN1cml0eU9yaWdpbiA6IHNlY3VyaXR5T3Jp
Z2lucykKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IHNlY3VyaXR5T3JpZ2luLCBX
ZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcywgMCB9KTsKKyAgICAgICAgICAgICAg
ICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBzZWN1cml0eU9yaWdpbiwgV2Vic2l0
ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMsIDAgfSk7CisKKyAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih3ZWJzaXRlRGF0YSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
fSkpOwogICAgIH0KQEAgLTIzOCw1NyArMjE2LDI1IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpm
ZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vi
CiAKIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNz
aW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKIHsKLSAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewotICAgICAgICBl
eHBsaWNpdCBDYWxsYmFja0FnZ3JlZ2F0b3Ioc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0
aW9uSGFuZGxlcikKLSAgICAgICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgfkNhbGxi
YWNrQWdncmVnYXRvcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7Ci0KLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3Zl
KG1fY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICB9OwotCi0gICAgUmVmUHRyPENh
bGxiYWNrQWdncmVnYXRvcj4gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYobmV3IENhbGxi
YWNrQWdncmVnYXRvcihbdGhpcywgY2FsbGJhY2tJRF0oKSB7CisgICAgYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IFt0aGlzLCBjYWxsYmFja0lEXSgpIHsKICAgICAgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OkRpZERlbGV0
ZVdlYnNpdGVEYXRhKGNhbGxiYWNrSUQpLCAwKTsKLSAgICB9KSk7CisgICAgfTsKIAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkKLSAgICAgICAgaWRiU2VydmVy
KCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UsIFtj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgICAgIGlkYlNlcnZlcigpLmNsb3NlQW5kRGVs
ZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShtb2RpZmllZFNpbmNlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAjZW5kaWYKIH0KIAogdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRh
dGE+JiBzZWN1cml0eU9yaWdpbkRhdGFzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIHN0
cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7Ci0gICAgICAgIGV4cGxpY2l0IENhbGxiYWNrQWdncmVn
YXRvcihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICAg
ICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQotICAg
ICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB+Q2FsbGJhY2tBZ2dyZWdhdG9yKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikp
OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBtX2NvbXBsZXRp
b25IYW5kbGVyOwotICAgIH07Ci0KLSAgICBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZihuZXcgQ2FsbGJhY2tBZ2dyZWdhdG9yKFt0aGlzLCBj
YWxsYmFja0lEXSgpIHsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIGNhbGxi
YWNrSURdKCkgewogICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6RGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5z
KGNhbGxiYWNrSUQpLCAwKTsKLSAgICB9KSk7CisgICAgfTsKIAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkKLSAgICAgICAgaWRiU2VydmVyKCkuY2xvc2VBbmRE
ZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKHNlY3VyaXR5T3JpZ2luRGF0YXMsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdIHsgfSk7CisgICAgICAgIGlkYlNlcnZlcigpLmNsb3NlQW5kRGVsZXRlRGF0YWJh
c2VzRm9yT3JpZ2lucyhzZWN1cml0eU9yaWdpbkRhdGFzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGYwY2ZiNWE3MzkyYjQxZTRlZDExMzQ4NDcyZGY2YjFk
MGE3MDUzZTYuLjdlMTkyYjEwNjYyYTBhNzA5ODBkZjIwNjFjZWYyZGU4YzNmN2I3YzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTMyNiw3ICszMjYsNyBAQCBzdGF0aWMgdm9pZCBmZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0YwogCiAgICAgICAgICAgICAg
ICAgZGVsZXRlIG9yaWdpbnNBbmRTaXplczsKIAotICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIsIGVudHJpZXNdIHsKKyAgICAgICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCBlbnRyaWVz
ID0gV1RGTW92ZShlbnRyaWVzKV0gewogICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihlbnRyaWVzKTsKICAgICAgICAgICAgICAgICB9KTsKIApAQCAtMzUwLDcgKzM1MCw3IEBA
IHN0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjCiAgICAgICAgIGVudHJpZXMuYXBwZW5kKFdlYnNpdGVE
YXRhOjpFbnRyeSB7IFdURk1vdmUob3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUs
IDAgfSk7CiAjZW5kaWYKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlv
bkhhbmRsZXIsIGVudHJpZXNdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBs
ZXRpb25IYW5kbGVyLCBlbnRyaWVzID0gV1RGTW92ZShlbnRyaWVzKV0gewogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihlbnRyaWVzKTsKICAgICB9KTsKIH0KQEAgLTM2NywxMCArMzY3LDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGEKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgICAgICAgICBhdXRvIHdlYnNpdGVE
YXRhID0gV1RGTW92ZShtX3dlYnNpdGVEYXRhKTsKLQotICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciwgd2Vic2l0ZURhdGFdIHsKKyAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KG1fY29tcGxldGlvbkhhbmRsZXIpLCB3ZWJzaXRlRGF0YSA9IFdURk1vdmUobV93ZWJzaXRlRGF0
YSldIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3ZWJzaXRlRGF0YSk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAyYmYw
M2VlYzUyZWVlZGUxOTlkMzVmMjE3ZmY1NDU3NzRiNDA3Nzg5Li45YjQ3MzlkN2M3MjBmODlhN2Vl
MGUxNjc5ZjM3MWMzZDUwMDFjYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtNjYyLDgg
KzY2Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIHJldHJpZXZlRnJvbU1lbW9yeShjb25z
dCBUJiBvcGVyYXRpb25zLCBjb25zdCBLZXkmIGtleSwKICAgICBmb3IgKGF1dG8mIG9wZXJhdGlv
biA6IG9wZXJhdGlvbnMpIHsKICAgICAgICAgaWYgKG9wZXJhdGlvbi0+cmVjb3JkLmtleSA9PSBr
ZXkpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9j
ZXNzKSBmb3VuZCB3cml0ZSBvcGVyYXRpb24gaW4gcHJvZ3Jlc3MiKTsKLSAgICAgICAgICAgIGF1
dG8gcmVjb3JkID0gb3BlcmF0aW9uLT5yZWNvcmQ7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3JlY29yZCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVjb3JkID0gb3BlcmF0aW9uLT5yZWNvcmQsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4o
cmVjb3JkKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDJmMjZjNmEzZDVi
MDU3YmI4MmZlOGQ4NWRkN2QxNGExNjUyNmMyYTkuLjRmMDRkYWNkOGI0ZmI1NTg5ZDdjYWQwZGEz
MmQ3MmVkZDYyOWNlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5jcHAKQEAgLTEzNiw5ICsxMzYsOCBAQCBib29sIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3Rh
dGU6OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbgogICAgICAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKICAgICAgICAgCiAgICAgICAg
IGlmIChtX2RpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc1dvcmtTZXQuYWRkKCZjb25uZWN0aW9u
KS5pc05ld0VudHJ5KSB7Ci0gICAgICAgICAgICBSZWZQdHI8Q29ubmVjdGlvbj4gcHJvdGVjdGVk
Q29ubmVjdGlvbigmY29ubmVjdGlvbik7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZENvbm5lY3Rpb25dIHsKLSAgICAgICAgICAgICAgICBkaXNw
YXRjaE1lc3NhZ2VBbmRSZXNldERpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc0ZvckNvbm5lY3Rp
b24oKnByb3RlY3RlZENvbm5lY3Rpb24pOworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRDb25uZWN0aW9uID0gUmVmPENvbm5lY3Rpb24+KGNvbm5l
Y3Rpb24pXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGRpc3BhdGNoTWVzc2FnZUFuZFJl
c2V0RGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzRm9yQ29ubmVjdGlvbihwcm90ZWN0ZWRDb25u
ZWN0aW9uKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKQEAgLTY0NywxMyArNjQ2LDEz
IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9w
dHI8TWVzc2FnZURlY29kZXI+IG1lc3NhZ2UpCiAKICAgICBpZiAoIW1fd29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVycy5pc1ZhbGlkS2V5KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkpIHsK
ICAgICAgICAgUmVmUHRyPENvbm5lY3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgICAg
IFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lID0gbWVzc2FnZS0+bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpOwotICAgICAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkTWVzc2FnZVJlY2Vp
dmVyTmFtZShtZXNzYWdlUmVjZWl2ZXJOYW1lLmlzRW1wdHkoKSA/ICI8dW5rbm93biBtZXNzYWdl
IHJlY2VpdmVyPiIgOiBTdHJpbmcobWVzc2FnZVJlY2VpdmVyTmFtZS5kYXRhKCksIG1lc3NhZ2VS
ZWNlaXZlck5hbWUuc2l6ZSgpKSk7Ci0gICAgICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFt
ZSA9IG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCk7Ci0gICAgICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVy
ZWRNZXNzYWdlTmFtZShtZXNzYWdlTmFtZS5pc0VtcHR5KCkgPyAiPHVua25vd24gbWVzc2FnZT4i
IDogU3RyaW5nKG1lc3NhZ2VOYW1lLmRhdGEoKSwgbWVzc2FnZU5hbWUuc2l6ZSgpKSk7CisgICAg
ICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lUmVmZXJlbmNlID0gbWVzc2Fn
ZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpOworICAgICAgICBTdHJpbmcgbWVzc2FnZVJlY2VpdmVy
TmFtZShtZXNzYWdlUmVjZWl2ZXJOYW1lUmVmZXJlbmNlLmlzRW1wdHkoKSA/ICI8dW5rbm93biBt
ZXNzYWdlIHJlY2VpdmVyPiIgOiBTdHJpbmcobWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVyZW5jZS5k
YXRhKCksIG1lc3NhZ2VSZWNlaXZlck5hbWVSZWZlcmVuY2Uuc2l6ZSgpKSk7CisgICAgICAgIFN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZVJlZmVyZW5jZSA9IG1lc3NhZ2UtPm1lc3NhZ2VOYW1l
KCk7CisgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZShtZXNzYWdlTmFtZVJlZmVyZW5jZS5pc0Vt
cHR5KCkgPyAiPHVua25vd24gbWVzc2FnZT4iIDogU3RyaW5nKG1lc3NhZ2VOYW1lUmVmZXJlbmNl
LmRhdGEoKSwgbWVzc2FnZU5hbWVSZWZlcmVuY2Uuc2l6ZSgpKSk7CiAKLSAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzLCBjYXB0dXJlZE1lc3NhZ2VSZWNlaXZl
ck5hbWUsIGNhcHR1cmVkTWVzc2FnZU5hbWVdIHsKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNhcHR1cmVkTWVzc2FnZVJlY2VpdmVy
TmFtZS5zdHJpbmcoKS51dGY4KCksIGNhcHR1cmVkTWVzc2FnZU5hbWUuc3RyaW5nKCkudXRmOCgp
KTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVm
PENvbm5lY3Rpb24+KCp0aGlzKSwgbWVzc2FnZVJlY2VpdmVyTmFtZSA9IFdURk1vdmUobWVzc2Fn
ZVJlY2VpdmVyTmFtZSksIG1lc3NhZ2VOYW1lID0gV1RGTW92ZShtZXNzYWdlTmFtZSldKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZShtZXNzYWdlUmVjZWl2ZXJOYW1lLnV0ZjgoKSwgbWVzc2FnZU5hbWUudXRmOCgp
KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03ODIsMjAgKzc4MSwx
OSBAQCB2b2lkIENvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSgpCiAgICAgaWYgKG1fZGlk
Q2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjaykKICAgICAgICAgbV9kaWRDbG9zZU9u
Q29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKHRoaXMpOwogCi0gICAgUmVmUHRyPENvbm5lY3Rp
b24+IGNvbm5lY3Rpb24odGhpcyk7Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25u
ZWN0aW9uXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
UmVmPENvbm5lY3Rpb24+KCp0aGlzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgLy8gSWYgdGhlIGNv
bm5lY3Rpb24gaGFzIGJlZW4gZXhwbGljaXRseSBpbnZhbGlkYXRlZCBiZWZvcmUgZGlzcGF0Y2hD
b25uZWN0aW9uRGlkQ2xvc2Ugd2FzIGNhbGxlZCwKICAgICAgICAgLy8gdGhlbiB0aGUgY2xpZW50
IHdpbGwgYmUgbnVsbCBoZXJlLgotICAgICAgICBpZiAoIWNvbm5lY3Rpb24tPm1fY2xpZW50KQor
ICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPm1fY2xpZW50KQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIC8vIEJlY2F1c2Ugd2UgZGVmaW5lIGEgY29ubmVjdGlvbiBhcyBiZWluZyAi
dmFsaWQiIGJhc2VkIG9uIHdoZXRlciBpdCBoYXMgYSBudWxsIGNsaWVudCwgd2UgbnVsbCBvdXQK
ICAgICAgICAgLy8gdGhlIGNsaWVudCBiZWZvcmUgY2FsbGluZyBkaWRDbG9zZSBoZXJlLiBPdGhl
cndpc2UsIHNlbmRTeW5jIHdpbGwgdHJ5IHRvIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSBjb25uZWN0
aW9uIGFuZAogICAgICAgICAvLyB3aWxsIHRoZW4gd2FpdCBpbmRlZmluaXRlbHkgZm9yIGEgcmVw
bHkuCi0gICAgICAgIENsaWVudCogY2xpZW50ID0gY29ubmVjdGlvbi0+bV9jbGllbnQ7Ci0gICAg
ICAgIGNvbm5lY3Rpb24tPm1fY2xpZW50ID0gbnVsbHB0cjsKKyAgICAgICAgQ2xpZW50KiBjbGll
bnQgPSBwcm90ZWN0ZWRUaGlzLT5tX2NsaWVudDsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9j
bGllbnQgPSBudWxscHRyOwogCi0gICAgICAgIGNsaWVudC0+ZGlkQ2xvc2UoKmNvbm5lY3Rpb24p
OworICAgICAgICBjbGllbnQtPmRpZENsb3NlKHByb3RlY3RlZFRoaXMuZ2V0KCkpOwogICAgIH0p
OwogfQogCkBAIC04ODgsOCArODg2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjplbnF1ZXVlSW5jb21p
bmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gaW5jb21pbmcKICAgICAg
ICAgbV9pbmNvbWluZ01lc3NhZ2VzLmFwcGVuZChXVEZNb3ZlKGluY29taW5nTWVzc2FnZSkpOwog
ICAgIH0KIAotICAgIFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpc10geworICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZjxDb25uZWN0aW9uPigqdGhpcyld
KCkgbXV0YWJsZSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoT25lTWVzc2FnZSgp
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL21h
Yy9Db25uZWN0aW9uTWFjLm1tIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL21hYy9Db25u
ZWN0aW9uTWFjLm1tCmluZGV4IDg2MjZiZjI5Y2I5YjRmYjJmOGRiYTU5NzI3M2Q1ODg5ZDQzOWRh
YTQuLjVmZTBiZmJmMGNhODdiODU5NzNkOGIwZmNmMzIwMjI0Mzk4ZWIyOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMubW0KQEAgLTUxOCwx
MyArNTE4LDEzIEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigp
CiAgICAgaWYgKGRlY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBkZWNv
ZGVyLT5tZXNzYWdlTmFtZSgpID09ICJTZXRFeGNlcHRpb25Qb3J0IikgewogICAgICAgICBpZiAo
bV9pc1NlcnZlcikgewogICAgICAgICAgICAgLy8gU2VydmVyIGNvbm5lY3Rpb25zIGFyZW4ndCBz
dXBwb3NlZCB0byBoYXZlIHRoZWlyIGV4Y2VwdGlvbiBwb3J0cyBvdmVycmlkZW4uIFRyZWF0IHRo
aXMgYXMgYW4gaW52YWxpZCBtZXNzYWdlLgotICAgICAgICAgICAgUmVmUHRyPENvbm5lY3Rpb24+
IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgICAgICAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSA9IGRlY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKTsKLSAgICAgICAg
ICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRNZXNzYWdlUmVjZWl2ZXJOYW1lKFN0cmluZyhtZXNz
YWdlUmVjZWl2ZXJOYW1lLmRhdGEoKSwgbWVzc2FnZVJlY2VpdmVyTmFtZS5zaXplKCkpKTsKLSAg
ICAgICAgICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSA9IGRlY29kZXItPm1lc3NhZ2VO
YW1lKCk7Ci0gICAgICAgICAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkTWVzc2FnZU5hbWUoU3Ry
aW5nKG1lc3NhZ2VOYW1lLmRhdGEoKSwgbWVzc2FnZU5hbWUuc2l6ZSgpKSk7Ci0gICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMsIGNhcHR1cmVkTWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgY2FwdHVyZWRNZXNzYWdlTmFtZV0gewotICAgICAgICAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNhcHR1cmVkTWVz
c2FnZVJlY2VpdmVyTmFtZS5zdHJpbmcoKS51dGY4KCksIGNhcHR1cmVkTWVzc2FnZU5hbWUuc3Ry
aW5nKCkudXRmOCgpKTsKKyAgICAgICAgICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lUmVmZXJlbmNlID0gZGVjb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpOworICAgICAg
ICAgICAgU3RyaW5nIG1lc3NhZ2VSZWNlaXZlck5hbWUoU3RyaW5nKG1lc3NhZ2VSZWNlaXZlck5h
bWVSZWZlcmVuY2UuZGF0YSgpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lUmVmZXJlbmNlLnNpemUoKSkp
OworICAgICAgICAgICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lUmVmZXJlbmNlID0gZGVj
b2Rlci0+bWVzc2FnZU5hbWUoKTsKKyAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZShTdHJp
bmcobWVzc2FnZU5hbWVSZWZlcmVuY2UuZGF0YSgpLCBtZXNzYWdlTmFtZVJlZmVyZW5jZS5zaXpl
KCkpKTsKKworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRU
aGlzID0gUmVmPENvbm5lY3Rpb24+KCp0aGlzKSwgbWVzc2FnZVJlY2VpdmVyTmFtZSA9IFdURk1v
dmUobWVzc2FnZVJlY2VpdmVyTmFtZSksIG1lc3NhZ2VOYW1lID0gV1RGTW92ZShtZXNzYWdlTmFt
ZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hE
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZVJlY2VpdmVyTmFtZS51dGY4KCksIG1lc3Nh
Z2VOYW1lLnV0ZjgoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9y
YWdlU2hpbS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0u
bW0KaW5kZXggNzAxMTc2M2MzODU0YmY3YmY0MDY1MjgwNjIwYjQ2ODkxMGFiMDRjZC4uMDljZjFj
Y2M5NjUzNDc4OWMzNTk2YjhhMDYxYzVlNWVjMWI3MTEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCkBAIC0xMjMsMTAgKzEyMyw5IEBAIC0g
KHZvaWQpX2dldENvb2tpZUhlYWRlcnNGb3JUYXNrOihOU1VSTFNlc3Npb25UYXNrKil0YXNrIGNv
bXBsZXRpb25IYW5kbGVyOihDb21wCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRh
aW5QdHI8TlNVUkxTZXNzaW9uVGFzaz4gc3Ryb25nVGFzayA9IHRhc2s7CiAgICAgQ29tcGxldGlv
bkhhbmRsZXJCbG9jayBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBbY29tcGxldGlvbkhhbmRsZXIg
Y29weV07Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdHJvbmdUYXNrLCBjb21wbGV0
aW9uSGFuZGxlckNvcHldIHsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVh
ZGVycyA9IGFkb3B0Q0YoV2ViS2l0Ojp3ZWJLaXRDb29raWVTdG9yYWdlQ29weVJlcXVlc3RIZWFk
ZXJGaWVsZHNGb3JVUkwobnVsbHB0ciwgKENGVVJMUmVmKVtbc3Ryb25nVGFzayBjdXJyZW50UmVx
dWVzdF0gVVJMXSkpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGFzayA9IFJldGFp
blB0cjxOU1VSTFNlc3Npb25UYXNrPih0YXNrKSwgY29tcGxldGlvbkhhbmRsZXJDb3B5XSB7Cisg
ICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlcnMgPSBhZG9wdENGKFdlYktp
dDo6d2ViS2l0Q29va2llU3RvcmFnZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRzRm9yVVJMKG51bGxw
dHIsIChDRlVSTFJlZilbW3Rhc2sgY3VycmVudFJlcXVlc3RdIFVSTF0pKTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXJDb3B5KGhlYWRlcnMuZ2V0KCkpOwogICAgICAgICBbY29tcGxldGlvbkhh
bmRsZXJDb3B5IHJlbGVhc2VdOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAKaW5k
ZXggNWYyNjIwNDU5ZjNlYTVmMGY5MzRjNTc2MDY3NzM4Mzk4MmE2MGE2ZS4uMDgyNGUxMmFhM2Nk
YTUxNjAxYWY1ZmQ5ZjkxMGMwOWViM2IzMjhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3Bw
CkBAIC0zMDYsMzEgKzMwNiwyNyBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRFeHRl
bnNpb24+IGNyZWF0ZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZQogCiB2b2lkIFVz
ZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6Omxvb2t1cENvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RG
OjpTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZChSZWZQdHI8QVBJOjpVc2Vy
Q29udGVudEV4dGVuc2lvbj4sIHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIFJlZlB0cjxVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlPiBzZWxmKHRoaXMpOwotICAg
IFN0cmluZ0NhcHR1cmUgaWRlbnRpZmllckNhcHR1cmUoaWRlbnRpZmllcik7Ci0gICAgU3RyaW5n
Q2FwdHVyZSBwYXRoQ2FwdHVyZShtX3N0b3JlUGF0aCk7Ci0KLSAgICBtX3JlYWRRdWV1ZS0+ZGlz
cGF0Y2goW3NlbGYsIGlkZW50aWZpZXJDYXB0dXJlLCBwYXRoQ2FwdHVyZSwgY29tcGxldGlvbkhh
bmRsZXJdIHsKLSAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHBhdGhDYXB0dXJl
LnN0cmluZygpLCBpZGVudGlmaWVyQ2FwdHVyZS5zdHJpbmcoKSk7CisgICAgbV9yZWFkUXVldWUt
PmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmPE9iamVjdD4oKnRoaXMpLCBpZGVudGlmaWVy
ID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNv
bGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9y
ZVBhdGgsIGlkZW50aWZpZXIpOwogICAgICAgICAKICAgICAgICAgQ29udGVudEV4dGVuc2lvbk1l
dGFEYXRhIG1ldGFEYXRhOwogICAgICAgICBEYXRhIGZpbGVEYXRhOwogICAgICAgICBpZiAoIW9w
ZW5BbmRNYXBDb250ZW50RXh0ZW5zaW9uKHBhdGgsIG1ldGFEYXRhLCBmaWxlRGF0YSkpIHsKLSAg
ICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihu
dWxscHRyLCBFcnJvcjo6TG9va3VwRmFpbGVkKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobWV0YURhdGEudmVy
c2lvbiAhPSBVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlOjpDdXJyZW50Q29udGVudEV4dGVuc2lv
bkZpbGVWZXJzaW9uKSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Nl
bGYsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgRXJyb3I6OlZlcnNpb25NaXNtYXRjaCk7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBpZGVudGlmaWVyQ2FwdHVyZSwg
ZmlsZURhdGEsIG1ldGFEYXRhLCBjb21wbGV0aW9uSGFuZGxlcl0gewotICAgICAgICAgICAgUmVm
UHRyPEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb24+IHVzZXJDb250ZW50RXh0ZW5zaW9uID0gY3Jl
YXRlRXh0ZW5zaW9uKGlkZW50aWZpZXJDYXB0dXJlLnN0cmluZygpLCBtZXRhRGF0YSwgZmlsZURh
dGEpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKSwg
ZmlsZURhdGEgPSBXVEZNb3ZlKGZpbGVEYXRhKSwgbWV0YURhdGEgPSBXVEZNb3ZlKG1ldGFEYXRh
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAg
ICAgICAgICAgUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb24+IHVzZXJDb250ZW50RXh0
ZW5zaW9uID0gY3JlYXRlRXh0ZW5zaW9uKGlkZW50aWZpZXIsIG1ldGFEYXRhLCBmaWxlRGF0YSk7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih1c2VyQ29udGVudEV4dGVuc2lvbiwgeyB9
KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0zMzgsMjYgKzMzNCwyMSBAQCB2b2lkIFVzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmU6Omxvb2t1cENvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RGOjpT
dHJpbmcmIGlkZW50aQogCiB2b2lkIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OmNvbXBpbGVD
b250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXVEY6OlN0cmlu
ZyYmIGpzb24sIHN0ZDo6ZnVuY3Rpb248dm9pZChSZWZQdHI8QVBJOjpVc2VyQ29udGVudEV4dGVu
c2lvbj4sIHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJlZlB0
cjxVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlPiBzZWxmKHRoaXMpOwotICAgIFN0cmluZ0NhcHR1
cmUgaWRlbnRpZmllckNhcHR1cmUoaWRlbnRpZmllcik7Ci0gICAgU3RyaW5nQ2FwdHVyZSBqc29u
Q2FwdHVyZShXVEZNb3ZlKGpzb24pKTsKLSAgICBTdHJpbmdDYXB0dXJlIHBhdGhDYXB0dXJlKG1f
c3RvcmVQYXRoKTsKLQotICAgIG1fY29tcGlsZVF1ZXVlLT5kaXNwYXRjaChbc2VsZiwgaWRlbnRp
ZmllckNhcHR1cmUsIGpzb25DYXB0dXJlLCBwYXRoQ2FwdHVyZSwgY29tcGxldGlvbkhhbmRsZXJd
ICgpIG11dGFibGUgewotICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgocGF0aENh
cHR1cmUuc3RyaW5nKCksIGlkZW50aWZpZXJDYXB0dXJlLnN0cmluZygpKTsKKyAgICBtX2NvbXBp
bGVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8T2JqZWN0PigqdGhpcyksIGlk
ZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBqc29uID0ganNvbi5pc29sYXRl
ZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAg
ICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyKTsK
IAogICAgICAgICBDb250ZW50RXh0ZW5zaW9uTWV0YURhdGEgbWV0YURhdGE7CiAgICAgICAgIERh
dGEgZmlsZURhdGE7Ci0gICAgICAgIGF1dG8gZXJyb3IgPSBjb21waWxlZFRvRmlsZShqc29uQ2Fw
dHVyZS5yZWxlYXNlU3RyaW5nKCksIHBhdGgsIG1ldGFEYXRhLCBmaWxlRGF0YSk7CisgICAgICAg
IGF1dG8gZXJyb3IgPSBjb21waWxlZFRvRmlsZShXVEZNb3ZlKGpzb24pLCBwYXRoLCBtZXRhRGF0
YSwgZmlsZURhdGEpOwogICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgZXJyb3IsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0ciwgZXJyb3IpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3NlbGYsIGlkZW50aWZpZXJDYXB0dXJlLCBmaWxlRGF0YSwgbWV0YURhdGEsIGNvbXBsZXRpb25I
YW5kbGVyXSB7Ci0gICAgICAgICAgICBSZWZQdHI8QVBJOjpVc2VyQ29udGVudEV4dGVuc2lvbj4g
dXNlckNvbnRlbnRFeHRlbnNpb24gPSBjcmVhdGVFeHRlbnNpb24oaWRlbnRpZmllckNhcHR1cmUu
c3RyaW5nKCksIG1ldGFEYXRhLCBmaWxlRGF0YSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGlkZW50aWZp
ZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpLCBmaWxlRGF0YSA9IFdURk1vdmUoZmlsZURhdGEpLCBt
ZXRhRGF0YSA9IFdURk1vdmUobWV0YURhdGEpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgICAgICBSZWZQdHI8QVBJOjpVc2VyQ29udGVu
dEV4dGVuc2lvbj4gdXNlckNvbnRlbnRFeHRlbnNpb24gPSBjcmVhdGVFeHRlbnNpb24oaWRlbnRp
ZmllciwgbWV0YURhdGEsIGZpbGVEYXRhKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHVzZXJDb250ZW50RXh0ZW5zaW9uLCB7IH0pOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTM2
NSwyMSArMzU2LDE3IEBAIHZvaWQgVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZTo6Y29tcGlsZUNv
bnRlbnRFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50CiAKIHZvaWQgVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZTo6cmVtb3ZlQ29udGVudEV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmlu
ZyYgaWRlbnRpZmllciwgc3RkOjpmdW5jdGlvbjx2b2lkKHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIFJlZlB0cjxVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlPiBz
ZWxmKHRoaXMpOwotICAgIFN0cmluZ0NhcHR1cmUgaWRlbnRpZmllckNhcHR1cmUoaWRlbnRpZmll
cik7Ci0gICAgU3RyaW5nQ2FwdHVyZSBwYXRoQ2FwdHVyZShtX3N0b3JlUGF0aCk7Ci0KLSAgICBt
X3JlbW92ZVF1ZXVlLT5kaXNwYXRjaChbc2VsZiwgaWRlbnRpZmllckNhcHR1cmUsIHBhdGhDYXB0
dXJlLCBjb21wbGV0aW9uSGFuZGxlcl0gewotICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3Rl
ZFBhdGgocGF0aENhcHR1cmUuc3RyaW5nKCksIGlkZW50aWZpZXJDYXB0dXJlLnN0cmluZygpKTsK
KyAgICBtX3JlbW92ZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZjxPYmplY3Q+
KCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0
aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIHBhdGggPSBj
b25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyKTsKIAogICAgICAgICBpZiAoIVdl
YkNvcmU6OmRlbGV0ZUZpbGUocGF0aCkpIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbc2VsZiwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihFcnJvcjo6UmVtb3ZlRmFpbGVkKTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICB9KTsKICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9j
ZXNzTGF1bmNoZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nl
c3NMYXVuY2hlci5jcHAKaW5kZXggZGEyYjgwZTY0YTRiNjg4OTkzY2FmZmE1ZTBlMWJmOTYxZTll
MmI0MS4uYTkwM2RiNzU1YWJkYWY4ZjA4YmE2NWZhNGM0MTllZjBlOTBiOWExZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5j
cHAKQEAgLTQ1LDggKzQ1LDcgQEAgUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzTGF1bmNoZXIoQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IExhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGkKIHsKICAgICBtX2lz
TGF1bmNoaW5nID0gdHJ1ZTsKIAotICAgIFJlZlB0cjxQcm9jZXNzTGF1bmNoZXI+IHByb2Nlc3NM
YXVuY2hlcih0aGlzKTsKLSAgICBwcm9jZXNzTGF1bmNoZXJXb3JrUXVldWUoKS5kaXNwYXRjaChb
cHJvY2Vzc0xhdW5jaGVyXSB7CisgICAgcHJvY2Vzc0xhdW5jaGVyV29ya1F1ZXVlKCkuZGlzcGF0
Y2goW3Byb2Nlc3NMYXVuY2hlciA9IFJlZjxQcm9jZXNzTGF1bmNoZXI+KCp0aGlzKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgcHJvY2Vzc0xhdW5jaGVyLT5sYXVuY2hQcm9jZXNzKCk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1By
b2Nlc3NMYXVuY2hlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9t
YWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCmluZGV4IDgzZDA1OTQ4MmQ0NTRlODU5YmE1NmYyNGFm
MTkwNTgyYTNhNmNjZjQuLjQ5ZWRkYmZiODI5YTA0ZjNjNDk3ZTE2MTU2MTRhZTZlMTZlNzZkYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vz
c0xhdW5jaGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9t
YWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCkBAIC0xODAsOSArMTgwLDggQEAgc3RhdGljIHZvaWQg
Y29ubmVjdFRvU2VydmljZShjb25zdCBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxh
dW5jaE9wdGlvbnMKICAgICAgICAgICAgIC8vIEFuZCB0aGUgcmVjZWl2ZSByaWdodC4KICAgICAg
ICAgICAgIG1hY2hfcG9ydF9tb2RfcmVmcyhtYWNoX3Rhc2tfc2VsZigpLCBsaXN0ZW5pbmdQb3J0
LCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgLTEpOwogCi0gICAgICAgICAgICBSZWZQdHI8UHJv
Y2Vzc0xhdW5jaGVyPiBwcm90ZWN0b3IodGhhdCk7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RvciwgZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9u
XSB7Ci0gICAgICAgICAgICAgICAgKCpwcm90ZWN0b3IuKmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nl
c3NGdW5jdGlvbikoMCwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKCkpOworICAgICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGF0ID0gUmVmUHRyPFByb2Nl
c3NMYXVuY2hlcj4odGhhdCksIGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbl0oKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgICAgICAoKnByb3RlY3RlZFRoYXQuKmRpZEZpbmlzaExhdW5j
aGluZ1Byb2Nlc3NGdW5jdGlvbikoMCwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKCkpOwog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQodHlw
ZSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKQEAgLTE5Miw5ICsxOTEsOCBAQCBzdGF0aWMgdm9p
ZCBjb25uZWN0VG9TZXJ2aWNlKGNvbnN0IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYg
bGF1bmNoT3B0aW9ucwogICAgICAgICAgICAgcGlkX3QgcHJvY2Vzc0lkZW50aWZpZXIgPSB4cGNf
Y29ubmVjdGlvbl9nZXRfcGlkKGNvbm5lY3Rpb24uZ2V0KCkpOwogCiAgICAgICAgICAgICAvLyBX
ZSd2ZSBmaW5pc2hlZCBsYXVuY2hpbmcgdGhlIHByb2Nlc3MsIG1lc3NhZ2UgYmFjayB0byB0aGUg
bWFpbiBydW4gbG9vcC4gVGhpcyB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIGNvbm5lY3Rpb24uCi0g
ICAgICAgICAgICBSZWZQdHI8UHJvY2Vzc0xhdW5jaGVyPiBwcm90ZWN0b3IodGhhdCk7Ci0gICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RvciwgZGlkRmluaXNoTGF1
bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uLCBwcm9jZXNzSWRlbnRpZmllciwgbGlzdGVuaW5nUG9ydCwg
Y29ubmVjdGlvbl0gewotICAgICAgICAgICAgICAgICgqcHJvdGVjdG9yLipkaWRGaW5pc2hMYXVu
Y2hpbmdQcm9jZXNzRnVuY3Rpb24pKHByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCwgY29ubmVjdGlvbikpOworICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGF0ID0gUmVmUHRyPFByb2Nlc3NMYXVu
Y2hlcj4odGhhdCksIGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbiwgcHJvY2Vzc0lk
ZW50aWZpZXIsIGxpc3RlbmluZ1BvcnQsIGNvbm5lY3Rpb25dIHsKKyAgICAgICAgICAgICAgICAo
KnByb3RlY3RlZFRoYXQuKmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbikocHJvY2Vz
c0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0LCBj
b25uZWN0aW9uKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMmI2
OWQ3MTI2YWU4NTkxYjA1YzU4NmI4YzNiNTcyZjZlMDNhMWUwMi4uN2E1ZWFlNTc1ODkzNThkMjI5
ZjRlNWE4MDkzNGRjOWZmYjQ3NDViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNTU3LDE1ICs1NTcsMTUgQEAgdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoSGFzaFNldDxSZWZQdHIKIHsKICAgICBSZWZQdHI8U3RvcmFnZU1hbmFnZXI+IHN0b3Jh
Z2VNYW5hZ2VyKHRoaXMpOwogCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3N0b3JhZ2VNYW5hZ2Vy
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFN0
b3JhZ2VNYW5hZ2VyPigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4gb3JpZ2luczsKIAotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlIDogc3RvcmFnZU1hbmFnZXItPm1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Vz
LnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgewogICAgICAgICAg
ICAgZm9yIChhdXRvJiBvcmlnaW4gOiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+b3JpZ2lucygp
KQogICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKFdURk1vdmUob3JpZ2luKSk7CiAgICAgICAg
IH0KIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdpbnMsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdpbnMpKTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CkBAIC01NzMsMTAgKzU3Myw4IEBAIHZvaWQgU3RvcmFnZU1hbmFn
ZXI6OmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKEhhc2hTZXQ8
UmVmUHRyCiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVNlc3Npb25TdG9yYWdlT3JpZ2lu
cyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUmVm
UHRyPFN0b3JhZ2VNYW5hZ2VyPiBzdG9yYWdlTWFuYWdlcih0aGlzKTsKLQotICAgIG1fcXVldWUt
PmRpc3BhdGNoKFtzdG9yYWdlTWFuYWdlciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgZm9yIChhdXRvJiBzZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSA6IHN0b3JhZ2VNYW5hZ2VyLT5tX3Nlc3Npb25TdG9yYWdlTmFtZXNw
YWNlcy52YWx1ZXMoKSkKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZjxTdG9yYWdlTWFuYWdlcj4oKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBmb3IgKGF1dG8mIHNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVz
KCkpCiAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdl
QXJlYXMoKTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwpAQCAtNTkxLDEwICs1ODksOSBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8VwogICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKICAgICAgICAgY29waWVkT3Jp
Z2lucy51bmNoZWNrZWRBcHBlbmQob3JpZ2luLT5pc29sYXRlZENvcHkoKSk7CiAKLSAgICBSZWZQ
dHI8U3RvcmFnZU1hbmFnZXI+IHN0b3JhZ2VNYW5hZ2VyKHRoaXMpOwotICAgIG1fcXVldWUtPmRp
c3BhdGNoKFtzdG9yYWdlTWFuYWdlciwgY29waWVkT3JpZ2lucywgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxTdG9yYWdlTWFuYWdlcj4oKnRoaXMp
LCBjb3BpZWRPcmlnaW5zID0gV1RGTW92ZShjb3BpZWRPcmlnaW5zKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgZm9y
IChhdXRvJiBvcmlnaW4gOiBjb3BpZWRPcmlnaW5zKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8m
IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDogc3RvcmFnZU1hbmFnZXItPm1fc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAgICAgICAgZm9yIChhdXRvJiBzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQogICAg
ICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01h
dGNoaW5nT3JpZ2luKCpvcmlnaW4pOwogICAgICAgICB9CiAKQEAgLTYwNCwyMCArNjAxLDE4IEBA
IHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVNlc3Npb25TdG9yYWdlRW50cmllc0Zvck9yaWdp
bnMoY29uc3QgVmVjdG9yPFJlZlB0cjxXCiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldExvY2Fs
U3RvcmFnZU9yaWdpbnMoc3RkOjpmdW5jdGlvbjx2b2lkIChIYXNoU2V0PFJlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJlZlB0
cjxTdG9yYWdlTWFuYWdlcj4gc3RvcmFnZU1hbmFnZXIodGhpcyk7Ci0KLSAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbc3RvcmFnZU1hbmFnZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWY8U3RvcmFnZU1hbmFnZXI+KCp0aGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
SGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwogCi0gICAgICAgIGZvciAo
YXV0byYgb3JpZ2luIDogc3RvcmFnZU1hbmFnZXItPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLT5vcmlnaW5zKCkpCisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbV9sb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKSkKICAgICAgICAgICAgIG9yaWdpbnMuYWRkKFdU
Rk1vdmUob3JpZ2luKSk7CiAKLSAgICAgICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UgOiBzdG9yYWdlTWFuYWdlci0+bV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2VzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygp
KSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZS0+b3JpZ2lucygpKQogICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKFdURk1v
dmUob3JpZ2luKSk7CiAgICAgICAgIH0KIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW29yaWdpbnMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbb3JpZ2lu
cyA9IFdURk1vdmUob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKG9yaWdpbnMpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC02MjUsMTIgKzYyMCwx
MCBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5zKHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoSGFzaFNldDxSZWZQdHI8VwogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRM
b2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKHN0ZDo6ZnVuY3Rpb248dm9pZCAoVmVjdG9yPExvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIFJlZlB0cjxTdG9yYWdlTWFuYWdlcj4gc3RvcmFnZU1hbmFnZXIodGhpcyk7
CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8U3RvcmFn
ZU1hbmFnZXI+KCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBvcmlnaW5EZXRhaWxzID0gbV9sb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPm9yaWdpbkRldGFpbHMoKTsKIAotICAgIG1fcXVldWUt
PmRpc3BhdGNoKFtzdG9yYWdlTWFuYWdlciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBvcmlnaW5EZXRhaWxz
ID0gc3RvcmFnZU1hbmFnZXItPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5vcmlnaW5E
ZXRhaWxzKCk7Ci0KLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5EZXRh
aWxzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdpbkRldGFpbHMg
PSBXVEZNb3ZlKG9yaWdpbkRldGFpbHMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShvcmlnaW5EZXRhaWxzKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtNjM4
LDMzICs2MzEsMjggQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2lu
RGV0YWlscyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxMb2MKIAogdm9pZCBTdG9yYWdlTWFu
YWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihjb25zdCBTZWN1cml0eU9y
aWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgUmVmUHRyPFN0b3JhZ2VNYW5hZ2VyPiBzdG9y
YWdlTWFuYWdlcih0aGlzKTsKLQotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gY29waWVkT3Jp
Z2luID0gc2VjdXJpdHlPcmlnaW4uaXNvbGF0ZWRDb3B5KCk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3N0b3JhZ2VNYW5hZ2VyLCBjb3BpZWRPcmlnaW5dIHsKLSAgICAgICAgZm9yIChhdXRvJiBs
b2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBzdG9yYWdlTWFuYWdlci0+bV9sb2NhbFN0b3JhZ2VOYW1l
c3BhY2VzLnZhbHVlcygpKQotICAgICAgICAgICAgbG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVh
clN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKCpjb3BpZWRPcmlnaW4pOworICAgIG1fcXVldWUt
PmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFN0b3JhZ2VNYW5hZ2VyPigqdGhp
cyksIGNvcGllZE9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLmlzb2xhdGVkQ29weSgpXSgpIG11dGFi
bGUgeworICAgICAgICBmb3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxT
dG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVz
cGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihjb3BpZWRPcmlnaW4pOwogCi0g
ICAgICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogc3RvcmFn
ZU1hbmFnZXItPm1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKLSAg
ICAgICAgICAgIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJl
YXNNYXRjaGluZ09yaWdpbigqY29waWVkT3JpZ2luKTsKKyAgICAgICAgZm9yIChhdXRvJiB0cmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZXMudmFsdWVzKCkpCisgICAgICAgICAgICB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4oY29waWVkT3JpZ2luKTsKIAotICAg
ICAgICBzdG9yYWdlTWFuYWdlci0+bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRlbGV0
ZURhdGFiYXNlV2l0aE9yaWdpbihjb3BpZWRPcmlnaW4uZ2V0KCkpOworICAgICAgICBtX2xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci0+ZGVsZXRlRGF0YWJhc2VXaXRoT3JpZ2luKGNvcGllZE9y
aWdpbi5wdHIoKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxv
Y2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNpbmNlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQgdGltZSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIFJlZlB0cjxTdG9yYWdlTWFuYWdlcj4gc3RvcmFnZU1hbmFnZXIodGhpcyk7
Ci0KLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbc3RvcmFnZU1hbmFnZXIsIHRpbWUsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGF1dG8gZGVsZXRlZE9yaWdpbnMgPSBzdG9yYWdlTWFuYWdlci0+bV9sb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXItPmRlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UodGltZSk7CisgICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8U3RvcmFnZU1hbmFn
ZXI+KCp0aGlzKSwgdGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBkZWxldGVkT3JpZ2lucyA9IG1fbG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKHRp
bWUpOwogCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGVsZXRlZE9yaWdpbnMp
IHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogc3RvcmFn
ZU1hbmFnZXItPm1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAgICAg
IGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2VzLnZhbHVlcygpKQogICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xl
YXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihvcmlnaW4uZ2V0KCkpOwogICAgICAgICB9CiAK
LSAgICAgICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBzdG9y
YWdlTWFuYWdlci0+bV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQor
ICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fdHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKICAgICAgICAgICAgIHRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKIAogICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwpAQCAtNjc5LDE2ICs2NjcsMTUgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxT
dG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWIKICAgICBmb3Ig
KGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCiAgICAgICAgIGNvcGllZE9yaWdpbnMudW5jaGVja2Vk
QXBwZW5kKG9yaWdpbi0+aXNvbGF0ZWRDb3B5KCkpOwogCi0gICAgUmVmUHRyPFN0b3JhZ2VNYW5h
Z2VyPiBzdG9yYWdlTWFuYWdlcih0aGlzKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbc3RvcmFn
ZU1hbmFnZXIsIGNvcGllZE9yaWdpbnMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWY8U3RvcmFnZU1hbmFnZXI+KCp0aGlzKSwgY29waWVkT3JpZ2lu
cyA9IFdURk1vdmUoY29waWVkT3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2lu
IDogY29waWVkT3JpZ2lucykgewotICAgICAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VO
YW1lc3BhY2UgOiBzdG9yYWdlTWFuYWdlci0+bV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVl
cygpKQorICAgICAgICAgICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX2xv
Y2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCiAgICAgICAgICAgICAgICAgbG9jYWxTdG9y
YWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKCpvcmlnaW4pOwog
Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6
IHN0b3JhZ2VNYW5hZ2VyLT5tX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVz
KCkpCisgICAgICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKICAgICAgICAg
ICAgICAgICB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFz
TWF0Y2hpbmdPcmlnaW4oKm9yaWdpbik7CiAKLSAgICAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLT5t
X2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci0+ZGVsZXRlRGF0YWJhc2VXaXRoT3JpZ2luKG9y
aWdpbi5nZXQoKSk7CisgICAgICAgICAgICBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci0+
ZGVsZXRlRGF0YWJhc2VXaXRoT3JpZ2luKG9yaWdpbi5nZXQoKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1Nzk1YjI1
Y2M3NmIyNmEyYzUzZjE3MGE5ZjI2MjllZjJhMzdlM2NlLi4xMjA0NjQyNjFkOWY0NjRlOGNmMmFm
ZDJjMGQ5NzVhYjBiMGJiMmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMjcxNCw3ICsyNzE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVj
b2RlUHJvZmlsZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKIHZv
aWQgV2ViUGFnZVByb3h5Ojppc1dlYlByb2Nlc3NSZXNwb25zaXZlKHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlKT4gY2FsbGJhY2tGdW5jdGlvbikKIHsKICAg
ICBpZiAoIWlzVmFsaWQoKSkgewotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Nh
bGxiYWNrRnVuY3Rpb25dIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxs
YmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKV0gewogICAgICAgICAgICAg
Ym9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlID0gdHJ1ZTsKICAgICAgICAgICAgIGNhbGxiYWNr
RnVuY3Rpb24oaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmZDViYzVmYmY5MDEw
NWE1YjA0MDE3ZDRmM2Y5NzhiOWY0OTcwOTVlLi4zMzhhODJkYjhlMjU3NDY3MzIyYjhhYjg0OTMw
NjRlMjU0ZjM1MjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtOTk4LDcgKzk5OCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojppc1Jlc3Bv
bnNpdmUoc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2CiB7CiAg
ICAgaWYgKG1faXNSZXNwb25zaXZlID09IE5vT3JNYXliZTo6Tm8pIHsKICAgICAgICAgaWYgKGNh
bGxiYWNrKSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNr
XSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldIHsKICAgICAgICAgICAgICAgICBib29sIGlzV2ViUHJvY2Vzc1Jlc3Bv
bnNpdmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhpc1dlYlByb2Nlc3NSZXNw
b25zaXZlKTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDY3NDg3N2Fj
ZGRjZTkzOTc4YmI4OWU1ODUxNGRmMDgyMjg5NWIyY2IuLmIwMzg1MTViNDRlYjhiNmRhYTljMzEy
OGZkYWFkYWFjMWE3YzIyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTIzNSw4ICsyMzUsNyBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldAogICAgICAgICAgICAgaWYgKHBlbmRpbmdDYWxsYmFj
a3MpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBSZWZQdHI8Q2FsbGJh
Y2tBZ2dyZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0b3IodGhpcyk7Ci0gICAgICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBSZWY8Q2FsbGJh
Y2tBZ2dyZWdhdG9yPigqdGhpcyldKCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgICAgICBXVEY6
OlZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gcmVjb3JkczsKICAgICAgICAgICAgICAgICByZWNv
cmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhUmVjb3Jkcy5zaXplKCkpOwpAQCAtMjY1LDE3ICsyNjQsMTUgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBP
cHRpb25TZXQKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2so
KTsKICAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW2ZldGNoT3B0aW9ucywgbWVkaWFDYWNoZURp
cmVjdG9yeSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CiAgICAgICAgICAgICBIYXNoU2V0PFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnMgPSBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKG1lZGlhQ2FjaGVEaXJlY3Rvcnkuc3RyaW5nKCkp
OwotICAgICAgICAgICAgV2Vic2l0ZURhdGEqIHdlYnNpdGVEYXRhID0gbmV3IFdlYnNpdGVEYXRh
OworICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykgewogICAgICAgICAgICAgICAg
IFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7IG9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpEaXNr
Q2FjaGUsIDAgfTsKLSAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS0+ZW50cmllcy5hcHBlbmQo
V1RGTW92ZShlbnRyeSkpOworICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBw
ZW5kKFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAg
ICAgICAgV1RGOjpSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvciwg
b3JpZ2lucywgd2Vic2l0ZURhdGFdIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKCp3ZWJzaXRlRGF0YSkpOwotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGRlbGV0ZSB3ZWJzaXRlRGF0YTsKKyAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yLCBvcmlnaW5z
ID0gV1RGTW92ZShvcmlnaW5zKSwgd2Vic2l0ZURhdGEgPSBXVEZNb3ZlKHdlYnNpdGVEYXRhKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBl
bmRpbmdDYWxsYmFjayhXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfSk7CiAjZW5kaWYKQEAgLTM2NSw3ICszNjIsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OmZldGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlv
blNldAogICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbZmV0Y2hPcHRpb25zLCBhcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1l
LCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIGF1dG8gc3RvcmFnZSA9IFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeS5zdHJpbmcoKSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZS5z
dHJpbmcoKSk7CiAKLSAgICAgICAgICAgIFdlYnNpdGVEYXRhKiB3ZWJzaXRlRGF0YSA9IG5ldyBX
ZWJzaXRlRGF0YTsKKyAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogCiAgICAg
ICAgICAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7
CiAgICAgICAgICAgICBzdG9yYWdlLT5nZXRPcmlnaW5zV2l0aENhY2hlKG9yaWdpbnMpOwpAQCAt
Mzc0LDEzICszNzEsMTEgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQKICAgICAgICAgICAgICAg
ICB1aW50NjRfdCBzaXplID0gZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hP
cHRpb246OkNvbXB1dGVTaXplcykgPyBzdG9yYWdlLT5kaXNrVXNhZ2VGb3JPcmlnaW4oKm9yaWdp
bikgOiAwOwogICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7IG9yaWdp
biwgV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgc2l6ZSB9Owog
Ci0gICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEtPmVudHJpZXMuYXBwZW5kKFdURk1vdmUoZW50
cnkpKTsKKyAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXVEZNb3Zl
KGVudHJ5KSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFdURjo6UnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IsIG9yaWdpbnMsIHdlYnNpdGVEYXRhXSgp
IG11dGFibGUgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVu
ZGluZ0NhbGxiYWNrKFdURk1vdmUoKndlYnNpdGVEYXRhKSk7Ci0KLSAgICAgICAgICAgICAgICBk
ZWxldGUgd2Vic2l0ZURhdGE7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W2NhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyksIHdlYnNpdGVE
YXRhID0gV1RGTW92ZSh3ZWJzaXRlRGF0YSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soV1RGTW92ZSh3ZWJzaXRl
RGF0YSkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTM5NCw3ICsz
ODksNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldAogICAgICAgICAgICAgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CiAgICAgICAgICAgICBXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXJXaXRoRGF0YWJhc2VQYXRoKHdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5LnN0cmluZygpKS0+b3JpZ2lucyhvcmlnaW5zKTsKIAotICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IsIG9yaWdpbnNdKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdn
cmVnYXRvciwgb3JpZ2lucyA9IFdURk1vdmUob3JpZ2lucyldKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CiAgICAgICAgICAgICAgICAgZm9yIChh
dXRvJiBvcmlnaW4gOiBvcmlnaW5zKQogICAgICAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5l
bnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBXVEZNb3ZlKG9yaWdpbiksIFdlYnNp
dGVEYXRhVHlwZTo6V2ViU1FMRGF0YWJhc2VzLCAwIH0pOwpAQCAtNDI1LDcgKzQyMCw3IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgT3B0aW9uU2V0CiAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5LCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIGF1
dG8gb3JpZ2lucyA9IG1lZGlhS2V5T3JpZ2lucyhtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LnN0
cmluZygpKTsKIAotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFj
a0FnZ3JlZ2F0b3IsIG9yaWdpbnNdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2lucyA9IFdURk1vdmUob3Jp
Z2lucyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURh
dGE7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQogICAgICAg
ICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50
cnkgeyBXVEZNb3ZlKG9yaWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6TWVkaWFLZXlzLCAwIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggYjliMjk2Y2UxYmU4NmRkZTI3NmQ3ZjI2NDQz
MGMyNTA2OGZhOTk0Zi4uMzE1MWUxNGViNWU5NWU0NmIwNmYwZDdjZjEwOTg1Y2EyNGY2MmY0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC0zMDIsOSArMzAyLDggQEAgdm9pZCBOZXRz
Y2FwZVBsdWdpbjo6cG9wUG9wdXBzRW5hYmxlZFN0YXRlKCkKIAogdm9pZCBOZXRzY2FwZVBsdWdp
bjo6cGx1Z2luVGhyZWFkQXN5bmNDYWxsKHZvaWQgKCpmdW5jdGlvbikodm9pZCopLCB2b2lkKiB1
c2VyRGF0YSkKIHsKLSAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IHBsdWdpbih0aGlzKTsKLSAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3BsdWdpbiwgZnVuY3Rpb24sIHVzZXJEYXRhXSB7
Ci0gICAgICAgIGlmICghcGx1Z2luLT5tX2lzU3RhcnRlZCkKKyAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8TmV0c2NhcGVQbHVnaW4+KCp0aGlzKSwgZnVu
Y3Rpb24sIHVzZXJEYXRhXSB7CisgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+bV9pc1N0YXJ0
ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgZnVuY3Rpb24odXNlckRhdGEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmlu
ZGV4IGNhYTMxZDY2ZGY5NzU1OTFiZTBiYzQyOTRiMjc2MWVlY2IwZjBhNjUuLjg4MjE0YWZmOTM1
Nzg2ZmY4NWNiMWYwYTI3ZmNiOWYwYjdlZDZhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTE2NzksOCArMTY3OSw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6dW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCkKICAgICAvLyB0
aGUgZGVzdHJveWVkIG9iamVjdCBoaWdoZXIgb24gdGhlIHN0YWNrLiBUbyBwcmV2ZW50IHRoaXMs
IGlmIHRoZSBwbHVnLWluIGhhcwogICAgIC8vIG9ubHkgb25lIHJlbWFpbmluZyByZWZlcmVuY2Us
IGNhbGwgZGVyZWYoKSBhc3luY2hyb25vdXNseS4KICAgICBpZiAoaGFzT25lUmVmKCkpIHsKLSAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzXSB7Ci0gICAgICAgICAgICBkZXJl
ZigpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2xhc3RSZWYgPSBhZG9wdFJl
ZigqdGhpcyldIHsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3Bw
CmluZGV4IGI5NjM5OGVkMzVjM2IwNzgyNGYyNGM5YzUwZThmMzIzZmExMTQwYWQuLmQ5YTAzMWUw
OTcyYmRjYWFjMmM3ZjViZjU2MGYzOTQ5YTQwZGVjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0xMzgsMTgg
KzEzOCwxNiBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCh1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbgogICAgIFVOVVNFRF9QQVJBTShjYW5S
dWJiZXJCYW5kQXRCb3R0b20pOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8RXZlbnREaXNwYXRjaGVy
PiBldmVudERpc3BhdGNoZXIgPSB0aGlzOwotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
ZXZlbnREaXNwYXRjaGVyLCBwYWdlSUQsIHdoZWVsRXZlbnRdIHsKLSAgICAgICAgZXZlbnREaXNw
YXRjaGVyLT5kaXNwYXRjaFdoZWVsRXZlbnQocGFnZUlELCB3aGVlbEV2ZW50KTsKKyAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8RXZlbnREaXNwYXRjaGVy
PigqdGhpcyksIHBhZ2VJRCwgd2hlZWxFdmVudF0oKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvdGVj
dGVkVGhpcy0+ZGlzcGF0Y2hXaGVlbEV2ZW50KHBhZ2VJRCwgd2hlZWxFdmVudCk7CiAgICAgfSk7
IAogfQogCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjpnZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJLaXQ6OldlYkdlc3R1
cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewotICAgIFJlZlB0cjxFdmVudERpc3BhdGNoZXI+IGV2
ZW50RGlzcGF0Y2hlciA9IHRoaXM7Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtldmVu
dERpc3BhdGNoZXIsIHBhZ2VJRCwgZ2VzdHVyZUV2ZW50XSB7Ci0gICAgICAgIGV2ZW50RGlzcGF0
Y2hlci0+ZGlzcGF0Y2hHZXN0dXJlRXZlbnQocGFnZUlELCBnZXN0dXJlRXZlbnQpOworICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZjxFdmVudERpc3BhdGNo
ZXI+KCp0aGlzKSwgcGFnZUlELCBnZXN0dXJlRXZlbnRdKCkgbXV0YWJsZSB7CisgICAgICAgIHBy
b3RlY3RlZFRoaXMtPmRpc3BhdGNoR2VzdHVyZUV2ZW50KHBhZ2VJRCwgZ2VzdHVyZUV2ZW50KTsK
ICAgICB9KTsKIH0KICNlbmRpZgpAQCAtMTkxLDggKzE4OSw3IEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjp0b3VjaEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2
ZW50JiB0CiAgICAgfQogCiAgICAgaWYgKHVwZGF0ZUxpc3RXYXNFbXB0eSkgewotICAgICAgICBS
ZWZQdHI8RXZlbnREaXNwYXRjaGVyPiBldmVudERpc3BhdGNoZXIgPSB0aGlzOwotICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2V2ZW50RGlzcGF0Y2hlcl0geworICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8RXZlbnREaXNwYXRjaGVy
PigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBldmVudERpc3BhdGNoZXItPmRpc3Bh
dGNoVG91Y2hFdmVudHMoKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAK
aW5kZXggZjY1YjAyZjQyOTExM2RhOTkzZGU2NTFhYTNkMDc3M2FjOTE4OThkNS4uN2Q5YzBiOGI3
MTlmY2NkZjIxNTQzZDBkNDU5ZmIzZmRkNDc5ODM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCkBA
IC02Nyw5ICs2Nyw4IEBAIHZvaWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6OnZpc2libGVDb250ZW50
UmVjdFVwZGF0ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFZpc2liCiAgICAgICAgICAgICBpdGVy
YXRvci0+dmFsdWUudmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyA9IHZpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm87CiAgICAgfQogICAgIGlmICh1cGRhdGVMaXN0V2FzRW1wdHkpIHsKLSAg
ICAgICAgUmVmUHRyPFZpZXdVcGRhdGVEaXNwYXRjaGVyPiBwcm90ZWN0b3IodGhpcyk7Ci0gICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdG9yXSB7Ci0gICAgICAgICAgICBw
cm90ZWN0b3ItPmRpc3BhdGNoVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKCk7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZjxWaWV3VXBkYXRlRGlz
cGF0Y2hlcj4oKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
ZGlzcGF0Y2hWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUoKTsKICAgICAgICAgfSk7CiAgICAgfQog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280271</attachid>
            <date>2016-06-01 15:14:27 -0700</date>
            <delta_ts>2016-06-01 16:37:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158265-20160601151544.patch</filename>
            <type>text/plain</type>
            <size>82014</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QwMmNkN2ZhZmU2ZTZl
MTM3YzdiNjUwYmJmOTVjNjc4NDViNmVmNi4uZjRkN2QzODg3OWI5MjIxOGU0NzllZmYxZjU3MzI3
NzA3ZmY4NjgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE2LTA2LTAxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgbGFtYmRh
IHVzYWdlIGZvciBhbGwgY2FsbGVycyBvZiBSdW5Mb29wOjpkaXNwYXRjaCgpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjY1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChSZWZhY3Rv
ciwgbm8gYmVoYXZpb3IgY2hhbmdlKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNz
SURCU2VydmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vz
c0lEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGlkT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGlkQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZENvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsZWFyT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZUluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUHV0T3JBZGQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5Q
cm9jZXNzSURCU2VydmVyOjpkaWRJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
UHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
blByb2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZU9i
amVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpwdXRPckFkZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmdldFJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OkluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJblBy
b2Nlc3NJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9j
ZXNzSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
blByb2Nlc3NJREJTZXJ2ZXI6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRTdGFydFRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xvc2VGcm9tU2VydmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2Nr
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkYXRhYmFzZUNvbm5l
Y3Rpb25DbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjphYm9y
dE9wZW5BbmRVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJblBy
b2Nlc3NJREJTZXJ2ZXI6Om9wZW5EQlJlcXVlc3RDYW5jZWxsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpjb25maXJtRGlkQ2xvc2VGcm9tU2VydmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFt
ZXMpOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y29ubmVjdCk6CisgICAgICAgIAorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVk
REJTeW5jaHJvbm91c2x5KToKKyAgICAgICAgCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvVGhy
ZWFkZWRTY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xs
aW5nVHJlZTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGlu
Z1RyZWU6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cmVhZGVkU2Nyb2xsaW5nVHJlZTo6Y3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50
UGhhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpzZXRBY3Rp
dmVTY3JvbGxTbmFwSW5kaWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGlu
Z1RyZWU6OmRlZmVyVGVzdHNGb3JSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRT
Y3JvbGxpbmdUcmVlOjpyZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24pOgorICAgICAgICAKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnBsYXRmb3JtUHJlY2FjaGUpOgorICAgICAgICAK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFj
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxh
eUxpbmtGaXJlZCk6CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmNyZWF0ZURl
Y29kZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmRlY29kZSk6CisK
IDIwMTYtMDYtMDEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBpT1MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjhmNmQ0ZWZjZTkxMjUxZWVhN2UxYjBkYzJmMTg1
NjZjMmJjNmNkOS4uNWMxYzc2MjM0OThkZjQwNDZjNTQ2YWU3NGRjYWRhMjcyZWMwMjUxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE2LTA2LTAxICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgbGFtYmRhIHVzYWdlIGZvciBhbGwg
Y2FsbGVycyBvZiBSdW5Mb29wOjpkaXNwYXRjaCgpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hy
aXMgRHVtZXouCisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zKToKKyAgICAgICAgCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpmZXRjaERpc2tDYWNoZUVudHJpZXMpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIAorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJlbW92ZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cmV0cmlldmVGcm9tTWVtb3J5KToKKyAgICAgICAgCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKToKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6
OkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OmVucXVldWVJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9tYWMv
Q29ubmVjdGlvbk1hYy5tbToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJj
ZUV2ZW50SGFuZGxlcik6CisgICAgICAgIAorICAgICAgICAqIFNoYXJlZC9tYWMvQ29va2llU3Rv
cmFnZVNoaW0ubW06CisgICAgICAgICgtW1dLTlNVUkxTZXNzaW9uTG9jYWwgX2dldENvb2tpZUhl
YWRlcnNGb3JUYXNrOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHA6CisgICAgICAgIChBUEk6OlVzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmU6Omxvb2t1cENvbnRlbnRFeHRlbnNpb24pOgorICAgICAgICAo
QVBJOjpVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlOjpjb21waWxlQ29udGVudEV4dGVuc2lvbik6
CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OnJlbW92ZUNvbnRlbnRF
eHRlbnNpb24pOgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vz
c0xhdW5jaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNz
TGF1bmNoZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5j
aGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb25uZWN0VG9TZXJ2aWNlKToKKyAgICAgICAg
CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVNlc3Npb25TdG9yYWdlT3JpZ2lu
cyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFn
ZUVudHJpZXNGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6Omdl
dExvY2FsU3RvcmFnZU9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6
Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZU9yaWdpbnNNb2RpZmllZFNp
bmNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFn
ZUVudHJpZXNGb3JPcmlnaW5zKToKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNXZWJQcm9jZXNz
UmVzcG9uc2l2ZSk6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmlzUmVzcG9uc2l2ZSk6
CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKToK
KyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsdWdpblRocmVh
ZEFzeW5jQ2FsbCk6CisgICAgICAgIAorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6dW5wcm90ZWN0UGx1Z2lu
RnJvbURlc3RydWN0aW9uKToKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0Y2hlcjo6
d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0Y2hlcjo6Z2VzdHVyZUV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6RXZlbnREaXNwYXRjaGVyOjp0b3VjaEV2ZW50KToKKyAg
ICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld1VwZGF0ZURpc3BhdGNoZXI6OnZpc2libGVDb250
ZW50UmVjdFVwZGF0ZSk6CisKIDIwMTYtMDUtMzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbCBvdXQgcjIwMTQ4MSwgcjIw
MTUyMzogMC4zJSByZWdyZXNzaW9uIGluIE9jdGFuZSBjb2RlLWxvYWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lE
QlNlcnZlci5jcHAKaW5kZXggOGVhMjk3NmE4OTdhN2RlYTdkNjFjNWY3MzExZDE1MGQ3YTdjM2U5
My4uMDkwMzczM2U2ZTJjOGM5MjEwOTRlNDFkZTUzZmM3ZTlhYTVmYTEwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJv
Y2Vzc0lEQlNlcnZlci5jcHAKQEAgLTkxLDM1MSArOTEsMzAxIEBAIElEQlNlcnZlcjo6SURCQ29u
bmVjdGlvblRvQ2xpZW50JiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbm5lY3Rpb25Ub0NsaWVudCgp
IGNvbnN0CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNl
cnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXSB7CisgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNl
cnZlcj4oKnRoaXMpLCByZXF1ZXN0RGF0YV0gewogICAgICAgICBtX3NlcnZlci0+ZGVsZXRlRGF0
YWJhc2UocmVxdWVzdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsK
LSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzdWx0
RGF0YV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVzdWx0RGF0YV0gewogICAg
ICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0RGF0YSk7
CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YV0geworICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJ
REJTZXJ2ZXI+KCp0aGlzKSwgcmVxdWVzdERhdGFdIHsKICAgICAgICAgbV9zZXJ2ZXItPm9wZW5E
YXRhYmFzZShyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpkaWRPcGVuRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsK
LSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzdWx0
RGF0YV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVzdWx0RGF0YV0gewogICAg
ICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkT3BlbkRhdGFiYXNlKHJlc3VsdERhdGEpOwog
ICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQWJvcnRUcmFuc2FjdGlv
bihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29u
c3QgSURCRXJyb3ImIGVycm9yKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHBy
b3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7CisgICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJv
Y2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7CiAg
ICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgZXJyb3IpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQ
dHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBlcnJvcl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBlcnJvcl0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlk
Q29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcik7CiAgICAgfSk7
CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVPYmplY3RTdG9yZShjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHREYXRhXSB7CisgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNl
cnZlcj4oKnRoaXMpLCByZXN1bHREYXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVy
LT5kaWRDcmVhdGVPYmplY3RTdG9yZShyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyks
IHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZERlbGV0ZU9i
amVjdFN0b3JlKHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7
Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBy
ZXN1bHREYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXN1bHREYXRhXSB7
CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDbGVhck9iamVjdFN0b3JlKHJlc3Vs
dERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ3JlYXRl
SW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Q
cm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzdWx0RGF0YV0geworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblBy
b2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rp
b25Ub1NlcnZlci0+ZGlkQ3JlYXRlSW5kZXgocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVJbmRleChjb25zdCBJREJSZXN1bHREYXRh
JiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3Rl
ZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzLCByZXN1bHREYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCBy
ZXN1bHREYXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVJbmRl
eChyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZFB1dE9yQWRkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRy
PEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKKyAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8
SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25u
ZWN0aW9uVG9TZXJ2ZXItPmRpZFB1dE9yQWRkKHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0UmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJl
c3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEdldFJlY29yZChy
ZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdl
dENvdW50KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPElu
UHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKKyAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Q
cm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0
aW9uVG9TZXJ2ZXItPmRpZEdldENvdW50KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJl
c3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZERlbGV0ZVJlY29y
ZChyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZE9wZW5DdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBSZWZQ
dHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzdWx0RGF0YV0gewor
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nv
bm5lY3Rpb25Ub1NlcnZlci0+ZGlkT3BlbkN1cnNvcihyZXN1bHREYXRhKTsKICAgICB9KTsKIH0K
IAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcywgcmVzdWx0RGF0YV0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0
aGlzKSwgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkSXRl
cmF0ZUN1cnNvcihyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXNv
dXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIHJlc291cmNlSWRlbnRpZmllcl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+
KCp0aGlzKSwgcmVzb3VyY2VJZGVudGlmaWVyXSB7CiAgICAgICAgIG1fc2VydmVyLT5hYm9ydFRy
YW5zYWN0aW9uKHJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVy
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcywgcmVzb3VyY2VJZGVudGlmaWVyXSB7CisgICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lE
QlNlcnZlcj4oKnRoaXMpLCByZXNvdXJjZUlkZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2ZXIt
PmNvbW1pdFRyYW5zYWN0aW9uKHJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8
SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyXSB7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZl
cj4oKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50
aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRl
bnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVP
YmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVzdWx0RGF0YSwgY29uc3QgSURCT2Jq
ZWN0U3RvcmVJbmZvJiBpbmZvKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHBy
b3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzLCByZXN1bHREYXRhLCBpbmZvXSB7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZl
cj4oKnRoaXMpLCByZXN1bHREYXRhLCBpbmZvXSB7CiAgICAgICAgIG1fc2VydmVyLT5jcmVhdGVP
YmplY3RTdG9yZShyZXN1bHREYXRhLCBpbmZvKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7Ci0gICAgUmVmUHRyPElu
UHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBvYmplY3RT
dG9yZU5hbWVdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlcXVlc3REYXRhLCBv
YmplY3RTdG9yZU5hbWVdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZU9iamVjdFN0b3JlKHJl
cXVlc3REYXRhLCBvYmplY3RTdG9yZU5hbWUpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8SW5Q
cm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIG9iamVjdFN0
b3JlSWRlbnRpZmllcl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVxdWVzdERh
dGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+Y2xlYXJPYmpl
Y3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICB9KTsKIH0K
IAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQogewotICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YSwgaW5m
b10geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgcmVxdWVzdERhdGEsIGluZm9dIHsK
ICAgICAgICAgbV9zZXJ2ZXItPmNyZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKTsKICAgICB9
KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4KGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGluZGV4TmFtZSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVy
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwg
aW5kZXhOYW1lXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXF1ZXN0RGF0YSwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWVdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRl
bGV0ZUluZGV4KHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSk7
CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpwdXRPckFkZChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNv
bnN0IElEQlZhbHVlJiB2YWx1ZSwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0
ZU1vZGUgb3ZlcndyaXRlTW9kZSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVN
b2RlXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXF1ZXN0RGF0YSwga2V5RGF0
YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGVdIHsKICAgICAgICAgbV9zZXJ2ZXItPnB1dE9yQWRkKHJl
cXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSk7CiAgICAgfSk7CiB9CiAK
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKIHsKLSAg
ICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotCi0gICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0
RGF0YSwga2V5UmFuZ2VEYXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXF1
ZXN0RGF0YSwga2V5UmFuZ2VEYXRhXSB7CiAgICAgICAgIG1fc2VydmVyLT5nZXRSZWNvcmQocmVx
dWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0
IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhXSB7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRh
XSB7CiAgICAgICAgIG1fc2VydmVyLT5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRh
KTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZVJlY29yZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0YSYg
a2V5UmFuZ2VEYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3Rl
ZFRoaXModGhpcyk7Ci0KLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKKyAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURC
U2VydmVyPigqdGhpcyksIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKICAgICAgICAgbV9z
ZXJ2ZXItPmRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKICAgICB9KTsK
IH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewotICAgIFJl
ZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0KLSAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRh
LCBpbmZvXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCByZXF1ZXN0RGF0YSwgaW5m
b10gewogICAgICAgICBtX3NlcnZlci0+b3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbyk7CiAg
ICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjppdGVyYXRlQ3Vyc29yKGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5LCB1bnNp
Z25lZCBsb25nIGNvdW50KQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3Rl
Y3RlZFRoaXModGhpcyk7Ci0KLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBrZXksIGNvdW50XSB7CisgICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lE
QlNlcnZlcj4oKnRoaXMpLCByZXF1ZXN0RGF0YSwga2V5LCBjb3VudF0gewogICAgICAgICBtX3Nl
cnZlci0+aXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwga2V5LCBjb3VudCk7CiAgICAgfSk7CiB9
CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRf
dCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8m
IGluZm8pCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKLQotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcywgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mb10geworICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJ
REJTZXJ2ZXI+KCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mb10gewog
ICAgICAgICBtX3NlcnZlci0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgaW5mbyk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQogewotICAgIFJlZlB0cjxJblBy
b2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgdWludDY0X3QgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOwotICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb25d
IHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKSwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVl
c3RlZFZlcnNpb25dIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmZpcmVWZXJzaW9u
Q2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZp
ZXIsIHJlcXVlc3RlZFZlcnNpb24pOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQogewotICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGVycm9yXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGVycm9yXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRT
dGFydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpOwogICAgIH0pOwog
fQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xvc2VGcm9tU2VydmVyKElEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJREJFcnJv
ciYgZXJyb3IpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKLSAgICB1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29u
bmVjdGlvbi5pZGVudGlmaWVyKCk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0g
eworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBlcnJvcl0gewogICAgICAgICBtX2Nvbm5l
Y3Rpb25Ub1NlcnZlci0+ZGlkQ2xvc2VGcm9tU2VydmVyKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIGVycm9yKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om5v
dGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24p
CiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
LSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJl
cXVlc3RJZGVudGlmaWVyLCBvbGRWZXJzaW9uLCBuZXdWZXJzaW9uXSB7CisgICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lE
QlNlcnZlcj4oKnRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVyc2lvbiwgbmV3VmVyc2lv
bl0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+bm90aWZ5T3BlbkRCUmVxdWVzdEJs
b2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pOwogICAgIH0p
OwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2Vk
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPElu
UHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXJdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRhdGFiYXNlQ29ubmVjdGlvbkNs
b3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICB9KTsKIH0KIAogdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0
aW9uSWRlbnRpZmllcl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyXSB7CiAgICAgICAgIG1f
c2VydmVyLT5hYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVz
dElkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVy
XSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+ZGlkRmlyZVZl
cnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRl
bnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJS
ZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAg
ICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERh
dGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIHJlcXVlc3REYXRhXSB7CiAgICAg
ICAgIG1fc2VydmVyLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhKTsKICAgICB9
KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2
ZXIodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8
SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllcl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+KCp0aGlzKSwgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+Y29uZmlybURpZENsb3NlRnJv
bVNlcnZlcihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICB9KTsKIH0KIAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXMoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3Bl
bmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNz
SURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgbWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5nT3Jp
Z2luLCBjYWxsYmFja0lEXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4oKnRoaXMpLCBtYWluRnJh
bWVPcmlnaW4sIG9wZW5pbmdPcmlnaW4sIGNhbGxiYWNrSURdIHsKICAgICAgICAgbV9zZXJ2ZXIt
PmdldEFsbERhdGFiYXNlTmFtZXMobV9jb25uZWN0aW9uVG9TZXJ2ZXItPmlkZW50aWZpZXIoKSwg
bWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEKTsKICAgICB9KTsKIH0K
IAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFtZXModWludDY0
X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGFiYXNlTmFtZXMpCiB7Ci0g
ICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIGNhbGxiYWNr
SUQsIGRhdGFiYXNlTmFtZXNdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPigqdGhpcyksIGNhbGxi
YWNrSUQsIGRhdGFiYXNlTmFtZXNdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRp
ZEdldEFsbERhdGFiYXNlTmFtZXMoY2FsbGJhY2tJRCwgZGF0YWJhc2VOYW1lcyk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
CmluZGV4IGE3MDcwZGMwZjRlNmFiNmVhMzg2OWFkZTM0MzMzYTcxMDAwMjBjMjQuLjM2ZGVkNTk0
NjUwYWUzYzIyZTY4MmVmM2U0NTBjZTFjYTEzYjY0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9p
ZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwcm90b2NvbHMsIEV4Y2UKICAgICAgICAgICAgIC8vIHVzaW5nIHRoZSBlcnJvciBldmVu
dC4gQnV0IHNpbmNlIHRoaXMgY29kZSBleGVjdXRlcyBhcyBwYXJ0IG9mIHRoZSBXZWJTb2NrZXQn
cwogICAgICAgICAgICAgLy8gY29uc3RydWN0b3IsIHdlIGhhdmUgdG8gd2FpdCB1bnRpbCB0aGUg
Y29uc3RydWN0b3IgaGFzIGNvbXBsZXRlZCBiZWZvcmUgZmlyaW5nIHRoZQogICAgICAgICAgICAg
Ly8gZXZlbnQ7IG90aGVyd2lzZSwgdXNlcnMgY2FuJ3QgY29ubmVjdCB0byB0aGUgZXZlbnQuCi0g
ICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXNdKCkgeworICAgICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFdl
YlNvY2tldD4oKnRoaXMpXSgpIHsKICAgICAgICAgICAgICAgICBkaXNwYXRjaE9yUXVldWVFcnJv
ckV2ZW50KCk7CiAgICAgICAgICAgICAgICAgc3RvcCgpOwogICAgICAgICAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cAppbmRleCA3ZTg0ODFhNmJlYWVhNDllYzdkMGVkNWY5NzdjZTNmY2YzNzNiNTdhLi40YjlhYzlh
ZDNmN2Q3MDZjZjhiZjYyNmE2M2UzMTI1MTc2Mzc0MjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTI4MjMsMTQg
KzI4MjMsMTEgQEAgSURCVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9E
aXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseSgpCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CiAKICAgICBJREJWYWx1ZSB2YWx1ZTsKLSAgICBJREJWYWx1ZSogdmFsdWVQdHIgPSAmdmFs
dWU7Ci0KICAgICBMb2NrIGxvY2s7CiAgICAgQ29uZGl0aW9uIGNvbmRpdGlvbjsKLSAgICBDb25k
aXRpb24qIGNvbmRpdGlvblB0ciA9ICZjb25kaXRpb247CiAgICAgbG9jay5sb2NrKCk7CiAKLSAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIGNvbmRpdGlvblB0ciwgdmFsdWVQdHJd
IHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIGNvbmRpdGlvblB0ciA9ICZj
b25kaXRpb24sIHZhbHVlUHRyID0gJnZhbHVlXSB7CiAgICAgICAgIHdyaXRlQmxvYnNUb0Rpc2tG
b3JJbmRleGVkREIoW2NvbmRpdGlvblB0ciwgdmFsdWVQdHJdKGNvbnN0IElEQlZhbHVlJiByZXN1
bHQpIHsKICAgICAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgICAgICB2
YWx1ZVB0ci0+c2V0QXNJc29sYXRlZENvcHkocmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCmluZGV4IDAx
NWUxODNhMDU5ZThiYmI5NGRjNDE3Y2MxYmNjNzI1YWViYzA1MDIuLjc5NzVkOTg0NTJjNmYxNjcy
OGU0M2ViOWQxNjM5ZTE3OTk3Y2FiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcApAQCAtODMsOSArODMsNyBA
QCB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6aW52YWxpZGF0ZSgpCiAgICAgLy8gU2luY2Ug
dGhpcyBjYW4gcG90ZW50aWFsbHkgYmUgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBzY3JvbGxp
bmcgY29vcmRpbmF0b3IsCiAgICAgLy8gd2UgbmVlZCB0byByZWxlYXNlIGl0IG9uIHRoZSBtYWlu
IHRocmVhZCBzaW5jZSBpdCBoYXMgbWVtYmVyIHZhcmlhYmxlcyAoc3VjaCBhcyB0aW1lcnMpCiAg
ICAgLy8gdGhhdCBleHBlY3QgdG8gYmUgZGVzdHJveWVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgot
ICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IG1fc2Nyb2xs
aW5nQ29vcmRpbmF0b3IucmVsZWFzZSgpLmxlYWtSZWYoKTsKLSAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9yXSB7Ci0gICAgICAgIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLT5kZXJlZigpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5n
Q29vcmRpbmF0b3IgPSBXVEZNb3ZlKG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpXSB7CiAgICAgfSk7
CiB9CiAKQEAgLTEwMywxMCArMTAxLDcgQEAgdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OnNj
cm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIGMKICAgICBp
ZiAobm9kZUlEID09IHJvb3ROb2RlKCktPnNjcm9sbGluZ05vZGVJRCgpKQogICAgICAgICBzZXRN
YWluRnJhbWVTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbik7CiAKLSAgICBSZWZQdHI8QXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOwotICAgIGJvb2wgbG9jYWxJc0hhbmRsaW5nUHJvZ3JhbW1hdGljU2Nyb2xs
ID0gaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCgpOwotICAgIAotICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIG5vZGVJRCwgc2Nyb2xsUG9zaXRp
b24sIGxvY2FsSXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCwgc2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbkFjdGlvbl0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5nQ29v
cmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBub2RlSUQsIHNjcm9sbFBvc2l0aW9u
LCBsb2NhbElzSGFuZGxpbmdQcm9ncmFtbWF0aWNTY3JvbGwgPSBpc0hhbmRsaW5nUHJvZ3JhbW1h
dGljU2Nyb2xsKCksIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb25dIHsKICAgICAgICAgc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPnNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5j
U2Nyb2xsKG5vZGVJRCwgc2Nyb2xsUG9zaXRpb24sIGxvY2FsSXNIYW5kbGluZ1Byb2dyYW1tYXRp
Y1Njcm9sbCwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CiAgICAgfSk7CiB9CkBAIC0x
MTYsOCArMTExLDcgQEAgdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmN1cnJlbnRTbmFwUG9p
bnRJbmRpY2VzRGlkQ2hhbmdlKFNjcm9sbGluZ05vZGVJRCBub2QKICAgICBpZiAoIW1fc2Nyb2xs
aW5nQ29vcmRpbmF0b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yPiBzY3JvbGxpbmdDb29yZGluYXRvciA9IG1fc2Nyb2xsaW5nQ29vcmRp
bmF0b3I7Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzY3JvbGxpbmdDb29yZGluYXRv
ciwgbm9kZUlELCBob3Jpem9udGFsLCB2ZXJ0aWNhbF0geworICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBu
b2RlSUQsIGhvcml6b250YWwsIHZlcnRpY2FsXSB7CiAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yLT5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhub2RlSUQsIGhvcml6b250YWwsIHZlcnRp
Y2FsKTsKICAgICB9KTsKIH0KQEAgLTEyOCw4ICsxMjIsNyBAQCB2b2lkIFRocmVhZGVkU2Nyb2xs
aW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBo
YXNlKQogICAgIGlmICghbV9zY3JvbGxpbmdDb29yZGluYXRvcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVmUHRyPEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I+IHNjcm9sbGluZ0Nvb3JkaW5h
dG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvcjsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBwaGFzZV0geworICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBw
aGFzZV0gewogICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+aGFuZGxlV2hlZWxFdmVudFBo
YXNlKHBoYXNlKTsKICAgICB9KTsKIH0KQEAgLTEzOSw4ICsxMzIsNyBAQCB2b2lkIFRocmVhZGVk
U2Nyb2xsaW5nVHJlZTo6c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5nTm9kZUlE
IG5vZGVJRCwgdQogICAgIGlmICghbV9zY3JvbGxpbmdDb29yZGluYXRvcikKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIFJlZlB0cjxBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yPiBzY3JvbGxp
bmdDb29yZGluYXRvciA9IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3I7Ci0gICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtzY3JvbGxpbmdDb29yZGluYXRvciwgbm9kZUlELCBob3Jpem9udGFsSW5k
ZXgsIHZlcnRpY2FsSW5kZXhdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Njcm9s
bGluZ0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvciwgbm9kZUlELCBob3Jpem9u
dGFsSW5kZXgsIHZlcnRpY2FsSW5kZXhdIHsKICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3It
PnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzKG5vZGVJRCwgaG9yaXpvbnRhbEluZGV4LCB2ZXJ0
aWNhbEluZGV4KTsKICAgICB9KTsKIH0KQEAgLTE1MCw4ICsxNDIsNyBAQCB2b2lkIFRocmVhZGVk
U2Nyb2xsaW5nVHJlZTo6ZGVmZXJUZXN0c0ZvclJlYXNvbihXaGVlbEV2ZW50VGVzdFRyaWdnZXI6
OlNjcm9sbGFibAogICAgIGlmICghbV9zY3JvbGxpbmdDb29yZGluYXRvcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUmVmUHRyPEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I+IHNjcm9sbGluZ0Nv
b3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvcjsKLSAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBpZGVudGlmaWVyLCByZWFzb25dIHsKKyAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9zY3Jv
bGxpbmdDb29yZGluYXRvciwgaWRlbnRpZmllciwgcmVhc29uXSB7CiAgICAgICAgIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLT5kZWZlclRlc3RzRm9yUmVhc29uKGlkZW50aWZpZXIsIHJlYXNvbik7CiAg
ICAgfSk7CiB9CkBAIC0xNjEsOCArMTUyLDcgQEAgdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6
OnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlMKICAg
ICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gc2Nyb2xsaW5nQ29vcmRpbmF0b3Ig
PSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yOwotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
c2Nyb2xsaW5nQ29vcmRpbmF0b3IsIGlkZW50aWZpZXIsIHJlYXNvbl0geworICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX3Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLCBpZGVudGlmaWVyLCByZWFzb25dIHsKICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihpZGVudGlmaWVyLCByZWFzb24pOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAppbmRleCA2M2M3NGU4NDMz
NjRmOWJlMmQxODQ0ZjQwNGZiNTk4NGRkMGQwNjlmLi41YThkNjZhZjAyODY3ZThkODBhZDA5YzBj
Nzk0ZmMyN2I4MDQ0ZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcApAQCAt
MTAxLDkgKzEwMSw5IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5TGlu
a0ZpcmVkKGRvdWJsZSBub3dTZWNvbmRzLCBkb3VibGUgb3V0cHV0CiAgICAgLy8gRklYTUU6IFNo
b3VsZCB0aGlzIGJlIHVzaW5nIHdlYktpdE1vbm90b25pY05vdz8KICAgICBzZXRNb25vdG9uaWNB
bmltYXRpb25TdGFydFRpbWUod2ViS2l0TW9ub3RvbmljTm93ICsgdGltZVVudGlsT3V0cHV0KTsK
IAotICAgIGF1dG8gd2Vha1B0ciA9IG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOwogCi0g
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrUHRyXSB7CisgICAgLy8gRklYTUU6IElz
IGl0IHJlYWxseSBva2F5IHRvIGNyZWF0ZSBhIHdlYWtQdHIgb24gYSBiYWNrZ3JvdW5kIHRocmVh
ZCBhbmQgdGhlbiB1c2UgaXQgb24gdGhlIG1haW4gdGhyZWFkPworICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbd2Vha1B0ciA9IG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpXSB7CiAg
ICAgICAgIGlmIChhdXRvKiBtb25pdG9yID0gd2Vha1B0ci5nZXQoKSkKICAgICAgICAgICAgIGhh
bmRsZURpc3BsYXlSZWZyZXNoZWROb3RpZmljYXRpb25Pbk1haW5UaHJlYWQobW9uaXRvcik7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFV
UkxEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERl
Y29kZXIuY3BwCmluZGV4IDc3OThmOTE5ZTk0ZmViZTA5YmMwYzE4NGQ2N2Q4OWM4N2RkNzQwYzcu
LjNlY2RhMmFiY2VjNmFkNGY0NjBjNTlmNmEwZTcxMTdiNTlhZGMxZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCkBAIC0xMzUs
NyArMTM1LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBjcmVhdGVEZWNv
ZGVUYXNrKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHUKICAgICBhdXRvIG1lZGlhVHlwZSA9
IChpc0Jhc2U2NCA/IGhlYWRlci5zdWJzdHJpbmcoMCwgaGVhZGVyLmxlbmd0aCgpIC0gc3RybGVu
KGJhc2U2NFN0cmluZykpIDogaGVhZGVyKS50b1N0cmluZygpOwogCiAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8RGVjb2RlVGFzaz4oRGVjb2RlVGFzayB7Ci0gICAgICAgIFdURk1vdmUodXJs
U3RyaW5nKSwKKyAgICAgICAgdXJsU3RyaW5nLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBXVEZN
b3ZlKGVuY29kZWREYXRhKSwKICAgICAgICAgaXNCYXNlNjQsCiAgICAgICAgIHNjaGVkdWxlQ29u
dGV4dCwKQEAgLTE3Miw4ICsxNzIsNyBAQCB2b2lkIGRlY29kZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU2NoZWR1bGVDb250ZXh0JiBzY2hlZHVsZUNvbnRleHQsIERlY29kZUNvbXBsZQogewogICAg
IEFTU0VSVCh1cmwucHJvdG9jb2xJc0RhdGEoKSk7CiAKLSAgICBhdXRvIGRlY29kZVRhc2sgPSBj
cmVhdGVEZWNvZGVUYXNrKHVybCwgc2NoZWR1bGVDb250ZXh0LCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Ci0gICAgZGVjb2RlUXVldWUoKS5kaXNwYXRjaChbZGVjb2RlVGFzayA9IFdURk1v
dmUoZGVjb2RlVGFzayldKCkgbXV0YWJsZSB7CisgICAgZGVjb2RlUXVldWUoKS5kaXNwYXRjaChb
ZGVjb2RlVGFzayA9IGNyZWF0ZURlY29kZVRhc2sodXJsLCBzY2hlZHVsZUNvbnRleHQsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGRlY29kZVRh
c2stPmlzQmFzZTY0KQogICAgICAgICAgICAgZGVjb2RlQmFzZTY0KCpkZWNvZGVUYXNrKTsKICAg
ICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0Rh
dGFiYXNlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJh
c2VQcm9jZXNzLmNwcAppbmRleCBjMmQ3MGQyZWNmOWZlMTFmMGY5NmM0Yjk5ODZiMGU1M2ZkZWEy
NGUyLi5jOGMyNmZjNjI2ODMzOTNiZDIxYTNkODA4YjE3ZTg5OTE3NmUwYjI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApAQCAt
MTk0LDQyICsxOTQsMjAgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmNyZWF0ZURhdGFiYXNlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbigpCiAKIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpmZXRjaFdlYnNp
dGVEYXRhKFNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFU
eXBlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdh
dG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRv
cj4gewotICAgICAgICBleHBsaWNpdCBDYWxsYmFja0FnZ3JlZ2F0b3Ioc3RkOjpmdW5jdGlvbjx2
b2lkIChXZWJzaXRlRGF0YSk+IGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICAgICAgOiBtX2Nv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICB7Ci0g
ICAgICAgIH0KLQotICAgICAgICB+Q2FsbGJhY2tBZ2dyZWdhdG9yKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgICAgICAgICAgYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgICAg
ICAgICBhdXRvIHdlYnNpdGVEYXRhID0gV1RGTW92ZShtX3dlYnNpdGVEYXRhKTsKLQotICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciwgd2Vic2l0
ZURhdGFdIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3ZWJzaXRlRGF0YSk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoV2Vic2l0ZURhdGEpPiBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAgICAgICBXZWJzaXRlRGF0
YSBtX3dlYnNpdGVEYXRhOwotICAgIH07Ci0KLSAgICBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9y
PiBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZihuZXcgQ2FsbGJhY2tBZ2dyZWdhdG9yKFt0
aGlzLCBjYWxsYmFja0lEXShXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkgeworICAgIGF1dG8gY29t
cGxldGlvbkhhbmRsZXIgPSBbdGhpcywgY2FsbGJhY2tJRF0oY29uc3QgV2Vic2l0ZURhdGEmIHdl
YnNpdGVEYXRhKSB7CiAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpEaWRGZXRjaFdlYnNpdGVEYXRhKGNhbGxiYWNr
SUQsIHdlYnNpdGVEYXRhKSwgMCk7Ci0gICAgfSkpOworICAgIH07CiAKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKICAgICAgICAgLy8gRklYTUU6IFBpY2sg
dGhlIHJpZ2h0IGRhdGFiYXNlIHN0b3JlIGJhc2VkIG9uIHRoZSBzZXNzaW9uIElELgotICAgICAg
ICBwb3N0RGF0YWJhc2VUYXNrKENyb3NzVGhyZWFkVGFzayhbY2FsbGJhY2tBZ2dyZWdhdG9yLCB3
ZWJzaXRlRGF0YVR5cGVzLCB0aGlzXSB7Ci0KLSAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+PiBzZWN1cml0eU9yaWdpbnMgPSBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKCk7
Ci0KLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdh
dG9yLCBzZWN1cml0eU9yaWdpbnNdIHsKKyAgICAgICAgcG9zdERhdGFiYXNlVGFzayhDcm9zc1Ro
cmVhZFRhc2soW3RoaXMsIHdlYnNpdGVEYXRhVHlwZXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIHNlY3VyaXR5T3JpZ2lucyA9IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMoKV0gewor
ICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogICAgICAgICAgICAgICAg
IGZvciAoY29uc3QgYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCi0gICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVz
LmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFU
eXBlOjpJbmRleGVkREJEYXRhYmFzZXMsIDAgfSk7CisgICAgICAgICAgICAgICAgICAgIHdlYnNp
dGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgc2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6
SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOworCisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIod2Vic2l0ZURhdGEpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pKTsKICAgICB9
CkBAIC0yMzgsNTcgKzIxNiwyNSBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZmV0Y2hXZWJzaXRl
RGF0YShTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYgogCiB2b2lkIERh
dGFiYXNlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBzdGQ6OmNocm9ubzo6c3lz
dGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiB7Ci0gICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKLSAgICAgICAgZXhwbGljaXQgQ2Fs
bGJhY2tBZ2dyZWdhdG9yKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIp
Ci0gICAgICAgICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIH5DYWxsYmFja0FnZ3JlZ2F0
b3IoKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShtX2NvbXBsZXRp
b25IYW5kbGVyKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
IG1fY29tcGxldGlvbkhhbmRsZXI7Ci0gICAgfTsKLQotICAgIFJlZlB0cjxDYWxsYmFja0FnZ3Jl
Z2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0
b3IoW3RoaXMsIGNhbGxiYWNrSURdKCkgeworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBb
dGhpcywgY2FsbGJhY2tJRF0oKSB7CiAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpEaWREZWxldGVXZWJzaXRlRGF0
YShjYWxsYmFja0lEKSwgMCk7Ci0gICAgfSkpOworICAgIH07CiAKICNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpCi0gICAgICAgIGlkYlNlcnZlcigpLmNsb3NlQW5k
RGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShtb2RpZmllZFNpbmNlLCBbY2FsbGJhY2tBZ2dy
ZWdhdG9yXSB7IH0pOworICAgICAgICBpZGJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNl
c01vZGlmaWVkU2luY2UobW9kaWZpZWRTaW5jZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogI2VuZGlmCiB9CiAKIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZv
ck9yaWdpbnMoV2ViQ29yZTo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3
ZWJzaXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJp
dHlPcmlnaW5EYXRhcywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBzdHJ1Y3QgQ2FsbGJh
Y2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNr
QWdncmVnYXRvcj4gewotICAgICAgICBleHBsaWNpdCBDYWxsYmFja0FnZ3JlZ2F0b3Ioc3RkOjpm
dW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgIDogbV9jb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAgewotICAg
ICAgICB9Ci0KLSAgICAgICAgfkNhbGxiYWNrQWdncmVnYXRvcigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsK
LSAgICB9OwotCi0gICAgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY2FsbGJhY2tBZ2dyZWdh
dG9yID0gYWRvcHRSZWYobmV3IENhbGxiYWNrQWdncmVnYXRvcihbdGhpcywgY2FsbGJhY2tJRF0o
KSB7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBjYWxsYmFja0lEXSgpIHsK
ICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6RGF0YWJh
c2VQcm9jZXNzUHJveHk6OkRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhjYWxsYmFja0lE
KSwgMCk7Ci0gICAgfSkpOworICAgIH07CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4
ZWREQkRhdGFiYXNlcykpCi0gICAgICAgIGlkYlNlcnZlcigpLmNsb3NlQW5kRGVsZXRlRGF0YWJh
c2VzRm9yT3JpZ2lucyhzZWN1cml0eU9yaWdpbkRhdGFzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7
IH0pOworICAgICAgICBpZGJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdp
bnMoc2VjdXJpdHlPcmlnaW5EYXRhcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAppbmRleCBmMGNmYjVhNzM5MmI0MWU0ZWQxMTM0ODQ3MmRmNmIxZDBhNzA1M2U2Li43
ZTE5MmIxMDY2MmEwYTcwOTgwZGYyMDYxY2VmMmRlOGMzZjdiN2M5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0zMjYsNyArMzI2
LDcgQEAgc3RhdGljIHZvaWQgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKFNlc3Npb25JRCBzZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGMKIAogICAgICAgICAgICAgICAgIGRlbGV0ZSBv
cmlnaW5zQW5kU2l6ZXM7CiAKLSAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW2NvbXBsZXRpb25IYW5kbGVyLCBlbnRyaWVzXSB7CisgICAgICAgICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciwgZW50cmllcyA9IFdURk1vdmUo
ZW50cmllcyldIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW50cmll
cyk7CiAgICAgICAgICAgICAgICAgfSk7CiAKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9p
ZCBmZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhRmV0YwogICAgICAgICBlbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkg
eyBXVEZNb3ZlKG9yaWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCAwIH0pOwogI2Vu
ZGlmCiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCBl
bnRyaWVzXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxl
ciwgZW50cmllcyA9IFdURk1vdmUoZW50cmllcyldIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZW50cmllcyk7CiAgICAgfSk7CiB9CkBAIC0zNjcsMTAgKzM2Nyw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1f
Y29tcGxldGlvbkhhbmRsZXIpOwotICAgICAgICAgICAgYXV0byB3ZWJzaXRlRGF0YSA9IFdURk1v
dmUobV93ZWJzaXRlRGF0YSk7Ci0KLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbY29tcGxldGlvbkhhbmRsZXIsIHdlYnNpdGVEYXRhXSB7CisgICAgICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRp
b25IYW5kbGVyKSwgd2Vic2l0ZURhdGEgPSBXVEZNb3ZlKG1fd2Vic2l0ZURhdGEpXSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2Vic2l0ZURhdGEpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggMmJmMDNlZWM1MmVlZWRl
MTk5ZDM1ZjIxN2ZmNTQ1Nzc0YjQwNzc4OS4uOWI0NzM5ZDdjNzIwZjg5YTdlZTBlMTY3OWYzNzFj
M2Q1MDAxY2M5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTY2Miw4ICs2NjIsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCByZXRyaWV2ZUZyb21NZW1vcnkoY29uc3QgVCYgb3BlcmF0
aW9ucywgY29uc3QgS2V5JiBrZXksCiAgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBvcGVyYXRp
b25zKSB7CiAgICAgICAgIGlmIChvcGVyYXRpb24tPnJlY29yZC5rZXkgPT0ga2V5KSB7CiAgICAg
ICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2VzcykgZm91bmQg
d3JpdGUgb3BlcmF0aW9uIGluIHByb2dyZXNzIik7Ci0gICAgICAgICAgICBhdXRvIHJlY29yZCA9
IG9wZXJhdGlvbi0+cmVjb3JkOwotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtyZWNvcmQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3JlY29yZCA9IG9wZXJhdGlvbi0+cmVjb3JkLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KHJlY29yZCkpOwog
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCAyZjI2YzZhM2Q1YjA1N2JiODJmZThk
ODVkZDdkMTRhMTY1MjZjMmE5Li40ZjA0ZGFjZDhiNGZiNTU4OWQ3Y2FkMGRhMzJkNzJlZGQ2Mjlj
ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0x
MzYsOSArMTM2LDggQEAgYm9vbCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZXNz
SW5jb21pbmdNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24KICAgICAgICAgc3RkOjpsb2Nr
X2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CiAgICAgICAgIAogICAgICAgICBpZiAobV9kaWRT
Y2hlZHVsZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0LmFkZCgmY29ubmVjdGlvbikuaXNOZXdFbnRy
eSkgewotICAgICAgICAgICAgUmVmUHRyPENvbm5lY3Rpb24+IHByb3RlY3RlZENvbm5lY3Rpb24o
JmNvbm5lY3Rpb24pOwotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRDb25uZWN0aW9uXSB7Ci0gICAgICAgICAgICAgICAgZGlzcGF0Y2hNZXNzYWdl
QW5kUmVzZXREaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNGb3JDb25uZWN0aW9uKCpwcm90ZWN0
ZWRDb25uZWN0aW9uKTsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkQ29ubmVjdGlvbiA9IFJlZjxDb25uZWN0aW9uPihjb25uZWN0aW9uKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgICAgICBkaXNwYXRjaE1lc3NhZ2VBbmRSZXNldERpZFNjaGVk
dWxlRGlzcGF0Y2hNZXNzYWdlc0ZvckNvbm5lY3Rpb24ocHJvdGVjdGVkQ29ubmVjdGlvbik7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQogCkBAIC02NDcsMTMgKzY0NiwxMyBAQCB2b2lkIENv
bm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VE
ZWNvZGVyPiBtZXNzYWdlKQogCiAgICAgaWYgKCFtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnMu
aXNWYWxpZEtleShtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSB7CiAgICAgICAgIFJl
ZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgICAgICBTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSA9IG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUo
KTsKLSAgICAgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZE1lc3NhZ2VSZWNlaXZlck5hbWUobWVz
c2FnZVJlY2VpdmVyTmFtZS5pc0VtcHR5KCkgPyAiPHVua25vd24gbWVzc2FnZSByZWNlaXZlcj4i
IDogU3RyaW5nKG1lc3NhZ2VSZWNlaXZlck5hbWUuZGF0YSgpLCBtZXNzYWdlUmVjZWl2ZXJOYW1l
LnNpemUoKSkpOwotICAgICAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUgPSBtZXNzYWdl
LT5tZXNzYWdlTmFtZSgpOwotICAgICAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkTWVzc2FnZU5h
bWUobWVzc2FnZU5hbWUuaXNFbXB0eSgpID8gIjx1bmtub3duIG1lc3NhZ2U+IiA6IFN0cmluZyht
ZXNzYWdlTmFtZS5kYXRhKCksIG1lc3NhZ2VOYW1lLnNpemUoKSkpOworICAgICAgICBTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVyZW5jZSA9IG1lc3NhZ2UtPm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKTsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2VSZWNlaXZlck5hbWUobWVzc2Fn
ZVJlY2VpdmVyTmFtZVJlZmVyZW5jZS5pc0VtcHR5KCkgPyAiPHVua25vd24gbWVzc2FnZSByZWNl
aXZlcj4iIDogU3RyaW5nKG1lc3NhZ2VSZWNlaXZlck5hbWVSZWZlcmVuY2UuZGF0YSgpLCBtZXNz
YWdlUmVjZWl2ZXJOYW1lUmVmZXJlbmNlLnNpemUoKSkpOworICAgICAgICBTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWVSZWZlcmVuY2UgPSBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpOworICAgICAg
ICBTdHJpbmcgbWVzc2FnZU5hbWUobWVzc2FnZU5hbWVSZWZlcmVuY2UuaXNFbXB0eSgpID8gIjx1
bmtub3duIG1lc3NhZ2U+IiA6IFN0cmluZyhtZXNzYWdlTmFtZVJlZmVyZW5jZS5kYXRhKCksIG1l
c3NhZ2VOYW1lUmVmZXJlbmNlLnNpemUoKSkpOwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcywgY2FwdHVyZWRNZXNzYWdlUmVjZWl2ZXJOYW1lLCBjYXB0
dXJlZE1lc3NhZ2VOYW1lXSB7Ci0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaERp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjYXB0dXJlZE1lc3NhZ2VSZWNlaXZlck5hbWUuc3RyaW5n
KCkudXRmOCgpLCBjYXB0dXJlZE1lc3NhZ2VOYW1lLnN0cmluZygpLnV0ZjgoKSk7CisgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZjxDb25uZWN0aW9u
PigqdGhpcyksIG1lc3NhZ2VSZWNlaXZlck5hbWUgPSBXVEZNb3ZlKG1lc3NhZ2VSZWNlaXZlck5h
bWUpLCBtZXNzYWdlTmFtZSA9IFdURk1vdmUobWVzc2FnZU5hbWUpXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
bWVzc2FnZVJlY2VpdmVyTmFtZS51dGY4KCksIG1lc3NhZ2VOYW1lLnV0ZjgoKSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzgyLDIwICs3ODEsMTkgQEAgdm9pZCBD
b25uZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UoKQogICAgIGlmIChtX2RpZENsb3NlT25Db25u
ZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2spCiAgICAgICAgIG1fZGlkQ2xvc2VPbkNvbm5lY3Rpb25X
b3JrUXVldWVDYWxsYmFjayh0aGlzKTsKIAotICAgIFJlZlB0cjxDb25uZWN0aW9uPiBjb25uZWN0
aW9uKHRoaXMpOwotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbl0gewor
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZjxDb25uZWN0
aW9uPigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIElmIHRoZSBjb25uZWN0aW9uIGhh
cyBiZWVuIGV4cGxpY2l0bHkgaW52YWxpZGF0ZWQgYmVmb3JlIGRpc3BhdGNoQ29ubmVjdGlvbkRp
ZENsb3NlIHdhcyBjYWxsZWQsCiAgICAgICAgIC8vIHRoZW4gdGhlIGNsaWVudCB3aWxsIGJlIG51
bGwgaGVyZS4KLSAgICAgICAgaWYgKCFjb25uZWN0aW9uLT5tX2NsaWVudCkKKyAgICAgICAgaWYg
KCFwcm90ZWN0ZWRUaGlzLT5tX2NsaWVudCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICAvLyBCZWNhdXNlIHdlIGRlZmluZSBhIGNvbm5lY3Rpb24gYXMgYmVpbmcgInZhbGlkIiBiYXNl
ZCBvbiB3aGV0ZXIgaXQgaGFzIGEgbnVsbCBjbGllbnQsIHdlIG51bGwgb3V0CiAgICAgICAgIC8v
IHRoZSBjbGllbnQgYmVmb3JlIGNhbGxpbmcgZGlkQ2xvc2UgaGVyZS4gT3RoZXJ3aXNlLCBzZW5k
U3luYyB3aWxsIHRyeSB0byBzZW5kIGEgbWVzc2FnZSB0byB0aGUgY29ubmVjdGlvbiBhbmQKICAg
ICAgICAgLy8gd2lsbCB0aGVuIHdhaXQgaW5kZWZpbml0ZWx5IGZvciBhIHJlcGx5LgotICAgICAg
ICBDbGllbnQqIGNsaWVudCA9IGNvbm5lY3Rpb24tPm1fY2xpZW50OwotICAgICAgICBjb25uZWN0
aW9uLT5tX2NsaWVudCA9IG51bGxwdHI7CisgICAgICAgIENsaWVudCogY2xpZW50ID0gcHJvdGVj
dGVkVGhpcy0+bV9jbGllbnQ7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fY2xpZW50ID0gbnVs
bHB0cjsKIAotICAgICAgICBjbGllbnQtPmRpZENsb3NlKCpjb25uZWN0aW9uKTsKKyAgICAgICAg
Y2xpZW50LT5kaWRDbG9zZShwcm90ZWN0ZWRUaGlzLmdldCgpKTsKICAgICB9KTsKIH0KIApAQCAt
ODg4LDggKzg4Niw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZW5xdWV1ZUluY29taW5nTWVzc2FnZShz
dGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IGluY29taW5nCiAgICAgICAgIG1faW5jb21p
bmdNZXNzYWdlcy5hcHBlbmQoV1RGTW92ZShpbmNvbWluZ01lc3NhZ2UpKTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8Q29ubmVjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXNdIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8Q29ubmVjdGlvbj4oKnRoaXMpXSgpIG11dGFibGUg
ewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaE9uZU1lc3NhZ2UoKTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlv
bk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5t
bQppbmRleCA4NjI2YmYyOWNiOWI0ZmIyZjhkYmE1OTcyNzNkNTg4OWQ0MzlkYWE0Li41ZmUwYmZi
ZjBjYTg3Yjg1OTczZDhiMGZjZjMyMDIyNDM5OGViMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMubW0KKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLm1tCkBAIC01MTgsMTMgKzUxOCwxMyBA
QCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKQogICAgIGlmIChk
ZWNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIgJiYgZGVjb2Rlci0+bWVzc2Fn
ZU5hbWUoKSA9PSAiU2V0RXhjZXB0aW9uUG9ydCIpIHsKICAgICAgICAgaWYgKG1faXNTZXJ2ZXIp
IHsKICAgICAgICAgICAgIC8vIFNlcnZlciBjb25uZWN0aW9ucyBhcmVuJ3Qgc3VwcG9zZWQgdG8g
aGF2ZSB0aGVpciBleGNlcHRpb24gcG9ydHMgb3ZlcnJpZGVuLiBUcmVhdCB0aGlzIGFzIGFuIGlu
dmFsaWQgbWVzc2FnZS4KLSAgICAgICAgICAgIFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwotICAgICAgICAgICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUgPSBkZWNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCk7Ci0gICAgICAgICAgICBTdHJpbmdD
YXB0dXJlIGNhcHR1cmVkTWVzc2FnZVJlY2VpdmVyTmFtZShTdHJpbmcobWVzc2FnZVJlY2VpdmVy
TmFtZS5kYXRhKCksIG1lc3NhZ2VSZWNlaXZlck5hbWUuc2l6ZSgpKSk7Ci0gICAgICAgICAgICBT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUgPSBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpOwotICAg
ICAgICAgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZE1lc3NhZ2VOYW1lKFN0cmluZyhtZXNzYWdl
TmFtZS5kYXRhKCksIG1lc3NhZ2VOYW1lLnNpemUoKSkpOwotICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzLCBjYXB0dXJlZE1lc3NhZ2VSZWNlaXZlck5h
bWUsIGNhcHR1cmVkTWVzc2FnZU5hbWVdIHsKLSAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjYXB0dXJlZE1lc3NhZ2VSZWNlaXZl
ck5hbWUuc3RyaW5nKCkudXRmOCgpLCBjYXB0dXJlZE1lc3NhZ2VOYW1lLnN0cmluZygpLnV0Zjgo
KSk7CisgICAgICAgICAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVy
ZW5jZSA9IGRlY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKTsKKyAgICAgICAgICAgIFN0cmlu
ZyBtZXNzYWdlUmVjZWl2ZXJOYW1lKFN0cmluZyhtZXNzYWdlUmVjZWl2ZXJOYW1lUmVmZXJlbmNl
LmRhdGEoKSwgbWVzc2FnZVJlY2VpdmVyTmFtZVJlZmVyZW5jZS5zaXplKCkpKTsKKyAgICAgICAg
ICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZVJlZmVyZW5jZSA9IGRlY29kZXItPm1lc3Nh
Z2VOYW1lKCk7CisgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZU5hbWUoU3RyaW5nKG1lc3NhZ2VO
YW1lUmVmZXJlbmNlLmRhdGEoKSwgbWVzc2FnZU5hbWVSZWZlcmVuY2Uuc2l6ZSgpKSk7CisKKyAg
ICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZjxD
b25uZWN0aW9uPigqdGhpcyksIG1lc3NhZ2VSZWNlaXZlck5hbWUgPSBXVEZNb3ZlKG1lc3NhZ2VS
ZWNlaXZlck5hbWUpLCBtZXNzYWdlTmFtZSA9IFdURk1vdmUobWVzc2FnZU5hbWUpXSgpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoRGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUudXRmOCgpLCBtZXNzYWdlTmFtZS51dGY4
KCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCmluZGV4IDcw
MTE3NjNjMzg1NGJmN2JmNDA2NTI4MDYyMGI0Njg5MTBhYjA0Y2QuLjA5Y2YxY2NjOTY1MzQ3ODlj
MzU5NmI4YTA2MWM1ZTVlYzFiNzExMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9Db29raWVTdG9yYWdlU2hpbS5tbQpAQCAtMTIzLDEwICsxMjMsOSBAQCAtICh2b2lkKV9nZXRD
b29raWVIZWFkZXJzRm9yVGFzazooTlNVUkxTZXNzaW9uVGFzayopdGFzayBjb21wbGV0aW9uSGFu
ZGxlcjooQ29tcAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TVVJM
U2Vzc2lvblRhc2s+IHN0cm9uZ1Rhc2sgPSB0YXNrOwogICAgIENvbXBsZXRpb25IYW5kbGVyQmxv
Y2sgY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldOwotICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3Ryb25nVGFzaywgY29tcGxldGlvbkhhbmRsZXJD
b3B5XSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlcnMgPSBhZG9w
dENGKFdlYktpdDo6d2ViS2l0Q29va2llU3RvcmFnZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRzRm9y
VVJMKG51bGxwdHIsIChDRlVSTFJlZilbW3N0cm9uZ1Rhc2sgY3VycmVudFJlcXVlc3RdIFVSTF0p
KTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Rhc2sgPSBSZXRhaW5QdHI8TlNVUkxT
ZXNzaW9uVGFzaz4odGFzayksIGNvbXBsZXRpb25IYW5kbGVyQ29weV0geworICAgICAgICBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBoZWFkZXJzID0gYWRvcHRDRihXZWJLaXQ6OndlYktpdENv
b2tpZVN0b3JhZ2VDb3B5UmVxdWVzdEhlYWRlckZpZWxkc0ZvclVSTChudWxscHRyLCAoQ0ZVUkxS
ZWYpW1t0YXNrIGN1cnJlbnRSZXF1ZXN0XSBVUkxdKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyQ29weShoZWFkZXJzLmdldCgpKTsKICAgICAgICAgW2NvbXBsZXRpb25IYW5kbGVyQ29weSBy
ZWxlYXNlXTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwCmluZGV4IDVmMjYyMDQ1
OWYzZWE1ZjBmOTM0YzU3NjA2NzczODM5ODJhNjBhNmUuLjA4MjRlMTJhYTNjZGE1MTYwMWFmNWZk
OWY5MTBjMDllYjNiMzI4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcApAQCAtMzA2LDMx
ICszMDYsMjcgQEAgc3RhdGljIFJlZlB0cjxBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9uPiBjcmVh
dGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWUKIAogdm9pZCBVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlOjpsb29rdXBDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBp
ZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRFeHRl
bnNpb24+LCBzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQ
dHI8VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZT4gc2VsZih0aGlzKTsKLSAgICBTdHJpbmdDYXB0
dXJlIGlkZW50aWZpZXJDYXB0dXJlKGlkZW50aWZpZXIpOwotICAgIFN0cmluZ0NhcHR1cmUgcGF0
aENhcHR1cmUobV9zdG9yZVBhdGgpOwotCi0gICAgbV9yZWFkUXVldWUtPmRpc3BhdGNoKFtzZWxm
LCBpZGVudGlmaWVyQ2FwdHVyZSwgcGF0aENhcHR1cmUsIGNvbXBsZXRpb25IYW5kbGVyXSB7Ci0g
ICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChwYXRoQ2FwdHVyZS5zdHJpbmcoKSwg
aWRlbnRpZmllckNhcHR1cmUuc3RyaW5nKCkpOworICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IFJlZjxPYmplY3Q+KCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZp
ZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgeworICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVu
dGlmaWVyKTsKICAgICAgICAgCiAgICAgICAgIENvbnRlbnRFeHRlbnNpb25NZXRhRGF0YSBtZXRh
RGF0YTsKICAgICAgICAgRGF0YSBmaWxlRGF0YTsKICAgICAgICAgaWYgKCFvcGVuQW5kTWFwQ29u
dGVudEV4dGVuc2lvbihwYXRoLCBtZXRhRGF0YSwgZmlsZURhdGEpKSB7Ci0gICAgICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgRXJy
b3I6Okxvb2t1cEZhaWxlZCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG1ldGFEYXRhLnZlcnNpb24gIT0gVXNl
ckNvbnRlbnRFeHRlbnNpb25TdG9yZTo6Q3VycmVudENvbnRlbnRFeHRlbnNpb25GaWxlVmVyc2lv
bikgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBjb21wbGV0
aW9uSGFuZGxlcl0geworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG51bGxwdHIsIEVycm9yOjpWZXJzaW9uTWlzbWF0Y2gpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgaWRlbnRpZmllckNhcHR1cmUsIGZpbGVEYXRhLCBt
ZXRhRGF0YSwgY29tcGxldGlvbkhhbmRsZXJdIHsKLSAgICAgICAgICAgIFJlZlB0cjxBUEk6OlVz
ZXJDb250ZW50RXh0ZW5zaW9uPiB1c2VyQ29udGVudEV4dGVuc2lvbiA9IGNyZWF0ZUV4dGVuc2lv
bihpZGVudGlmaWVyQ2FwdHVyZS5zdHJpbmcoKSwgbWV0YURhdGEsIGZpbGVEYXRhKTsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllciksIGZpbGVEYXRhID0g
V1RGTW92ZShmaWxlRGF0YSksIG1ldGFEYXRhID0gV1RGTW92ZShtZXRhRGF0YSksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgICAgIFJl
ZlB0cjxBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9uPiB1c2VyQ29udGVudEV4dGVuc2lvbiA9IGNy
ZWF0ZUV4dGVuc2lvbihpZGVudGlmaWVyLCBtZXRhRGF0YSwgZmlsZURhdGEpOwogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIodXNlckNvbnRlbnRFeHRlbnNpb24sIHsgfSk7CiAgICAgICAg
IH0pOwogICAgIH0pOwpAQCAtMzM4LDI2ICszMzQsMjEgQEAgdm9pZCBVc2VyQ29udGVudEV4dGVu
c2lvblN0b3JlOjpsb29rdXBDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVu
dGkKIAogdm9pZCBVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlOjpjb21waWxlQ29udGVudEV4dGVu
c2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV1RGOjpTdHJpbmcmJiBqc29uLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb24+LCBzdGQ6
OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQdHI8VXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZT4gc2VsZih0aGlzKTsKLSAgICBTdHJpbmdDYXB0dXJlIGlkZW50aWZp
ZXJDYXB0dXJlKGlkZW50aWZpZXIpOwotICAgIFN0cmluZ0NhcHR1cmUganNvbkNhcHR1cmUoV1RG
TW92ZShqc29uKSk7Ci0gICAgU3RyaW5nQ2FwdHVyZSBwYXRoQ2FwdHVyZShtX3N0b3JlUGF0aCk7
Ci0KLSAgICBtX2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2goW3NlbGYsIGlkZW50aWZpZXJDYXB0dXJl
LCBqc29uQ2FwdHVyZSwgcGF0aENhcHR1cmUsIGNvbXBsZXRpb25IYW5kbGVyXSAoKSBtdXRhYmxl
IHsKLSAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHBhdGhDYXB0dXJlLnN0cmlu
ZygpLCBpZGVudGlmaWVyQ2FwdHVyZS5zdHJpbmcoKSk7CisgICAgbV9jb21waWxlUXVldWUtPmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmPE9iamVjdD4oKnRoaXMpLCBpZGVudGlmaWVyID0g
aWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwganNvbiA9IGpzb24uaXNvbGF0ZWRDb3B5KCksIHN0
b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBw
YXRoID0gY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllcik7CiAKICAgICAgICAg
Q29udGVudEV4dGVuc2lvbk1ldGFEYXRhIG1ldGFEYXRhOwogICAgICAgICBEYXRhIGZpbGVEYXRh
OwotICAgICAgICBhdXRvIGVycm9yID0gY29tcGlsZWRUb0ZpbGUoanNvbkNhcHR1cmUucmVsZWFz
ZVN0cmluZygpLCBwYXRoLCBtZXRhRGF0YSwgZmlsZURhdGEpOworICAgICAgICBhdXRvIGVycm9y
ID0gY29tcGlsZWRUb0ZpbGUoV1RGTW92ZShqc29uKSwgcGF0aCwgbWV0YURhdGEsIGZpbGVEYXRh
KTsKICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3NlbGYsIGVycm9yLCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG51bGxwdHIsIGVycm9yKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCBpZGVu
dGlmaWVyQ2FwdHVyZSwgZmlsZURhdGEsIG1ldGFEYXRhLCBjb21wbGV0aW9uSGFuZGxlcl0gewot
ICAgICAgICAgICAgUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb24+IHVzZXJDb250ZW50
RXh0ZW5zaW9uID0gY3JlYXRlRXh0ZW5zaW9uKGlkZW50aWZpZXJDYXB0dXJlLnN0cmluZygpLCBt
ZXRhRGF0YSwgZmlsZURhdGEpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpZGVudGlmaWVyID0gV1RGTW92
ZShpZGVudGlmaWVyKSwgZmlsZURhdGEgPSBXVEZNb3ZlKGZpbGVEYXRhKSwgbWV0YURhdGEgPSBX
VEZNb3ZlKG1ldGFEYXRhKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0geworICAgICAgICAgICAgUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb24+
IHVzZXJDb250ZW50RXh0ZW5zaW9uID0gY3JlYXRlRXh0ZW5zaW9uKGlkZW50aWZpZXIsIG1ldGFE
YXRhLCBmaWxlRGF0YSk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih1c2VyQ29udGVu
dEV4dGVuc2lvbiwgeyB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0zNjUsMjEgKzM1Niwx
NyBAQCB2b2lkIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OmNvbXBpbGVDb250ZW50RXh0ZW5z
aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudAogCiB2b2lkIFVzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmU6OnJlbW92ZUNvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZp
ZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZChzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBSZWZQdHI8VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZT4gc2VsZih0aGlzKTsK
LSAgICBTdHJpbmdDYXB0dXJlIGlkZW50aWZpZXJDYXB0dXJlKGlkZW50aWZpZXIpOwotICAgIFN0
cmluZ0NhcHR1cmUgcGF0aENhcHR1cmUobV9zdG9yZVBhdGgpOwotCi0gICAgbV9yZW1vdmVRdWV1
ZS0+ZGlzcGF0Y2goW3NlbGYsIGlkZW50aWZpZXJDYXB0dXJlLCBwYXRoQ2FwdHVyZSwgY29tcGxl
dGlvbkhhbmRsZXJdIHsKLSAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHBhdGhD
YXB0dXJlLnN0cmluZygpLCBpZGVudGlmaWVyQ2FwdHVyZS5zdHJpbmcoKSk7CisgICAgbV9yZW1v
dmVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8T2JqZWN0PigqdGhpcyksIGlk
ZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0b3Jl
UGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQ
YXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllcik7CiAKICAgICAgICAgaWYgKCFXZWJDb3JlOjpkZWxl
dGVGaWxlKHBhdGgpKSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Nl
bGYsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoRXJyb3I6OlJlbW92ZUZhaWxlZCk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbc2VsZiwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIu
Y3BwCmluZGV4IGRhMmI4MGU2NGE0YjY4ODk5M2NhZmZhNWUwZTFiZjk2MWU5ZTJiNDEuLmE5MDNk
Yjc1NWFiZGFmOGYwOGJhNjVmYTRjNDE5ZWYwZTkwYjlhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCkBAIC00NSw4
ICs0NSw3IEBAIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc0xhdW5jaGVyKENsaWVudCogY2xpZW50
LCBjb25zdCBMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpCiB7CiAgICAgbV9pc0xhdW5jaGluZyA9
IHRydWU7CiAKLSAgICBSZWZQdHI8UHJvY2Vzc0xhdW5jaGVyPiBwcm9jZXNzTGF1bmNoZXIodGhp
cyk7Ci0gICAgcHJvY2Vzc0xhdW5jaGVyV29ya1F1ZXVlKCkuZGlzcGF0Y2goW3Byb2Nlc3NMYXVu
Y2hlcl0geworICAgIHByb2Nlc3NMYXVuY2hlcldvcmtRdWV1ZSgpLmRpc3BhdGNoKFtwcm9jZXNz
TGF1bmNoZXIgPSBSZWY8UHJvY2Vzc0xhdW5jaGVyPigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIHByb2Nlc3NMYXVuY2hlci0+bGF1bmNoUHJvY2VzcygpOwogICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNo
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NM
YXVuY2hlck1hYy5tbQppbmRleCA4M2QwNTk0ODJkNDU0ZTg1OWJhNTZmMjRhZjE5MDU4MmEzYTZj
Y2Y0Li40OWVkZGJmYjgyOWEwNGYzYzQ5N2UxNjE1NjE0YWU2ZTE2ZTc2ZGJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NM
YXVuY2hlck1hYy5tbQpAQCAtMTgwLDkgKzE4MCw4IEBAIHN0YXRpYyB2b2lkIGNvbm5lY3RUb1Nl
cnZpY2UoY29uc3QgUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25z
CiAgICAgICAgICAgICAvLyBBbmQgdGhlIHJlY2VpdmUgcmlnaHQuCiAgICAgICAgICAgICBtYWNo
X3BvcnRfbW9kX3JlZnMobWFjaF90YXNrX3NlbGYoKSwgbGlzdGVuaW5nUG9ydCwgTUFDSF9QT1JU
X1JJR0hUX1JFQ0VJVkUsIC0xKTsKIAotICAgICAgICAgICAgUmVmUHRyPFByb2Nlc3NMYXVuY2hl
cj4gcHJvdGVjdG9yKHRoYXQpOwotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtwcm90ZWN0b3IsIGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbl0gewotICAgICAg
ICAgICAgICAgICgqcHJvdGVjdG9yLipkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24p
KDAsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhhdCA9IFJlZlB0cjxQcm9jZXNzTGF1bmNoZXI+
KHRoYXQpLCBkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb25dKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICAgICAgKCpwcm90ZWN0ZWRUaGF0LipkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNz
RnVuY3Rpb24pKDAsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcigpKTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gWFBDX1RZ
UEVfRElDVElPTkFSWSk7CkBAIC0xOTIsOSArMTkxLDggQEAgc3RhdGljIHZvaWQgY29ubmVjdFRv
U2VydmljZShjb25zdCBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlv
bnMKICAgICAgICAgICAgIHBpZF90IHByb2Nlc3NJZGVudGlmaWVyID0geHBjX2Nvbm5lY3Rpb25f
Z2V0X3BpZChjb25uZWN0aW9uLmdldCgpKTsKIAogICAgICAgICAgICAgLy8gV2UndmUgZmluaXNo
ZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxv
b3AuIFRoaXMgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSBjb25uZWN0aW9uLgotICAgICAgICAgICAg
UmVmUHRyPFByb2Nlc3NMYXVuY2hlcj4gcHJvdGVjdG9yKHRoYXQpOwotICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IsIGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nl
c3NGdW5jdGlvbiwgcHJvY2Vzc0lkZW50aWZpZXIsIGxpc3RlbmluZ1BvcnQsIGNvbm5lY3Rpb25d
IHsKLSAgICAgICAgICAgICAgICAoKnByb3RlY3Rvci4qZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vz
c0Z1bmN0aW9uKShwcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
KGxpc3RlbmluZ1BvcnQsIGNvbm5lY3Rpb24pKTsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbcHJvdGVjdGVkVGhhdCA9IFJlZlB0cjxQcm9jZXNzTGF1bmNoZXI+KHRoYXQp
LCBkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24sIHByb2Nlc3NJZGVudGlmaWVyLCBs
aXN0ZW5pbmdQb3J0LCBjb25uZWN0aW9uXSB7CisgICAgICAgICAgICAgICAgKCpwcm90ZWN0ZWRU
aGF0LipkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24pKHByb2Nlc3NJZGVudGlmaWVy
LCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCwgY29ubmVjdGlvbikp
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDJiNjlkNzEyNmFlODU5
MWIwNWM1ODZiOGMzYjU3MmY2ZTAzYTFlMDIuLjdhNWVhZTU3NTg5MzU4ZDIyOWY0ZTVhODA5MzRk
YzlmZmI0NzQ1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTU1NywxNSArNTU3LDE1IEBAIHZvaWQgU3RvcmFnZU1h
bmFnZXI6OmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKEhhc2hT
ZXQ8UmVmUHRyCiB7CiAgICAgUmVmUHRyPFN0b3JhZ2VNYW5hZ2VyPiBzdG9yYWdlTWFuYWdlcih0
aGlzKTsKIAotICAgIG1fcXVldWUtPmRpc3BhdGNoKFtzdG9yYWdlTWFuYWdlciwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxTdG9yYWdlTWFuYWdl
cj4oKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewogICAgICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9y
aWdpbnM7CiAKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSA6IHN0b3JhZ2VNYW5hZ2VyLT5tX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkg
eworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlIDogbV9z
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGZvciAoYXV0
byYgb3JpZ2luIDogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKICAgICAgICAg
ICAgICAgICBvcmlnaW5zLmFkZChXVEZNb3ZlKG9yaWdpbikpOwogICAgICAgICB9CiAKLSAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5zLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW29yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShvcmlnaW5zKSk7CiAgICAgICAgIH0pOwog
ICAgIH0pOwpAQCAtNTczLDEwICs1NzMsOCBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRTZXNz
aW9uU3RvcmFnZU9yaWdpbnMoc3RkOjpmdW5jdGlvbjx2b2lkIChIYXNoU2V0PFJlZlB0cgogCiB2
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZU9yaWdpbnMoc3RkOjpmdW5j
dGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJlZlB0cjxTdG9yYWdl
TWFuYWdlcj4gc3RvcmFnZU1hbmFnZXIodGhpcyk7Ci0KLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
c3RvcmFnZU1hbmFnZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UgOiBzdG9yYWdlTWFuYWdlci0+bV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVz
KCkpCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8U3Rv
cmFnZU1hbmFnZXI+KCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgZm9yIChhdXRvJiBzZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQogICAgICAg
ICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7CiAK
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKQEAgLTU5MSwxMCArNTg5LDkgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlU2Vz
c2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8UmVmUHRyPFcKICAgICBm
b3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCiAgICAgICAgIGNvcGllZE9yaWdpbnMudW5jaGVj
a2VkQXBwZW5kKG9yaWdpbi0+aXNvbGF0ZWRDb3B5KCkpOwogCi0gICAgUmVmUHRyPFN0b3JhZ2VN
YW5hZ2VyPiBzdG9yYWdlTWFuYWdlcih0aGlzKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbc3Rv
cmFnZU1hbmFnZXIsIGNvcGllZE9yaWdpbnMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8U3RvcmFnZU1hbmFnZXI+KCp0aGlzKSwgY29waWVkT3Jp
Z2lucyA9IFdURk1vdmUoY29waWVkT3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGZvciAoYXV0byYgb3Jp
Z2luIDogY29waWVkT3JpZ2lucykgewotICAgICAgICAgICAgZm9yIChhdXRvJiBzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSA6IHN0b3JhZ2VNYW5hZ2VyLT5tX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNl
cy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKICAgICAgICAgICAgICAg
ICBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdp
bigqb3JpZ2luKTsKICAgICAgICAgfQogCkBAIC02MDQsMjAgKzYwMSwxOCBAQCB2b2lkIFN0b3Jh
Z2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8VwogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRMb2NhbFN0b3JhZ2VPcmln
aW5zKHN0ZDo6ZnVuY3Rpb248dm9pZCAoSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQdHI8U3RvcmFnZU1h
bmFnZXI+IHN0b3JhZ2VNYW5hZ2VyKHRoaXMpOwotCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3N0
b3JhZ2VNYW5hZ2VyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmPFN0b3JhZ2VNYW5hZ2VyPigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIEhhc2hTZXQ8UmVm
UHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKIAotICAgICAgICBmb3IgKGF1dG8mIG9yaWdp
biA6IHN0b3JhZ2VNYW5hZ2VyLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci0+b3JpZ2lu
cygpKQorICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLT5vcmlnaW5zKCkpCiAgICAgICAgICAgICBvcmlnaW5zLmFkZChXVEZNb3ZlKG9yaWdp
bikpOwogCi0gICAgICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
IDogc3RvcmFnZU1hbmFnZXItPm1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1
ZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZSA6IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgewogICAgICAg
ICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Ut
Pm9yaWdpbnMoKSkKICAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChXVEZNb3ZlKG9yaWdpbikp
OwogICAgICAgICB9CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5z
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW29yaWdpbnMgPSBXVEZNb3Zl
KG9yaWdpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShvcmln
aW5zKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtNjI1LDEyICs2MjAsMTAgQEAgdm9pZCBT
dG9yYWdlTWFuYWdlcjo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2lucyhzdGQ6OmZ1bmN0aW9uPHZvaWQg
KEhhc2hTZXQ8UmVmUHRyPFcKIAogdm9pZCBTdG9yYWdlTWFuYWdlcjo6Z2V0TG9jYWxTdG9yYWdl
T3JpZ2luRGV0YWlscyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBSZWZQdHI8U3RvcmFnZU1hbmFnZXI+IHN0b3JhZ2VNYW5hZ2VyKHRoaXMpOworICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFN0b3JhZ2VNYW5hZ2VyPigq
dGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgICAgIGF1dG8gb3JpZ2luRGV0YWlscyA9IG1fbG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLT5vcmlnaW5EZXRhaWxzKCk7CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
c3RvcmFnZU1hbmFnZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gb3JpZ2luRGV0YWlscyA9IHN0b3JhZ2VN
YW5hZ2VyLT5tX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci0+b3JpZ2luRGV0YWlscygpOwot
Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbb3JpZ2luRGV0YWlscywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5EZXRhaWxzID0gV1RGTW92ZShv
cmlnaW5EZXRhaWxzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
b3JpZ2luRGV0YWlscykpOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTYzOCwzMyArNjMxLDI4
IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoc3Rk
OjpmdW5jdGlvbjx2b2lkIChWZWN0b3I8TG9jCiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0
ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3Vy
aXR5T3JpZ2luKQogewotICAgIFJlZlB0cjxTdG9yYWdlTWFuYWdlcj4gc3RvcmFnZU1hbmFnZXIo
dGhpcyk7Ci0KLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNvcGllZE9yaWdpbiA9IHNlY3Vy
aXR5T3JpZ2luLmlzb2xhdGVkQ29weSgpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFtzdG9yYWdl
TWFuYWdlciwgY29waWVkT3JpZ2luXSB7Ci0gICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdl
TmFtZXNwYWNlIDogc3RvcmFnZU1hbmFnZXItPm1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1
ZXMoKSkKLSAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Y2xlYXJTdG9yYWdlQXJl
YXNNYXRjaGluZ09yaWdpbigqY29waWVkT3JpZ2luKTsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxTdG9yYWdlTWFuYWdlcj4oKnRoaXMpLCBjb3BpZWRP
cmlnaW4gPSBzZWN1cml0eU9yaWdpbi5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgZm9yIChhdXRvJiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVz
cGFjZXMudmFsdWVzKCkpCisgICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFy
U3RvcmFnZUFyZWFzTWF0Y2hpbmdPcmlnaW4oY29waWVkT3JpZ2luKTsKIAotICAgICAgICBmb3Ig
KGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IHN0b3JhZ2VNYW5hZ2VyLT5t
X3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCi0gICAgICAgICAgICB0
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFyZWFzTWF0Y2hpbmdP
cmlnaW4oKmNvcGllZE9yaWdpbik7CisgICAgICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVl
cygpKQorICAgICAgICAgICAgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0
b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKGNvcGllZE9yaWdpbik7CiAKLSAgICAgICAgc3RvcmFn
ZU1hbmFnZXItPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZVdp
dGhPcmlnaW4oY29waWVkT3JpZ2luLmdldCgpKTsKKyAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihjb3BpZWRPcmlnaW4ucHRyKCkp
OwogICAgIH0pOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VP
cmlnaW5zTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50
IHRpbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBSZWZQdHI8U3RvcmFnZU1hbmFnZXI+IHN0b3JhZ2VNYW5hZ2VyKHRoaXMpOwotCi0gICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3N0b3JhZ2VNYW5hZ2VyLCB0aW1lLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIGRl
bGV0ZWRPcmlnaW5zID0gc3RvcmFnZU1hbmFnZXItPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLT5kZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKHRpbWUpOworICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFN0b3JhZ2VNYW5hZ2VyPigqdGhpcyks
IHRpbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgICAgIGF1dG8gZGVsZXRlZE9yaWdpbnMgPSBtX2xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci0+ZGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZSh0aW1lKTsKIAogICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IGRlbGV0ZWRPcmlnaW5zKSB7Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IHN0b3JhZ2VNYW5hZ2VyLT5t
X2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCisgICAgICAgICAgICBmb3IgKGF1dG8m
IGxvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMo
KSkKICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyU3RvcmFnZUFy
ZWFzTWF0Y2hpbmdPcmlnaW4ob3JpZ2luLmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIGZv
ciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogc3RvcmFnZU1hbmFnZXIt
Pm1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAgICAgZm9y
IChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCiAgICAgICAgICAgICB0cmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFzKCk7CiAKICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTY3OSwx
NiArNjY3LDE1IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJp
ZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViCiAgICAgZm9yIChhdXRvJiBvcmln
aW4gOiBvcmlnaW5zKQogICAgICAgICBjb3BpZWRPcmlnaW5zLnVuY2hlY2tlZEFwcGVuZChvcmln
aW4tPmlzb2xhdGVkQ29weSgpKTsKIAotICAgIFJlZlB0cjxTdG9yYWdlTWFuYWdlcj4gc3RvcmFn
ZU1hbmFnZXIodGhpcyk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3N0b3JhZ2VNYW5hZ2VyLCBj
b3BpZWRPcmlnaW5zLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmPFN0b3JhZ2VNYW5hZ2VyPigqdGhpcyksIGNvcGllZE9yaWdpbnMgPSBXVEZNb3Zl
KGNvcGllZE9yaWdpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IGNvcGllZE9y
aWdpbnMpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDog
c3RvcmFnZU1hbmFnZXItPm1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKKyAgICAg
ICAgICAgIGZvciAoYXV0byYgbG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV9sb2NhbFN0b3JhZ2VO
YW1lc3BhY2VzLnZhbHVlcygpKQogICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZU5hbWVzcGFj
ZS0+Y2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbigqb3JpZ2luKTsKIAotICAgICAgICAg
ICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBzdG9yYWdlTWFu
YWdlci0+bV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKQorICAgICAg
ICAgICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBtX3RyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpCiAgICAgICAgICAgICAgICAgdHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5jbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3Jp
Z2luKCpvcmlnaW4pOwogCi0gICAgICAgICAgICBzdG9yYWdlTWFuYWdlci0+bV9sb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXItPmRlbGV0ZURhdGFiYXNlV2l0aE9yaWdpbihvcmlnaW4uZ2V0KCkp
OworICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRlbGV0ZURhdGFi
YXNlV2l0aE9yaWdpbihvcmlnaW4uZ2V0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNTc5NWIyNWNjNzZiMjZhMmM1
M2YxNzBhOWYyNjI5ZWYyYTM3ZTNjZS4uMTIwNDY0MjYxZDlmNDY0ZThjZjJhZmQyYzBkOTc1YWIw
YjBiYjJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTI3MTQsNyArMjcxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUo
c3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFjCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6aXNXZWJQcm9jZXNzUmVzcG9uc2l2ZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wgaXNX
ZWJQcm9jZXNzUmVzcG9uc2l2ZSk+IGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFpc1Zh
bGlkKCkpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0Z1bmN0
aW9uXSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tGdW5jdGlv
biA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildIHsKICAgICAgICAgICAgIGJvb2wgaXNXZWJQ
cm9jZXNzUmVzcG9uc2l2ZSA9IHRydWU7CiAgICAgICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKGlz
V2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZmQ1YmM1ZmJmOTAxMDVhNWIwNDAxN2Q0
ZjNmOTc4YjlmNDk3MDk1ZS4uMzM4YTgyZGI4ZTI1NzQ2NzMyMmI4YWI4NDkzMDY0ZTI1NGYzNTI1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAg
LTk5OCw3ICs5OTgsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6aXNSZXNwb25zaXZlKHN0ZDo6
ZnVuY3Rpb248dm9pZChib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdgogewogICAgIGlmIChtX2lz
UmVzcG9uc2l2ZSA9PSBOb09yTWF5YmU6Ok5vKSB7CiAgICAgICAgIGlmIChjYWxsYmFjaykgewot
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja10geworICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSB7CiAgICAgICAgICAgICAgICAgYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2soaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk7CiAg
ICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA2NzQ4NzdhY2RkY2U5Mzk3OGJi
ODllNTg1MTRkZjA4MjI4OTViMmNiLi5iMDM4NTE1YjQ0ZWI4YjZkYWE5YzMxMjhmZGFhZGFhYzFh
N2MyMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0yMzUsOCArMjM1LDcgQEAgdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5
cGVzLCBPcHRpb25TZXQKICAgICAgICAgICAgIGlmIChwZW5kaW5nQ2FsbGJhY2tzKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRv
cj4gY2FsbGJhY2tBZ2dyZWdhdG9yKHRoaXMpOwotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yID0gUmVmPENhbGxiYWNrQWdncmVnYXRv
cj4oKnRoaXMpXSgpIG11dGFibGUgewogCiAgICAgICAgICAgICAgICAgV1RGOjpWZWN0b3I8V2Vi
c2l0ZURhdGFSZWNvcmQ+IHJlY29yZHM7CiAgICAgICAgICAgICAgICAgcmVjb3Jkcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YVJlY29yZHMu
c2l6ZSgpKTsKQEAgLTI2NSwxNyArMjY0LDE1IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0
Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0CiAg
ICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAg
IG1fcXVldWUtPmRpc3BhdGNoKFtmZXRjaE9wdGlvbnMsIG1lZGlhQ2FjaGVEaXJlY3RvcnksIGNh
bGxiYWNrQWdncmVnYXRvcl0gewogICAgICAgICAgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zID0gV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6b3Jp
Z2luc0luTWVkaWFDYWNoZShtZWRpYUNhY2hlRGlyZWN0b3J5LnN0cmluZygpKTsKLSAgICAgICAg
ICAgIFdlYnNpdGVEYXRhKiB3ZWJzaXRlRGF0YSA9IG5ldyBXZWJzaXRlRGF0YTsKKyAgICAgICAg
ICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBm
b3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICBXZWJzaXRlRGF0
YTo6RW50cnkgZW50cnkgeyBvcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCAwIH07
Ci0gICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEtPmVudHJpZXMuYXBwZW5kKFdURk1vdmUoZW50
cnkpKTsKKyAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXVEZNb3Zl
KGVudHJ5KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFdURjo6
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IsIG9yaWdpbnMsIHdl
YnNpdGVEYXRhXSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQ
ZW5kaW5nQ2FsbGJhY2soV1RGTW92ZSgqd2Vic2l0ZURhdGEpKTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBkZWxldGUgd2Vic2l0ZURhdGE7CisgICAgICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2lucyA9IFdURk1vdmUo
b3JpZ2lucyksIHdlYnNpdGVEYXRhID0gV1RGTW92ZSh3ZWJzaXRlRGF0YSldKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJh
Y2soV1RGTW92ZSh3ZWJzaXRlRGF0YSkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwog
I2VuZGlmCkBAIC0zNjUsNyArMzYyLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERh
dGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQKICAgICAg
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW2ZldGNoT3B0aW9ucywgYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSwgY2FsbGJhY2tB
Z2dyZWdhdG9yXSB7CiAgICAgICAgICAgICBhdXRvIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnkuc3RyaW5n
KCksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUuc3RyaW5nKCkpOwog
Ci0gICAgICAgICAgICBXZWJzaXRlRGF0YSogd2Vic2l0ZURhdGEgPSBuZXcgV2Vic2l0ZURhdGE7
CisgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKIAogICAgICAgICAgICAgSGFz
aFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwogICAgICAgICAg
ICAgc3RvcmFnZS0+Z2V0T3JpZ2luc1dpdGhDYWNoZShvcmlnaW5zKTsKQEAgLTM3NCwxMyArMzcx
LDExIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0CiAgICAgICAgICAgICAgICAgdWludDY0X3Qg
c2l6ZSA9IGZldGNoT3B0aW9ucy5jb250YWlucyhXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21w
dXRlU2l6ZXMpID8gc3RvcmFnZS0+ZGlza1VzYWdlRm9yT3JpZ2luKCpvcmlnaW4pIDogMDsKICAg
ICAgICAgICAgICAgICBXZWJzaXRlRGF0YTo6RW50cnkgZW50cnkgeyBvcmlnaW4sIFdlYnNpdGVE
YXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHNpemUgfTsKIAotICAgICAgICAg
ICAgICAgIHdlYnNpdGVEYXRhLT5lbnRyaWVzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CisgICAg
ICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBXVEY6OlJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbY2FsbGJhY2tBZ2dyZWdhdG9yLCBvcmlnaW5zLCB3ZWJzaXRlRGF0YV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFj
ayhXVEZNb3ZlKCp3ZWJzaXRlRGF0YSkpOwotCi0gICAgICAgICAgICAgICAgZGVsZXRlIHdlYnNp
dGVEYXRhOworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0Fn
Z3JlZ2F0b3IsIG9yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCB3ZWJzaXRlRGF0YSA9IFdURk1v
dmUod2Vic2l0ZURhdGEpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CkBAIC0zOTQsNyArMzg5LDcgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
ZGF0YVR5cGVzLCBPcHRpb25TZXQKICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwogICAgICAgICAgICAgV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aCh3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeS5z
dHJpbmcoKSktPm9yaWdpbnMob3JpZ2lucyk7CiAKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yLCBvcmlnaW5zXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IsIG9y
aWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFdl
YnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2lu
IDogb3JpZ2lucykKICAgICAgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBl
bmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgV1RGTW92ZShvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6
OldlYlNRTERhdGFiYXNlcywgMCB9KTsKQEAgLTQyNSw3ICs0MjAsNyBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OmZldGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMs
IE9wdGlvblNldAogICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CiAgICAgICAgICAgICBhdXRvIG9yaWdpbnMg
PSBtZWRpYUtleU9yaWdpbnMobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5zdHJpbmcoKSk7CiAK
LSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9y
LCBvcmlnaW5zXSgpIG11dGFibGUgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IsIG9yaWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpXSgpIG11
dGFibGUgewogICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogICAgICAg
ICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKICAgICAgICAgICAgICAgICAg
ICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgV1RGTW92
ZShvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6Ok1lZGlhS2V5cywgMCB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uY3BwCmluZGV4IGI5YjI5NmNlMWJlODZkZGUyNzZkN2YyNjQ0MzBjMjUwNjhmYTk5
NGYuLjMxNTFlMTRlYjVlOTVlNDZiMDZmMGQ3Y2YxMDk4NWNhMjRmNjJmNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcApAQCAtMzAyLDkgKzMwMiw4IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46
OnBvcFBvcHVwc0VuYWJsZWRTdGF0ZSgpCiAKIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsdWdpblRo
cmVhZEFzeW5jQ2FsbCh2b2lkICgqZnVuY3Rpb24pKHZvaWQqKSwgdm9pZCogdXNlckRhdGEpCiB7
Ci0gICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBwbHVnaW4odGhpcyk7Ci0gICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwbHVnaW4sIGZ1bmN0aW9uLCB1c2VyRGF0YV0gewotICAgICAgICBp
ZiAoIXBsdWdpbi0+bV9pc1N0YXJ0ZWQpCisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtw
cm90ZWN0ZWRUaGlzID0gUmVmPE5ldHNjYXBlUGx1Z2luPigqdGhpcyksIGZ1bmN0aW9uLCB1c2Vy
RGF0YV0geworICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPm1faXNTdGFydGVkKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGZ1bmN0aW9uKHVzZXJEYXRhKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBjYWEzMWQ2
NmRmOTc1NTkxYmUwYmM0Mjk0YjI3NjFlZWNiMGYwYTY1Li44ODIxNGFmZjkzNTc4NmZmODVjYjFm
MGEyN2ZjYjlmMGI3ZWQ2YTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNjc5LDggKzE2NzksNyBAQCB2b2lkIFBsdWdpblZp
ZXc6OnVucHJvdGVjdFBsdWdpbkZyb21EZXN0cnVjdGlvbigpCiAgICAgLy8gdGhlIGRlc3Ryb3ll
ZCBvYmplY3QgaGlnaGVyIG9uIHRoZSBzdGFjay4gVG8gcHJldmVudCB0aGlzLCBpZiB0aGUgcGx1
Zy1pbiBoYXMKICAgICAvLyBvbmx5IG9uZSByZW1haW5pbmcgcmVmZXJlbmNlLCBjYWxsIGRlcmVm
KCkgYXN5bmNocm9ub3VzbHkuCiAgICAgaWYgKGhhc09uZVJlZigpKSB7Ci0gICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbdGhpc10gewotICAgICAgICAgICAgZGVyZWYoKTsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtsYXN0UmVmID0gYWRvcHRSZWYoKnRoaXMpXSB7
CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCBiOTYz
OThlZDM1YzNiMDc4MjRmMjRjOWM1MGU4ZjMyM2ZhMTE0MGFkLi5kOWEwMzFlMDk3MmJkY2FhYzJj
N2Y1YmY1NjBmMzk0OWE0MGRlY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMTM4LDE4ICsxMzgsMTYgQEAg
dm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW4KICAgICBVTlVTRURfUEFSQU0oY2FuUnViYmVyQmFuZEF0
Qm90dG9tKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPEV2ZW50RGlzcGF0Y2hlcj4gZXZlbnREaXNw
YXRjaGVyID0gdGhpczsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2V2ZW50RGlzcGF0
Y2hlciwgcGFnZUlELCB3aGVlbEV2ZW50XSB7Ci0gICAgICAgIGV2ZW50RGlzcGF0Y2hlci0+ZGlz
cGF0Y2hXaGVlbEV2ZW50KHBhZ2VJRCwgd2hlZWxFdmVudCk7CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEV2ZW50RGlzcGF0Y2hlcj4oKnRoaXMpLCBw
YWdlSUQsIHdoZWVsRXZlbnRdKCkgbXV0YWJsZSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPmRp
c3BhdGNoV2hlZWxFdmVudChwYWdlSUQsIHdoZWVsRXZlbnQpOwogICAgIH0pOyAKIH0KIAogI2lm
IEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCiB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6Z2VzdHVy
ZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQmIGdl
c3R1cmVFdmVudCkKIHsKLSAgICBSZWZQdHI8RXZlbnREaXNwYXRjaGVyPiBldmVudERpc3BhdGNo
ZXIgPSB0aGlzOwotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZXZlbnREaXNwYXRjaGVy
LCBwYWdlSUQsIGdlc3R1cmVFdmVudF0gewotICAgICAgICBldmVudERpc3BhdGNoZXItPmRpc3Bh
dGNoR2VzdHVyZUV2ZW50KHBhZ2VJRCwgZ2VzdHVyZUV2ZW50KTsKKyAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8RXZlbnREaXNwYXRjaGVyPigqdGhpcyks
IHBhZ2VJRCwgZ2VzdHVyZUV2ZW50XSgpIG11dGFibGUgeworICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5kaXNwYXRjaEdlc3R1cmVFdmVudChwYWdlSUQsIGdlc3R1cmVFdmVudCk7CiAgICAgfSk7CiB9
CiAjZW5kaWYKQEAgLTE5MSw4ICsxODksNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hF
dmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgdAogICAg
IH0KIAogICAgIGlmICh1cGRhdGVMaXN0V2FzRW1wdHkpIHsKLSAgICAgICAgUmVmUHRyPEV2ZW50
RGlzcGF0Y2hlcj4gZXZlbnREaXNwYXRjaGVyID0gdGhpczsKLSAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtldmVudERpc3BhdGNoZXJdIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmPEV2ZW50RGlzcGF0Y2hlcj4oKnRoaXMpXSgp
IG11dGFibGUgewogICAgICAgICAgICAgZXZlbnREaXNwYXRjaGVyLT5kaXNwYXRjaFRvdWNoRXZl
bnRzKCk7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCmluZGV4IGY2NWIw
MmY0MjkxMTNkYTk5M2RlNjUxYWEzZDA3NzNhYzkxODk4ZDUuLjdkOWMwYjhiNzE5ZmNjZGYyMTU0
M2QwZDQ1OWZiM2ZkZDQ3OTgzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcApAQCAtNjcsOSArNjcs
OCBAQCB2b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVyOjp2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUo
dWludDY0X3QgcGFnZUlELCBjb25zdCBWaXNpYgogICAgICAgICAgICAgaXRlcmF0b3ItPnZhbHVl
LnZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8gPSB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJ
bmZvOwogICAgIH0KICAgICBpZiAodXBkYXRlTGlzdFdhc0VtcHR5KSB7Ci0gICAgICAgIFJlZlB0
cjxWaWV3VXBkYXRlRGlzcGF0Y2hlcj4gcHJvdGVjdG9yKHRoaXMpOwotICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3Rvcl0gewotICAgICAgICAgICAgcHJvdGVjdG9yLT5k
aXNwYXRjaFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSgpOworICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWY8Vmlld1VwZGF0ZURpc3BhdGNoZXI+KCp0
aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoVmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlKCk7CiAgICAgICAgIH0pOwogICAgIH0KIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>