<?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>232146</bug_id>
          
          <creation_ts>2021-10-22 08:39:31 -0700</creation_ts>
          <short_desc>Perform FileSystemSyncAccessHandle operations in web process</short_desc>
          <delta_ts>2021-11-10 00:20:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>231706</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>ggaren</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1807685</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-10-22 08:39:31 -0700</bug_when>
    <thetext>Then only web process needs to manage the file handle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809477</commentid>
    <comment_count>1</comment_count>
      <attachid>442645</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-10-27 16:12:37 -0700</bug_when>
    <thetext>Created attachment 442645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809481</commentid>
    <comment_count>2</comment_count>
      <attachid>442647</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-10-27 16:22:23 -0700</bug_when>
    <thetext>Created attachment 442647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809488</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-10-27 16:30:59 -0700</bug_when>
    <thetext>Seems like a nice approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809594</commentid>
    <comment_count>4</comment_count>
      <attachid>442647</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-28 00:23:25 -0700</bug_when>
    <thetext>Comment on attachment 442647
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        truncate(), getSize() and flush() operations will actually be sync operations.

For read/write, we have to block but for other methods, we should try not to block.
I would tend to implement the meat of these operations in a single WorkerGlobalScope work queue and use promises to signal when we are back from the work queue.

&gt; Source/WebKit/ChangeLog:9
&gt; +        file handle, pass it to web process and close it.

We probably need to have a dedicated network process crash handling (in this patch or as a follow-up) since the WebProcess sync handle might continue working while the new network process will not know of this pre-existing sync handle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809980</commentid>
    <comment_count>5</comment_count>
      <attachid>442789</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-10-29 00:20:48 -0700</bug_when>
    <thetext>Created attachment 442789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810001</commentid>
    <comment_count>6</comment_count>
      <attachid>442789</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-29 01:21:24 -0700</bug_when>
    <thetext>Comment on attachment 442789
Patch

Looks almost ready, I&apos;d like to understand whether close should also hop to the work queue.

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

&gt; Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp:75
&gt; +            result = Exception { UnknownError };

It seems we could just return success here and create the Exception Object in worker as needed.
Ditto for the other methods.

&gt; Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp:83
&gt; +        workerThread-&gt;runLoop().postTask(WTFMove(task));

I do not think we need a specific task:
workerThread-&gt;runLoop().postTask([...] { ... {); should work just fine.
Ditto below.

&gt; Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp:159
&gt; +    for (auto&amp; promise : pendingPromises) {

Is that correct?
I would have expected that close would be queued on the work queue so that the following would actually work fine:
handle.flush(); // no await
handle.close(); // flush first, then close.

To make it work, that would mean calling closeFile within a WorkerGlobalScope::postFileSystemStorageTask task.

In any case, we should be able to write a test and validate this with other implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810086</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-29 08:40:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/84809428&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810934</commentid>
    <comment_count>8</comment_count>
      <attachid>443025</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-11-01 15:43:07 -0700</bug_when>
    <thetext>Created attachment 443025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810979</commentid>
    <comment_count>9</comment_count>
      <attachid>443039</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-11-01 17:11:13 -0700</bug_when>
    <thetext>Created attachment 443039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810982</commentid>
    <comment_count>10</comment_count>
      <attachid>443040</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-11-01 17:23:59 -0700</bug_when>
    <thetext>Created attachment 443040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810991</commentid>
    <comment_count>11</comment_count>
      <attachid>443045</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-11-01 17:56:59 -0700</bug_when>
    <thetext>Created attachment 443045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811003</commentid>
    <comment_count>12</comment_count>
      <attachid>443050</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-11-01 18:44:16 -0700</bug_when>
    <thetext>Created attachment 443050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813208</commentid>
    <comment_count>13</comment_count>
      <attachid>443050</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-09 10:12:04 -0800</bug_when>
    <thetext>Comment on attachment 443050
Patch

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

&gt; Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp:159
&gt; +{

Might be worth adding ASSERT(!isClosingOrClosed()) since we are calling this from several places.

&gt; Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp:163
&gt; +        });

return here to remove the else.

&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:82
&gt; +    static NeverDestroyed&lt;Ref&lt;WorkQueue&gt;&gt; queue(WorkQueue::create(&quot;Shared File System Storage Queue&quot;,  WorkQueue::QOS::Utility));

Not really sure what the best QOS value is. On one hand, we want to be fast but we do not want too many fast queues.
Maybe default is fine here.

&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:83
&gt; +    return queue.get().copyRef();

Seems wasteful to return a Ref&lt;&gt;. We could return a WorQueue&amp;, or define the static queue directly in WorkerGlobalScope::postFileSystemStorageTask</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813481</commentid>
    <comment_count>14</comment_count>
      <attachid>443050</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-11-09 23:21:38 -0800</bug_when>
    <thetext>Comment on attachment 443050
Patch

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

&gt;&gt; Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp:159
&gt;&gt; +{
&gt; 
&gt; Might be worth adding ASSERT(!isClosingOrClosed()) since we are calling this from several places.

hmmm closeBackend() can happen after isClosingOrClosed is true; see FileSystemSyncAccessHandle::~FileSystemSyncAccessHandle().

&gt;&gt; Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp:163
&gt;&gt; +        });
&gt; 
&gt; return here to remove the else.

Sure.

&gt;&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:82
&gt;&gt; +    static NeverDestroyed&lt;Ref&lt;WorkQueue&gt;&gt; queue(WorkQueue::create(&quot;Shared File System Storage Queue&quot;,  WorkQueue::QOS::Utility));
&gt; 
&gt; Not really sure what the best QOS value is. On one hand, we want to be fast but we do not want too many fast queues.
&gt; Maybe default is fine here.

Okay, will change to Default.

&gt;&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:83
&gt;&gt; +    return queue.get().copyRef();
&gt; 
&gt; Seems wasteful to return a Ref&lt;&gt;. We could return a WorQueue&amp;, or define the static queue directly in WorkerGlobalScope::postFileSystemStorageTask

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813482</commentid>
    <comment_count>15</comment_count>
      <attachid>443778</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-11-09 23:21:50 -0800</bug_when>
    <thetext>Created attachment 443778
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813490</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-10 00:20:38 -0800</bug_when>
    <thetext>Committed r285566 (244074@main): &lt;https://commits.webkit.org/244074@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443778.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442645</attachid>
            <date>2021-10-27 16:12:37 -0700</date>
            <delta_ts>2021-10-27 16:22:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232146-20211027161236.patch</filename>
            <type>text/plain</type>
            <size>52023</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FkNjY4YzY0OGQyNTY4
MjA5NjQ4NjA0YjIzZjJmNmIxMjUzMDE1NS4uYjdiYjMwM2YyOTVmOWUyNWM2MGQyZTVjNDYxMzYz
MzA4OTgwYWM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTEwLTI3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFBlcmZvcm0gRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGUgb3BlcmF0aW9ucyBpbiB3ZWIgcHJvY2VzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMTQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgdHJ1bmNhdGUoKSwgZ2V0U2l6ZSgp
IGFuZCBmbHVzaCgpIG9wZXJhdGlvbnMgd2lsbCBhY3R1YWxseSBiZSBzeW5jIG9wZXJhdGlvbnMu
CisKKyAgICAgICAgTW9kaWZpZWQgZXhpc3RpbmcgdGVzdHMgZm9yIG5ldyBiZWhhdmlvci4KKwor
ICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRmlsZUhhbmRsZTo6Z2V0U2l6ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRmlsZUhhbmRsZTo6dHJ1bmNhdGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZpbGVIYW5kbGU6OmZsdXNo
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3Rl
bUZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNj
ZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjp0cnVuY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Z2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlOjp3cml0ZSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmg6CisgICAgICAgICgpOiBEZWxldGVk
LgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpjb21wbGV0ZUludGVnZXJDYWxsYmFjayk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldFNpemUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjp0cnVuY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmZsdXNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmg6
CisKIDIwMjEtMTAtMjYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0dQVSBQcm9jZXNzXSBgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpnZXRDVE1gIHNo
b3VsZCBpbmNsdWRlIHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0NzQ2NjI0
OWIxZmRlODI0Y2EzNmViOTE5YTM3ZjBhZDc5MWQ1ODMuLjJhNzc4MmZhYTIyZmUwMmVkZGVlMTQy
NjRlMTBkYTIyMzlmMjgxZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEtMTAtMjcg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgUGVyZm9ybSBGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZSBvcGVyYXRpb25zIGluIHdlYiBwcm9jZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIxNDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXR3b3JrIHByb2Nlc3Mg
bm8gbG9uZ2VyIG5lZWRzIHRvIGhvbGQgb3BlbiBmaWxlIGhhbmRsZSBmb3IgRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGUuIE5vdyBpdCBjcmVhdGVzIGFuIG9wZW4gCisgICAgICAgIGZpbGUgaGFu
ZGxlLCBwYXNzIGl0IHRvIHdlYiBwcm9jZXNzIGFuZCBjbG9zZSBpdC4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VFcnJvci5oOgorICAgICAgICAo
V2ViS2l0Ojpjb252ZXJ0VG9FeGNlcHRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaWxl
U3lzdGVtU3RvcmFnZUhhbmRsZTo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZSk6CisgICAgICAgIChX
ZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6
OkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjptb3ZlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGU6On5GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpnZXRTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OnRydW5jYXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmZsdXNo
KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRTaXplRm9yQWNjZXNzSGFuZGxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjp0cnVu
Y2F0ZUZvckFjY2Vzc0hhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Zmx1c2hGb3JBY2Nlc3NIYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMu
aW46CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuY3BwOgorICAgICAg
ICAoSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpjbG9zZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L1NoYXJlZEZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6dHJ1bmNhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmZs
dXNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oOgorCiAyMDIxLTEwLTI2ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHByb3BlcnRp
ZXMgc2V0IGJ5IE5TVVJMUHJvdG9jb2wgb24gTlNVUkxSZXF1ZXN0IGJlZm9yZSBzZXJpYWxpemlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0Zp
bGVTeXN0ZW1GaWxlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKaW5kZXggMzY2ODczYWFmZDlkOThlNTc2
NGM5YjI1NTFiM2NlNWVmNjIwYmZiOC4uOWE4MzhjMDZiNzFhYWY4NjQzNzJhZTllYzg0ZDAzZjAz
MDk5OGM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNj
ZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwCkBAIC02OCwzMCArNjgs
NiBAQCB2b2lkIEZpbGVTeXN0ZW1GaWxlSGFuZGxlOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKERP
TVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhYwogICAgIH0pOwogfQogCi12b2lkIEZpbGVTeXN0
ZW1GaWxlSGFuZGxlOjpnZXRTaXplKEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
ciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlv
bk9yPHVpbnQ2NF90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoaXNDbG9z
ZWQoKSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCAiSGFuZGxlIGlzIGNsb3NlZCJfcyB9KTsKLQotICAgIGNvbm5lY3Rpb24o
KS5nZXRTaXplKGlkZW50aWZpZXIoKSwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIEZpbGVTeXN0ZW1GaWxlSGFuZGxlOjp0cnVu
Y2F0ZShGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRl
bnRpZmllciwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhjZXB0aW9uT3I8dm9pZD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGlz
Q2xvc2VkKCkpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciwgIkhhbmRsZSBpcyBjbG9zZWQiX3MgfSk7Ci0KLSAgICBjb25uZWN0
aW9uKCkudHJ1bmNhdGUoaWRlbnRpZmllcigpLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBzaXpl
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgRmlsZVN5c3RlbUZpbGVI
YW5kbGU6OmZsdXNoKEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmIChpc0Nsb3NlZCgpKQotICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJIYW5kbGUgaXMgY2xvc2VkIl9zIH0pOwotCi0gICAgY29ubmVjdGlvbigpLmZsdXNoKGlkZW50
aWZpZXIoKSwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotfQotCiB2b2lkIEZpbGVTeXN0ZW1GaWxlSGFuZGxlOjpjbG9zZShGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoaXNDbG9zZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmgKaW5kZXgg
OTRkNWUxZTE3ZjlmNmZhMTk3NzQxNDAzZjc5ZTRjNzgwYzZlZGRiZS4uNjIzOWY3NGJmZWVkZWRi
MTAxMDkyY2FhYTM0MWI0OWJlMTY3Njg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmgK
QEAgLTQxLDkgKzQxLDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0RmlsZShET01Qcm9taXNlRGVm
ZXJyZWQ8SURMSW50ZXJmYWNlPEZpbGU+PiYmKTsKIAogICAgIHZvaWQgY3JlYXRlU3luY0FjY2Vz
c0hhbmRsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlPj4mJik7Ci0gICAgdm9pZCBnZXRTaXplKEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx1aW50NjRf
dD4mJik+JiYpOwotICAgIHZvaWQgdHJ1bmNhdGUoRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJik7Ci0gICAgdm9pZCBmbHVzaChGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8dm9pZD4mJik+JiYpOwogICAgIHZvaWQgY2xvc2UoRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYp
PiYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24u
aAppbmRleCAyN2ZhMWUyYzljZWVlMjU2NWNmMzc1YmE2OTRjNGE1YWMxN2U5Nzc0Li5kNjNkNzM5
M2RmYTMxOTAzZGQ2NzNkMTFkZmZjOWJkMGNlZjc5ZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC01Nyw5ICs1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlRW50cnkoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbmFtZSwgYm9vbCBkZWxldGVSZWN1cnNpdmVseSwgVm9pZENhbGxiYWNrJiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmls
ZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFJlc29sdmVDYWxsYmFjayYmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIsIEdldEFjY2Vzc0hhbmRsZUNhbGxiYWNrJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
U2l6ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBJbnRlZ2VyQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0
cnVuY2F0ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXplLCBWb2lkQ2FsbGJhY2smJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBmbHVzaChGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBWb2lkQ2FsbGJhY2smJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjbG9zZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBWb2lkQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRIYW5kbGVOYW1lcyhGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgR2V0SGFu
ZGxlTmFtZXNDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEhhbmRsZShGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBHZXRIYW5kbGVXaXRo
VHlwZUNhbGxiYWNrJiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGUuY3BwCmluZGV4IDI0ZmMyYTdhNDIzODM4NzlmOGVkZjk1YTZjYWVkODJmMzhiMWMyNjguLmEx
ZWVmNmNhNTcyMmZhNjY0ODZjZWMzNTQ4MmQzNDMzZjgxNzQ2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0Zp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcApAQCAtNjMsMTMgKzYzLDExIEBAIHZvaWQgRmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OnRydW5jYXRlKHVuc2lnbmVkIGxvbmcgbG9uZyBzaXpl
LCBET01Qcm9taXNlRGVmCiAgICAgaWYgKGlzQ2xvc2luZ09yQ2xvc2VkKCkpCiAgICAgICAgIHJl
dHVybiBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2Vz
c0hhbmRsZSBpcyBjbG9zaW5nIG9yIGNsb3NlZCJfcyB9KTsKIAotICAgIG1fcGVuZGluZ09wZXJh
dGlvbkNvdW50Kys7Ci0gICAgbV9zb3VyY2UtPnRydW5jYXRlKG1faWRlbnRpZmllciwgc2l6ZSwg
W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAg
ICAgIHdlYWtUaGlzLT5tX3BlbmRpbmdPcGVyYXRpb25Db3VudC0tOworICAgIGludCByZXN1bHQg
PSBGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUobV9maWxlLCBzaXplKTsKKyAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFVua25vd25FcnJv
ciB9KTsKIAotICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwotICAgIH0p
OworICAgIHByb21pc2UucmVzb2x2ZSgpOwogfQogCiB2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlOjpnZXRTaXplKERPTVByb21pc2VEZWZlcnJlZDxJRExVbnNpZ25lZExvbmdMb25nPiYm
IHByb21pc2UpCkBAIC03NywxMyArNzUsMTEgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZTo6Z2V0U2l6ZShET01Qcm9taXNlRGVmZXJyZWQ8SURMVW5zaWduZWRMb25nTG9uZz4KICAg
ICBpZiAoaXNDbG9zaW5nT3JDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0
KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzSGFuZGxlIGlzIGNsb3Npbmcg
b3IgY2xvc2VkIl9zIH0pOwogCi0gICAgbV9wZW5kaW5nT3BlcmF0aW9uQ291bnQrKzsKLSAgICBt
X3NvdXJjZS0+Z2V0U2l6ZShtX2lkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byByZXN1bHQpIG11dGFibGUgewot
ICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9wZW5kaW5nT3Bl
cmF0aW9uQ291bnQtLTsKKyAgICBhdXRvIHNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShtX2Zp
bGUpOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IFVua25vd25FcnJvciB9KTsKIAotICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3Zl
KHJlc3VsdCkpOwotICAgIH0pOworICAgIHByb21pc2UucmVzb2x2ZShzaXplLnZhbHVlKCkpOwog
fQogCiB2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpmbHVzaChET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQpAQCAtOTEsMjAgKzg3LDE2IEBAIHZvaWQgRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGU6OmZsdXNoKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21p
c2UpCiAgICAgaWYgKGlzQ2xvc2luZ09yQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybiBwcm9taXNl
LnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2Vzc0hhbmRsZSBpcyBj
bG9zaW5nIG9yIGNsb3NlZCJfcyB9KTsKIAotICAgIG1fcGVuZGluZ09wZXJhdGlvbkNvdW50Kys7
Ci0gICAgbV9zb3VyY2UtPmZsdXNoKG1faWRlbnRpZmllciwgW3dlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvIHJlc3VsdCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX3BlbmRp
bmdPcGVyYXRpb25Db3VudC0tOworICAgIGF1dG8gcmVzdWx0ID0gRmlsZVN5c3RlbTo6Zmx1c2hG
aWxlKG1fZmlsZSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBwcm9taXNlLnJl
amVjdChFeGNlcHRpb24geyBVbmtub3duRXJyb3IgfSk7CiAKLSAgICAgICAgcHJvbWlzZS5zZXR0
bGUoV1RGTW92ZShyZXN1bHQpKTsKLSAgICB9KTsKKyAgICBwcm9taXNlLnJlc29sdmUoKTsKIH0K
IAogdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y2xvc2UoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKLSAgICBtX3BlbmRpbmdPcGVyYXRpb25Db3VudCsrOwot
ICAgIGNsb3NlSW50ZXJuYWwoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHdlYWtU
aGlzLT5tX3BlbmRpbmdPcGVyYXRpb25Db3VudC0tOworICAgIGNsb3NlSW50ZXJuYWwoW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHBy
b21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CiAgICAgfSk7CiB9CkBAIC0xNDIsOSArMTM0
LDYgQEAgRXhjZXB0aW9uT3I8dW5zaWduZWQgbG9uZyBsb25nPiBGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZTo6cmVhZChCdWZmZXJTb3VyY2UmJgogICAgIGlmIChpc0Nsb3NpbmdPckNsb3NlZCgp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3NI
YW5kbGUgaXMgY2xvc2luZyBvciBjbG9zZWQiX3MgfTsKIAotICAgIGlmIChtX3BlbmRpbmdPcGVy
YXRpb25Db3VudCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCAiQWNjZXNzIGhhbmRsZSBoYXMgdW5maW5pc2hlZCBvcGVyYXRpb24iX3MgfTsKLQogICAgIGlu
dCByZXN1bHQgPSBGaWxlU3lzdGVtOjpzZWVrRmlsZShtX2ZpbGUsIG9wdGlvbnMuYXQsIEZpbGVT
eXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmcpOwogICAgIGlmIChyZXN1bHQgPT0gLTEp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0
byByZWFkIGF0IG9mZnNldCJfcyB9OwpAQCAtMTYzLDkgKzE1Miw2IEBAIEV4Y2VwdGlvbk9yPHVu
c2lnbmVkIGxvbmcgbG9uZz4gRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OndyaXRlKEJ1ZmZl
clNvdXJjZSYmCiAgICAgaWYgKGlzQ2xvc2luZ09yQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2Vzc0hhbmRsZSBpcyBjbG9zaW5nIG9y
IGNsb3NlZCJfcyB9OwogCi0gICAgaWYgKG1fcGVuZGluZ09wZXJhdGlvbkNvdW50KQotICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3MgaGFuZGxlIGhh
cyB1bmZpbmlzaGVkIG9wZXJhdGlvbiJfcyB9OwotCiAgICAgaW50IHJlc3VsdCA9IEZpbGVTeXN0
ZW06OnNlZWtGaWxlKG1fZmlsZSwgb3B0aW9ucy5hdCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmln
aW46OkJlZ2lubmluZyk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRvIHdyaXRlIGF0IG9mZnNldCJf
cyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNz
L0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaAppbmRleCBlZDI5YmU1
OTE2ZjE5OTI5YTkxMzIyNTY2NTFlZWRkNGZmYjdhZDdiLi44ZjhkYTRhMzRhMTlkZjk5ZmFkYTYz
M2EwMDhkYzM4NmY3Mzk0ZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGUuaApAQCAtNjcsNyArNjcsNiBAQCBwcml2YXRlOgogCiAgICAgUmVmPEZpbGVTeXN0ZW1GaWxl
SGFuZGxlPiBtX3NvdXJjZTsKICAgICBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwotICAgIHVpbnQ2NF90IG1fcGVuZGluZ09wZXJhdGlvbkNvdW50IHsg
MCB9OwogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGU7CiAgICAgc3Rk
OjpvcHRpb25hbDxFeGNlcHRpb25Pcjx2b2lkPj4gbV9jbG9zZVJlc3VsdDsKICAgICBWZWN0b3I8
Q2xvc2VDYWxsYmFjaz4gbV9jbG9zZUNhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtl
ckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggNjcxYWM0ZjExOGE5M2E2ZDY2
MTgyMmY4ZjVlN2QyYWEwMzBhMWEyOC4uNjc4OTY0MzE0NjI0YmFlNmYxODlmMzBlZTRmYjJhMzE0
MjEyOTI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNj
ZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbi5jcHAKQEAgLTE5OSwxMiArMTk5LDYgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb246OmRpZENyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoQ2FsbGJhY2tJZGVudGkK
ICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNvbXBsZXRlSW50ZWdlckNhbGxiYWNrKENhbGxiYWNr
SWRlbnRpZmllciBjYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHVpbnQ2NF90PiYmIHJl
c3VsdCkKLXsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1faW50ZWdlckNhbGxiYWNrcy50YWtl
KGNhbGxiYWNrSWRlbnRpZmllcikpCi0gICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7
Ci19Ci0KIHZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wbGV0ZVZv
aWRDYWxsYmFjayhDYWxsYmFja0lkZW50aWZpZXIgY2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRp
b25Pcjx2b2lkPiYmIHJlc3VsdCkKIHsKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fdm9pZENh
bGxiYWNrcy50YWtlKGNhbGxiYWNrSWRlbnRpZmllcikpCkBAIC0yMzQsNjYgKzIyOCw2IEBAIHZv
aWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFu
ZGxlKEZpbGVTeXN0ZW1IYW5kbGVJCiAgICAgfSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRTaXplKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkludGVnZXJDYWxsYmFj
ayYmIGNhbGxiYWNrKQotewotICAgIGlmICghbV9zY29wZSkKLSAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwotCi0gICAgYXV0byBjYWxsYmFj
a0lkZW50aWZpZXIgPSBDYWxsYmFja0lkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOwot
ICAgIG1faW50ZWdlckNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7Ci0KLSAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lkZW50aWZpZXIsIHdv
cmtlclRocmVhZCA9IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5UaHJlYWRDb25uZWN0
aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRl
bnRpZmllcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBb
Y2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCld
KGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1Ro
cmVhZENvcHkocmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAg
ICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3Bl
KS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgY29u
bmVjdGlvbi0+Y29tcGxldGVJbnRlZ2VyQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZN
b3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUo
KSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPmdldFNpemUo
aWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV1RGTW92ZShtYWluVGhyZWFkQ2Fs
bGJhY2spKTsKLSAgICB9KTsKLX0KLQotdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb246OnRydW5jYXRlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVy
LCB1aW50NjRfdCBzaXplLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFj
ayYmIGNhbGxiYWNrKQotewotICAgIGlmICghbV9zY29wZSkKLSAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwotCi0gICAgYXV0byBjYWxsYmFj
a0lkZW50aWZpZXIgPSBDYWxsYmFja0lkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOwot
ICAgIG1fdm9pZENhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7Ci0KLSAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtl
clRocmVhZCA9IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5UaHJlYWRDb25uZWN0aW9u
ID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRp
Zmllciwgc2l6ZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sg
PSBbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVh
ZCldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9z
c1RocmVhZENvcHkocmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKLSAgICAgICAgICAg
ICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNj
b3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKLSAgICAgICAgICAgICAgICAgICAg
Y29ubmVjdGlvbi0+Y29tcGxldGVWb2lkQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZN
b3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUo
KSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPnRydW5jYXRl
KGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHNpemUsIFdURk1vdmUobWFpblRo
cmVhZENhbGxiYWNrKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjpmbHVzaChGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRp
ZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJiBjYWxsYmFj
aykKLXsKLSAgICBpZiAoIW1fc2NvcGUpCi0gICAgICAgIHJldHVybiBjYWxsYmFjayhFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKLQotICAgIGF1dG8gY2FsbGJhY2tJZGVudGlmaWVy
ID0gQ2FsbGJhY2tJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBtX3ZvaWRD
YWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwotCi0g
ICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBS
ZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRo
cmVhZENvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXJdKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRp
Zmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zv
ck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3Vs
dCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gY29u
bmVjdGlvbiA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuZmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmNvbXBs
ZXRlVm9pZENhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKLSAg
ICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwotICAgICAgICB9Owot
Ci0gICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5mbHVzaChpZGVudGlmaWVyLCBhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCBXVEZNb3ZlKG1haW5UaHJlYWRDYWxsYmFjaykpOwotICAgIH0pOwot
fQotCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y2xvc2UoRmlsZVN5
c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX3Njb3BlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtl
ckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4
IGNhYzliNDJmZThkNWQwZDU4NjFiZWRjOTY5NTAyMTU2ZTdlMDM1NTYuLjBiMzdlY2NkNDVmMGI0
ZWU0MzkwZjAxZjI4NGViY2Y4YWZiYTQ4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTQ5LDcgKzQ5LDYgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVzb2x2ZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPFZlY3RvcjxT
dHJpbmc+PiYmKTsKICAgICB2b2lkIGRpZENyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoQ2FsbGJhY2tJ
ZGVudGlmaWVyLCBFeGNlcHRpb25PcjxzdGQ6OnBhaXI8RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGU+PiYmKTsKICAgICB2
b2lkIGNvbXBsZXRlVm9pZENhbGxiYWNrKENhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9uT3I8
dm9pZD4mJiByZXN1bHQpOwotICAgIHZvaWQgY29tcGxldGVJbnRlZ2VyQ2FsbGJhY2soQ2FsbGJh
Y2tJZGVudGlmaWVyLCBFeGNlcHRpb25Pcjx1aW50NjRfdD4mJiByZXN1bHQpOwogICAgIHZvaWQg
ZGlkR2V0SGFuZGxlTmFtZXMoQ2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25PcjxWZWN0b3I8
U3RyaW5nPj4mJik7CiAgICAgdm9pZCBkaWRHZXRIYW5kbGVXaXRoVHlwZShDYWxsYmFja0lkZW50
aWZpZXIsIEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
Ym9vbD4+JiYpOwogCkBAIC02Nyw5ICs2Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRIYW5k
bGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgR2V0SGFu
ZGxlV2l0aFR5cGVDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgY3JlYXRlU3luY0FjY2Vz
c0hhbmRsZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpHZXRBY2Nlc3NIYW5kbGVDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIGdldFNp
emUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
SWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpJbnRlZ2VyQ2FsbGJhY2sm
JikgZmluYWw7Ci0gICAgdm9pZCB0cnVuY2F0ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXplLCBGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lk
IGZsdXNoKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2UoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpWb2lkQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICBXZWFrUHRyPFdvcmtlckdsb2Jh
bFNjb3BlPiBtX3Njb3BlOwpAQCAtNzksNyArNzUsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8
Q2FsbGJhY2tJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlJlc29sdmVD
YWxsYmFjaz4gbV9yZXNvbHZlQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8Q2FsbGJhY2tJZGVudGlm
aWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEFjY2Vzc0hhbmRsZUNhbGxiYWNr
PiBtX2dldEFjY2Vzc0hhbmRsQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8Q2FsbGJhY2tJZGVudGlm
aWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjaz4gbV92b2lkQ2Fs
bGJhY2tzOwotICAgIEhhc2hNYXA8Q2FsbGJhY2tJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb246OkludGVnZXJDYWxsYmFjaz4gbV9pbnRlZ2VyQ2FsbGJhY2tzOwogICAgIEhh
c2hNYXA8Q2FsbGJhY2tJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Okdl
dEhhbmRsZU5hbWVzQ2FsbGJhY2s+IG1fZ2V0SGFuZGxlTmFtZXNDYWxsYmFja3M7CiAgICAgSGFz
aE1hcDxDYWxsYmFja0lkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0
SGFuZGxlV2l0aFR5cGVDYWxsYmFjaz4gbV9nZXRIYW5kbGVXaXRoVHlwZUNhbGxiYWNrczsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5
c3RlbVN0b3JhZ2VFcnJvci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0ZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IuaAppbmRleCAwMjc3MzdhMmI0MGIyYzI3MGVhYTY0Yjhh
NWY5ZTY0MzAxZWU4Nzk2Li5jMzZmNzUzNGM2YWI1YjYyYWE0YTVkZDM0NjkzNGYzMWVkYjA4YmZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5
c3RlbVN0b3JhZ2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZUVycm9yLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBlbnVtIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IgOiB1aW50OF90
IHsKKyAgICBBY2Nlc3NIYW5kbGVBY3RpdmUsCiAgICAgQmFja2VuZE5vdFN1cHBvcnRlZCwKICAg
ICBGaWxlTm90Rm91bmQsCiAgICAgSW52YWxpZE1vZGlmaWNhdGlvbiwKQEAgLTQzLDE0ICs0NCwx
NiBAQCBlbnVtIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IgOiB1aW50OF90IHsKIGlubGlu
ZSBXZWJDb3JlOjpFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uKEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3IgZXJyb3IpCiB7CiAgICAgc3dpdGNoIChlcnJvcikgeworICAgIGNhc2UgRmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcjo6QWNjZXNzSGFuZGxlQWN0aXZlOgorICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6SW52YWxpZFN0YXRlRXJyb3IsICJTb21lIEFjY2Vzc0hh
bmRsZSBpcyBhY3RpdmUiX3MgfTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkJh
Y2tlbmROb3RTdXBwb3J0ZWQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBX
ZWJDb3JlOjpOb3RTdXBwb3J0ZWRFcnJvciwgIkJhY2tlbmQgZG9lcyBub3Qgc3VwcG9ydCB0aGlz
IG9wZXJhdGlvbiIgfTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNv
cmU6Ok5vdFN1cHBvcnRlZEVycm9yLCAiQmFja2VuZCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bl
cmF0aW9uIl9zIH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpGaWxlTm90Rm91
bmQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpOb3RGb3Vu
ZEVycm9yIH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpJbnZhbGlkTW9kaWZp
Y2F0aW9uOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6SW52
YWxpZE1vZGlmaWNhdGlvbkVycm9yIH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9y
OjpJbnZhbGlkTmFtZToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNv
cmU6OlVua25vd25FcnJvciwgIk5hbWUgaXMgaW52YWxpZCIgfTsKKyAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIk5hbWUgaXMgaW52YWxp
ZCJfcyB9OwogICAgIGNhc2UgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6SW52YWxpZFN0YXRlOgog
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6SW52YWxpZFN0YXRl
RXJyb3IgfTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlR5cGVNaXNtYXRjaDoK
QEAgLTc3LDYgKzgwLDcgQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gewogICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvciwK
KyAgICAgICAgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpBY2Nlc3NIYW5kbGVBY3Rp
dmUsCiAgICAgICAgIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6QmFja2VuZE5vdFN1
cHBvcnRlZCwKICAgICAgICAgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpGaWxlTm90
Rm91bmQsCiAgICAgICAgIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6SW52YWxpZE1v
ZGlmaWNhdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCmluZGV4IDFmYjE3NTk4
MTQ1NzhiNDlkZWJjZjJmZTNlZjgwNzc5YjA0MWE3N2QuLmRhNDg0MTlkYTIxY2QwNGQzNTQ2OGZl
YTIxODAxY2NkYmUyYzQ5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcApAQCAt
NjMsMTIgKzYzLDYgQEAgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OkZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlKEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYgbWFuYWcKICAgICB9CiB9CiAKLUZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlOjp+RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUoKQotewotICAgIGlm
IChtX2hhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAg
ICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9oYW5kbGUpOwotfQotCiBib29sIEZpbGVTeXN0
ZW1TdG9yYWdlSGFuZGxlOjppc1NhbWVFbnRyeShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRl
bnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8gcGF0aCA9IG1fbWFuYWdlci0+Z2V0UGF0
aChpZGVudGlmaWVyKTsKQEAgLTE2NCwxMyArMTU4LDEzIEBAIEV4cGVjdGVkPEZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlOjpBY2Nlc3NIYW5kbGVJbmZvLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBG
aWxlCiAgICAgaWYgKCFhY3F1aXJlZCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEZp
bGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkludmFsaWRTdGF0ZSk7CiAKLSAgICBtX2hhbmRsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKG1fcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFk
V3JpdGUpOwotICAgIGlmIChtX2hhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQorICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9wYXRo
LCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSk7CisgICAgaWYgKGhhbmRsZSA9
PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bik7CiAKLSAgICBh
dXRvIGlwY0hhbmRsZSA9IElQQzo6U2hhcmVkRmlsZUhhbmRsZTo6Y3JlYXRlKG1faGFuZGxlKTsK
KyAgICBhdXRvIGlwY0hhbmRsZSA9IElQQzo6U2hhcmVkRmlsZUhhbmRsZTo6Y3JlYXRlKGhhbmRs
ZSk7CiAgICAgaWYgKCFpcGNIYW5kbGUpIHsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KG1faGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpCYWNrZW5k
Tm90U3VwcG9ydGVkKTsKICAgICB9CiAKQEAgLTE3OSw2MSArMTczLDExIEBAIEV4cGVjdGVkPEZp
bGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpBY2Nlc3NIYW5kbGVJbmZvLCBGaWxlU3lzdGVtU3RvcmFn
ZUVycm9yPiBGaWxlCiAgICAgcmV0dXJuIHN0ZDo6cGFpciB7ICptX2FjdGl2ZVN5bmNBY2Nlc3NI
YW5kbGUsIFdURk1vdmUoKmlwY0hhbmRsZSkgfTsKIH0KIAotRXhwZWN0ZWQ8dWludDY0X3QsIEZp
bGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpnZXRTaXplKFdl
YkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyKQotewotICAgIGlmICghbV9tYW5hZ2VyKQotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bik7Ci0KLSAgICBpZiAoIW1f
YWN0aXZlU3luY0FjY2Vzc0hhbmRsZSB8fCAqbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlICE9IGFj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChGaWxl
U3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duKTsKLQotICAgIGF1dG8gc2l6ZSA9IEZpbGVTeXN0
ZW06OmZpbGVTaXplKG1fcGF0aCk7Ci0gICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bik7Ci0KLSAgICByZXR1
cm4gc2l6ZS52YWx1ZSgpOwotfQotCi1zdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjp0cnVuY2F0ZShXZWJDb3JlOjpGaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0
X3Qgc2l6ZSkKLXsKLSAgICBpZiAoIW1fbWFuYWdlcikKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0
ZW1TdG9yYWdlRXJyb3I6OlVua25vd247Ci0KLSAgICBpZiAoIW1fYWN0aXZlU3luY0FjY2Vzc0hh
bmRsZSB8fCAqbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlICE9IGFjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwotCi0g
ICAgQVNTRVJUKG1faGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpOwotICAgIGF1dG8gcmVzdWx0ID0gRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKG1faGFuZGxl
LCBzaXplKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9y
YWdlRXJyb3I6OlVua25vd247Ci0KLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi1zdGQ6
Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxl
OjpmbHVzaChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNj
ZXNzSGFuZGxlSWRlbnRpZmllcikKLXsKLSAgICBpZiAoIW1fbWFuYWdlcikKLSAgICAgICAgcmV0
dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247Ci0KLSAgICBpZiAoIW1fYWN0aXZl
U3luY0FjY2Vzc0hhbmRsZSB8fCAqbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlICE9IGFjY2Vzc0hh
bmRsZUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpV
bmtub3duOwotCi0gICAgQVNTRVJUKG1faGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpOwotICAgIGF1dG8gcmVzdWx0ID0gRmlsZVN5c3RlbTo6Zmx1c2hGaWxl
KG1faGFuZGxlKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3I6OlVua25vd247Ci0KLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCiBz
dGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFu
ZGxlOjpjbG9zZShXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIg
YWNjZXNzSGFuZGxlSWRlbnRpZmllcikKIHsKICAgICBpZiAoIW1fYWN0aXZlU3luY0FjY2Vzc0hh
bmRsZSB8fCAqbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlICE9IGFjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIpCiAgICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwogCi0g
ICAgQVNTRVJUKG1faGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpOwotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2hhbmRsZSk7Ci0KICAgICBpZiAoIW1f
bWFuYWdlcikKICAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247
CiAKQEAgLTI3MCw3ICsyMTQsNyBAQCBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjptb3ZlKFdlYkNvcmU6OkZpbAogCiAgICAgLy8g
RG8gbm90IG1vdmUgZmlsZSBpZiB0aGVyZSBpcyBvbmdvaW5nIG9wZXJhdGlvbi4KICAgICBpZiAo
bV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlKQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvcjo6SW52YWxpZFN0YXRlOworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VF
cnJvcjo6QWNjZXNzSGFuZGxlQWN0aXZlOwogCiAgICAgaWYgKG1fbWFuYWdlci0+Z2V0VHlwZShk
ZXN0aW5hdGlvbklkZW50aWZpZXIpICE9IFR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgcmV0dXJu
IEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlR5cGVNaXNtYXRjaDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlLmgKaW5kZXggYzBhOWUzYjFhYmNmOGZkOThhNTI3NjE0YjRjNzEwMjdmNjU4MTVkZi4u
Y2ExNmZkNTYxNjk2YzVlNjkxOGRkOGY5MDE1NWNmYWQyMTU4OTA5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VI
YW5kbGUgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUsIFcK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgRmlsZSwgRGlyZWN0b3J5
LCBBbnkgfTsKICAgICBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZShGaWxlU3lzdGVtU3RvcmFnZU1h
bmFnZXImLCBUeXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lKTsKLSAgICB+RmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGUoKTsKIAogICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBj
b25zdCBTdHJpbmcmIHBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGg7IH0KQEAgLTYxLDkgKzYw
LDYgQEAgcHVibGljOgogCiAgICAgdXNpbmcgQWNjZXNzSGFuZGxlSW5mbyA9IHN0ZDo6cGFpcjxX
ZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIElQQzo6U2hhcmVk
RmlsZUhhbmRsZT47CiAgICAgRXhwZWN0ZWQ8QWNjZXNzSGFuZGxlSW5mbywgRmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcj4gY3JlYXRlU3luY0FjY2Vzc0hhbmRsZSgpOwotICAgIEV4cGVjdGVkPHVpbnQ2
NF90LCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBnZXRTaXplKFdlYkNvcmU6OkZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllcik7Ci0gICAgc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVt
U3RvcmFnZUVycm9yPiB0cnVuY2F0ZShXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUpOwotICAgIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcj4gZmx1c2goV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyKTsKICAgICBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGNs
b3NlKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllcik7CiAKIHBy
aXZhdGU6CkBAIC03NSw3ICs3MSw2IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcGF0aDsKICAg
ICBTdHJpbmcgbV9uYW1lOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyPiBtX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGU7Ci0gICAg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1faGFuZGxlIHsgRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDY5YmFjODI1YmVmZjI3OWU0ZTAwZDE3OTcz
YzFhNDViNjk1NmI5NjUuLjRlZTUzNzcyOTQxNzQ5ZWE3ZDk2ZTEyMTNmMjZmMDI4Y2I5NTI1YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0yNDUsNDAgKzI0NSwxMiBAQCB2b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpG
aWxlU3lzdGVtSGFuZGxlSWRlbgogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5r
bm93bikpOwogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlLT5jcmVhdGVTeW5jQWNjZXNz
SGFuZGxlKCkpOwotfQotCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0U2l6ZUZvckFj
Y2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFu
ZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDx1aW50NjRfdCwg
RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgYXV0byBoYW5kbGUgPSBtX2ZpbGVTeXN0
ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnktPmdldEhhbmRsZShpZGVudGlmaWVyKTsKLSAgICBpZiAo
IWhhbmRsZSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVk
KEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd24pKTsKLQotICAgIGNvbXBsZXRpb25IYW5k
bGVyKGhhbmRsZS0+Z2V0U2l6ZShhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSk7Ci19Ci0KLXZvaWQg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjp0cnVuY2F0ZUZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpG
aWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0
X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKLQotICAgIGF1dG8gaGFuZGxlID0gbV9maWxlU3lzdGVtU3RvcmFnZUhh
bmRsZVJlZ2lzdHJ5LT5nZXRIYW5kbGUoaWRlbnRpZmllcik7Ci0gICAgaWYgKCFoYW5kbGUpCi0g
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpV
bmtub3duKTsKLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+dHJ1bmNhdGUoYWNjZXNz
SGFuZGxlSWRlbnRpZmllciwgc2l6ZSkpOwotfQotCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6Zmx1c2hGb3JBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlm
aWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17
Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBhdXRvIGhhbmRsZSA9IG1f
ZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS0+Z2V0SGFuZGxlKGlkZW50aWZpZXIpOwot
ICAgIGlmICghaGFuZGxlKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRmlsZVN5
c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bik7CisgICAgYXV0byByZXN1bHQgPSBoYW5kbGUtPmNy
ZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoKTsKKyAgICBhdXRvIGZpbGVIYW5kbGUgPSByZXN1bHQgPyBy
ZXN1bHQudmFsdWUoKS5zZWNvbmQgOiBJUEM6OlNoYXJlZEZpbGVIYW5kbGUoKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogCi0gICAgY29tcGxldGlvbkhhbmRsZXIo
aGFuZGxlLT5mbHVzaChhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSk7CisgICAgLy8gQ2xvc2UgdGhl
IGZpbGUgaGFuZGxlIGluIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICBmaWxlSGFuZGxlLmNsb3NlKCk7
CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbG9zZUFjY2Vzc0hhbmRsZShXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAppbmRleCAw
NGNjM2FmMDliYWIzZDJmMGUwZjcwMWMxZmYyOTAwYTYxNDE2MzU2Li5kNzFjMWQ2MGJmZDM4NjA5
MzYyYjljZDZmOTA4NjFkZWQ0OGUyOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCkBAIC03
OCw5ICs3OCw2IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBY2Nlc3NIYW5kbGVJbmZvID0gc3Rk
OjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgSVBD
OjpTaGFyZWRGaWxlSGFuZGxlPjsKICAgICB2b2lkIGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2Vi
Q29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8QWNjZXNzSGFuZGxlSW5mbywgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmKTsK
LSAgICB2b2lkIGdldFNpemVGb3JBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDx1aW50NjRfdCwgRmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcj4pPiYmKTsKLSAgICB2b2lkIHRydW5jYXRlRm9yQWNjZXNzSGFuZGxlKFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYpOwotICAgIHZvaWQg
Zmx1c2hGb3JBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIs
IFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7
CiAgICAgdm9pZCBjbG9zZUFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRl
bnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4pPiYmKTsKICAgICB2b2lkIGdldEhhbmRsZU5hbWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFZlY3RvcjxTdHJp
bmc+LCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYpOwogICAgIHZvaWQgZ2V0SGFuZGxlKElQ
Qzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBTdHJp
bmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4sIEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I+KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgpp
bmRleCA4MmVhMzEwZjgxNTFlZGYyYzQzYWJhNDUxMTRhODAxYzRiNzQ2ZjcyLi4xMzhhOGQyNWYx
YWYyMTY3ZDQ0ZTBkNmYwYmRlZjYyMzc2ODIxN2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFn
ZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTM1LDkgKzM1LDYgQEAKICAgICBNb3ZlKFdlYkNvcmU6
OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0
ZW1IYW5kbGVJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgU3RyaW5nIG5ld05hbWUp
IC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0
KSBBc3luYwogCiAgICAgQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVt
SGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoRXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNv
cmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgSVBDOjpTaGFyZWRGaWxl
SGFuZGxlPiwgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jCi0g
ICAgR2V0U2l6ZUZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50
aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllcikgLT4gKEV4cGVjdGVkPHVpbnQ2NF90LCBXZWJL
aXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKLSAgICBUcnVuY2F0ZUZv
ckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNz
SGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0
OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jCi0gICAgRmx1c2hGb3JBY2Nl
c3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VF
cnJvcj4gcmVzdWx0KSBBc3luYwogICAgIENsb3NlQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSAtPiAoc3RkOjpv
cHRpb25hbDxXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKICAg
ICBHZXRIYW5kbGVOYW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVu
dGlmaWVyKSAtPiAoRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIFdlYktpdDo6RmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwogICAgIEdldEhhbmRsZShXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbmFtZSkgLT4gKEV4cGVjdGVk
PHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4sIFdl
YktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYyBXYW50c0Nvbm5lY3Rp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5k
bGUuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAK
aW5kZXggOGViY2U5ODAwODdjMDc1YjAyM2I1OGFlYTJlMTU1ODYwZDc2OTQ2NC4uNjRlNDIxNzgw
MWEyMWYwNWQ4OGI0ZTYxNjhkNzBiODlmOTVhN2UwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAKQEAgLTI4LDYgKzI4LDExIEBACiAKIG5h
bWVzcGFjZSBJUEMgewogCit2b2lkIFNoYXJlZEZpbGVIYW5kbGU6OmNsb3NlKCkKK3sKKyAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUobV9oYW5kbGUpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09B
KQogCiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEZpbGVIYW5kbGU+IFNoYXJlZEZpbGVIYW5kbGU6OmNy
ZWF0ZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmgKaW5kZXggYTQ2YWM4OTA1MDdlYjY5M2ExMDdi
NDk5ZTU0MzYwNmE3OTdlNDQ5YS4uNTg1YWQ5OTM3MjcyYzJkMGFhOWQ1MzdjMjM3YzgzYTZiNTYw
OGI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhh
bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUu
aApAQCAtMzksOSArMzksOSBAQCBwdWJsaWM6CiAKICAgICBTaGFyZWRGaWxlSGFuZGxlKCkgPSBk
ZWZhdWx0OwogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUoKSB7IHJl
dHVybiBtX2hhbmRsZTsgfQorICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKLQogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNoYXJlZEZpbGVIYW5k
bGU+IGRlY29kZShEZWNvZGVyJik7CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCAxZjA2YjU5ZjhjYzY2MGNhMzM5
MDYwNWVlZjE2MjE1Nzc3YWM1YTZhLi5kNjMxYjU0MGE0NjNmMzVkMzVmYzQyOGQ4ZjQ5M2IyOTZm
NjMzNGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcApAQCAtMTI2LDM5ICsxMjYsNiBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSAogICAgIH0p
OwogfQogCi12b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0U2l6ZShXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwg
SW50ZWdlckNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX2Nvbm5l
Y3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRp
b24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOwotCi0g
ICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6R2V0U2l6ZUZvckFjY2Vzc0hhbmRsZShpZGVudGlmaWVyLCBhY2Nlc3NIYW5k
bGVJZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAg
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoY29udmVydFRvRXhjZXB0aW9uKHJlc3Vs
dC5lcnJvcigpKSk7Ci0KLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0LnZhbHVlKCkp
OwotICAgIH0pOwotfQotCi12b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6dHJ1
bmNhdGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
Q29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIFZvaWRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVy
KQotewotICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVj
dGlvbiBpcyBsb3N0IiB9KTsKLQotICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlRydW5jYXRlRm9yQWNjZXNzSGFuZGxl
KGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHNpemUpLCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBlcnJvcikgbXV0YWJsZSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnZlcnRUb0V4Y2VwdGlvbk9yKGVycm9yKSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpmbHVz
aChXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRp
ZmllciwgVm9pZENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX2Nv
bm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNl
cHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOwot
Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Rmx1c2hGb3JBY2Nlc3NIYW5kbGUoaWRlbnRpZmllciwgYWNjZXNzSGFu
ZGxlSWRlbnRpZmllciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29udmVydFRvRXhjZXB0aW9uT3IoZXJyb3IpKTsKLSAgICB9KTsKLX0KLQogdm9pZCBXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNsb3NlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
SWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBWb2lkQ2FsbGJhY2smJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA3YjNhMWQxZTllZDI3NTdlZGExZGVi
NTQ1NTdlODQ2OWZkZmQ5MGI5Li4yZDI1MzQ0NGViMzc5ZDc2ZGM5NTc4N2Q4NzA2NDYyMWNlZjk2
NmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCkBA
IC04Miw5ICs4Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRIYW5kbGUoV2ViQ29yZTo6Rmls
ZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpHZXRIYW5kbGVXaXRoVHlwZUNhbGxiYWNrJiYpIGZpbmFsOwogCiAg
ICAgdm9pZCBjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEFjY2Vz
c0hhbmRsZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2l6ZShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkludGVn
ZXJDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHRydW5jYXRlKFdlYkNvcmU6OkZpbGVTeXN0
ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Vm9pZENhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgZmx1c2goV2ViQ29yZTo6Rmls
ZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lk
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFu
ZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlm
aWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYm
KSBmaW5hbDsKIAogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBiNTkwOTZjZDJlYWI1MGE1MTAxYzdlZmRkYmI3MWJmNDliMmVlMzEwLi41MzA2NmQyZWYy
NTk2OGNkMzRhMWRlMGU0MjQ4NjNhYTUyNTBhNThhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MjEtMTAtMjcgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgUGVy
Zm9ybSBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZSBvcGVyYXRpb25zIGluIHdlYiBwcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIxNDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3Jh
Z2UvZmlsZXN5c3RlbWFjY2Vzcy9oYW5kbGUtbW92ZS13b3JrZXItZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHN0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9yZXNvdXJjZXMvc3luYy1hY2Nlc3MtaGFu
ZGxlLXJlYWQtd3JpdGUuanM6IHJlZmFjdG9yIHRoZSB0ZXN0IHdpdGggYXN5bmMgYW5kIGF3YWl0
LgorICAgICAgICAoYXN5bmMgdGVzdCk6CisgICAgICAgICogc3RvcmFnZS9maWxlc3lzdGVtYWNj
ZXNzL3N5bmMtYWNjZXNzLWhhbmRsZS1iYXNpY3Mtd29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBzdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3Mvc3luYy1hY2Nlc3MtaGFuZGxlLXJlYWQtd3Jp
dGUtd29ya2VyLWV4cGVjdGVkLnR4dDoKKwogMjAyMS0xMC0yNiAgQXl1bWkgS29qaW1hICA8YXl1
bWlfa29qaW1hQGFwcGxlLmNvbT4KIAogICAgICAgICBbIEJpZ1N1ciB3azIgRGVidWcgYXJtNjQg
XSBpbnNwZWN0b3IvYXVkaXQvcnVuLWFjY2Vzc2liaWxpdHkuaHRtbCBpcyBhIGZsYWt5IHRpbWVv
dXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA1MTc1NTcyYmRkNjIyYmJmOGEw
N2QxYmM5OTE3NTAzZDUyNzk1NzU3Li5jZmVmMzU4NTMwNzc3N2U2Yzk3YTYwYzVjMDA1ODM3NDRl
MWM3ZjkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAyMS0xMC0yNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBQ
ZXJmb3JtIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlIG9wZXJhdGlvbnMgaW4gd2ViIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjE0
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZpbGUtc3lzdGVtLWFjY2Vzcy9zYW5kYm94ZWRfRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGUtZmx1c2guaHR0cHMudGVudGF0aXZlLndvcmtlci1leHBlY3RlZC50eHQ6
CisKIDIwMjEtMTAtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBDaGFuZ2luZyB0aGUgc3JjIGF0dHJpYnV0ZSBvZiB0aGUgPGltZz4gZWxlbWVudCBpbnNpZGUg
YW4gSW1hZ2VEb2N1bWVudCBkb2VzIG5vdCB0cmlnZ2VyIGEgbG9hZApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9maWxlLXN5c3RlbS1hY2Nl
c3Mvc2FuZGJveGVkX0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLWZsdXNoLmh0dHBzLnRlbnRh
dGl2ZS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9maWxlLXN5c3RlbS1hY2Nlc3Mvc2FuZGJveGVkX0ZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlLWZsdXNoLmh0dHBzLnRlbnRhdGl2ZS53b3JrZXItZXhwZWN0ZWQudHh0Cmlu
ZGV4IDZlYTU2NGNjYWFiZDA2ZjJlYjgxN2Q0NmI3NGMzMmE1NGVlNmEyODQuLjg1MmMyN2M1YTEw
OGI5MGM0OWZkY2U4YTQ5NzI5NDdiZTJjN2Q1YTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmlsZS1zeXN0ZW0tYWNjZXNzL3NhbmRib3hl
ZF9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS1mbHVzaC5odHRwcy50ZW50YXRpdmUud29ya2Vy
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZpbGUtc3lzdGVtLWFjY2Vzcy9zYW5kYm94ZWRfRmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGUtZmx1c2guaHR0cHMudGVudGF0aXZlLndvcmtlci1leHBlY3RlZC50eHQKQEAgLTEsNiAr
MSw2IEBACiAKIFBBU1MgVGVzdCBmbHVzaCBvbiBhbiBlbXB0eSBmaWxlLgogUEFTUyBTeW5jQWNj
ZXNzSGFuZGxlLnJlYWQgcmV0dXJucyBieXRlcyB3cml0dGVuIGJ5IFN5bmNBY2Nlc3NIYW5kbGUu
d3JpdGUgYWZ0ZXIgU3luY0FjY2Vzc0hhbmRsZS5mbHVzaAotUEFTUyBTeW5jQWNjZXNzSGFuZGxl
LnJlYWQgZmFpbHMgd2hlbiB0aGVyZSBpcyBhIHBlbmRpbmcgU3luY0FjY2Vzc0hhbmRsZS5mbHVz
aAotUEFTUyBTeW5jQWNjZXNzSGFuZGxlLndyaXRlIGZhaWxzIHdoZW4gdGhlcmUgaXMgYSBwZW5k
aW5nIFN5bmNBY2Nlc3NIYW5kbGUuZmx1c2gKK0ZBSUwgU3luY0FjY2Vzc0hhbmRsZS5yZWFkIGZh
aWxzIHdoZW4gdGhlcmUgaXMgYSBwZW5kaW5nIFN5bmNBY2Nlc3NIYW5kbGUuZmx1c2ggYXNzZXJ0
X3Rocm93c19kb206IGZ1bmN0aW9uICIoKSA9PiBoYW5kbGUucmVhZChyZWFkQnVmZmVyLCB7YXQ6
IDB9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBTeW5jQWNjZXNzSGFuZGxlLndyaXRlIGZhaWxzIHdo
ZW4gdGhlcmUgaXMgYSBwZW5kaW5nIFN5bmNBY2Nlc3NIYW5kbGUuZmx1c2ggcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiSW52YWxpZFN0YXRlRXJy
b3I6IFRoZSBvYmplY3QgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZS4iCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9oYW5kbGUtbW92ZS13b3JrZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL2hhbmRsZS1t
b3ZlLXdvcmtlci1leHBlY3RlZC50eHQKaW5kZXggMmJiODhiNDg3MWYxNWE3MzVhNzhjZjljMTIw
YWZiMmQ5YjI5ODQ5ZC4uZmE4NGE0MjgzMGQ5YzRjYTI2MDQ4YmU2ZTVjMGE1ZGJmNGQxNDdhNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL2hhbmRsZS1t
b3ZlLXdvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lz
dGVtYWNjZXNzL2hhbmRsZS1tb3ZlLXdvcmtlci1leHBlY3RlZC50eHQKQEAgLTE4LDggKzE4LDkg
QEAgUEFTUyBbV29ya2VyXSBtb3ZlRmlsZUVycm9yLnRvU3RyaW5nKCkgaXMgIlVua25vd25FcnJv
cjogVGhlIG9wZXJhdGlvbiBmYWlsZWQgZm8KIFBBU1MgW1dvcmtlcl0gbW92ZUZpbGVFcnJvci50
b1N0cmluZygpIGlzICJVbmtub3duRXJyb3I6IE5hbWUgaXMgaW52YWxpZCIKIFBBU1MgW1dvcmtl
cl0gbW92ZUZpbGVFcnJvci50b1N0cmluZygpIGlzICJVbmtub3duRXJyb3I6IE5hbWUgaXMgaW52
YWxpZCIKIFtXb3JrZXJdIFRlc3QgbW92ZSB3aXRoIG9wZW4gYWNjZXNzIGhhbmRsZToKLVBBU1Mg
W1dvcmtlcl0gbW92ZUZpbGVFcnJvci50b1N0cmluZygpIGlzICJJbnZhbGlkU3RhdGVFcnJvcjog
VGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLiIKK0ZBSUwgW1dvcmtlcl0gbW92ZUZp
bGVFcnJvci50b1N0cmluZygpIHNob3VsZCBiZSBJbnZhbGlkU3RhdGVFcnJvcjogVGhlIG9iamVj
dCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLi4gV2FzIEludmFsaWRTdGF0ZUVycm9yOiBTb21lIEFj
Y2Vzc0hhbmRsZSBpcyBhY3RpdmUuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCitT
b21lIHRlc3RzIGZhaWxlZC4KIAogVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvcmVzb3VyY2VzL3N5bmMtYWNjZXNzLWhhbmRs
ZS1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvcmVzb3Vy
Y2VzL3N5bmMtYWNjZXNzLWhhbmRsZS1iYXNpY3MuanMKaW5kZXggOTY3MTI1YTQ2ZGM2YjZlYzNm
Y2ZlZjEzOTRhODYwOGM4NjUyODcyYy4uM2E5MmMzOWExYTQ3MGQ2MmRjYmY1M2U1Mjk4MDMwYWM0
NmEwNDNiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNz
L3Jlc291cmNlcy9zeW5jLWFjY2Vzcy1oYW5kbGUtYmFzaWNzLmpzCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9yZXNvdXJjZXMvc3luYy1hY2Nlc3MtaGFuZGxlLWJh
c2ljcy5qcwpAQCAtMTQsNjggKzE0LDM3IEBAIGZ1bmN0aW9uIGZpbmlzaFRlc3QoZXJyb3IpCiAg
ICAgZmluaXNoSlNUZXN0KCk7CiB9CiAKLWZ1bmN0aW9uIGdldERpcmVjdG9yeSgpIHsKLSAgICBu
YXZpZ2F0b3Iuc3RvcmFnZS5nZXREaXJlY3RvcnkoKS50aGVuKChoYW5kbGUpID0+IHsKLSAgICAg
ICAgcm9vdEhhbmRsZSA9IGhhbmRsZTsKLSAgICAgICAgY3JlYXRlRmlsZUhhbmRsZShyb290SGFu
ZGxlKTsKLSAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHsKLSAgICAgICAgZmluaXNoVGVzdChlcnJv
cik7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZUZpbGVIYW5kbGUoZnJvbUhhbmRsZSkg
ewotICAgIGZyb21IYW5kbGUuZ2V0RmlsZUhhbmRsZSgic3luYy1hY2Nlc3MtaGFuZGxlLnR4dCIs
IHsgImNyZWF0ZSIgOiB0cnVlIH0pLnRoZW4oKGhhbmRsZSkgPT4gewotICAgICAgICBmaWxlSGFu
ZGxlID0gaGFuZGxlOwotICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGVIYW5kbGUu
bmFtZSIsICJzeW5jLWFjY2Vzcy1oYW5kbGUudHh0Iik7Cithc3luYyBmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICB0cnkgeworICAgICAgICB2YXIgcm9vdEhhbmRsZSA9IGF3YWl0IG5hdmlnYXRvci5z
dG9yYWdlLmdldERpcmVjdG9yeSgpOworICAgICAgICAvLyBDcmVhdGUgYSBuZXcgZmlsZSBmb3Ig
dGhpcyB0ZXN0LgorICAgICAgICBhd2FpdCByb290SGFuZGxlLnJlbW92ZUVudHJ5KCJzeW5jLWFj
Y2Vzcy1oYW5kbGUtYmFzaWMudHh0IikudGhlbigoKSA9PiB7IH0sICgpID0+IHsgfSk7CisgICAg
ICAgIGZpbGVIYW5kbGUgPSBhd2FpdCByb290SGFuZGxlLmdldEZpbGVIYW5kbGUoInN5bmMtYWNj
ZXNzLWhhbmRsZS1iYXNpYy50eHQiLCB7ICJjcmVhdGUiIDogdHJ1ZSAgfSk7CisgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZUhhbmRsZS5uYW1lIiwgInN5bmMtYWNjZXNzLWhhbmRs
ZS1iYXNpYy50eHQiKTsKICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxlSGFuZGxl
LmtpbmQiLCAiZmlsZSIpOwotICAgICAgICBjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKGZpbGVIYW5k
bGUpOwotICAgIH0pLmNhdGNoKChlcnJvcikgPT4gewotICAgICAgICBmaW5pc2hUZXN0KGVycm9y
KTsKLSAgICB9KTsKLX0KIAotZnVuY3Rpb24gY3JlYXRlU3luY0FjY2Vzc0hhbmRsZShmcm9tSGFu
ZGxlKSB7Ci0gICAgZnJvbUhhbmRsZS5jcmVhdGVTeW5jQWNjZXNzSGFuZGxlKCkudGhlbigoaGFu
ZGxlKSA9PiB7Ci0gICAgICAgIGFjY2Vzc0hhbmRsZTEgPSBoYW5kbGU7CisgICAgICAgIGFjY2Vz
c0hhbmRsZTEgPSBhd2FpdCBmaWxlSGFuZGxlLmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoKTsKICAg
ICAgICAgZGVidWcoImFjY2Vzc0hhbmRsZTEgaXMgY3JlYXRlZCIpOwotICAgICAgICBnZXRTaXpl
KGFjY2Vzc0hhbmRsZTEpOwotICAgIH0pLmNhdGNoKChlcnJvcikgPT4gewotICAgICAgICBmaW5p
c2hUZXN0KGVycm9yKTsKLSAgICB9KTsKLX0KIAotZnVuY3Rpb24gZ2V0U2l6ZShhY2Nlc3NIYW5k
bGUpIHsKLSAgICBhY2Nlc3NIYW5kbGUuZ2V0U2l6ZSgpLnRoZW4oKHJlc3VsdCkgPT4gewotICAg
ICAgICBzaXplID0gcmVzdWx0OworICAgICAgICBzaXplID0gYXdhaXQgYWNjZXNzSGFuZGxlMS5n
ZXRTaXplKCk7CiAgICAgICAgIHNob3VsZEJlKCJzaXplIiwgIjAiKTsKLSAgICAgICAgY3JlYXRl
U2Vjb25kU3luY0FjZXNzSGFuZGxlKGZpbGVIYW5kbGUpOwotICAgIH0pLmNhdGNoKChlcnJvcikg
PT4gewotICAgICAgICBmaW5pc2hUZXN0KGVycm9yKTsKLSAgICB9KTsKLX0KIAotZnVuY3Rpb24g
Y3JlYXRlU2Vjb25kU3luY0FjZXNzSGFuZGxlKGZyb21IYW5kbGUpIHsKLSAgICBmcm9tSGFuZGxl
LmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoKS50aGVuKChoYW5kbGUpID0+IHsKLSAgICAgICAgYWNj
ZXNzSGFuZGxlMiA9IGhhbmRsZTsKLSAgICAgICAgLy8gU2Vjb25kIGNyZWF0aW9uIHNob3VsZCBz
dWNjZWVkLgorICAgICAgICBhd2FpdCBmaWxlSGFuZGxlLmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUo
KS50aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAgICAgIHRocm93ICJhY2Nlc3NIYW5kbGUyIGlz
IGNyZWF0ZWQgdW5leHBlY3RlZGx5IjsKKyAgICAgICAgfSwgKGVycm9yKSA9PiB7CisgICAgICAg
ICAgICBjcmVhdGVFcnJvciA9IGVycm9yOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJjcmVhdGVFcnJvci50b1N0cmluZygpIiwgIkludmFsaWRTdGF0ZUVycm9yOiBUaGUgb2Jq
ZWN0IGlzIGluIGFuIGludmFsaWQgc3RhdGUuIik7CisgICAgICAgIH0pOworCisgICAgICAgIGF3
YWl0IGFjY2Vzc0hhbmRsZTEuY2xvc2UoKTsKKyAgICAgICAgYWNjZXNzSGFuZGxlMiA9IGF3YWl0
IGZpbGVIYW5kbGUuY3JlYXRlU3luY0FjY2Vzc0hhbmRsZSgpOwogICAgICAgICBkZWJ1ZygiYWNj
ZXNzSGFuZGxlMiBpcyBjcmVhdGVkIik7Ci0gICAgICAgIGZpbmlzaFRlc3QoKTsKLSAgICB9KS5j
YXRjaCgoZXJyb3IpID0+IHsKLSAgICAgICAgLy8gRmlyc3QgY3JlYXRpb24gc2hvdWxkIGZhaWwg
YXMgdGhlcmUgaXMgYW4gYWN0aXZlIGhhbmRsZS4KLSAgICAgICAgY3JlYXRlRXJyb3IgPSBlcnJv
cjsKLSAgICAgICAgZGVidWcoImFjY2Vzc0hhbmRsZTIgY2Fubm90IGJlIGNyZWF0ZWQiKTsKLSAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjcmVhdGVFcnJvci50b1N0cmluZygpIiwgIklu
dmFsaWRTdGF0ZUVycm9yOiBUaGUgb2JqZWN0IGlzIGluIGFuIGludmFsaWQgc3RhdGUuIik7Ci0g
ICAgICAgIGNsb3NlKCk7Ci0gICAgfSk7Ci19CiAKLWZ1bmN0aW9uIGNsb3NlKCkgewotICAgIGFj
Y2Vzc0hhbmRsZTEuY2xvc2UoKS50aGVuKChyZXN1bHQpID0+IHsKLSAgICAgICAgZGVidWcoImFj
Y2Vzc0hhbmRsZTEgaXMgY2xvc2VkIik7Ci0gICAgICAgIGNyZWF0ZVNlY29uZFN5bmNBY2Vzc0hh
bmRsZShmaWxlSGFuZGxlKTsKLSAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHsKKyAgICAgICAgZmlu
aXNoVGVzdCgpOworICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgIGZpbmlzaFRlc3QoZXJy
b3IpOwotICAgIH0pOworICAgIH0KIH0KIAotZ2V0RGlyZWN0b3J5KCk7Cit0ZXN0KCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvcmVzb3VyY2VzL3N5
bmMtYWNjZXNzLWhhbmRsZS1yZWFkLXdyaXRlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxl
c3lzdGVtYWNjZXNzL3Jlc291cmNlcy9zeW5jLWFjY2Vzcy1oYW5kbGUtcmVhZC13cml0ZS5qcwpp
bmRleCBmM2JmYzQ3OTFmODRkZWM3ODEyMzNhMTM3ZTczZWM0MmE1MTBhZGRiLi5iYjEwOWMwZmY4
MWRhMjllYzEwMTgwZGZmOTNjYmYwMjc1NjUyM2E2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvcmVzb3VyY2VzL3N5bmMtYWNjZXNzLWhhbmRsZS1yZWFk
LXdyaXRlLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9yZXNv
dXJjZXMvc3luYy1hY2Nlc3MtaGFuZGxlLXJlYWQtd3JpdGUuanMKQEAgLTgyLDExICs4Miw2IEBA
IGFzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIGZpbGVTaXplID0gYXdhaXQgYWNjZXNz
SGFuZGxlLmdldFNpemUoKTsKICAgICAgICAgc2hvdWxkQmUoImZpbGVTaXplIiwgIjQiKTsKIAot
ICAgICAgICBkZWJ1ZygidGVzdCB3cml0ZSgpIHdpdGggcGVuZGluZyBvcGVyYXRpb246Iik7Ci0g
ICAgICAgIGV2YWxBbmRMb2coImFjY2Vzc0hhbmRsZS50cnVuY2F0ZSgwKSIpOwotICAgICAgICBy
ZWFkQnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDQpOwotICAgICAgICBzaG91bGRUaHJvdygiYWNj
ZXNzSGFuZGxlLnJlYWQocmVhZEJ1ZmZlciwgeyBcImF0XCIgOiAwIH0pIik7Ci0KICAgICAgICAg
YXdhaXQgYWNjZXNzSGFuZGxlLmNsb3NlKCk7CiAgICAgICAgIGZpbmlzaFRlc3QoKTsKICAgICB9
IGNhdGNoIChlcnJvcikgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lz
dGVtYWNjZXNzL3N5bmMtYWNjZXNzLWhhbmRsZS1iYXNpY3Mtd29ya2VyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9zeW5jLWFjY2Vzcy1oYW5kbGUt
YmFzaWNzLXdvcmtlci1leHBlY3RlZC50eHQKaW5kZXggNDc0ZjVkNzE1NTczMDdlNGJkMTRjMTQ2
YmE5M2FiZDUyZGI5YTRmNC4uNzA5ZGU0ZWExYzc5ODYyYjUzMThlMjFkN2EzZjAwMDcxNDk1ZTQ4
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL3N5bmMt
YWNjZXNzLWhhbmRsZS1iYXNpY3Mtd29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3Mvc3luYy1hY2Nlc3MtaGFuZGxlLWJhc2ljcy13b3Jr
ZXItZXhwZWN0ZWQudHh0CkBAIC00LDEzICs0LDExIEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
CiAKIAogU3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMvc3luYy1hY2Nlc3MtaGFuZGxlLWJhc2lj
cy5qcwotUEFTUyBbV29ya2VyXSBmaWxlSGFuZGxlLm5hbWUgaXMgInN5bmMtYWNjZXNzLWhhbmRs
ZS50eHQiCitQQVNTIFtXb3JrZXJdIGZpbGVIYW5kbGUubmFtZSBpcyAic3luYy1hY2Nlc3MtaGFu
ZGxlLWJhc2ljLnR4dCIKIFBBU1MgW1dvcmtlcl0gZmlsZUhhbmRsZS5raW5kIGlzICJmaWxlIgog
W1dvcmtlcl0gYWNjZXNzSGFuZGxlMSBpcyBjcmVhdGVkCiBQQVNTIFtXb3JrZXJdIHNpemUgaXMg
MAotW1dvcmtlcl0gYWNjZXNzSGFuZGxlMiBjYW5ub3QgYmUgY3JlYXRlZAogUEFTUyBbV29ya2Vy
XSBjcmVhdGVFcnJvci50b1N0cmluZygpIGlzICJJbnZhbGlkU3RhdGVFcnJvcjogVGhlIG9iamVj
dCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLiIKLVtXb3JrZXJdIGFjY2Vzc0hhbmRsZTEgaXMgY2xv
c2VkCiBbV29ya2VyXSBhY2Nlc3NIYW5kbGUyIGlzIGNyZWF0ZWQKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lz
dGVtYWNjZXNzL3N5bmMtYWNjZXNzLWhhbmRsZS1yZWFkLXdyaXRlLXdvcmtlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3Mvc3luYy1hY2Nlc3MtaGFu
ZGxlLXJlYWQtd3JpdGUtd29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCBhNWY2YmQxYTk3MDY1OWEw
NDg1MjE0YzFkMmIzYzljOTVhNGI1ZmI5Li5jYTNiYmY3NjNlMmE4MzVjNDEzNjRhYTQ4ZGNkNWYx
MmQ3NDIzNWU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nl
c3Mvc3luYy1hY2Nlc3MtaGFuZGxlLXJlYWQtd3JpdGUtd29ya2VyLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3Mvc3luYy1hY2Nlc3MtaGFuZGxl
LXJlYWQtd3JpdGUtd29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMjAsOSArMjAsNiBAQCBQQVNTIFtX
b3JrZXJdIGFjY2Vzc0hhbmRsZS53cml0ZShuZXcgQXJyYXlCdWZmZXIoMSksIHsgImF0IiA6IE51
bWJlci5NQVhfU0FGRV9JTgogUEFTUyBbV29ya2VyXSBmaWxlU2l6ZSBpcyB0b3RhbFdyaXRlU2l6
ZQogW1dvcmtlcl0gdGVzdCB0cnVuY2F0ZSgpOgogUEFTUyBbV29ya2VyXSBmaWxlU2l6ZSBpcyA0
Ci1bV29ya2VyXSB0ZXN0IHdyaXRlKCkgd2l0aCBwZW5kaW5nIG9wZXJhdGlvbjoKLVtXb3JrZXJd
IGFjY2Vzc0hhbmRsZS50cnVuY2F0ZSgwKQotUEFTUyBbV29ya2VyXSBhY2Nlc3NIYW5kbGUucmVh
ZChyZWFkQnVmZmVyLCB7ICJhdCIgOiAwIH0pIHRocmV3IGV4Y2VwdGlvbiBJbnZhbGlkU3RhdGVF
cnJvcjogQWNjZXNzIGhhbmRsZSBoYXMgdW5maW5pc2hlZCBvcGVyYXRpb24uCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442647</attachid>
            <date>2021-10-27 16:22:23 -0700</date>
            <delta_ts>2021-10-29 00:20:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232146-20211027162222.patch</filename>
            <type>text/plain</type>
            <size>52788</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FkNjY4YzY0OGQyNTY4
MjA5NjQ4NjA0YjIzZjJmNmIxMjUzMDE1NS4uYjdiYjMwM2YyOTVmOWUyNWM2MGQyZTVjNDYxMzYz
MzA4OTgwYWM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTEwLTI3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFBlcmZvcm0gRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGUgb3BlcmF0aW9ucyBpbiB3ZWIgcHJvY2VzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMTQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgdHJ1bmNhdGUoKSwgZ2V0U2l6ZSgp
IGFuZCBmbHVzaCgpIG9wZXJhdGlvbnMgd2lsbCBhY3R1YWxseSBiZSBzeW5jIG9wZXJhdGlvbnMu
CisKKyAgICAgICAgTW9kaWZpZWQgZXhpc3RpbmcgdGVzdHMgZm9yIG5ldyBiZWhhdmlvci4KKwor
ICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRmlsZUhhbmRsZTo6Z2V0U2l6ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRmlsZUhhbmRsZTo6dHJ1bmNhdGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZpbGVIYW5kbGU6OmZsdXNo
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3Rl
bUZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNj
ZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjp0cnVuY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Z2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlOjp3cml0ZSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmg6CisgICAgICAgICgpOiBEZWxldGVk
LgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpjb21wbGV0ZUludGVnZXJDYWxsYmFjayk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldFNpemUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjp0cnVuY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmZsdXNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmg6
CisKIDIwMjEtMTAtMjYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0dQVSBQcm9jZXNzXSBgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpnZXRDVE1gIHNo
b3VsZCBpbmNsdWRlIHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0NzQ2NjI0
OWIxZmRlODI0Y2EzNmViOTE5YTM3ZjBhZDc5MWQ1ODMuLjJhNzc4MmZhYTIyZmUwMmVkZGVlMTQy
NjRlMTBkYTIyMzlmMjgxZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEtMTAtMjcg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgUGVyZm9ybSBGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZSBvcGVyYXRpb25zIGluIHdlYiBwcm9jZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIxNDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXR3b3JrIHByb2Nlc3Mg
bm8gbG9uZ2VyIG5lZWRzIHRvIGhvbGQgb3BlbiBmaWxlIGhhbmRsZSBmb3IgRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGUuIE5vdyBpdCBjcmVhdGVzIGFuIG9wZW4gCisgICAgICAgIGZpbGUgaGFu
ZGxlLCBwYXNzIGl0IHRvIHdlYiBwcm9jZXNzIGFuZCBjbG9zZSBpdC4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VFcnJvci5oOgorICAgICAgICAo
V2ViS2l0Ojpjb252ZXJ0VG9FeGNlcHRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaWxl
U3lzdGVtU3RvcmFnZUhhbmRsZTo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZSk6CisgICAgICAgIChX
ZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6
OkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjptb3ZlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGU6On5GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpnZXRTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OnRydW5jYXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmZsdXNo
KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRTaXplRm9yQWNjZXNzSGFuZGxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjp0cnVu
Y2F0ZUZvckFjY2Vzc0hhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Zmx1c2hGb3JBY2Nlc3NIYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMu
aW46CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuY3BwOgorICAgICAg
ICAoSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpjbG9zZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L1NoYXJlZEZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6dHJ1bmNhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmZs
dXNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oOgorCiAyMDIxLTEwLTI2ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHByb3BlcnRp
ZXMgc2V0IGJ5IE5TVVJMUHJvdG9jb2wgb24gTlNVUkxSZXF1ZXN0IGJlZm9yZSBzZXJpYWxpemlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0Zp
bGVTeXN0ZW1GaWxlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKaW5kZXggMzY2ODczYWFmZDlkOThlNTc2
NGM5YjI1NTFiM2NlNWVmNjIwYmZiOC4uOWE4MzhjMDZiNzFhYWY4NjQzNzJhZTllYzg0ZDAzZjAz
MDk5OGM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNj
ZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwCkBAIC02OCwzMCArNjgs
NiBAQCB2b2lkIEZpbGVTeXN0ZW1GaWxlSGFuZGxlOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKERP
TVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhYwogICAgIH0pOwogfQogCi12b2lkIEZpbGVTeXN0
ZW1GaWxlSGFuZGxlOjpnZXRTaXplKEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
ciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlv
bk9yPHVpbnQ2NF90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoaXNDbG9z
ZWQoKSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCAiSGFuZGxlIGlzIGNsb3NlZCJfcyB9KTsKLQotICAgIGNvbm5lY3Rpb24o
KS5nZXRTaXplKGlkZW50aWZpZXIoKSwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIEZpbGVTeXN0ZW1GaWxlSGFuZGxlOjp0cnVu
Y2F0ZShGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRl
bnRpZmllciwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhjZXB0aW9uT3I8dm9pZD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGlz
Q2xvc2VkKCkpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciwgIkhhbmRsZSBpcyBjbG9zZWQiX3MgfSk7Ci0KLSAgICBjb25uZWN0
aW9uKCkudHJ1bmNhdGUoaWRlbnRpZmllcigpLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBzaXpl
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgRmlsZVN5c3RlbUZpbGVI
YW5kbGU6OmZsdXNoKEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmIChpc0Nsb3NlZCgpKQotICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJIYW5kbGUgaXMgY2xvc2VkIl9zIH0pOwotCi0gICAgY29ubmVjdGlvbigpLmZsdXNoKGlkZW50
aWZpZXIoKSwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotfQotCiB2b2lkIEZpbGVTeXN0ZW1GaWxlSGFuZGxlOjpjbG9zZShGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoaXNDbG9zZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmgKaW5kZXgg
OTRkNWUxZTE3ZjlmNmZhMTk3NzQxNDAzZjc5ZTRjNzgwYzZlZGRiZS4uNjIzOWY3NGJmZWVkZWRi
MTAxMDkyY2FhYTM0MWI0OWJlMTY3Njg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmgK
QEAgLTQxLDkgKzQxLDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0RmlsZShET01Qcm9taXNlRGVm
ZXJyZWQ8SURMSW50ZXJmYWNlPEZpbGU+PiYmKTsKIAogICAgIHZvaWQgY3JlYXRlU3luY0FjY2Vz
c0hhbmRsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlPj4mJik7Ci0gICAgdm9pZCBnZXRTaXplKEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx1aW50NjRf
dD4mJik+JiYpOwotICAgIHZvaWQgdHJ1bmNhdGUoRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJik7Ci0gICAgdm9pZCBmbHVzaChGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8dm9pZD4mJik+JiYpOwogICAgIHZvaWQgY2xvc2UoRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYp
PiYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24u
aAppbmRleCAyN2ZhMWUyYzljZWVlMjU2NWNmMzc1YmE2OTRjNGE1YWMxN2U5Nzc0Li5kNjNkNzM5
M2RmYTMxOTAzZGQ2NzNkMTFkZmZjOWJkMGNlZjc5ZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC01Nyw5ICs1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlRW50cnkoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbmFtZSwgYm9vbCBkZWxldGVSZWN1cnNpdmVseSwgVm9pZENhbGxiYWNrJiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmls
ZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFJlc29sdmVDYWxsYmFjayYmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIsIEdldEFjY2Vzc0hhbmRsZUNhbGxiYWNrJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
U2l6ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBJbnRlZ2VyQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0
cnVuY2F0ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXplLCBWb2lkQ2FsbGJhY2smJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBmbHVzaChGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBWb2lkQ2FsbGJhY2smJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjbG9zZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBWb2lkQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRIYW5kbGVOYW1lcyhGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgR2V0SGFu
ZGxlTmFtZXNDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEhhbmRsZShGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBHZXRIYW5kbGVXaXRo
VHlwZUNhbGxiYWNrJiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGUuY3BwCmluZGV4IDI0ZmMyYTdhNDIzODM4NzlmOGVkZjk1YTZjYWVkODJmMzhiMWMyNjguLmEx
ZWVmNmNhNTcyMmZhNjY0ODZjZWMzNTQ4MmQzNDMzZjgxNzQ2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0Zp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcApAQCAtNjMsMTMgKzYzLDExIEBAIHZvaWQgRmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OnRydW5jYXRlKHVuc2lnbmVkIGxvbmcgbG9uZyBzaXpl
LCBET01Qcm9taXNlRGVmCiAgICAgaWYgKGlzQ2xvc2luZ09yQ2xvc2VkKCkpCiAgICAgICAgIHJl
dHVybiBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2Vz
c0hhbmRsZSBpcyBjbG9zaW5nIG9yIGNsb3NlZCJfcyB9KTsKIAotICAgIG1fcGVuZGluZ09wZXJh
dGlvbkNvdW50Kys7Ci0gICAgbV9zb3VyY2UtPnRydW5jYXRlKG1faWRlbnRpZmllciwgc2l6ZSwg
W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAg
ICAgIHdlYWtUaGlzLT5tX3BlbmRpbmdPcGVyYXRpb25Db3VudC0tOworICAgIGludCByZXN1bHQg
PSBGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUobV9maWxlLCBzaXplKTsKKyAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFVua25vd25FcnJv
ciB9KTsKIAotICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwotICAgIH0p
OworICAgIHByb21pc2UucmVzb2x2ZSgpOwogfQogCiB2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlOjpnZXRTaXplKERPTVByb21pc2VEZWZlcnJlZDxJRExVbnNpZ25lZExvbmdMb25nPiYm
IHByb21pc2UpCkBAIC03NywxMyArNzUsMTEgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZTo6Z2V0U2l6ZShET01Qcm9taXNlRGVmZXJyZWQ8SURMVW5zaWduZWRMb25nTG9uZz4KICAg
ICBpZiAoaXNDbG9zaW5nT3JDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0
KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzSGFuZGxlIGlzIGNsb3Npbmcg
b3IgY2xvc2VkIl9zIH0pOwogCi0gICAgbV9wZW5kaW5nT3BlcmF0aW9uQ291bnQrKzsKLSAgICBt
X3NvdXJjZS0+Z2V0U2l6ZShtX2lkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byByZXN1bHQpIG11dGFibGUgewot
ICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9wZW5kaW5nT3Bl
cmF0aW9uQ291bnQtLTsKKyAgICBhdXRvIHNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShtX2Zp
bGUpOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IFVua25vd25FcnJvciB9KTsKIAotICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3Zl
KHJlc3VsdCkpOwotICAgIH0pOworICAgIHByb21pc2UucmVzb2x2ZShzaXplLnZhbHVlKCkpOwog
fQogCiB2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpmbHVzaChET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQpAQCAtOTEsMjAgKzg3LDE2IEBAIHZvaWQgRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGU6OmZsdXNoKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21p
c2UpCiAgICAgaWYgKGlzQ2xvc2luZ09yQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybiBwcm9taXNl
LnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2Vzc0hhbmRsZSBpcyBj
bG9zaW5nIG9yIGNsb3NlZCJfcyB9KTsKIAotICAgIG1fcGVuZGluZ09wZXJhdGlvbkNvdW50Kys7
Ci0gICAgbV9zb3VyY2UtPmZsdXNoKG1faWRlbnRpZmllciwgW3dlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvIHJlc3VsdCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX3BlbmRp
bmdPcGVyYXRpb25Db3VudC0tOworICAgIGF1dG8gcmVzdWx0ID0gRmlsZVN5c3RlbTo6Zmx1c2hG
aWxlKG1fZmlsZSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBwcm9taXNlLnJl
amVjdChFeGNlcHRpb24geyBVbmtub3duRXJyb3IgfSk7CiAKLSAgICAgICAgcHJvbWlzZS5zZXR0
bGUoV1RGTW92ZShyZXN1bHQpKTsKLSAgICB9KTsKKyAgICBwcm9taXNlLnJlc29sdmUoKTsKIH0K
IAogdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y2xvc2UoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKLSAgICBtX3BlbmRpbmdPcGVyYXRpb25Db3VudCsrOwot
ICAgIGNsb3NlSW50ZXJuYWwoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHdlYWtU
aGlzLT5tX3BlbmRpbmdPcGVyYXRpb25Db3VudC0tOworICAgIGNsb3NlSW50ZXJuYWwoW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHBy
b21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CiAgICAgfSk7CiB9CkBAIC0xNDIsOSArMTM0
LDYgQEAgRXhjZXB0aW9uT3I8dW5zaWduZWQgbG9uZyBsb25nPiBGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZTo6cmVhZChCdWZmZXJTb3VyY2UmJgogICAgIGlmIChpc0Nsb3NpbmdPckNsb3NlZCgp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3NI
YW5kbGUgaXMgY2xvc2luZyBvciBjbG9zZWQiX3MgfTsKIAotICAgIGlmIChtX3BlbmRpbmdPcGVy
YXRpb25Db3VudCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCAiQWNjZXNzIGhhbmRsZSBoYXMgdW5maW5pc2hlZCBvcGVyYXRpb24iX3MgfTsKLQogICAgIGlu
dCByZXN1bHQgPSBGaWxlU3lzdGVtOjpzZWVrRmlsZShtX2ZpbGUsIG9wdGlvbnMuYXQsIEZpbGVT
eXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmcpOwogICAgIGlmIChyZXN1bHQgPT0gLTEp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0
byByZWFkIGF0IG9mZnNldCJfcyB9OwpAQCAtMTYzLDkgKzE1Miw2IEBAIEV4Y2VwdGlvbk9yPHVu
c2lnbmVkIGxvbmcgbG9uZz4gRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OndyaXRlKEJ1ZmZl
clNvdXJjZSYmCiAgICAgaWYgKGlzQ2xvc2luZ09yQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2Vzc0hhbmRsZSBpcyBjbG9zaW5nIG9y
IGNsb3NlZCJfcyB9OwogCi0gICAgaWYgKG1fcGVuZGluZ09wZXJhdGlvbkNvdW50KQotICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3MgaGFuZGxlIGhh
cyB1bmZpbmlzaGVkIG9wZXJhdGlvbiJfcyB9OwotCiAgICAgaW50IHJlc3VsdCA9IEZpbGVTeXN0
ZW06OnNlZWtGaWxlKG1fZmlsZSwgb3B0aW9ucy5hdCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmln
aW46OkJlZ2lubmluZyk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRvIHdyaXRlIGF0IG9mZnNldCJf
cyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNz
L0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaAppbmRleCBlZDI5YmU1
OTE2ZjE5OTI5YTkxMzIyNTY2NTFlZWRkNGZmYjdhZDdiLi44ZjhkYTRhMzRhMTlkZjk5ZmFkYTYz
M2EwMDhkYzM4NmY3Mzk0ZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGUuaApAQCAtNjcsNyArNjcsNiBAQCBwcml2YXRlOgogCiAgICAgUmVmPEZpbGVTeXN0ZW1GaWxl
SGFuZGxlPiBtX3NvdXJjZTsKICAgICBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwotICAgIHVpbnQ2NF90IG1fcGVuZGluZ09wZXJhdGlvbkNvdW50IHsg
MCB9OwogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGU7CiAgICAgc3Rk
OjpvcHRpb25hbDxFeGNlcHRpb25Pcjx2b2lkPj4gbV9jbG9zZVJlc3VsdDsKICAgICBWZWN0b3I8
Q2xvc2VDYWxsYmFjaz4gbV9jbG9zZUNhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtl
ckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggNjcxYWM0ZjExOGE5M2E2ZDY2
MTgyMmY4ZjVlN2QyYWEwMzBhMWEyOC4uNjc4OTY0MzE0NjI0YmFlNmYxODlmMzBlZTRmYjJhMzE0
MjEyOTI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNj
ZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbi5jcHAKQEAgLTE5OSwxMiArMTk5LDYgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb246OmRpZENyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoQ2FsbGJhY2tJZGVudGkK
ICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNvbXBsZXRlSW50ZWdlckNhbGxiYWNrKENhbGxiYWNr
SWRlbnRpZmllciBjYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHVpbnQ2NF90PiYmIHJl
c3VsdCkKLXsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1faW50ZWdlckNhbGxiYWNrcy50YWtl
KGNhbGxiYWNrSWRlbnRpZmllcikpCi0gICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7
Ci19Ci0KIHZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wbGV0ZVZv
aWRDYWxsYmFjayhDYWxsYmFja0lkZW50aWZpZXIgY2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRp
b25Pcjx2b2lkPiYmIHJlc3VsdCkKIHsKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fdm9pZENh
bGxiYWNrcy50YWtlKGNhbGxiYWNrSWRlbnRpZmllcikpCkBAIC0yMzQsNjYgKzIyOCw2IEBAIHZv
aWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFu
ZGxlKEZpbGVTeXN0ZW1IYW5kbGVJCiAgICAgfSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRTaXplKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkludGVnZXJDYWxsYmFj
ayYmIGNhbGxiYWNrKQotewotICAgIGlmICghbV9zY29wZSkKLSAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwotCi0gICAgYXV0byBjYWxsYmFj
a0lkZW50aWZpZXIgPSBDYWxsYmFja0lkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOwot
ICAgIG1faW50ZWdlckNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7Ci0KLSAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lkZW50aWZpZXIsIHdv
cmtlclRocmVhZCA9IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5UaHJlYWRDb25uZWN0
aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRl
bnRpZmllcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBb
Y2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCld
KGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1Ro
cmVhZENvcHkocmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAg
ICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3Bl
KS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgY29u
bmVjdGlvbi0+Y29tcGxldGVJbnRlZ2VyQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZN
b3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUo
KSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPmdldFNpemUo
aWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV1RGTW92ZShtYWluVGhyZWFkQ2Fs
bGJhY2spKTsKLSAgICB9KTsKLX0KLQotdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb246OnRydW5jYXRlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVy
LCB1aW50NjRfdCBzaXplLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFj
ayYmIGNhbGxiYWNrKQotewotICAgIGlmICghbV9zY29wZSkKLSAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwotCi0gICAgYXV0byBjYWxsYmFj
a0lkZW50aWZpZXIgPSBDYWxsYmFja0lkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOwot
ICAgIG1fdm9pZENhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7Ci0KLSAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtl
clRocmVhZCA9IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5UaHJlYWRDb25uZWN0aW9u
ID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRp
Zmllciwgc2l6ZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sg
PSBbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVh
ZCldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9z
c1RocmVhZENvcHkocmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKLSAgICAgICAgICAg
ICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNj
b3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKLSAgICAgICAgICAgICAgICAgICAg
Y29ubmVjdGlvbi0+Y29tcGxldGVWb2lkQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZN
b3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUo
KSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPnRydW5jYXRl
KGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHNpemUsIFdURk1vdmUobWFpblRo
cmVhZENhbGxiYWNrKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjpmbHVzaChGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRp
ZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJiBjYWxsYmFj
aykKLXsKLSAgICBpZiAoIW1fc2NvcGUpCi0gICAgICAgIHJldHVybiBjYWxsYmFjayhFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKLQotICAgIGF1dG8gY2FsbGJhY2tJZGVudGlmaWVy
ID0gQ2FsbGJhY2tJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBtX3ZvaWRD
YWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwotCi0g
ICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBS
ZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRo
cmVhZENvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXJdKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRp
Zmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zv
ck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3Vs
dCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gY29u
bmVjdGlvbiA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuZmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmNvbXBs
ZXRlVm9pZENhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKLSAg
ICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwotICAgICAgICB9Owot
Ci0gICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5mbHVzaChpZGVudGlmaWVyLCBhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCBXVEZNb3ZlKG1haW5UaHJlYWRDYWxsYmFjaykpOwotICAgIH0pOwot
fQotCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y2xvc2UoRmlsZVN5
c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX3Njb3BlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtl
ckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4
IGNhYzliNDJmZThkNWQwZDU4NjFiZWRjOTY5NTAyMTU2ZTdlMDM1NTYuLjBiMzdlY2NkNDVmMGI0
ZWU0MzkwZjAxZjI4NGViY2Y4YWZiYTQ4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTQ5LDcgKzQ5LDYgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVzb2x2ZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPFZlY3RvcjxT
dHJpbmc+PiYmKTsKICAgICB2b2lkIGRpZENyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoQ2FsbGJhY2tJ
ZGVudGlmaWVyLCBFeGNlcHRpb25PcjxzdGQ6OnBhaXI8RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGU+PiYmKTsKICAgICB2
b2lkIGNvbXBsZXRlVm9pZENhbGxiYWNrKENhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9uT3I8
dm9pZD4mJiByZXN1bHQpOwotICAgIHZvaWQgY29tcGxldGVJbnRlZ2VyQ2FsbGJhY2soQ2FsbGJh
Y2tJZGVudGlmaWVyLCBFeGNlcHRpb25Pcjx1aW50NjRfdD4mJiByZXN1bHQpOwogICAgIHZvaWQg
ZGlkR2V0SGFuZGxlTmFtZXMoQ2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25PcjxWZWN0b3I8
U3RyaW5nPj4mJik7CiAgICAgdm9pZCBkaWRHZXRIYW5kbGVXaXRoVHlwZShDYWxsYmFja0lkZW50
aWZpZXIsIEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
Ym9vbD4+JiYpOwogCkBAIC02Nyw5ICs2Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRIYW5k
bGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgR2V0SGFu
ZGxlV2l0aFR5cGVDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgY3JlYXRlU3luY0FjY2Vz
c0hhbmRsZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpHZXRBY2Nlc3NIYW5kbGVDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIGdldFNp
emUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
SWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpJbnRlZ2VyQ2FsbGJhY2sm
JikgZmluYWw7Ci0gICAgdm9pZCB0cnVuY2F0ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXplLCBGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lk
IGZsdXNoKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2UoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpWb2lkQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICBXZWFrUHRyPFdvcmtlckdsb2Jh
bFNjb3BlPiBtX3Njb3BlOwpAQCAtNzksNyArNzUsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8
Q2FsbGJhY2tJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlJlc29sdmVD
YWxsYmFjaz4gbV9yZXNvbHZlQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8Q2FsbGJhY2tJZGVudGlm
aWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEFjY2Vzc0hhbmRsZUNhbGxiYWNr
PiBtX2dldEFjY2Vzc0hhbmRsQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8Q2FsbGJhY2tJZGVudGlm
aWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjaz4gbV92b2lkQ2Fs
bGJhY2tzOwotICAgIEhhc2hNYXA8Q2FsbGJhY2tJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb246OkludGVnZXJDYWxsYmFjaz4gbV9pbnRlZ2VyQ2FsbGJhY2tzOwogICAgIEhh
c2hNYXA8Q2FsbGJhY2tJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Okdl
dEhhbmRsZU5hbWVzQ2FsbGJhY2s+IG1fZ2V0SGFuZGxlTmFtZXNDYWxsYmFja3M7CiAgICAgSGFz
aE1hcDxDYWxsYmFja0lkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0
SGFuZGxlV2l0aFR5cGVDYWxsYmFjaz4gbV9nZXRIYW5kbGVXaXRoVHlwZUNhbGxiYWNrczsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5
c3RlbVN0b3JhZ2VFcnJvci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0ZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IuaAppbmRleCAwMjc3MzdhMmI0MGIyYzI3MGVhYTY0Yjhh
NWY5ZTY0MzAxZWU4Nzk2Li5jMzZmNzUzNGM2YWI1YjYyYWE0YTVkZDM0NjkzNGYzMWVkYjA4YmZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5
c3RlbVN0b3JhZ2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZUVycm9yLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBlbnVtIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IgOiB1aW50OF90
IHsKKyAgICBBY2Nlc3NIYW5kbGVBY3RpdmUsCiAgICAgQmFja2VuZE5vdFN1cHBvcnRlZCwKICAg
ICBGaWxlTm90Rm91bmQsCiAgICAgSW52YWxpZE1vZGlmaWNhdGlvbiwKQEAgLTQzLDE0ICs0NCwx
NiBAQCBlbnVtIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IgOiB1aW50OF90IHsKIGlubGlu
ZSBXZWJDb3JlOjpFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uKEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3IgZXJyb3IpCiB7CiAgICAgc3dpdGNoIChlcnJvcikgeworICAgIGNhc2UgRmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcjo6QWNjZXNzSGFuZGxlQWN0aXZlOgorICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6SW52YWxpZFN0YXRlRXJyb3IsICJTb21lIEFjY2Vzc0hh
bmRsZSBpcyBhY3RpdmUiX3MgfTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkJh
Y2tlbmROb3RTdXBwb3J0ZWQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBX
ZWJDb3JlOjpOb3RTdXBwb3J0ZWRFcnJvciwgIkJhY2tlbmQgZG9lcyBub3Qgc3VwcG9ydCB0aGlz
IG9wZXJhdGlvbiIgfTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNv
cmU6Ok5vdFN1cHBvcnRlZEVycm9yLCAiQmFja2VuZCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bl
cmF0aW9uIl9zIH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpGaWxlTm90Rm91
bmQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpOb3RGb3Vu
ZEVycm9yIH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpJbnZhbGlkTW9kaWZp
Y2F0aW9uOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6SW52
YWxpZE1vZGlmaWNhdGlvbkVycm9yIH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9y
OjpJbnZhbGlkTmFtZToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNv
cmU6OlVua25vd25FcnJvciwgIk5hbWUgaXMgaW52YWxpZCIgfTsKKyAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIk5hbWUgaXMgaW52YWxp
ZCJfcyB9OwogICAgIGNhc2UgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6SW52YWxpZFN0YXRlOgog
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6SW52YWxpZFN0YXRl
RXJyb3IgfTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlR5cGVNaXNtYXRjaDoK
QEAgLTc3LDYgKzgwLDcgQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gewogICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvciwK
KyAgICAgICAgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpBY2Nlc3NIYW5kbGVBY3Rp
dmUsCiAgICAgICAgIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6QmFja2VuZE5vdFN1
cHBvcnRlZCwKICAgICAgICAgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpGaWxlTm90
Rm91bmQsCiAgICAgICAgIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6SW52YWxpZE1v
ZGlmaWNhdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCmluZGV4IDFmYjE3NTk4
MTQ1NzhiNDlkZWJjZjJmZTNlZjgwNzc5YjA0MWE3N2QuLmRhNDg0MTlkYTIxY2QwNGQzNTQ2OGZl
YTIxODAxY2NkYmUyYzQ5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcApAQCAt
NjMsMTIgKzYzLDYgQEAgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OkZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlKEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYgbWFuYWcKICAgICB9CiB9CiAKLUZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlOjp+RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUoKQotewotICAgIGlm
IChtX2hhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAg
ICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9oYW5kbGUpOwotfQotCiBib29sIEZpbGVTeXN0
ZW1TdG9yYWdlSGFuZGxlOjppc1NhbWVFbnRyeShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRl
bnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8gcGF0aCA9IG1fbWFuYWdlci0+Z2V0UGF0
aChpZGVudGlmaWVyKTsKQEAgLTE2NCwxMyArMTU4LDEzIEBAIEV4cGVjdGVkPEZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlOjpBY2Nlc3NIYW5kbGVJbmZvLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBG
aWxlCiAgICAgaWYgKCFhY3F1aXJlZCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEZp
bGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkludmFsaWRTdGF0ZSk7CiAKLSAgICBtX2hhbmRsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKG1fcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFk
V3JpdGUpOwotICAgIGlmIChtX2hhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQorICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9wYXRo
LCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSk7CisgICAgaWYgKGhhbmRsZSA9
PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bik7CiAKLSAgICBh
dXRvIGlwY0hhbmRsZSA9IElQQzo6U2hhcmVkRmlsZUhhbmRsZTo6Y3JlYXRlKG1faGFuZGxlKTsK
KyAgICBhdXRvIGlwY0hhbmRsZSA9IElQQzo6U2hhcmVkRmlsZUhhbmRsZTo6Y3JlYXRlKGhhbmRs
ZSk7CiAgICAgaWYgKCFpcGNIYW5kbGUpIHsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KG1faGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpCYWNrZW5k
Tm90U3VwcG9ydGVkKTsKICAgICB9CiAKQEAgLTE3OSw2MSArMTczLDExIEBAIEV4cGVjdGVkPEZp
bGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpBY2Nlc3NIYW5kbGVJbmZvLCBGaWxlU3lzdGVtU3RvcmFn
ZUVycm9yPiBGaWxlCiAgICAgcmV0dXJuIHN0ZDo6cGFpciB7ICptX2FjdGl2ZVN5bmNBY2Nlc3NI
YW5kbGUsIFdURk1vdmUoKmlwY0hhbmRsZSkgfTsKIH0KIAotRXhwZWN0ZWQ8dWludDY0X3QsIEZp
bGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpnZXRTaXplKFdl
YkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyKQotewotICAgIGlmICghbV9tYW5hZ2VyKQotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bik7Ci0KLSAgICBpZiAoIW1f
YWN0aXZlU3luY0FjY2Vzc0hhbmRsZSB8fCAqbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlICE9IGFj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChGaWxl
U3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duKTsKLQotICAgIGF1dG8gc2l6ZSA9IEZpbGVTeXN0
ZW06OmZpbGVTaXplKG1fcGF0aCk7Ci0gICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bik7Ci0KLSAgICByZXR1
cm4gc2l6ZS52YWx1ZSgpOwotfQotCi1zdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjp0cnVuY2F0ZShXZWJDb3JlOjpGaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0
X3Qgc2l6ZSkKLXsKLSAgICBpZiAoIW1fbWFuYWdlcikKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0
ZW1TdG9yYWdlRXJyb3I6OlVua25vd247Ci0KLSAgICBpZiAoIW1fYWN0aXZlU3luY0FjY2Vzc0hh
bmRsZSB8fCAqbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlICE9IGFjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwotCi0g
ICAgQVNTRVJUKG1faGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpOwotICAgIGF1dG8gcmVzdWx0ID0gRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKG1faGFuZGxl
LCBzaXplKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9y
YWdlRXJyb3I6OlVua25vd247Ci0KLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi1zdGQ6
Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxl
OjpmbHVzaChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNj
ZXNzSGFuZGxlSWRlbnRpZmllcikKLXsKLSAgICBpZiAoIW1fbWFuYWdlcikKLSAgICAgICAgcmV0
dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247Ci0KLSAgICBpZiAoIW1fYWN0aXZl
U3luY0FjY2Vzc0hhbmRsZSB8fCAqbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlICE9IGFjY2Vzc0hh
bmRsZUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpV
bmtub3duOwotCi0gICAgQVNTRVJUKG1faGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpOwotICAgIGF1dG8gcmVzdWx0ID0gRmlsZVN5c3RlbTo6Zmx1c2hGaWxl
KG1faGFuZGxlKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3I6OlVua25vd247Ci0KLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCiBz
dGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFu
ZGxlOjpjbG9zZShXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIg
YWNjZXNzSGFuZGxlSWRlbnRpZmllcikKIHsKICAgICBpZiAoIW1fYWN0aXZlU3luY0FjY2Vzc0hh
bmRsZSB8fCAqbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlICE9IGFjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIpCiAgICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwogCi0g
ICAgQVNTRVJUKG1faGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpOwotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2hhbmRsZSk7Ci0KICAgICBpZiAoIW1f
bWFuYWdlcikKICAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247
CiAKQEAgLTI3MCw3ICsyMTQsNyBAQCBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjptb3ZlKFdlYkNvcmU6OkZpbAogCiAgICAgLy8g
RG8gbm90IG1vdmUgZmlsZSBpZiB0aGVyZSBpcyBvbmdvaW5nIG9wZXJhdGlvbi4KICAgICBpZiAo
bV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlKQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvcjo6SW52YWxpZFN0YXRlOworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VF
cnJvcjo6QWNjZXNzSGFuZGxlQWN0aXZlOwogCiAgICAgaWYgKG1fbWFuYWdlci0+Z2V0VHlwZShk
ZXN0aW5hdGlvbklkZW50aWZpZXIpICE9IFR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgcmV0dXJu
IEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlR5cGVNaXNtYXRjaDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlLmgKaW5kZXggYzBhOWUzYjFhYmNmOGZkOThhNTI3NjE0YjRjNzEwMjdmNjU4MTVkZi4u
Y2ExNmZkNTYxNjk2YzVlNjkxOGRkOGY5MDE1NWNmYWQyMTU4OTA5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VI
YW5kbGUgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUsIFcK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgRmlsZSwgRGlyZWN0b3J5
LCBBbnkgfTsKICAgICBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZShGaWxlU3lzdGVtU3RvcmFnZU1h
bmFnZXImLCBUeXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lKTsKLSAgICB+RmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGUoKTsKIAogICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBj
b25zdCBTdHJpbmcmIHBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGg7IH0KQEAgLTYxLDkgKzYw
LDYgQEAgcHVibGljOgogCiAgICAgdXNpbmcgQWNjZXNzSGFuZGxlSW5mbyA9IHN0ZDo6cGFpcjxX
ZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIElQQzo6U2hhcmVk
RmlsZUhhbmRsZT47CiAgICAgRXhwZWN0ZWQ8QWNjZXNzSGFuZGxlSW5mbywgRmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcj4gY3JlYXRlU3luY0FjY2Vzc0hhbmRsZSgpOwotICAgIEV4cGVjdGVkPHVpbnQ2
NF90LCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBnZXRTaXplKFdlYkNvcmU6OkZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllcik7Ci0gICAgc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVt
U3RvcmFnZUVycm9yPiB0cnVuY2F0ZShXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUpOwotICAgIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcj4gZmx1c2goV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyKTsKICAgICBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGNs
b3NlKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllcik7CiAKIHBy
aXZhdGU6CkBAIC03NSw3ICs3MSw2IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcGF0aDsKICAg
ICBTdHJpbmcgbV9uYW1lOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyPiBtX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGU7Ci0gICAg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1faGFuZGxlIHsgRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDY5YmFjODI1YmVmZjI3OWU0ZTAwZDE3OTcz
YzFhNDViNjk1NmI5NjUuLjRlZTUzNzcyOTQxNzQ5ZWE3ZDk2ZTEyMTNmMjZmMDI4Y2I5NTI1YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0yNDUsNDAgKzI0NSwxMiBAQCB2b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpG
aWxlU3lzdGVtSGFuZGxlSWRlbgogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5r
bm93bikpOwogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlLT5jcmVhdGVTeW5jQWNjZXNz
SGFuZGxlKCkpOwotfQotCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0U2l6ZUZvckFj
Y2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFu
ZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDx1aW50NjRfdCwg
RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgYXV0byBoYW5kbGUgPSBtX2ZpbGVTeXN0
ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnktPmdldEhhbmRsZShpZGVudGlmaWVyKTsKLSAgICBpZiAo
IWhhbmRsZSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVk
KEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd24pKTsKLQotICAgIGNvbXBsZXRpb25IYW5k
bGVyKGhhbmRsZS0+Z2V0U2l6ZShhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSk7Ci19Ci0KLXZvaWQg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjp0cnVuY2F0ZUZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpG
aWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0
X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKLQotICAgIGF1dG8gaGFuZGxlID0gbV9maWxlU3lzdGVtU3RvcmFnZUhh
bmRsZVJlZ2lzdHJ5LT5nZXRIYW5kbGUoaWRlbnRpZmllcik7Ci0gICAgaWYgKCFoYW5kbGUpCi0g
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpV
bmtub3duKTsKLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+dHJ1bmNhdGUoYWNjZXNz
SGFuZGxlSWRlbnRpZmllciwgc2l6ZSkpOwotfQotCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6Zmx1c2hGb3JBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlm
aWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17
Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBhdXRvIGhhbmRsZSA9IG1f
ZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS0+Z2V0SGFuZGxlKGlkZW50aWZpZXIpOwot
ICAgIGlmICghaGFuZGxlKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRmlsZVN5
c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bik7CisgICAgYXV0byByZXN1bHQgPSBoYW5kbGUtPmNy
ZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoKTsKKyAgICBhdXRvIGZpbGVIYW5kbGUgPSByZXN1bHQgPyBy
ZXN1bHQudmFsdWUoKS5zZWNvbmQgOiBJUEM6OlNoYXJlZEZpbGVIYW5kbGUoKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogCi0gICAgY29tcGxldGlvbkhhbmRsZXIo
aGFuZGxlLT5mbHVzaChhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSk7CisgICAgLy8gQ2xvc2UgdGhl
IGZpbGUgaGFuZGxlIGluIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICBmaWxlSGFuZGxlLmNsb3NlKCk7
CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbG9zZUFjY2Vzc0hhbmRsZShXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAppbmRleCAw
NGNjM2FmMDliYWIzZDJmMGUwZjcwMWMxZmYyOTAwYTYxNDE2MzU2Li5kNzFjMWQ2MGJmZDM4NjA5
MzYyYjljZDZmOTA4NjFkZWQ0OGUyOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCkBAIC03
OCw5ICs3OCw2IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBY2Nlc3NIYW5kbGVJbmZvID0gc3Rk
OjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgSVBD
OjpTaGFyZWRGaWxlSGFuZGxlPjsKICAgICB2b2lkIGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2Vi
Q29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8QWNjZXNzSGFuZGxlSW5mbywgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmKTsK
LSAgICB2b2lkIGdldFNpemVGb3JBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDx1aW50NjRfdCwgRmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcj4pPiYmKTsKLSAgICB2b2lkIHRydW5jYXRlRm9yQWNjZXNzSGFuZGxlKFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYpOwotICAgIHZvaWQg
Zmx1c2hGb3JBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIs
IFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7
CiAgICAgdm9pZCBjbG9zZUFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRl
bnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4pPiYmKTsKICAgICB2b2lkIGdldEhhbmRsZU5hbWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFZlY3RvcjxTdHJp
bmc+LCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYpOwogICAgIHZvaWQgZ2V0SGFuZGxlKElQ
Qzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBTdHJp
bmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4sIEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I+KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgpp
bmRleCA4MmVhMzEwZjgxNTFlZGYyYzQzYWJhNDUxMTRhODAxYzRiNzQ2ZjcyLi4xMzhhOGQyNWYx
YWYyMTY3ZDQ0ZTBkNmYwYmRlZjYyMzc2ODIxN2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFn
ZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTM1LDkgKzM1LDYgQEAKICAgICBNb3ZlKFdlYkNvcmU6
OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0
ZW1IYW5kbGVJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgU3RyaW5nIG5ld05hbWUp
IC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0
KSBBc3luYwogCiAgICAgQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVt
SGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoRXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNv
cmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgSVBDOjpTaGFyZWRGaWxl
SGFuZGxlPiwgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jCi0g
ICAgR2V0U2l6ZUZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50
aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllcikgLT4gKEV4cGVjdGVkPHVpbnQ2NF90LCBXZWJL
aXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKLSAgICBUcnVuY2F0ZUZv
ckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNz
SGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0
OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jCi0gICAgRmx1c2hGb3JBY2Nl
c3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VF
cnJvcj4gcmVzdWx0KSBBc3luYwogICAgIENsb3NlQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSAtPiAoc3RkOjpv
cHRpb25hbDxXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKICAg
ICBHZXRIYW5kbGVOYW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVu
dGlmaWVyKSAtPiAoRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIFdlYktpdDo6RmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwogICAgIEdldEhhbmRsZShXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbmFtZSkgLT4gKEV4cGVjdGVk
PHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4sIFdl
YktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYyBXYW50c0Nvbm5lY3Rp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5k
bGUuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAK
aW5kZXggOGViY2U5ODAwODdjMDc1YjAyM2I1OGFlYTJlMTU1ODYwZDc2OTQ2NC4uNjRlNDIxNzgw
MWEyMWYwNWQ4OGI0ZTYxNjhkNzBiODlmOTVhN2UwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAKQEAgLTI4LDYgKzI4LDExIEBACiAKIG5h
bWVzcGFjZSBJUEMgewogCit2b2lkIFNoYXJlZEZpbGVIYW5kbGU6OmNsb3NlKCkKK3sKKyAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUobV9oYW5kbGUpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09B
KQogCiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEZpbGVIYW5kbGU+IFNoYXJlZEZpbGVIYW5kbGU6OmNy
ZWF0ZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmgKaW5kZXggYTQ2YWM4OTA1MDdlYjY5M2ExMDdi
NDk5ZTU0MzYwNmE3OTdlNDQ5YS4uNTg1YWQ5OTM3MjcyYzJkMGFhOWQ1MzdjMjM3YzgzYTZiNTYw
OGI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhh
bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUu
aApAQCAtMzksOSArMzksOSBAQCBwdWJsaWM6CiAKICAgICBTaGFyZWRGaWxlSGFuZGxlKCkgPSBk
ZWZhdWx0OwogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUoKSB7IHJl
dHVybiBtX2hhbmRsZTsgfQorICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKLQogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNoYXJlZEZpbGVIYW5k
bGU+IGRlY29kZShEZWNvZGVyJik7CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCAxZjA2YjU5ZjhjYzY2MGNhMzM5
MDYwNWVlZjE2MjE1Nzc3YWM1YTZhLi5kNjMxYjU0MGE0NjNmMzVkMzVmYzQyOGQ4ZjQ5M2IyOTZm
NjMzNGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcApAQCAtMTI2LDM5ICsxMjYsNiBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSAogICAgIH0p
OwogfQogCi12b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0U2l6ZShXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwg
SW50ZWdlckNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX2Nvbm5l
Y3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRp
b24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOwotCi0g
ICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6R2V0U2l6ZUZvckFjY2Vzc0hhbmRsZShpZGVudGlmaWVyLCBhY2Nlc3NIYW5k
bGVJZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAg
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoY29udmVydFRvRXhjZXB0aW9uKHJlc3Vs
dC5lcnJvcigpKSk7Ci0KLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0LnZhbHVlKCkp
OwotICAgIH0pOwotfQotCi12b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6dHJ1
bmNhdGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
Q29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIFZvaWRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVy
KQotewotICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVj
dGlvbiBpcyBsb3N0IiB9KTsKLQotICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlRydW5jYXRlRm9yQWNjZXNzSGFuZGxl
KGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHNpemUpLCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBlcnJvcikgbXV0YWJsZSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnZlcnRUb0V4Y2VwdGlvbk9yKGVycm9yKSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpmbHVz
aChXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRp
ZmllciwgVm9pZENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX2Nv
bm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNl
cHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOwot
Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Rmx1c2hGb3JBY2Nlc3NIYW5kbGUoaWRlbnRpZmllciwgYWNjZXNzSGFu
ZGxlSWRlbnRpZmllciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29udmVydFRvRXhjZXB0aW9uT3IoZXJyb3IpKTsKLSAgICB9KTsKLX0KLQogdm9pZCBXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNsb3NlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
SWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBWb2lkQ2FsbGJhY2smJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA3YjNhMWQxZTllZDI3NTdlZGExZGVi
NTQ1NTdlODQ2OWZkZmQ5MGI5Li4yZDI1MzQ0NGViMzc5ZDc2ZGM5NTc4N2Q4NzA2NDYyMWNlZjk2
NmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCkBA
IC04Miw5ICs4Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRIYW5kbGUoV2ViQ29yZTo6Rmls
ZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpHZXRIYW5kbGVXaXRoVHlwZUNhbGxiYWNrJiYpIGZpbmFsOwogCiAg
ICAgdm9pZCBjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEFjY2Vz
c0hhbmRsZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2l6ZShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkludGVn
ZXJDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHRydW5jYXRlKFdlYkNvcmU6OkZpbGVTeXN0
ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Vm9pZENhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgZmx1c2goV2ViQ29yZTo6Rmls
ZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lk
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFu
ZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlm
aWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYm
KSBmaW5hbDsKIAogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBiNTkwOTZjZDJlYWI1MGE1MTAxYzdlZmRkYmI3MWJmNDliMmVlMzEwLi41MzA2NmQyZWYy
NTk2OGNkMzRhMWRlMGU0MjQ4NjNhYTUyNTBhNThhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MjEtMTAtMjcgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgUGVy
Zm9ybSBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZSBvcGVyYXRpb25zIGluIHdlYiBwcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIxNDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3Jh
Z2UvZmlsZXN5c3RlbWFjY2Vzcy9oYW5kbGUtbW92ZS13b3JrZXItZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHN0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9yZXNvdXJjZXMvc3luYy1hY2Nlc3MtaGFu
ZGxlLXJlYWQtd3JpdGUuanM6IHJlZmFjdG9yIHRoZSB0ZXN0IHdpdGggYXN5bmMgYW5kIGF3YWl0
LgorICAgICAgICAoYXN5bmMgdGVzdCk6CisgICAgICAgICogc3RvcmFnZS9maWxlc3lzdGVtYWNj
ZXNzL3N5bmMtYWNjZXNzLWhhbmRsZS1iYXNpY3Mtd29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBzdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3Mvc3luYy1hY2Nlc3MtaGFuZGxlLXJlYWQtd3Jp
dGUtd29ya2VyLWV4cGVjdGVkLnR4dDoKKwogMjAyMS0xMC0yNiAgQXl1bWkgS29qaW1hICA8YXl1
bWlfa29qaW1hQGFwcGxlLmNvbT4KIAogICAgICAgICBbIEJpZ1N1ciB3azIgRGVidWcgYXJtNjQg
XSBpbnNwZWN0b3IvYXVkaXQvcnVuLWFjY2Vzc2liaWxpdHkuaHRtbCBpcyBhIGZsYWt5IHRpbWVv
dXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA1MTc1NTcyYmRkNjIyYmJmOGEw
N2QxYmM5OTE3NTAzZDUyNzk1NzU3Li5jZmVmMzU4NTMwNzc3N2U2Yzk3YTYwYzVjMDA1ODM3NDRl
MWM3ZjkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAyMS0xMC0yNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBQ
ZXJmb3JtIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlIG9wZXJhdGlvbnMgaW4gd2ViIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjE0
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZpbGUtc3lzdGVtLWFjY2Vzcy9zYW5kYm94ZWRfRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGUtZmx1c2guaHR0cHMudGVudGF0aXZlLndvcmtlci1leHBlY3RlZC50eHQ6
CisKIDIwMjEtMTAtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBDaGFuZ2luZyB0aGUgc3JjIGF0dHJpYnV0ZSBvZiB0aGUgPGltZz4gZWxlbWVudCBpbnNpZGUg
YW4gSW1hZ2VEb2N1bWVudCBkb2VzIG5vdCB0cmlnZ2VyIGEgbG9hZApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9maWxlLXN5c3RlbS1hY2Nl
c3Mvc2FuZGJveGVkX0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLWZsdXNoLmh0dHBzLnRlbnRh
dGl2ZS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9maWxlLXN5c3RlbS1hY2Nlc3Mvc2FuZGJveGVkX0ZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlLWZsdXNoLmh0dHBzLnRlbnRhdGl2ZS53b3JrZXItZXhwZWN0ZWQudHh0Cmlu
ZGV4IDZlYTU2NGNjYWFiZDA2ZjJlYjgxN2Q0NmI3NGMzMmE1NGVlNmEyODQuLjg1MmMyN2M1YTEw
OGI5MGM0OWZkY2U4YTQ5NzI5NDdiZTJjN2Q1YTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmlsZS1zeXN0ZW0tYWNjZXNzL3NhbmRib3hl
ZF9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS1mbHVzaC5odHRwcy50ZW50YXRpdmUud29ya2Vy
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZpbGUtc3lzdGVtLWFjY2Vzcy9zYW5kYm94ZWRfRmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGUtZmx1c2guaHR0cHMudGVudGF0aXZlLndvcmtlci1leHBlY3RlZC50eHQKQEAgLTEsNiAr
MSw2IEBACiAKIFBBU1MgVGVzdCBmbHVzaCBvbiBhbiBlbXB0eSBmaWxlLgogUEFTUyBTeW5jQWNj
ZXNzSGFuZGxlLnJlYWQgcmV0dXJucyBieXRlcyB3cml0dGVuIGJ5IFN5bmNBY2Nlc3NIYW5kbGUu
d3JpdGUgYWZ0ZXIgU3luY0FjY2Vzc0hhbmRsZS5mbHVzaAotUEFTUyBTeW5jQWNjZXNzSGFuZGxl
LnJlYWQgZmFpbHMgd2hlbiB0aGVyZSBpcyBhIHBlbmRpbmcgU3luY0FjY2Vzc0hhbmRsZS5mbHVz
aAotUEFTUyBTeW5jQWNjZXNzSGFuZGxlLndyaXRlIGZhaWxzIHdoZW4gdGhlcmUgaXMgYSBwZW5k
aW5nIFN5bmNBY2Nlc3NIYW5kbGUuZmx1c2gKK0ZBSUwgU3luY0FjY2Vzc0hhbmRsZS5yZWFkIGZh
aWxzIHdoZW4gdGhlcmUgaXMgYSBwZW5kaW5nIFN5bmNBY2Nlc3NIYW5kbGUuZmx1c2ggYXNzZXJ0
X3Rocm93c19kb206IGZ1bmN0aW9uICIoKSA9PiBoYW5kbGUucmVhZChyZWFkQnVmZmVyLCB7YXQ6
IDB9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBTeW5jQWNjZXNzSGFuZGxlLndyaXRlIGZhaWxzIHdo
ZW4gdGhlcmUgaXMgYSBwZW5kaW5nIFN5bmNBY2Nlc3NIYW5kbGUuZmx1c2ggcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiSW52YWxpZFN0YXRlRXJy
b3I6IFRoZSBvYmplY3QgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZS4iCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9oYW5kbGUtbW92ZS13b3JrZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL2hhbmRsZS1t
b3ZlLXdvcmtlci1leHBlY3RlZC50eHQKaW5kZXggMmJiODhiNDg3MWYxNWE3MzVhNzhjZjljMTIw
YWZiMmQ5YjI5ODQ5ZC4uNjQ1OWIwNGNlNmQ0ZjU1YjQ3YWQyZTNmNmYwOTA2ZmRlMWNlZmU3MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL2hhbmRsZS1t
b3ZlLXdvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lz
dGVtYWNjZXNzL2hhbmRsZS1tb3ZlLXdvcmtlci1leHBlY3RlZC50eHQKQEAgLTE4LDcgKzE4LDcg
QEAgUEFTUyBbV29ya2VyXSBtb3ZlRmlsZUVycm9yLnRvU3RyaW5nKCkgaXMgIlVua25vd25FcnJv
cjogVGhlIG9wZXJhdGlvbiBmYWlsZWQgZm8KIFBBU1MgW1dvcmtlcl0gbW92ZUZpbGVFcnJvci50
b1N0cmluZygpIGlzICJVbmtub3duRXJyb3I6IE5hbWUgaXMgaW52YWxpZCIKIFBBU1MgW1dvcmtl
cl0gbW92ZUZpbGVFcnJvci50b1N0cmluZygpIGlzICJVbmtub3duRXJyb3I6IE5hbWUgaXMgaW52
YWxpZCIKIFtXb3JrZXJdIFRlc3QgbW92ZSB3aXRoIG9wZW4gYWNjZXNzIGhhbmRsZToKLVBBU1Mg
W1dvcmtlcl0gbW92ZUZpbGVFcnJvci50b1N0cmluZygpIGlzICJJbnZhbGlkU3RhdGVFcnJvcjog
VGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLiIKK1BBU1MgW1dvcmtlcl0gbW92ZUZp
bGVFcnJvci50b1N0cmluZygpIGlzICJJbnZhbGlkU3RhdGVFcnJvcjogU29tZSBBY2Nlc3NIYW5k
bGUgaXMgYWN0aXZlIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3Mv
cmVzb3VyY2VzL2hhbmRsZS1tb3ZlLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVt
YWNjZXNzL3Jlc291cmNlcy9oYW5kbGUtbW92ZS5qcwppbmRleCBkOTFkOTFiYzUzOTJmYTAwNTg3
ZWVlZDVhMTMwZmFmYzg1NTJmNjFhLi45YzhkY2YxNTNlYmNjMDI3NWEzY2MyMThkNjg2ODRjYjNm
NTgwYTkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3Mv
cmVzb3VyY2VzL2hhbmRsZS1tb3ZlLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5
c3RlbWFjY2Vzcy9yZXNvdXJjZXMvaGFuZGxlLW1vdmUuanMKQEAgLTEwNSw3ICsxMDUsNyBAQCBh
c3luYyBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgICAgIHRlc3RFcnJvciA9ICAiTW92
ZWQgZmlsZSBiYWNrIHRvIGRpckhhbmRsZTEgdW5leHBlY3RlZGx5IjsKICAgICAgICAgICAgIH0s
IChlcnJvcikgPT4gewogICAgICAgICAgICAgICAgIG1vdmVGaWxlRXJyb3IgPSBlcnJvcjsKLSAg
ICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm1vdmVGaWxlRXJyb3IudG9TdHJp
bmcoKSIsICJJbnZhbGlkU3RhdGVFcnJvcjogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0
YXRlLiIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibW92ZUZpbGVF
cnJvci50b1N0cmluZygpIiwgIkludmFsaWRTdGF0ZUVycm9yOiBTb21lIEFjY2Vzc0hhbmRsZSBp
cyBhY3RpdmUiKTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICBpZiAodGVzdEVycm9y
KSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvcmVz
b3VyY2VzL3N5bmMtYWNjZXNzLWhhbmRsZS1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2ZpbGVzeXN0ZW1hY2Nlc3MvcmVzb3VyY2VzL3N5bmMtYWNjZXNzLWhhbmRsZS1iYXNpY3MuanMK
aW5kZXggOTY3MTI1YTQ2ZGM2YjZlYzNmY2ZlZjEzOTRhODYwOGM4NjUyODcyYy4uM2E5MmMzOWEx
YTQ3MGQ2MmRjYmY1M2U1Mjk4MDMwYWM0NmEwNDNiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL3Jlc291cmNlcy9zeW5jLWFjY2Vzcy1oYW5kbGUtYmFz
aWNzLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9yZXNvdXJj
ZXMvc3luYy1hY2Nlc3MtaGFuZGxlLWJhc2ljcy5qcwpAQCAtMTQsNjggKzE0LDM3IEBAIGZ1bmN0
aW9uIGZpbmlzaFRlc3QoZXJyb3IpCiAgICAgZmluaXNoSlNUZXN0KCk7CiB9CiAKLWZ1bmN0aW9u
IGdldERpcmVjdG9yeSgpIHsKLSAgICBuYXZpZ2F0b3Iuc3RvcmFnZS5nZXREaXJlY3RvcnkoKS50
aGVuKChoYW5kbGUpID0+IHsKLSAgICAgICAgcm9vdEhhbmRsZSA9IGhhbmRsZTsKLSAgICAgICAg
Y3JlYXRlRmlsZUhhbmRsZShyb290SGFuZGxlKTsKLSAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHsK
LSAgICAgICAgZmluaXNoVGVzdChlcnJvcik7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0
ZUZpbGVIYW5kbGUoZnJvbUhhbmRsZSkgewotICAgIGZyb21IYW5kbGUuZ2V0RmlsZUhhbmRsZSgi
c3luYy1hY2Nlc3MtaGFuZGxlLnR4dCIsIHsgImNyZWF0ZSIgOiB0cnVlIH0pLnRoZW4oKGhhbmRs
ZSkgPT4gewotICAgICAgICBmaWxlSGFuZGxlID0gaGFuZGxlOwotICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImZpbGVIYW5kbGUubmFtZSIsICJzeW5jLWFjY2Vzcy1oYW5kbGUudHh0Iik7
Cithc3luYyBmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB0cnkgeworICAgICAgICB2YXIgcm9vdEhh
bmRsZSA9IGF3YWl0IG5hdmlnYXRvci5zdG9yYWdlLmdldERpcmVjdG9yeSgpOworICAgICAgICAv
LyBDcmVhdGUgYSBuZXcgZmlsZSBmb3IgdGhpcyB0ZXN0LgorICAgICAgICBhd2FpdCByb290SGFu
ZGxlLnJlbW92ZUVudHJ5KCJzeW5jLWFjY2Vzcy1oYW5kbGUtYmFzaWMudHh0IikudGhlbigoKSA9
PiB7IH0sICgpID0+IHsgfSk7CisgICAgICAgIGZpbGVIYW5kbGUgPSBhd2FpdCByb290SGFuZGxl
LmdldEZpbGVIYW5kbGUoInN5bmMtYWNjZXNzLWhhbmRsZS1iYXNpYy50eHQiLCB7ICJjcmVhdGUi
IDogdHJ1ZSAgfSk7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZUhhbmRsZS5u
YW1lIiwgInN5bmMtYWNjZXNzLWhhbmRsZS1iYXNpYy50eHQiKTsKICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJmaWxlSGFuZGxlLmtpbmQiLCAiZmlsZSIpOwotICAgICAgICBjcmVhdGVT
eW5jQWNjZXNzSGFuZGxlKGZpbGVIYW5kbGUpOwotICAgIH0pLmNhdGNoKChlcnJvcikgPT4gewot
ICAgICAgICBmaW5pc2hUZXN0KGVycm9yKTsKLSAgICB9KTsKLX0KIAotZnVuY3Rpb24gY3JlYXRl
U3luY0FjY2Vzc0hhbmRsZShmcm9tSGFuZGxlKSB7Ci0gICAgZnJvbUhhbmRsZS5jcmVhdGVTeW5j
QWNjZXNzSGFuZGxlKCkudGhlbigoaGFuZGxlKSA9PiB7Ci0gICAgICAgIGFjY2Vzc0hhbmRsZTEg
PSBoYW5kbGU7CisgICAgICAgIGFjY2Vzc0hhbmRsZTEgPSBhd2FpdCBmaWxlSGFuZGxlLmNyZWF0
ZVN5bmNBY2Nlc3NIYW5kbGUoKTsKICAgICAgICAgZGVidWcoImFjY2Vzc0hhbmRsZTEgaXMgY3Jl
YXRlZCIpOwotICAgICAgICBnZXRTaXplKGFjY2Vzc0hhbmRsZTEpOwotICAgIH0pLmNhdGNoKChl
cnJvcikgPT4gewotICAgICAgICBmaW5pc2hUZXN0KGVycm9yKTsKLSAgICB9KTsKLX0KIAotZnVu
Y3Rpb24gZ2V0U2l6ZShhY2Nlc3NIYW5kbGUpIHsKLSAgICBhY2Nlc3NIYW5kbGUuZ2V0U2l6ZSgp
LnRoZW4oKHJlc3VsdCkgPT4gewotICAgICAgICBzaXplID0gcmVzdWx0OworICAgICAgICBzaXpl
ID0gYXdhaXQgYWNjZXNzSGFuZGxlMS5nZXRTaXplKCk7CiAgICAgICAgIHNob3VsZEJlKCJzaXpl
IiwgIjAiKTsKLSAgICAgICAgY3JlYXRlU2Vjb25kU3luY0FjZXNzSGFuZGxlKGZpbGVIYW5kbGUp
OwotICAgIH0pLmNhdGNoKChlcnJvcikgPT4gewotICAgICAgICBmaW5pc2hUZXN0KGVycm9yKTsK
LSAgICB9KTsKLX0KIAotZnVuY3Rpb24gY3JlYXRlU2Vjb25kU3luY0FjZXNzSGFuZGxlKGZyb21I
YW5kbGUpIHsKLSAgICBmcm9tSGFuZGxlLmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoKS50aGVuKCho
YW5kbGUpID0+IHsKLSAgICAgICAgYWNjZXNzSGFuZGxlMiA9IGhhbmRsZTsKLSAgICAgICAgLy8g
U2Vjb25kIGNyZWF0aW9uIHNob3VsZCBzdWNjZWVkLgorICAgICAgICBhd2FpdCBmaWxlSGFuZGxl
LmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoKS50aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAgICAg
IHRocm93ICJhY2Nlc3NIYW5kbGUyIGlzIGNyZWF0ZWQgdW5leHBlY3RlZGx5IjsKKyAgICAgICAg
fSwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICBjcmVhdGVFcnJvciA9IGVycm9yOworICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjcmVhdGVFcnJvci50b1N0cmluZygpIiwgIklu
dmFsaWRTdGF0ZUVycm9yOiBUaGUgb2JqZWN0IGlzIGluIGFuIGludmFsaWQgc3RhdGUuIik7Cisg
ICAgICAgIH0pOworCisgICAgICAgIGF3YWl0IGFjY2Vzc0hhbmRsZTEuY2xvc2UoKTsKKyAgICAg
ICAgYWNjZXNzSGFuZGxlMiA9IGF3YWl0IGZpbGVIYW5kbGUuY3JlYXRlU3luY0FjY2Vzc0hhbmRs
ZSgpOwogICAgICAgICBkZWJ1ZygiYWNjZXNzSGFuZGxlMiBpcyBjcmVhdGVkIik7Ci0gICAgICAg
IGZpbmlzaFRlc3QoKTsKLSAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHsKLSAgICAgICAgLy8gRmly
c3QgY3JlYXRpb24gc2hvdWxkIGZhaWwgYXMgdGhlcmUgaXMgYW4gYWN0aXZlIGhhbmRsZS4KLSAg
ICAgICAgY3JlYXRlRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgZGVidWcoImFjY2Vzc0hhbmRsZTIg
Y2Fubm90IGJlIGNyZWF0ZWQiKTsKLSAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjcmVh
dGVFcnJvci50b1N0cmluZygpIiwgIkludmFsaWRTdGF0ZUVycm9yOiBUaGUgb2JqZWN0IGlzIGlu
IGFuIGludmFsaWQgc3RhdGUuIik7Ci0gICAgICAgIGNsb3NlKCk7Ci0gICAgfSk7Ci19CiAKLWZ1
bmN0aW9uIGNsb3NlKCkgewotICAgIGFjY2Vzc0hhbmRsZTEuY2xvc2UoKS50aGVuKChyZXN1bHQp
ID0+IHsKLSAgICAgICAgZGVidWcoImFjY2Vzc0hhbmRsZTEgaXMgY2xvc2VkIik7Ci0gICAgICAg
IGNyZWF0ZVNlY29uZFN5bmNBY2Vzc0hhbmRsZShmaWxlSGFuZGxlKTsKLSAgICB9KS5jYXRjaCgo
ZXJyb3IpID0+IHsKKyAgICAgICAgZmluaXNoVGVzdCgpOworICAgIH0gY2F0Y2ggKGVycm9yKSB7
CiAgICAgICAgIGZpbmlzaFRlc3QoZXJyb3IpOwotICAgIH0pOworICAgIH0KIH0KIAotZ2V0RGly
ZWN0b3J5KCk7Cit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVz
eXN0ZW1hY2Nlc3MvcmVzb3VyY2VzL3N5bmMtYWNjZXNzLWhhbmRsZS1yZWFkLXdyaXRlLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL3Jlc291cmNlcy9zeW5jLWFjY2Vz
cy1oYW5kbGUtcmVhZC13cml0ZS5qcwppbmRleCBmM2JmYzQ3OTFmODRkZWM3ODEyMzNhMTM3ZTcz
ZWM0MmE1MTBhZGRiLi5iYjEwOWMwZmY4MWRhMjllYzEwMTgwZGZmOTNjYmYwMjc1NjUyM2E2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvcmVzb3VyY2Vz
L3N5bmMtYWNjZXNzLWhhbmRsZS1yZWFkLXdyaXRlLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvZmlsZXN5c3RlbWFjY2Vzcy9yZXNvdXJjZXMvc3luYy1hY2Nlc3MtaGFuZGxlLXJlYWQtd3Jp
dGUuanMKQEAgLTgyLDExICs4Miw2IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAg
IGZpbGVTaXplID0gYXdhaXQgYWNjZXNzSGFuZGxlLmdldFNpemUoKTsKICAgICAgICAgc2hvdWxk
QmUoImZpbGVTaXplIiwgIjQiKTsKIAotICAgICAgICBkZWJ1ZygidGVzdCB3cml0ZSgpIHdpdGgg
cGVuZGluZyBvcGVyYXRpb246Iik7Ci0gICAgICAgIGV2YWxBbmRMb2coImFjY2Vzc0hhbmRsZS50
cnVuY2F0ZSgwKSIpOwotICAgICAgICByZWFkQnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDQpOwot
ICAgICAgICBzaG91bGRUaHJvdygiYWNjZXNzSGFuZGxlLnJlYWQocmVhZEJ1ZmZlciwgeyBcImF0
XCIgOiAwIH0pIik7Ci0KICAgICAgICAgYXdhaXQgYWNjZXNzSGFuZGxlLmNsb3NlKCk7CiAgICAg
ICAgIGZpbmlzaFRlc3QoKTsKICAgICB9IGNhdGNoIChlcnJvcikgewpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL3N5bmMtYWNjZXNzLWhhbmRsZS1iYXNp
Y3Mtd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFj
Y2Vzcy9zeW5jLWFjY2Vzcy1oYW5kbGUtYmFzaWNzLXdvcmtlci1leHBlY3RlZC50eHQKaW5kZXgg
NDc0ZjVkNzE1NTczMDdlNGJkMTRjMTQ2YmE5M2FiZDUyZGI5YTRmNC4uNzA5ZGU0ZWExYzc5ODYy
YjUzMThlMjFkN2EzZjAwMDcxNDk1ZTQ4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9maWxlc3lzdGVtYWNjZXNzL3N5bmMtYWNjZXNzLWhhbmRsZS1iYXNpY3Mtd29ya2VyLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3Mvc3luYy1h
Y2Nlc3MtaGFuZGxlLWJhc2ljcy13b3JrZXItZXhwZWN0ZWQudHh0CkBAIC00LDEzICs0LDExIEBA
IE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogU3RhcnRpbmcgd29ya2VyOiByZXNvdXJjZXMv
c3luYy1hY2Nlc3MtaGFuZGxlLWJhc2ljcy5qcwotUEFTUyBbV29ya2VyXSBmaWxlSGFuZGxlLm5h
bWUgaXMgInN5bmMtYWNjZXNzLWhhbmRsZS50eHQiCitQQVNTIFtXb3JrZXJdIGZpbGVIYW5kbGUu
bmFtZSBpcyAic3luYy1hY2Nlc3MtaGFuZGxlLWJhc2ljLnR4dCIKIFBBU1MgW1dvcmtlcl0gZmls
ZUhhbmRsZS5raW5kIGlzICJmaWxlIgogW1dvcmtlcl0gYWNjZXNzSGFuZGxlMSBpcyBjcmVhdGVk
CiBQQVNTIFtXb3JrZXJdIHNpemUgaXMgMAotW1dvcmtlcl0gYWNjZXNzSGFuZGxlMiBjYW5ub3Qg
YmUgY3JlYXRlZAogUEFTUyBbV29ya2VyXSBjcmVhdGVFcnJvci50b1N0cmluZygpIGlzICJJbnZh
bGlkU3RhdGVFcnJvcjogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLiIKLVtXb3Jr
ZXJdIGFjY2Vzc0hhbmRsZTEgaXMgY2xvc2VkCiBbV29ya2VyXSBhY2Nlc3NIYW5kbGUyIGlzIGNy
ZWF0ZWQKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL3N5bmMtYWNjZXNzLWhhbmRsZS1yZWFk
LXdyaXRlLXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0
ZW1hY2Nlc3Mvc3luYy1hY2Nlc3MtaGFuZGxlLXJlYWQtd3JpdGUtd29ya2VyLWV4cGVjdGVkLnR4
dAppbmRleCBhNWY2YmQxYTk3MDY1OWEwNDg1MjE0YzFkMmIzYzljOTVhNGI1ZmI5Li5jYTNiYmY3
NjNlMmE4MzVjNDEzNjRhYTQ4ZGNkNWYxMmQ3NDIzNWU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3Mvc3luYy1hY2Nlc3MtaGFuZGxlLXJlYWQtd3JpdGUt
d29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1h
Y2Nlc3Mvc3luYy1hY2Nlc3MtaGFuZGxlLXJlYWQtd3JpdGUtd29ya2VyLWV4cGVjdGVkLnR4dApA
QCAtMjAsOSArMjAsNiBAQCBQQVNTIFtXb3JrZXJdIGFjY2Vzc0hhbmRsZS53cml0ZShuZXcgQXJy
YXlCdWZmZXIoMSksIHsgImF0IiA6IE51bWJlci5NQVhfU0FGRV9JTgogUEFTUyBbV29ya2VyXSBm
aWxlU2l6ZSBpcyB0b3RhbFdyaXRlU2l6ZQogW1dvcmtlcl0gdGVzdCB0cnVuY2F0ZSgpOgogUEFT
UyBbV29ya2VyXSBmaWxlU2l6ZSBpcyA0Ci1bV29ya2VyXSB0ZXN0IHdyaXRlKCkgd2l0aCBwZW5k
aW5nIG9wZXJhdGlvbjoKLVtXb3JrZXJdIGFjY2Vzc0hhbmRsZS50cnVuY2F0ZSgwKQotUEFTUyBb
V29ya2VyXSBhY2Nlc3NIYW5kbGUucmVhZChyZWFkQnVmZmVyLCB7ICJhdCIgOiAwIH0pIHRocmV3
IGV4Y2VwdGlvbiBJbnZhbGlkU3RhdGVFcnJvcjogQWNjZXNzIGhhbmRsZSBoYXMgdW5maW5pc2hl
ZCBvcGVyYXRpb24uCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442789</attachid>
            <date>2021-10-29 00:20:48 -0700</date>
            <delta_ts>2021-11-01 15:43:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232146-20211029002047.patch</filename>
            <type>text/plain</type>
            <size>50630</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhmMDAxNjc4ZTQ0MjFi
M2ExOTA5OGY0ODhiYTZjOGYxM2VlOWE1ZS4uODhiODk0ZjU1MDEyZWQ0NTJmMjMwMGE5NjcxN2Rh
YjM5MTc1OTEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIxLTEwLTI5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFBlcmZvcm0gRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGUgb3BlcmF0aW9ucyBpbiB3ZWIgcHJvY2VzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMTQ2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgdHJ1bmNhdGUoKSwgZ2V0U2l6ZSgp
IGFuZCBmbHVzaCgpIG9wZXJhdGlvbnMgYXJlIG5vdyBwZXJmb3JtZWQgb24gYSBnbG9iYWwgV29y
a1F1ZXVlIGluIHdlYiBwcm9jZXNzLgorCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNj
ZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0
ZW1GaWxlSGFuZGxlOjpnZXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
eXN0ZW1GaWxlSGFuZGxlOjp0cnVuY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpG
aWxlU3lzdGVtRmlsZUhhbmRsZTo6Zmx1c2gpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
ZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OnRydW5j
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpnZXRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpmbHVz
aCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y2xvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3NlSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OnJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OndyaXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjb21wbGV0
ZVByb21pc2UpOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZS5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
Y29tcGxldGVJbnRlZ2VyQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRTaXplKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6dHJ1bmNhdGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpmbHVzaCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNj
ZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkRmlsZVN5
c3RlbVN0b3JhZ2VRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6
cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oOgorCiAyMDIxLTEwLTI4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgogCiAgICAgICAgIFlhaG9vLmNvbSBoYXMgZnJhZ21lbnRzIG9mIHdyb25nbHktc2Nh
bGVkIGNvbnRlbnQgdGhyb3VnaG91dCB3aGVuIHVzaW5nIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggYjZiZDM5ZGZhNDE2ODMyMjcyMWNjY2YxZWRmNzliMjFiOTMz
MDE3ZS4uNTZjOTkyY2EwNzFiNzU0OWJjOWFiZTllMWI3OGQ2MGQ0NzliNzI4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0MSBAQAorMjAyMS0xMC0yOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxl
LmNvbT4KKworICAgICAgICBQZXJmb3JtIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlIG9wZXJh
dGlvbnMgaW4gd2ViIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMjE0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5ldHdvcmsgcHJvY2VzcyBubyBsb25nZXIgbmVlZHMgdG8gaG9sZCBvcGVu
IGZpbGUgaGFuZGxlIGZvciBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS4gTm93IGl0IGNyZWF0
ZXMgYW4gb3BlbiAKKyAgICAgICAgZmlsZSBoYW5kbGUsIHBhc3MgaXQgdG8gd2ViIHByb2Nlc3Mg
YW5kIGNsb3NlIGl0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lz
dGVtU3RvcmFnZUVycm9yLmg6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb0V4Y2VwdGlvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpjcmVhdGVT
eW5jQWNjZXNzSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5k
bGU6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6Om1v
dmUpOgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6fkZpbGVTeXN0
ZW1TdG9yYWdlSGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGU6OmdldFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZTo6dHJ1bmNhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpG
aWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6Zmx1c2gpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaDoKKyAgICAgICAgKCk6
IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFn
ZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmdldFNpemVGb3JBY2Nlc3NIYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnRydW5jYXRlRm9yQWNjZXNzSGFuZGxlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmbHVzaEZvckFjY2Vz
c0hhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3
b3JrU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05l
dHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U2hhcmVkRmlsZUhhbmRsZS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEZpbGVIYW5kbGU6OmNs
b3NlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
OjpnZXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjp0cnVuY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Zmx1c2gpOiBEZWxldGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmg6
CisKIDIwMjEtMTAtMjggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgWWFob28uY29tIGhhcyBmcmFnbWVudHMgb2Ygd3JvbmdseS1zY2FsZWQgY29udGVu
dCB0aHJvdWdob3V0IHdoZW4gdXNpbmcgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVT
eXN0ZW1GaWxlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFj
Y2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKaW5kZXggMmRiYjRlM2E4MDBmZTJmNDU4OTYx
N2RhMTdjM2M1MzMwOTAxZGIxZC4uMTc1MTFmMGFlMDhiZjcyYTk0MTIzMzNkNWE4NTdkMWIyMGZm
ZDBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNz
L0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwCkBAIC03NSwzMCArNzUsNiBA
QCB2b2lkIEZpbGVTeXN0ZW1GaWxlSGFuZGxlOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKERPTVBy
b21pc2VEZWZlcnJlZDxJRExJbnRlcmZhYwogICAgIH0pOwogfQogCi12b2lkIEZpbGVTeXN0ZW1G
aWxlSGFuZGxlOjpnZXRTaXplKEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBh
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9y
PHVpbnQ2NF90PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoaXNDbG9zZWQo
KSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAiSGFuZGxlIGlzIGNsb3NlZCJfcyB9KTsKLQotICAgIGNvbm5lY3Rpb24oKS5n
ZXRTaXplKGlkZW50aWZpZXIoKSwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lkIEZpbGVTeXN0ZW1GaWxlSGFuZGxlOjp0cnVuY2F0
ZShGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRp
ZmllciwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhj
ZXB0aW9uT3I8dm9pZD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGlzQ2xv
c2VkKCkpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgIkhhbmRsZSBpcyBjbG9zZWQiX3MgfSk7Ci0KLSAgICBjb25uZWN0aW9u
KCkudHJ1bmNhdGUoaWRlbnRpZmllcigpLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBzaXplLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgRmlsZVN5c3RlbUZpbGVIYW5k
bGU6OmZsdXNoKEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmIChpc0Nsb3NlZCgpKQotICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJI
YW5kbGUgaXMgY2xvc2VkIl9zIH0pOwotCi0gICAgY29ubmVjdGlvbigpLmZsdXNoKGlkZW50aWZp
ZXIoKSwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwotfQotCiB2b2lkIEZpbGVTeXN0ZW1GaWxlSGFuZGxlOjpjbG9zZShGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBpZiAoaXNDbG9zZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmgKaW5kZXggYmFh
NDJmOGQ5MjMxYWFkZGUyNTI5Y2ZlYzIwMWIzNGViNTVmMjkxNS4uOGNlZTEyY2JkZmJmNDAwOTJm
N2EwNDIwYWQ5MWM3MWE4MmFjMjhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmgKQEAg
LTQxLDkgKzQxLDYgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0RmlsZShET01Qcm9taXNlRGVmZXJy
ZWQ8SURMSW50ZXJmYWNlPEZpbGU+PiYmKTsKIAogICAgIHZvaWQgY3JlYXRlU3luY0FjY2Vzc0hh
bmRsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlPj4mJik7Ci0gICAgdm9pZCBnZXRTaXplKEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx1aW50NjRfdD4m
Jik+JiYpOwotICAgIHZvaWQgdHJ1bmNhdGUoRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVu
dGlmaWVyLCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25Pcjx2b2lkPiYmKT4mJik7Ci0gICAgdm9pZCBmbHVzaChGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8
dm9pZD4mJik+JiYpOwogICAgIHZvaWQgY2xvc2UoRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYm
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaApp
bmRleCA3M2ViZjk5YzQ1ZTQxNjFkY2U0MTA2ODNlZDM4NDE1OTc0OGFiYTg3Li43OGU0NjkyMDVm
NjFhNDM5M2I2YzU3MjQ4M2Y0NzRjNTM2MDcwYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbi5oCkBAIC01OCw5ICs1OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlRW50cnkoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCBkZWxldGVSZWN1cnNpdmVseSwgVm9pZENhbGxiYWNrJiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5
c3RlbUhhbmRsZUlkZW50aWZpZXIsIFJlc29sdmVDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIs
IEdldEFjY2Vzc0hhbmRsZUNhbGxiYWNrJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2l6
ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLCBJbnRlZ2VyQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0cnVu
Y2F0ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXplLCBWb2lkQ2FsbGJhY2smJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBmbHVzaChGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBWb2lkQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjbG9zZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBWb2lkQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBnZXRIYW5kbGVOYW1lcyhGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgR2V0SGFuZGxl
TmFtZXNDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEhhbmRsZShGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBHZXRIYW5kbGVXaXRoVHlw
ZUNhbGxiYWNrJiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUu
Y3BwCmluZGV4IGE0NmUwZGMzMDYzZTNlZjI2NjI2ZDBkOWIyMDFhMzA1Y2VkZTlhNjEuLmZhYzkz
MDc0ODFkMmVkOTIzMjkxNzFjMGZlMzYxNTYxMTdjNGVmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ1
ZmZlclNvdXJjZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1GaWxlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC02MywxMiArNjQsMjMgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6
dHJ1bmNhdGUodW5zaWduZWQgbG9uZyBsb25nIHNpemUsIERPTVByb21pc2VEZWYKICAgICBpZiAo
aXNDbG9zaW5nT3JDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzSGFuZGxlIGlzIGNsb3Npbmcgb3IgY2xv
c2VkIl9zIH0pOwogCi0gICAgbV9wZW5kaW5nT3BlcmF0aW9uQ291bnQrKzsKLSAgICBtX3NvdXJj
ZS0+dHJ1bmNhdGUobV9pZGVudGlmaWVyLCBzaXplLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPm1fcGVuZGluZ09w
ZXJhdGlvbkNvdW50LS07CisgICAgYXV0byogc2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIXNjb3BlKQorICAgICAg
ICByZXR1cm4gcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJD
b250ZXh0IGlzIGludmFsaWQiX3MgfSk7CiAKLSAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92
ZShyZXN1bHQpKTsKKyAgICBtX3BlbmRpbmdQcm9taXNlcy5hcHBlbmQoV1RGTW92ZShwcm9taXNl
KSk7CisgICAgV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGZpbGUgPSBtX2ZpbGUsIHNpemUsIHdvcmtlclRo
cmVhZCA9IFJlZiB7IHNjb3BlLT50aHJlYWQoKSB9XSgpIG11dGFibGUgeworICAgICAgICBFeGNl
cHRpb25Pcjx2b2lkPiByZXN1bHQ7CisgICAgICAgIGlmIChhdXRvIHN1Y2Nlc3MgPSBGaWxlU3lz
dGVtOjp0cnVuY2F0ZUZpbGUoZmlsZSwgc2l6ZSk7ICFzdWNjZXNzKQorICAgICAgICAgICAgcmVz
dWx0ID0gRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yIH07CisKKyAgICAgICAgRnVuY3Rpb248dm9p
ZCgpPiB0YXNrID0gW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHJlc3VsdCA9IGNyb3Nz
VGhyZWFkQ29weShyZXN1bHQpXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHdlYWtUaGlzLT5jb21w
bGV0ZVByb21pc2UoV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAgfTsKKyAgICAgICAgd29ya2Vy
VGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CiAgICAgfSk7CiB9CiAK
QEAgLTc3LDEyICs4OSwyNiBAQCB2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpnZXRT
aXplKERPTVByb21pc2VEZWZlcnJlZDxJRExVbnNpZ25lZExvbmdMb25nPgogICAgIGlmIChpc0Ns
b3NpbmdPckNsb3NlZCgpKQogICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3NIYW5kbGUgaXMgY2xvc2luZyBvciBjbG9zZWQi
X3MgfSk7CiAKLSAgICBtX3BlbmRpbmdPcGVyYXRpb25Db3VudCsrOwotICAgIG1fc291cmNlLT5n
ZXRTaXplKG1faWRlbnRpZmllciwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlm
ICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX3BlbmRpbmdPcGVyYXRpb25Db3Vu
dC0tOwotCi0gICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CisgICAgYXV0
byogc2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKKyAgICBpZiAoIXNjb3BlKQorICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3Qo
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJDb250ZXh0IGlzIGludmFsaWQiX3MgfSk7
CisKKyAgICBtX3BlbmRpbmdQcm9taXNlcy5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7CisgICAg
V29ya2VyR2xvYmFsU2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIGZpbGUgPSBtX2ZpbGUsIHdvcmtlclRocmVhZCA9IFJlZiB7IHNj
b3BlLT50aHJlYWQoKSB9XSgpIG11dGFibGUgeworICAgICAgICBFeGNlcHRpb25Pcjx1bnNpZ25l
ZCBsb25nIGxvbmc+IHJlc3VsdCB7IDAgfTsKKyAgICAgICAgYXV0byBzdWNjZXNzID0gRmlsZVN5
c3RlbTo6ZmlsZVNpemUoZmlsZSk7CisgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgICAg
IHJlc3VsdCA9IEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciB9OworICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZXN1bHQgPSBzdWNjZXNzLnZhbHVlKCk7CisKKyAgICAgICAgRnVuY3Rpb248dm9p
ZCgpPiB0YXNrID0gW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHJlc3VsdCA9IGNyb3Nz
VGhyZWFkQ29weShyZXN1bHQpXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHdlYWtUaGlzLT5jb21w
bGV0ZVByb21pc2UoV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAgfTsKKyAgICAgICAgd29ya2Vy
VGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CiAgICAgfSk7CiB9CiAK
QEAgLTkxLDIwICsxMTcsMjkgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Zmx1
c2goRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKICAgICBpZiAoaXNDbG9zaW5n
T3JDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzSGFuZGxlIGlzIGNsb3Npbmcgb3IgY2xvc2VkIl9zIH0p
OwogCi0gICAgbV9wZW5kaW5nT3BlcmF0aW9uQ291bnQrKzsKLSAgICBtX3NvdXJjZS0+Zmx1c2go
bV9pZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHdlYWtU
aGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPm1fcGVuZGluZ09wZXJhdGlvbkNvdW50LS07Cisg
ICAgYXV0byogc2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIXNjb3BlKQorICAgICAgICByZXR1cm4gcHJvbWlzZS5y
ZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJDb250ZXh0IGlzIGludmFsaWQi
X3MgfSk7CiAKLSAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKKyAgICBt
X3BlbmRpbmdQcm9taXNlcy5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7CisgICAgV29ya2VyR2xv
YmFsU2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIGZpbGUgPSBtX2ZpbGUsIHdvcmtlclRocmVhZCA9IFJlZiB7IHNjb3BlLT50aHJl
YWQoKSB9XSgpIG11dGFibGUgeworICAgICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXN1bHQ7Cisg
ICAgICAgIGlmIChhdXRvIHN1Y2Nlc3MgPSBGaWxlU3lzdGVtOjpmbHVzaEZpbGUoZmlsZSk7ICFz
dWNjZXNzKQorICAgICAgICAgICAgcmVzdWx0ID0gRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yIH07
CisKKyAgICAgICAgRnVuY3Rpb248dm9pZCgpPiB0YXNrID0gW3dlYWtUaGlzID0gV1RGTW92ZSh3
ZWFrVGhpcyksIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIHdlYWtUaGlzLT5jb21wbGV0ZVByb21pc2UoV1RGTW92ZShyZXN1bHQpKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92
ZSh0YXNrKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6
OmNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7Ci0gICAgbV9wZW5k
aW5nT3BlcmF0aW9uQ291bnQrKzsKICAgICBjbG9zZUludGVybmFsKFt3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byByZXN1bHQpIG11
dGFibGUgewotICAgICAgICB3ZWFrVGhpcy0+bV9wZW5kaW5nT3BlcmF0aW9uQ291bnQtLTsKICAg
ICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKICAgICB9KTsKIH0KQEAgLTEy
MCw2ICsxNTUsMTMgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y2xvc2VJbnRl
cm5hbChDbG9zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAogICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGUpOworICAgIGF1dG8gcGVuZGluZ1Byb21pc2VzID0g
c3RkOjpleGNoYW5nZShtX3BlbmRpbmdQcm9taXNlcywgeyB9KTsKKyAgICBmb3IgKGF1dG8mIHBy
b21pc2UgOiBwZW5kaW5nUHJvbWlzZXMpIHsKKyAgICAgICAgc3RkOjp2aXNpdChbXShhdXRvJiBw
cm9taXNlKSB7CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgIkFjY2Vzc0hhbmRsZSBpcyBjbG9zaW5nIl9zIH0pOworICAgICAgICB9LCBw
cm9taXNlKTsKKyAgICB9CisKICAgICBtX3NvdXJjZS0+Y2xvc2UobV9pZGVudGlmaWVyLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGF1dG8gcmVzdWx0KSB7CiAgICAgICAg
IGRpZENsb3NlKFdURk1vdmUocmVzdWx0KSk7CiAgICAgfSk7CkBAIC0xNDIsNyArMTg0LDcgQEAg
RXhjZXB0aW9uT3I8dW5zaWduZWQgbG9uZyBsb25nPiBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZTo6cmVhZChCdWZmZXJTb3VyY2UmJgogICAgIGlmIChpc0Nsb3NpbmdPckNsb3NlZCgpKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3NIYW5kbGUg
aXMgY2xvc2luZyBvciBjbG9zZWQiX3MgfTsKIAotICAgIGlmIChtX3BlbmRpbmdPcGVyYXRpb25D
b3VudCkKKyAgICBpZiAoIW1fcGVuZGluZ1Byb21pc2VzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzIGhhbmRsZSBoYXMgdW5m
aW5pc2hlZCBvcGVyYXRpb24iX3MgfTsKIAogICAgIGludCByZXN1bHQgPSBGaWxlU3lzdGVtOjpz
ZWVrRmlsZShtX2ZpbGUsIG9wdGlvbnMuYXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpC
ZWdpbm5pbmcpOwpAQCAtMTYzLDcgKzIwNSw3IEBAIEV4Y2VwdGlvbk9yPHVuc2lnbmVkIGxvbmcg
bG9uZz4gRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OndyaXRlKEJ1ZmZlclNvdXJjZSYmCiAg
ICAgaWYgKGlzQ2xvc2luZ09yQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciwgIkFjY2Vzc0hhbmRsZSBpcyBjbG9zaW5nIG9yIGNsb3NlZCJfcyB9
OwogCi0gICAgaWYgKG1fcGVuZGluZ09wZXJhdGlvbkNvdW50KQorICAgIGlmICghbV9wZW5kaW5n
UHJvbWlzZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJBY2Nlc3MgaGFuZGxlIGhhcyB1bmZpbmlzaGVkIG9wZXJhdGlvbiJfcyB9Owog
CiAgICAgaW50IHJlc3VsdCA9IEZpbGVTeXN0ZW06OnNlZWtGaWxlKG1fZmlsZSwgb3B0aW9ucy5h
dCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZyk7CkBAIC0xNzcsNiArMjE5
LDIzIEBAIEV4Y2VwdGlvbk9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gRmlsZVN5c3RlbVN5bmNBY2Nl
c3NIYW5kbGU6OndyaXRlKEJ1ZmZlclNvdXJjZSYmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
dm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y29tcGxldGVQcm9taXNlKFJlc3VsdCYm
IHJlc3VsdCkKK3sKKyAgICBpZiAobV9wZW5kaW5nUHJvbWlzZXMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbV9wZW5kaW5nUHJvbWlzZXMu
dGFrZUZpcnN0KCk7CisgICAgV1RGOjpzd2l0Y2hPbihXVEZNb3ZlKHJlc3VsdCksIFsmcGVuZGlu
Z1Byb21pc2VdKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KSB7CisgICAgICAgIGF1dG8qIHBy
b21pc2UgPSBzdGQ6OmdldF9pZjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+KCZwZW5kaW5nUHJv
bWlzZSk7CisgICAgICAgIEFTU0VSVChwcm9taXNlKTsKKyAgICAgICAgcHJvbWlzZS0+c2V0dGxl
KFdURk1vdmUocmVzdWx0KSk7CisgICAgfSwgWyZwZW5kaW5nUHJvbWlzZV0oRXhjZXB0aW9uT3I8
dW5zaWduZWQgbG9uZyBsb25nPiYmIHJlc3VsdCkgeworICAgICAgICBhdXRvKiBwcm9taXNlID0g
c3RkOjpnZXRfaWY8RE9NUHJvbWlzZURlZmVycmVkPElETFVuc2lnbmVkTG9uZ0xvbmc+PigmcGVu
ZGluZ1Byb21pc2UpOworICAgICAgICBBU1NFUlQocHJvbWlzZSk7CisgICAgICAgIHByb21pc2Ut
PnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOworICAgIH0pOworfQorCiBjb25zdCBjaGFyKiBGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuICJGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZSI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZS5oCmluZGV4IDcwYWZmMzM5YTIxMDkzMDQ4MGU0NDdjMjA4NTc5
MWY1MjMyYmExMzAuLjYwZDMwMDgxYmE3OGNmN2M5N2RhNWYyMjRiNjMzNGRhZjQ0ZjEwYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJRExUeXBlcy5oIgorI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIApAQCAtNTQsNiArNTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDbG9zZShF
eGNlcHRpb25Pcjx2b2lkPiYmKTsKICAgICBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+
IHJlYWQoQnVmZmVyU291cmNlJiYsIEZpbGVzeXN0ZW1SZWFkV3JpdGVPcHRpb25zKTsKICAgICBF
eGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+IHdyaXRlKEJ1ZmZlclNvdXJjZSYmLCBGaWxl
c3lzdGVtUmVhZFdyaXRlT3B0aW9ucyk7CisgICAgdXNpbmcgUmVzdWx0ID0gc3RkOjp2YXJpYW50
PEV4Y2VwdGlvbk9yPHZvaWQ+LCBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+PjsKKyAg
ICB2b2lkIGNvbXBsZXRlUHJvbWlzZShSZXN1bHQmJik7CiAKIHByaXZhdGU6CiAgICAgRmlsZVN5
c3RlbVN5bmNBY2Nlc3NIYW5kbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1G
aWxlSGFuZGxlJiwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUpOwpAQCAtNjcsMTAgKzcwLDExIEBAIHByaXZhdGU6CiAK
ICAgICBSZWY8RmlsZVN5c3RlbUZpbGVIYW5kbGU+IG1fc291cmNlOwogICAgIEZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAgdWludDY0X3QgbV9w
ZW5kaW5nT3BlcmF0aW9uQ291bnQgeyAwIH07CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlIG1fZmlsZTsKICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbk9yPHZvaWQ+PiBtX2Ns
b3NlUmVzdWx0OwogICAgIFZlY3RvcjxDbG9zZUNhbGxiYWNrPiBtX2Nsb3NlQ2FsbGJhY2tzOwor
ICAgIHVzaW5nIFByb21pc2UgPSBzdGQ6OnZhcmlhbnQ8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMVW5zaWduZWRMb25nTG9uZz4+OworICAgIERlcXVlPFBy
b21pc2U+IG1fcGVuZGluZ1Byb21pc2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtl
ckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcApp
bmRleCBhZTI4ZjMwZjQ5NGFkMDMyYTdkNTIzZjI2ZDQ2Y2MxOThkMzdjZTNjLi4xZGY3MGM0ODAz
MTNjZGQ4YmJlYTYzYTIxOGJjYThhYTIxMjZmYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29y
a2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMjA4LDEyICsyMDgsNiBAQCB2
b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6ZGlkQ3JlYXRlU3luY0FjY2Vz
c0hhbmRsZShDYWxsYmFja0lkZW50aQogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkp
OwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y29tcGxldGVJ
bnRlZ2VyQ2FsbGJhY2soQ2FsbGJhY2tJZGVudGlmaWVyIGNhbGxiYWNrSWRlbnRpZmllciwgRXhj
ZXB0aW9uT3I8dWludDY0X3Q+JiYgcmVzdWx0KQotewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0g
bV9pbnRlZ2VyQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJZGVudGlmaWVyKSkKLSAgICAgICAgY2Fs
bGJhY2soV1RGTW92ZShyZXN1bHQpKTsKLX0KLQogdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb246OmNvbXBsZXRlVm9pZENhbGxiYWNrKENhbGxiYWNrSWRlbnRpZmllciBjYWxs
YmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KQogewogICAgIGlmIChh
dXRvIGNhbGxiYWNrID0gbV92b2lkQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJZGVudGlmaWVyKSkK
QEAgLTI0Myw2NiArMjM3LDYgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b246OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoRmlsZVN5c3RlbUhhbmRsZUkKICAgICB9KTsKIH0K
IAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldFNpemUoRmlsZVN5
c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbjo6SW50ZWdlckNhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgaWYgKCFtX3Njb3Bl
KQotICAgICAgICByZXR1cm4gY2FsbGJhY2soRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fSk7Ci0KLSAgICBhdXRvIGNhbGxiYWNrSWRlbnRpZmllciA9IENhbGxiYWNrSWRlbnRpZmllcjo6
Z2VuZXJhdGVUaHJlYWRTYWZlKCk7Ci0gICAgbV9pbnRlZ2VyQ2FsbGJhY2tzLmFkZChjYWxsYmFj
a0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQo
W2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhyZWFk
KCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBpZGVu
dGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyXSgpIG11dGFibGUgewotICAgICAgICBhdXRv
IG1haW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9
IFdURk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byByZXN1bHQpIG11dGFibGUgewotICAgICAgICAg
ICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50
aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11
dGFibGUgewotICAgICAgICAgICAgICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigpKQot
ICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb21wbGV0ZUludGVnZXJDYWxsYmFjayhj
YWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgICAgICAgICB9LCBXb3Jr
ZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKLSAgICAgICAgfTsKLQotICAgICAgICBtYWluVGhy
ZWFkQ29ubmVjdGlvbi0+Z2V0U2l6ZShpZGVudGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVy
LCBXVEZNb3ZlKG1haW5UaHJlYWRDYWxsYmFjaykpOwotICAgIH0pOwotfQotCi12b2lkIFdvcmtl
ckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6dHJ1bmNhdGUoRmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIEZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgaWYgKCFtX3Njb3Bl
KQotICAgICAgICByZXR1cm4gY2FsbGJhY2soRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fSk7Ci0KLSAgICBhdXRvIGNhbGxiYWNrSWRlbnRpZmllciA9IENhbGxiYWNrSWRlbnRpZmllcjo6
Z2VuZXJhdGVUaHJlYWRTYWZlKCk7Ci0gICAgbV92b2lkQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lk
ZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nh
bGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhyZWFkKCkg
fSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBpZGVudGlm
aWVyLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBzaXplXSgpIG11dGFibGUgewotICAgICAgICBh
dXRvIG1haW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVh
ZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byByZXN1bHQpIG11dGFibGUgewotICAgICAg
ICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lk
ZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpXSAoYXV0byYgc2NvcGUp
IG11dGFibGUgewotICAgICAgICAgICAgICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigp
KQotICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb21wbGV0ZVZvaWRDYWxsYmFjayhj
YWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgICAgICAgICB9LCBXb3Jr
ZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKLSAgICAgICAgfTsKLQotICAgICAgICBtYWluVGhy
ZWFkQ29ubmVjdGlvbi0+dHJ1bmNhdGUoaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmll
ciwgc2l6ZSwgV1RGTW92ZShtYWluVGhyZWFkQ2FsbGJhY2spKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmZsdXNoKEZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRp
ZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
OlZvaWRDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIGlmICghbV9zY29wZSkKLSAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwotCi0gICAg
YXV0byBjYWxsYmFja0lkZW50aWZpZXIgPSBDYWxsYmFja0lkZW50aWZpZXI6OmdlbmVyYXRlVGhy
ZWFkU2FmZSgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lkZW50
aWZpZXIsIHdvcmtlclRocmVhZCA9IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5UaHJl
YWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgYWNjZXNz
SGFuZGxlSWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2Fs
bGJhY2sgPSBbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtl
clRocmVhZCldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtlclRocmVh
ZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQg
PSBjcm9zc1RocmVhZENvcHkocmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKLSAgICAgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi0+Y29tcGxldGVWb2lkQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVy
LCBXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVs
dE1vZGUoKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPmZs
dXNoKGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFdURk1vdmUobWFpblRocmVh
ZENhbGxiYWNrKSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpjbG9zZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmll
ciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBpZiAoIW1fc2NvcGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggNWJjYmZjMmFiMjk2MzMzNmY0YzVlYmZkYjI3NDMwMTlh
Mjg1NmJjZC4uMTJmYTFjMTgzOGNlNjE3ODczYTE3OGYzZWJkMDBmMTA0MGIwYzUwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNDks
NyArNDksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZXNvbHZlKENhbGxiYWNrSWRlbnRpZmll
ciwgRXhjZXB0aW9uT3I8VmVjdG9yPFN0cmluZz4+JiYpOwogICAgIHZvaWQgZGlkQ3JlYXRlU3lu
Y0FjY2Vzc0hhbmRsZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW06OlBsYXRmb3Jt
RmlsZUhhbmRsZT4+JiYpOwogICAgIHZvaWQgY29tcGxldGVWb2lkQ2FsbGJhY2soQ2FsbGJhY2tJ
ZGVudGlmaWVyLCBFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCk7Ci0gICAgdm9pZCBjb21wbGV0
ZUludGVnZXJDYWxsYmFjayhDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHVpbnQ2NF90
PiYmIHJlc3VsdCk7CiAgICAgdm9pZCBkaWRHZXRIYW5kbGVOYW1lcyhDYWxsYmFja0lkZW50aWZp
ZXIsIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiYmKTsKICAgICB2b2lkIGRpZEdldEhhbmRs
ZVdpdGhUeXBlKENhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9uT3I8c3RkOjpwYWlyPEZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBib29sPj4mJik7CiAKQEAgLTY4LDkgKzY3LDYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGdldEhhbmRsZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuYW1lLCBHZXRIYW5kbGVXaXRoVHlwZUNhbGxiYWNrJiYpIGZpbmFsOwogCiAg
ICAgdm9pZCBjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVy
LCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEFjY2Vzc0hhbmRsZUNhbGxiYWNrJiYp
IGZpbmFsOwotICAgIHZvaWQgZ2V0U2l6ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb246OkludGVnZXJDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHRydW5jYXRlKEZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IHNpemUsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgZmx1c2goRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIs
IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZShGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
LCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmKSBmaW5hbDsKIAog
ICAgIFdlYWtQdHI8V29ya2VyR2xvYmFsU2NvcGU+IG1fc2NvcGU7CkBAIC04MCw3ICs3Niw2IEBA
IHByaXZhdGU6CiAgICAgSGFzaE1hcDxDYWxsYmFja0lkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbjo6UmVzb2x2ZUNhbGxiYWNrPiBtX3Jlc29sdmVDYWxsYmFja3M7CiAgICAg
SGFzaE1hcDxDYWxsYmFja0lkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
R2V0QWNjZXNzSGFuZGxlQ2FsbGJhY2s+IG1fZ2V0QWNjZXNzSGFuZGxDYWxsYmFja3M7CiAgICAg
SGFzaE1hcDxDYWxsYmFja0lkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
Vm9pZENhbGxiYWNrPiBtX3ZvaWRDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDxDYWxsYmFja0lkZW50
aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6SW50ZWdlckNhbGxiYWNrPiBtX2lu
dGVnZXJDYWxsYmFja3M7CiAgICAgSGFzaE1hcDxDYWxsYmFja0lkZW50aWZpZXIsIEZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0SGFuZGxlTmFtZXNDYWxsYmFjaz4gbV9nZXRIYW5kbGVO
YW1lc0NhbGxiYWNrczsKICAgICBIYXNoTWFwPENhbGxiYWNrSWRlbnRpZmllciwgRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRIYW5kbGVXaXRoVHlwZUNhbGxiYWNrPiBtX2dldEhhbmRs
ZVdpdGhUeXBlQ2FsbGJhY2tzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5jcHAKaW5kZXggNzVmYTQzODVkZDBhZTdlMDY1YjJmNjY0ZGRkYmNjMzdlODI5
ZjY2NC4uMmM0NjJjMmUwY2Y2OGU3YzQwNWUzYzJlMDkzNmVhMzMwZDVkMTc4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTc3LDYgKzc3LDEy
IEBAIHN0YXRpYyBIYXNoU2V0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYgYWxs
V29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVyCiAgICAgcmV0dXJuIGlkZW50aWZpZXJzOwogfQog
CitzdGF0aWMgUmVmPFdvcmtRdWV1ZT4gc2hhcmVkRmlsZVN5c3RlbVN0b3JhZ2VRdWV1ZSgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxXb3JrUXVldWU+PiBxdWV1ZShXb3JrUXVl
dWU6OmNyZWF0ZSgiU2hhcmVkIEZpbGUgU3lzdGVtIFN0b3JhZ2UgUXVldWUiLCAgV29ya1F1ZXVl
OjpRT1M6OlV0aWxpdHkpKTsKKyAgICByZXR1cm4gcXVldWUuZ2V0KCkuY29weVJlZigpOworfQor
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV29ya2VyR2xvYmFsU2NvcGUpOwogCiBXb3Jr
ZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSB0eXBlLCBj
b25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmln
aW4sIFdvcmtlclRocmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2lu
LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQ
cm92aWRlciogc29ja2V0UHJvdmlkZXIpCkBAIC0yMzIsNiArMjM4LDExIEBAIFdvcmtlclN0b3Jh
Z2VDb25uZWN0aW9uJiBXb3JrZXJHbG9iYWxTY29wZTo6c3RvcmFnZUNvbm5lY3Rpb24oKQogICAg
IHJldHVybiAqbV9zdG9yYWdlQ29ubmVjdGlvbjsKIH0KIAordm9pZCBXb3JrZXJHbG9iYWxTY29w
ZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKK3sK
KyAgICBzaGFyZWRGaWxlU3lzdGVtU3RvcmFnZVF1ZXVlKCktPmRpc3BhdGNoKFdURk1vdmUodGFz
aykpOworfQorCiBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24mIFdvcmtlckdsb2Jh
bFNjb3BlOjpnZXRGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oUmVmPEZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbj4mJiBtYWluVGhyZWFkQ29ubmVjdGlvbikKIHsKICAgICBpZiAoIW1fZmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oCmluZGV4IGQ1ODgwZWYyNzA3N2EzNjQ1ZDhmMzM1MTFiZmQ0NGI1OWM1Yjkx
NDEuLmFlM2IyZGJkYWM3ZmE0NGNlN2UzZjMyMjIwMmMwMDhiM2VjODc4ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTg4LDYgKzg4LDcgQEAgcHVi
bGljOgogICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBFdmVudFRhcmdldDo6V2Vha1ZhbHVlVHlw
ZTsKICAgICB1c2luZyBFdmVudFRhcmdldDo6d2Vha1B0ckZhY3Rvcnk7CiAgICAgV29ya2VyU3Rv
cmFnZUNvbm5lY3Rpb24mIHN0b3JhZ2VDb25uZWN0aW9uKCk7CisgICAgc3RhdGljIHZvaWQgcG9z
dEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIFdvcmtlckZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiYgZ2V0RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
KFJlZjxGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24+JiYpOwogICAgIFdvcmtlckZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbiogZmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKCk7CiAgICAg
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbiYgY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0
ZW1TdG9yYWdlRXJyb3IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZUVycm9yLmgKaW5kZXggMDI3NzM3YTJiNDBiMmMyNzBlYWE2NGI4YTVm
OWU2NDMwMWVlODc5Ni4uYzM2Zjc1MzRjNmFiNWI2MmFhNGE1ZGQzNDY5MzRmMzFlZGIwOGJmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0
ZW1TdG9yYWdlRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvRmlsZVN5c3RlbVN0b3JhZ2VFcnJvci5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogZW51bSBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZUVycm9yIDogdWludDhfdCB7
CisgICAgQWNjZXNzSGFuZGxlQWN0aXZlLAogICAgIEJhY2tlbmROb3RTdXBwb3J0ZWQsCiAgICAg
RmlsZU5vdEZvdW5kLAogICAgIEludmFsaWRNb2RpZmljYXRpb24sCkBAIC00MywxNCArNDQsMTYg
QEAgZW51bSBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZUVycm9yIDogdWludDhfdCB7CiBpbmxpbmUg
V2ViQ29yZTo6RXhjZXB0aW9uIGNvbnZlcnRUb0V4Y2VwdGlvbihGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yIGVycm9yKQogewogICAgIHN3aXRjaCAoZXJyb3IpIHsKKyAgICBjYXNlIEZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3I6OkFjY2Vzc0hhbmRsZUFjdGl2ZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OkludmFsaWRTdGF0ZUVycm9yLCAiU29tZSBBY2Nlc3NIYW5k
bGUgaXMgYWN0aXZlIl9zIH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpCYWNr
ZW5kTm90U3VwcG9ydGVkOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2Vi
Q29yZTo6Tm90U3VwcG9ydGVkRXJyb3IsICJCYWNrZW5kIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBv
cGVyYXRpb24iIH07CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3Jl
OjpOb3RTdXBwb3J0ZWRFcnJvciwgIkJhY2tlbmQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJh
dGlvbiJfcyB9OwogICAgIGNhc2UgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6RmlsZU5vdEZvdW5k
OgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6Tm90Rm91bmRF
cnJvciB9OwogICAgIGNhc2UgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6SW52YWxpZE1vZGlmaWNh
dGlvbjoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OkludmFs
aWRNb2RpZmljYXRpb25FcnJvciB9OwogICAgIGNhc2UgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6
SW52YWxpZE5hbWU6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3Jl
OjpVbmtub3duRXJyb3IsICJOYW1lIGlzIGludmFsaWQiIH07CisgICAgICAgIHJldHVybiBXZWJD
b3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJOYW1lIGlzIGludmFsaWQi
X3MgfTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkludmFsaWRTdGF0ZToKICAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OkludmFsaWRTdGF0ZUVy
cm9yIH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpUeXBlTWlzbWF0Y2g6CkBA
IC03Nyw2ICs4MCw3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHsKICAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IsCisg
ICAgICAgIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6QWNjZXNzSGFuZGxlQWN0aXZl
LAogICAgICAgICBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkJhY2tlbmROb3RTdXBw
b3J0ZWQsCiAgICAgICAgIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6RmlsZU5vdEZv
dW5kLAogICAgICAgICBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkludmFsaWRNb2Rp
ZmljYXRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcAppbmRleCA2MDcxY2JjNTAx
YTBiNzc2NjUxY2I1ZTI0Y2ZiNzFlZGI2NDk1Y2U3Li40ZjcyY2QwM2YzNjhmNDU3NmQ0MzVkNjdl
NjJlM2ExMWI5MmNmZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKQEAgLTYz
LDEyICs2Myw2IEBAIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpGaWxlU3lzdGVtU3RvcmFnZUhh
bmRsZShGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIG1hbmFnCiAgICAgfQogfQogCi1GaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZTo6fkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlKCkKLXsKLSAgICBpZiAo
bV9oYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1faGFuZGxlKTsKLX0KLQogdm9pZCBGaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZTo6Y2xvc2UoKQogewogICAgIGlmICghbV9tYW5hZ2VyKQpAQCAtMTcyLDEz
ICsxNjYsMTMgQEAgRXhwZWN0ZWQ8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OkFjY2Vzc0hhbmRs
ZUluZm8sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGUKICAgICBpZiAoIWFjcXVpcmVkKQog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6SW52
YWxpZFN0YXRlKTsKIAotICAgIG1faGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9wYXRo
LCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSk7Ci0gICAgaWYgKG1faGFuZGxl
ID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgYXV0byBoYW5k
bGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX3BhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9k
ZTo6UmVhZFdyaXRlKTsKKyAgICBpZiAoaGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVt
U3RvcmFnZUVycm9yOjpVbmtub3duKTsKIAotICAgIGF1dG8gaXBjSGFuZGxlID0gSVBDOjpTaGFy
ZWRGaWxlSGFuZGxlOjpjcmVhdGUobV9oYW5kbGUpOworICAgIGF1dG8gaXBjSGFuZGxlID0gSVBD
OjpTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUoaGFuZGxlKTsKICAgICBpZiAoIWlwY0hhbmRsZSkg
ewotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9oYW5kbGUpOworICAgICAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkJhY2tlbmROb3RTdXBwb3J0ZWQpOwogICAgIH0KIApA
QCAtMTg3LDYxICsxODEsMTEgQEAgRXhwZWN0ZWQ8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OkFj
Y2Vzc0hhbmRsZUluZm8sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGUKICAgICByZXR1cm4g
c3RkOjpwYWlyIHsgKm1fYWN0aXZlU3luY0FjY2Vzc0hhbmRsZSwgV1RGTW92ZSgqaXBjSGFuZGxl
KSB9OwogfQogCi1FeHBlY3RlZDx1aW50NjRfdCwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmls
ZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmdldFNpemUoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nl
c3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpCi17Ci0gICAgaWYgKCFt
X21hbmFnZXIpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFn
ZUVycm9yOjpVbmtub3duKTsKLQotICAgIGlmICghbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlIHx8
ICptX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgIT0gYWNjZXNzSGFuZGxlSWRlbnRpZmllcikKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25v
d24pOwotCi0gICAgYXV0byBzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUobV9wYXRoKTsKLSAg
ICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3Rv
cmFnZUVycm9yOjpVbmtub3duKTsKLQotICAgIHJldHVybiBzaXplLnZhbHVlKCk7Ci19Ci0KLXN0
ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5k
bGU6OnRydW5jYXRlKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
ciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXplKQotewotICAgIGlmICghbV9t
YW5hZ2VyKQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsK
LQotICAgIGlmICghbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlIHx8ICptX2FjdGl2ZVN5bmNBY2Nl
c3NIYW5kbGUgIT0gYWNjZXNzSGFuZGxlSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIEZpbGVT
eXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247Ci0KLSAgICBBU1NFUlQobV9oYW5kbGUgIT0gRmls
ZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgYXV0byByZXN1bHQgPSBG
aWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUobV9oYW5kbGUsIHNpemUpOwotICAgIGlmICghcmVzdWx0
KQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsKLQotICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmZsdXNoKFdlYkNvcmU6OkZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKQotewot
ICAgIGlmICghbV9tYW5hZ2VyKQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cjo6VW5rbm93bjsKLQotICAgIGlmICghbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlIHx8ICptX2Fj
dGl2ZVN5bmNBY2Nlc3NIYW5kbGUgIT0gYWNjZXNzSGFuZGxlSWRlbnRpZmllcikKLSAgICAgICAg
cmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247Ci0KLSAgICBBU1NFUlQobV9o
YW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgYXV0
byByZXN1bHQgPSBGaWxlU3lzdGVtOjpmbHVzaEZpbGUobV9oYW5kbGUpOwotICAgIGlmICghcmVz
dWx0KQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsKLQot
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmNsb3NlKFdlYkNvcmU6OkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKQog
ewogICAgIGlmICghbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlIHx8ICptX2FjdGl2ZVN5bmNBY2Nl
c3NIYW5kbGUgIT0gYWNjZXNzSGFuZGxlSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIEZpbGVT
eXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247CiAKLSAgICBBU1NFUlQobV9oYW5kbGUgIT0gRmls
ZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKG1faGFuZGxlKTsKLQogICAgIGlmICghbV9tYW5hZ2VyKQogICAgICAgICByZXR1cm4g
RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsKIApAQCAtMjc4LDcgKzIyMiw3IEBAIHN0
ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5k
bGU6Om1vdmUoV2ViQ29yZTo6RmlsCiAKICAgICAvLyBEbyBub3QgbW92ZSBmaWxlIGlmIHRoZXJl
IGlzIG9uZ29pbmcgb3BlcmF0aW9uLgogICAgIGlmIChtX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUp
Ci0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpJbnZhbGlkU3RhdGU7Cisg
ICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpBY2Nlc3NIYW5kbGVBY3RpdmU7
CiAKICAgICBpZiAobV9tYW5hZ2VyLT5nZXRUeXBlKGRlc3RpbmF0aW9uSWRlbnRpZmllcikgIT0g
VHlwZTo6RGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6
VHlwZU1pc21hdGNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaAppbmRleCAzZGFmNDcyZjcx
NmM1M2RiNWM0YzJiOGU5NThmNTc0ZjhlZWVhZGQ4Li5mYjkyOTgxNDFiMGRiYzM4MWZhOGIzYjM4
MTdlNjhjYTAxODk3OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaApAQCAtNDQsNyAr
NDQsNiBAQCBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZSA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZSwgVwogcHVibGljOgogICAgIGVudW0gY2xhc3Mg
VHlwZSA6IHVpbnQ4X3QgeyBGaWxlLCBEaXJlY3RvcnksIEFueSB9OwogICAgIEZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlKEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYsIFR5cGUsIFN0cmluZyYmIHBh
dGgsIFN0cmluZyYmIG5hbWUpOwotICAgIH5GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZSgpOwogCiAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmluZyYgcGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF0aDsgfQpAQCAtNjIsOSArNjEsNiBAQCBwdWJsaWM6CiAKICAgICB1c2lu
ZyBBY2Nlc3NIYW5kbGVJbmZvID0gc3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlSWRlbnRpZmllciwgSVBDOjpTaGFyZWRGaWxlSGFuZGxlPjsKICAgICBFeHBlY3Rl
ZDxBY2Nlc3NIYW5kbGVJbmZvLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBjcmVhdGVTeW5jQWNj
ZXNzSGFuZGxlKCk7Ci0gICAgRXhwZWN0ZWQ8dWludDY0X3QsIEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I+IGdldFNpemUoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
KTsKLSAgICBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHRydW5jYXRlKFdl
YkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6
ZSk7Ci0gICAgc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBmbHVzaChXZWJD
b3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIpOwogICAgIHN0ZDo6b3B0
aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gY2xvc2UoV2ViQ29yZTo6RmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKQEAgLTc2LDcgKzcyLDYgQEAg
cHJpdmF0ZToKICAgICBTdHJpbmcgbV9wYXRoOwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXI+
IG1fYWN0aXZlU3luY0FjY2Vzc0hhbmRsZTsKLSAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgbV9oYW5kbGUgeyBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAK
aW5kZXggY2U1ODExNDAzNGY5OGVlMzI2ZGFiNzdkYWZhZjU2MjNkZGQyMjAwOS4uNGU0YzA4NTgz
MjFlMjUyYWFkODllMzQzZDdjYmE5ZjE4YjU5NTcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAKQEAgLTI1Myw0MCArMjUzLDEyIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpj
cmVhdGVTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVuCiAgICAg
aWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duKSk7CiAKLSAgICBjb21wbGV0aW9u
SGFuZGxlcihoYW5kbGUtPmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoKSk7Ci19Ci0KLXZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRTaXplRm9yQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPHVpbnQ2NF90LCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
Ci0KLSAgICBhdXRvIGhhbmRsZSA9IG1fZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS0+
Z2V0SGFuZGxlKGlkZW50aWZpZXIpOwotICAgIGlmICghaGFuZGxlKQotICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6
VW5rbm93bikpOwotCi0gICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlLT5nZXRTaXplKGFjY2Vz
c0hhbmRsZUlkZW50aWZpZXIpKTsKLX0KLQotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnRy
dW5jYXRlRm9yQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
ciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgYXV0
byBoYW5kbGUgPSBtX2ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnktPmdldEhhbmRsZShp
ZGVudGlmaWVyKTsKLSAgICBpZiAoIWhhbmRsZSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd24pOwotCi0gICAgY29tcGxldGlv
bkhhbmRsZXIoaGFuZGxlLT50cnVuY2F0ZShhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBzaXplKSk7
Ci19Ci0KLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmbHVzaEZvckFjY2Vzc0hhbmRsZShX
ZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKLQotICAgIGF1dG8gaGFuZGxlID0gbV9maWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJl
Z2lzdHJ5LT5nZXRIYW5kbGUoaWRlbnRpZmllcik7Ci0gICAgaWYgKCFoYW5kbGUpCi0gICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3du
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGhhbmRsZS0+Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZSgpOwor
ICAgIGF1dG8gZmlsZUhhbmRsZSA9IHJlc3VsdCA/IHJlc3VsdC52YWx1ZSgpLnNlY29uZCA6IElQ
Qzo6U2hhcmVkRmlsZUhhbmRsZSgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVz
dWx0KSk7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGUtPmZsdXNoKGFjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIpKTsKKyAgICAvLyBDbG9zZSB0aGUgZmlsZSBoYW5kbGUgaW4gbmV0d29yayBw
cm9jZXNzLgorICAgIGZpbGVIYW5kbGUuY2xvc2UoKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OmNsb3NlQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRl
bnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCmluZGV4IGUyNTUwNDE4OTYwZmQ0ZjdlMzhjODQxYzQw
OGYzZjQwNWFkNjYzNzguLmIxNmNjMjU4OGUzZmU2ZTFmYzVkMWVmNGRlNGNhMmZjODM1YzU4OTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTc5LDkgKzc5LDYgQEAgcHJpdmF0ZToKIAog
ICAgIHVzaW5nIEFjY2Vzc0hhbmRsZUluZm8gPSBzdGQ6OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEZpbGVIYW5kbGU+OwogICAg
IHZvaWQgY3JlYXRlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxBY2Nlc3NIYW5kbGVJbmZv
LCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYpOwotICAgIHZvaWQgZ2V0U2l6ZUZvckFjY2Vz
c0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6Rmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4cGVjdGVkPHVpbnQ2NF90LCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYpOwotICAgIHZv
aWQgdHJ1bmNhdGVGb3JBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWlu
dDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0
ZW1TdG9yYWdlRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBmbHVzaEZvckFjY2Vzc0hhbmRsZShXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmKTsKICAgICB2b2lkIGNsb3NlQWNjZXNzSGFu
ZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYpOwogICAgIHZvaWQgZ2V0SGFu
ZGxlTmFtZXMoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I+KT4mJik7CiAgICAgdm9pZCBnZXRIYW5kbGUoSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6
RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVu
dGlmaWVyLCBib29sPiwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDFmYmJmMzdiYWFkN2QwNDNjODc1
Y2U4ZGYxYmFiOWExNTc2YTc5MDUuLmI0ZmFhZjdhY2U2NzVkYmJlMDRkNjNkMWNiODMwNzEzNjI5
NmNlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAt
MzYsOSArMzYsNiBAQAogICAgIE1vdmUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgZGVzdGlu
YXRpb25JZGVudGlmaWVyLCBTdHJpbmcgbmV3TmFtZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0
OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jCiAKICAgICBDcmVhdGVTeW5j
QWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpIC0+IChFeHBlY3RlZDxzdGQ6OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEZpbGVIYW5kbGU+LCBXZWJLaXQ6OkZpbGVTeXN0
ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKLSAgICBHZXRTaXplRm9yQWNjZXNzSGFuZGxl
KFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6
OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlm
aWVyKSAtPiAoRXhwZWN0ZWQ8dWludDY0X3QsIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4gcmVzdWx0KSBBc3luYwotICAgIFRydW5jYXRlRm9yQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZp
bGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRf
dCBzaXplKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+
IHJlc3VsdCkgQXN5bmMKLSAgICBGbHVzaEZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jCiAgICAg
Q2xvc2VBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwogICAgIEdldEhhbmRsZU5hbWVzKFdlYkNvcmU6
OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChFeHBlY3RlZDxWZWN0
b3I8U3RyaW5nPiwgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5j
CiAgICAgR2V0SGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFN0cmluZyBuYW1lKSAtPiAoRXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBib29sPiwgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yPiByZXN1bHQpIEFzeW5jIFdhbnRzQ29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmNwcAppbmRleCA4ZWJjZTk4MDA4N2MwNzViMDIz
YjU4YWVhMmUxNTU4NjBkNzY5NDY0Li42NGU0MjE3ODAxYTIxZjA1ZDg4YjRlNjE2OGQ3MGI4OWY5
NWE3ZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxl
SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFu
ZGxlLmNwcApAQCAtMjgsNiArMjgsMTEgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKK3ZvaWQgU2hh
cmVkRmlsZUhhbmRsZTo6Y2xvc2UoKQoreworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2hh
bmRsZSk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKIHN0ZDo6b3B0aW9uYWw8U2hhcmVk
RmlsZUhhbmRsZT4gU2hhcmVkRmlsZUhhbmRsZTo6Y3JlYXRlKEZpbGVTeXN0ZW06OlBsYXRmb3Jt
RmlsZUhhbmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEZpbGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5k
bGUuaAppbmRleCBhNDZhYzg5MDUwN2ViNjkzYTEwN2I0OTllNTQzNjA2YTc5N2U0NDlhLi41ODVh
ZDk5MzcyNzJjMmQwYWE5ZDUzN2MyMzdjODNhNmI1NjA4YjdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5oCkBAIC0zOSw5ICszOSw5IEBAIHB1Ymxp
YzoKIAogICAgIFNoYXJlZEZpbGVIYW5kbGUoKSA9IGRlZmF1bHQ7CiAgICAgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSgpIHsgcmV0dXJuIG1faGFuZGxlOyB9CisgICAgdm9p
ZCBjbG9zZSgpOwogCiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotCiAgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8U2hhcmVkRmlsZUhhbmRsZT4gZGVjb2RlKERlY29kZXImKTsKICAg
ICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b24uY3BwCmluZGV4IGQxZDc5ODVlNjVlZGQyNTllZjkzMjVmMjk0ZjA0YzhlMDYxOGZiZDIuLmYw
MWYyMWZmOGY2MTYzYWU1M2U0ODczMjQyY2ZlNWI3Zjk4NmZkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC0xMzQsMzkgKzEzNCw2IEBA
IHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFu
ZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1ICiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRTaXplKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRl
bnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBJbnRlZ2VyQ2FsbGJhY2smJiBjb21wbGV0
aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJv
ciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7Ci0KLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRTaXplRm9yQWNj
ZXNzSGFuZGxlKGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byByZXN1bHQpIG11dGFi
bGUgewotICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihjb252ZXJ0VG9FeGNlcHRpb24ocmVzdWx0LmVycm9yKCkpKTsKLQotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXN1bHQudmFsdWUoKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjp0cnVuY2F0ZShXZWJDb3JlOjpGaWxlU3lzdGVt
SGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSwg
Vm9pZENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX2Nvbm5lY3Rp
b24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24g
eyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOwotCi0gICAg
bV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6VHJ1bmNhdGVGb3JBY2Nlc3NIYW5kbGUoaWRlbnRpZmllciwgYWNjZXNzSGFuZGxl
SWRlbnRpZmllciwgc2l6ZSksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShhdXRvIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoY29udmVydFRvRXhjZXB0aW9uT3IoZXJyb3IpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmZsdXNoKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBWb2lkQ2FsbGJhY2smJiBjb21w
bGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25F
cnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7Ci0KLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpGbHVzaEZvckFj
Y2Vzc0hhbmRsZShpZGVudGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSwgW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZXJyb3IpIG11dGFi
bGUgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb252ZXJ0VG9FeGNlcHRpb25PcihlcnJv
cikpOwotICAgIH0pOwotfQotCiB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
Y2xvc2UoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
Q29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlk
ZW50aWZpZXIsIFZvaWRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
bV9jb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bi5oCmluZGV4IGE3NmE3ZDEzYzMwZDU5ODFmZTcxYTc3NGNkNGQwNWMyMTY0NzE0MTAuLmQ1NzEz
ZjhhZDIxYjEyZTYxY2E0YWVhNWFhODUxMWVkZTNhNjg2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTgzLDkgKzgzLDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGdldEhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEhhbmRs
ZVdpdGhUeXBlQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICB2b2lkIGNyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0QWNjZXNzSGFuZGxlQ2FsbGJhY2smJikgZmluYWw7
Ci0gICAgdm9pZCBnZXRTaXplKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6SW50ZWdlckNhbGxiYWNrJiYpIGZpbmFsOwotICAg
IHZvaWQgdHJ1bmNhdGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdlYkNv
cmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSwg
V2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJikgZmlu
YWw7Ci0gICAgdm9pZCBmbHVzaChXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGNsb3NlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPElQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZmMTNkZWRkY2RjNDI3NzlmYjQ5
YjE5NGI0NjRmNmY2NTVjNGU0YjguLjc5NzdmNzYxODAwN2ExNTEyODhlMzQzYzZhMGZhZTg4YjM3
NjgxOGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0xMC0yOSAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBQZXJmb3JtIEZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlIG9wZXJhdGlvbnMgaW4gd2ViIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjE0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL2hhbmRs
ZS1tb3ZlLXdvcmtlci1leHBlY3RlZC50eHQ6CisKIDIwMjEtMTAtMjggIEdhYnJpZWwgTmF2YSBN
YXJpbm8gIDxnbmF2YW1hcmlub0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGFuIGFkZGl0aW9u
YWwgZWRnZSBjYXNlIGZvciBzdXJyb2dhdGUgcGFpcnMgdG8gZXhpc3RpbmcgdGVzdHMuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvaGFuZGxlLW1vdmUt
d29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vz
cy9oYW5kbGUtbW92ZS13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDJiYjg4YjQ4NzFmMTVhNzM1
YTc4Y2Y5YzEyMGFmYjJkOWIyOTg0OWQuLjY0NTliMDRjZTZkNGY1NWI0N2FkMmUzZjZmMDkwNmZk
ZTFjZWZlNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vz
cy9oYW5kbGUtbW92ZS13b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvZmlsZXN5c3RlbWFjY2Vzcy9oYW5kbGUtbW92ZS13b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0x
OCw3ICsxOCw3IEBAIFBBU1MgW1dvcmtlcl0gbW92ZUZpbGVFcnJvci50b1N0cmluZygpIGlzICJV
bmtub3duRXJyb3I6IFRoZSBvcGVyYXRpb24gZmFpbGVkIGZvCiBQQVNTIFtXb3JrZXJdIG1vdmVG
aWxlRXJyb3IudG9TdHJpbmcoKSBpcyAiVW5rbm93bkVycm9yOiBOYW1lIGlzIGludmFsaWQiCiBQ
QVNTIFtXb3JrZXJdIG1vdmVGaWxlRXJyb3IudG9TdHJpbmcoKSBpcyAiVW5rbm93bkVycm9yOiBO
YW1lIGlzIGludmFsaWQiCiBbV29ya2VyXSBUZXN0IG1vdmUgd2l0aCBvcGVuIGFjY2VzcyBoYW5k
bGU6Ci1QQVNTIFtXb3JrZXJdIG1vdmVGaWxlRXJyb3IudG9TdHJpbmcoKSBpcyAiSW52YWxpZFN0
YXRlRXJyb3I6IFRoZSBvYmplY3QgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZS4iCitQQVNTIFtXb3Jr
ZXJdIG1vdmVGaWxlRXJyb3IudG9TdHJpbmcoKSBpcyAiSW52YWxpZFN0YXRlRXJyb3I6IFNvbWUg
QWNjZXNzSGFuZGxlIGlzIGFjdGl2ZSIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lz
dGVtYWNjZXNzL3Jlc291cmNlcy9oYW5kbGUtbW92ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
ZmlsZXN5c3RlbWFjY2Vzcy9yZXNvdXJjZXMvaGFuZGxlLW1vdmUuanMKaW5kZXggZDkxZDkxYmM1
MzkyZmEwMDU4N2VlZWQ1YTEzMGZhZmM4NTUyZjYxYS4uOWM4ZGNmMTUzZWJjYzAyNzVhM2NjMjE4
ZDY4Njg0Y2IzZjU4MGE5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lz
dGVtYWNjZXNzL3Jlc291cmNlcy9oYW5kbGUtbW92ZS5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvcmVzb3VyY2VzL2hhbmRsZS1tb3ZlLmpzCkBAIC0xMDUsNyAr
MTA1LDcgQEAgYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICB0ZXN0RXJy
b3IgPSAgIk1vdmVkIGZpbGUgYmFjayB0byBkaXJIYW5kbGUxIHVuZXhwZWN0ZWRseSI7CiAgICAg
ICAgICAgICB9LCAoZXJyb3IpID0+IHsKICAgICAgICAgICAgICAgICBtb3ZlRmlsZUVycm9yID0g
ZXJyb3I7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtb3ZlRmlsZUVy
cm9yLnRvU3RyaW5nKCkiLCAiSW52YWxpZFN0YXRlRXJyb3I6IFRoZSBvYmplY3QgaXMgaW4gYW4g
aW52YWxpZCBzdGF0ZS4iKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
Im1vdmVGaWxlRXJyb3IudG9TdHJpbmcoKSIsICJJbnZhbGlkU3RhdGVFcnJvcjogU29tZSBBY2Nl
c3NIYW5kbGUgaXMgYWN0aXZlIik7CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgaWYg
KHRlc3RFcnJvcikgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443025</attachid>
            <date>2021-11-01 15:43:07 -0700</date>
            <delta_ts>2021-11-01 17:19:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232146-20211101154306.patch</filename>
            <type>text/plain</type>
            <size>52135</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjlmNWM4YmMzZjc2MTIw
ODI1ODI4NTZhN2EyNjJiNWIwMjVmODg5Yy4uY2U3ZTM5ODhmZjE5ZTJkNTNkMjBjNzFmNGE0MzEw
MGI1ZWFkYmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTExLTAxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFBlcmZvcm0gRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGUgb3BlcmF0aW9ucyBpbiB3ZWIgcHJvY2VzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMTQ2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84NDgwOTQyOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICB0cnVuY2F0ZSgpLCBnZXRTaXplKCkgYW5kIGZsdXNoKCkgb3BlcmF0aW9u
cyBhcmUgbm93IHBlcmZvcm1lZCBvbiBhIGdsb2JhbCBXb3JrUXVldWUgaW4gd2ViIHByb2Nlc3Mu
CisKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZpbGVIYW5kbGU6OmdldFNpemUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZpbGVIYW5kbGU6OnRydW5j
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1GaWxlSGFuZGxlOjpm
bHVzaCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVT
eXN0ZW1GaWxlSGFuZGxlLmg6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0Zp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3Rl
bWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6fkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjp0cnVuY2F0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Z2V0U2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Zmx1c2gp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3NlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjbG9zZUludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjbG9z
ZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6
OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6Ondy
aXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjb21w
bGV0ZVByb21pc2UpOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZS5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6Y29tcGxldGVJbnRlZ2VyQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRTaXplKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6dHJ1bmNh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpmbHVzaCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkRmls
ZVN5c3RlbVN0b3JhZ2VRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29w
ZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oOgorCiAyMDIxLTExLTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQWxpZ24gWFNMVFByb2Nlc3NvciB3aXRoIEJsaW5rIGFuZCBnZXQgY2xv
c2VyIHRvIEdlY2tvIGluIHRoZSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ2NGFhMWJjMjNhYTFmY2Uw
YTQxNWRmNWExN2JhZTg5NjM4YzM4MGMuLmFhNjEzNjQ5NmIzMzdhYjdkN2NlMzQzZGRhZGUwYjQ1
YzhiZjc1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTEtMDEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgUGVyZm9ybSBGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZSBvcGVyYXRpb25zIGluIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIxNDYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg0ODA5NDI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5ldHdvcmsgcHJvY2VzcyBubyBsb25nZXIgbmVlZHMgdG8gaG9sZCBvcGVuIGZp
bGUgaGFuZGxlIGZvciBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS4gTm93IGl0IGNyZWF0ZXMg
YW4gb3BlbiAKKyAgICAgICAgZmlsZSBoYW5kbGUsIHBhc3MgaXQgdG8gd2ViIHByb2Nlc3MgYW5k
IGNsb3NlIGl0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVt
U3RvcmFnZUVycm9yLmg6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb0V4Y2VwdGlvbik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpjcmVhdGVTeW5j
QWNjZXNzSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6
OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6Om1vdmUp
OgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6fkZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGU6OmdldFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZTo6dHJ1bmNhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpGaWxl
U3lzdGVtU3RvcmFnZUhhbmRsZTo6Zmx1c2gpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaDoKKyAgICAgICAgKCk6IERl
bGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmdldFNpemVGb3JBY2Nlc3NIYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnRydW5jYXRlRm9yQWNjZXNzSGFuZGxlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmbHVzaEZvckFjY2Vzc0hh
bmRsZSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkRmlsZUhhbmRsZS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEZpbGVIYW5kbGU6OmNsb3Nl
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpn
ZXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjp0cnVuY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Zmx1c2gpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmg6CisK
IDIwMjEtMTEtMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGEgdGVzdGluZyBwcmVmZXJlbmNlIHRvIHJlcGxheSBDRyBkaXNwbGF5IGxpc3Rz
IG1hbnVhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1h
Y2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmNwcAppbmRleCAyZGJiNGUzYTgw
MGZlMmY0NTg5NjE3ZGExN2MzYzUzMzA5MDFkYjFkLi4xNzUxMWYwYWUwOGJmNzJhOTQxMjMzM2Q1
YTg1N2QxYjIwZmZkMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKQEAgLTc1
LDMwICs3NSw2IEBAIHZvaWQgRmlsZVN5c3RlbUZpbGVIYW5kbGU6OmNyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUoRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjCiAgICAgfSk7CiB9CiAKLXZvaWQg
RmlsZVN5c3RlbUZpbGVIYW5kbGU6OmdldFNpemUoRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhjZXB0aW9uT3I8dWludDY0X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlm
IChpc0Nsb3NlZCgpKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJIYW5kbGUgaXMgY2xvc2VkIl9zIH0pOwotCi0gICAgY29u
bmVjdGlvbigpLmdldFNpemUoaWRlbnRpZmllcigpLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgRmlsZVN5c3RlbUZpbGVIYW5k
bGU6OnRydW5jYXRlKEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAg
ICBpZiAoaXNDbG9zZWQoKSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiSGFuZGxlIGlzIGNsb3NlZCJfcyB9KTsKLQotICAg
IGNvbm5lY3Rpb24oKS50cnVuY2F0ZShpZGVudGlmaWVyKCksIGFjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIsIHNpemUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQotdm9pZCBGaWxlU3lz
dGVtRmlsZUhhbmRsZTo6Zmx1c2goRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8dm9pZD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGlzQ2xvc2VkKCkp
Ci0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgIkhhbmRsZSBpcyBjbG9zZWQiX3MgfSk7Ci0KLSAgICBjb25uZWN0aW9uKCkuZmx1
c2goaWRlbnRpZmllcigpLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Ci19Ci0KIHZvaWQgRmlsZVN5c3RlbUZpbGVIYW5kbGU6OmNsb3NlKEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChpc0Nsb3NlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUu
aAppbmRleCBiYWE0MmY4ZDkyMzFhYWRkZTI1MjljZmVjMjAxYjM0ZWI1NWYyOTE1Li44Y2VlMTJj
YmRmYmY0MDA5MmY3YTA0MjBhZDkxYzcxYTgyYWMyOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVI
YW5kbGUuaApAQCAtNDEsOSArNDEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRGaWxlKERPTVBy
b21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RmlsZT4+JiYpOwogCiAgICAgdm9pZCBjcmVhdGVT
eW5jQWNjZXNzSGFuZGxlKERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGU+PiYmKTsKLSAgICB2b2lkIGdldFNpemUoRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9y
PHVpbnQ2NF90PiYmKT4mJik7Ci0gICAgdm9pZCB0cnVuY2F0ZShGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKTsKLSAgICB2b2lkIGZsdXNoKEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25Pcjx2b2lkPiYmKT4mJik7CiAgICAgdm9pZCBjbG9zZShGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8
dm9pZD4mJik+JiYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbi5oCmluZGV4IDczZWJmOTljNDVlNDE2MWRjZTQxMDY4M2VkMzg0MTU5NzQ4YWJhODcu
Ljc4ZTQ2OTIwNWY2MWE0MzkzYjZjNTcyNDgzZjQ3NGM1MzYwNzBiM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3Mv
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTU4LDkgKzU4LDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFbnRyeShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGRlbGV0ZVJlY3Vyc2l2ZWx5LCBWb2lkQ2FsbGJhY2sm
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlm
aWVyLCBGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgUmVzb2x2ZUNhbGxiYWNrJiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU3luY0FjY2Vzc0hhbmRsZShGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciwgR2V0QWNjZXNzSGFuZGxlQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRTaXplKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIEludGVnZXJDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHRydW5jYXRlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIFZvaWRDYWxsYmFjayYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZsdXNoKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFZvaWRDYWxsYmFjayYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFZvaWRDYWxsYmFjayYmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldEhhbmRsZU5hbWVzKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVy
LCBHZXRIYW5kbGVOYW1lc0NhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SGFu
ZGxlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIEdldEhh
bmRsZVdpdGhUeXBlQ2FsbGJhY2smJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZS5jcHAKaW5kZXggYTQ2ZTBkYzMwNjNlM2VmMjY2MjZkMGQ5YjIwMWEzMDVjZWRl
OWE2MS4uNDcwM2IwOWZjM2FhOThlMDFkNGJmMmRkNzNiMTVmYjQyNDg3Njk5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1h
Y2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUZpbGVIYW5kbGUu
aCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIldvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTUwLDcgKzUxLDE5IEBAIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
CiAKIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjp+RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGUoKQogewotICAgIEFTU0VSVChtX2Nsb3NlUmVzdWx0KTsKKyAgICBBU1NFUlQoaXNDbG9zaW5n
T3JDbG9zZWQoKSk7CisgICAgaWYgKG1fY2xvc2VSZXN1bHQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIFRhc2sgcmVwbGllcyBtYXkgYmUgc2NoZWR1bGVkIHRvIFdvcmtlclJ1bkxvb3AgYnV0
IGRvIG5vdCBydW4uCisgICAgYXV0byBwZW5kaW5nUHJvbWlzZXMgPSBzdGQ6OmV4Y2hhbmdlKG1f
cGVuZGluZ1Byb21pc2VzLCB7IH0pOworICAgIGZvciAoYXV0byYgcHJvbWlzZSA6IHBlbmRpbmdQ
cm9taXNlcykgeworICAgICAgICBzdGQ6OnZpc2l0KFtdKGF1dG8mIHByb21pc2UpIHsKKyAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIkFjY2Vzc0hh
bmRsZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQiX3MgfSk7CisgICAgICAgIH0sIHByb21pc2Up
OworICAgIH0KKworICAgIGNsb3NlQmFja2VuZChDbG9zZU1vZGU6OlN5bmMpOwogfQogCiBib29s
IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjppc0Nsb3NpbmdPckNsb3NlZCgpIGNvbnN0CkBA
IC02MywxMiArNzYsMTYgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6dHJ1bmNh
dGUodW5zaWduZWQgbG9uZyBsb25nIHNpemUsIERPTVByb21pc2VEZWYKICAgICBpZiAoaXNDbG9z
aW5nT3JDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzSGFuZGxlIGlzIGNsb3Npbmcgb3IgY2xvc2VkIl9z
IH0pOwogCi0gICAgbV9wZW5kaW5nT3BlcmF0aW9uQ291bnQrKzsKLSAgICBtX3NvdXJjZS0+dHJ1
bmNhdGUobV9pZGVudGlmaWVyLCBzaXplLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAg
ICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPm1fcGVuZGluZ09wZXJhdGlv
bkNvdW50LS07CisgICAgYXV0byogc2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIXNjb3BlKQorICAgICAgICByZXR1
cm4gcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJDb250ZXh0
IGlzIGludmFsaWQiX3MgfSk7CiAKLSAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1
bHQpKTsKKyAgICBtX3BlbmRpbmdQcm9taXNlcy5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7Cisg
ICAgV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIGZpbGUgPSBtX2ZpbGUsIHNpemUsIHdvcmtlclRocmVhZCA9
IFJlZiB7IHNjb3BlLT50aHJlYWQoKSB9XSgpIG11dGFibGUgeworICAgICAgICB3b3JrZXJUaHJl
YWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc3Vj
Y2VzcyA9IEZpbGVTeXN0ZW06OnRydW5jYXRlRmlsZShmaWxlLCBzaXplKV0oYXV0byYpIG11dGFi
bGUgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlz
LT5jb21wbGV0ZVByb21pc2Uoc3VjY2VzcyA/IEV4Y2VwdGlvbk9yPHZvaWQ+IHsgfSA6IEV4Y2Vw
dGlvbiB7IFVua25vd25FcnJvciB9KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTc3
LDEyICs5NCwxNiBAQCB2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpnZXRTaXplKERP
TVByb21pc2VEZWZlcnJlZDxJRExVbnNpZ25lZExvbmdMb25nPgogICAgIGlmIChpc0Nsb3NpbmdP
ckNsb3NlZCgpKQogICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3NIYW5kbGUgaXMgY2xvc2luZyBvciBjbG9zZWQiX3MgfSk7
CiAKLSAgICBtX3BlbmRpbmdPcGVyYXRpb25Db3VudCsrOwotICAgIG1fc291cmNlLT5nZXRTaXpl
KG1faWRlbnRpZmllciwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFr
VGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX3BlbmRpbmdPcGVyYXRpb25Db3VudC0tOwor
ICAgIGF1dG8qIHNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKCFzY29wZSkKKyAgICAgICAgcmV0dXJuIHByb21pc2Uu
cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQ29udGV4dCBpcyBpbnZhbGlk
Il9zIH0pOwogCi0gICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CisgICAg
bV9wZW5kaW5nUHJvbWlzZXMuYXBwZW5kKFdURk1vdmUocHJvbWlzZSkpOworICAgIFdvcmtlckds
b2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBmaWxlID0gbV9maWxlLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBzY29wZS0+dGhy
ZWFkKCkgfV0oKSBtdXRhYmxlIHsKKyAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dFRhc2soW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHN1Y2Nlc3MgPSBGaWxlU3lzdGVt
OjpmaWxlU2l6ZShmaWxlKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHdlYWtU
aGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jb21wbGV0ZVByb21pc2Uoc3VjY2VzcyA/
IEV4Y2VwdGlvbk9yPHVuc2lnbmVkIGxvbmcgbG9uZz4geyBzdWNjZXNzLnZhbHVlKCkgfSA6IEV4
Y2VwdGlvbiB7IFVua25vd25FcnJvciB9KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAg
LTkxLDIwICsxMTIsMjIgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Zmx1c2go
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKICAgICBpZiAoaXNDbG9zaW5nT3JD
bG9zZWQoKSkKICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCAiQWNjZXNzSGFuZGxlIGlzIGNsb3Npbmcgb3IgY2xvc2VkIl9zIH0pOwog
Ci0gICAgbV9wZW5kaW5nT3BlcmF0aW9uQ291bnQrKzsKLSAgICBtX3NvdXJjZS0+Zmx1c2gobV9p
ZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHdlYWtUaGlz
KQotICAgICAgICAgICAgd2Vha1RoaXMtPm1fcGVuZGluZ09wZXJhdGlvbkNvdW50LS07CisgICAg
YXV0byogc2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKKyAgICBpZiAoIXNjb3BlKQorICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWpl
Y3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJDb250ZXh0IGlzIGludmFsaWQiX3Mg
fSk7CiAKLSAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKKyAgICBtX3Bl
bmRpbmdQcm9taXNlcy5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7CisgICAgV29ya2VyR2xvYmFs
U2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIGZpbGUgPSBtX2ZpbGUsIHdvcmtlclRocmVhZCA9IFJlZiB7IHNjb3BlLT50aHJlYWQo
KSB9XSgpIG11dGFibGUgeworICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFz
ayhbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc3VjY2VzcyA9IEZpbGVTeXN0ZW06OmZs
dXNoRmlsZShmaWxlKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlz
KQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jb21wbGV0ZVByb21pc2Uoc3VjY2VzcyA/IEV4
Y2VwdGlvbk9yPHZvaWQ+IHsgfSA6IEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciB9KTsKKyAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNs
b3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7Ci0gICAgbV9wZW5kaW5n
T3BlcmF0aW9uQ291bnQrKzsKICAgICBjbG9zZUludGVybmFsKFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byByZXN1bHQpIG11dGFi
bGUgewotICAgICAgICB3ZWFrVGhpcy0+bV9wZW5kaW5nT3BlcmF0aW9uQ291bnQtLTsKICAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKICAgICB9KTsKIH0KQEAgLTExOSwx
MiArMTQyLDMxIEBAIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3NlSW50ZXJu
YWwoQ2xvc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIGlmIChpc0Nsb3NpbmcpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGUpOwotICAgIG1fc291
cmNlLT5jbG9zZShtX2lkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfV0oYXV0byByZXN1bHQpIHsKLSAgICAgICAgZGlkQ2xvc2UoV1RGTW92ZShyZXN1bHQpKTsK
KyAgICBhdXRvKiBzY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOworICAgIEFTU0VSVChzY29wZSk7CisKKyAgICBBU1NFUlQobV9maWxl
ICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIFdvcmtlckds
b2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBmaWxlID0gc3RkOjpleGNoYW5nZShtX2ZpbGUsIEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBzY29wZS0+dGhyZWFk
KCkgfV0oKSBtdXRhYmxlIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwor
ICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlz
KQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jbG9zZUJhY2tlbmQoQ2xvc2VNb2RlOjpBc3lu
Yyk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCit2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlOjpjbG9zZUJhY2tlbmQoQ2xvc2VNb2RlIG1vZGUpCit7CisgICAgaWYgKG1vZGUgPT0g
Q2xvc2VNb2RlOjpBc3luYykgeworICAgICAgICBtX3NvdXJjZS0+Y2xvc2UobV9pZGVudGlmaWVy
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGF1dG8gcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGRpZENsb3NlKFdURk1vdmUocmVzdWx0KSk7CisgICAgICAgIH0p
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fc291cmNlLT5jbG9zZShtX2lkZW50aWZpZXIsIFtd
KGF1dG8pIHsgfSk7CisgICAgICAgIGRpZENsb3NlKHsgfSk7CisgICAgfQorfQorCiB2b2lkIEZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpkaWRDbG9zZShFeGNlcHRpb25Pcjx2b2lkPiYmIHJl
c3VsdCkKIHsKICAgICBBU1NFUlQoIW1fY2xvc2VSZXN1bHQpOwpAQCAtMTQyLDcgKzE4NCw3IEBA
IEV4Y2VwdGlvbk9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGU6OnJlYWQoQnVmZmVyU291cmNlJiYKICAgICBpZiAoaXNDbG9zaW5nT3JDbG9zZWQoKSkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzSGFuZGxl
IGlzIGNsb3Npbmcgb3IgY2xvc2VkIl9zIH07CiAKLSAgICBpZiAobV9wZW5kaW5nT3BlcmF0aW9u
Q291bnQpCisgICAgaWYgKCFtX3BlbmRpbmdQcm9taXNlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2VzcyBoYW5kbGUgaGFzIHVu
ZmluaXNoZWQgb3BlcmF0aW9uIl9zIH07CiAKICAgICBpbnQgcmVzdWx0ID0gRmlsZVN5c3RlbTo6
c2Vla0ZpbGUobV9maWxlLCBvcHRpb25zLmF0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6
QmVnaW5uaW5nKTsKQEAgLTE2Myw3ICsyMDUsNyBAQCBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25n
IGxvbmc+IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjp3cml0ZShCdWZmZXJTb3VyY2UmJgog
ICAgIGlmIChpc0Nsb3NpbmdPckNsb3NlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3NIYW5kbGUgaXMgY2xvc2luZyBvciBjbG9zZWQiX3Mg
fTsKIAotICAgIGlmIChtX3BlbmRpbmdPcGVyYXRpb25Db3VudCkKKyAgICBpZiAoIW1fcGVuZGlu
Z1Byb21pc2VzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAiQWNjZXNzIGhhbmRsZSBoYXMgdW5maW5pc2hlZCBvcGVyYXRpb24iX3MgfTsK
IAogICAgIGludCByZXN1bHQgPSBGaWxlU3lzdGVtOjpzZWVrRmlsZShtX2ZpbGUsIG9wdGlvbnMu
YXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmcpOwpAQCAtMTc3LDYgKzIx
OSwyMyBAQCBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+IEZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlOjp3cml0ZShCdWZmZXJTb3VyY2UmJgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
K3ZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNvbXBsZXRlUHJvbWlzZShSZXN1bHQm
JiByZXN1bHQpCit7CisgICAgaWYgKG1fcGVuZGluZ1Byb21pc2VzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IG1fcGVuZGluZ1Byb21pc2Vz
LnRha2VGaXJzdCgpOworICAgIFdURjo6c3dpdGNoT24oV1RGTW92ZShyZXN1bHQpLCBbJnBlbmRp
bmdQcm9taXNlXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgeworICAgICAgICBhdXRvKiBw
cm9taXNlID0gc3RkOjpnZXRfaWY8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PigmcGVuZGluZ1By
b21pc2UpOworICAgICAgICBBU1NFUlQocHJvbWlzZSk7CisgICAgICAgIHByb21pc2UtPnNldHRs
ZShXVEZNb3ZlKHJlc3VsdCkpOworICAgIH0sIFsmcGVuZGluZ1Byb21pc2VdKEV4Y2VwdGlvbk9y
PHVuc2lnbmVkIGxvbmcgbG9uZz4mJiByZXN1bHQpIHsKKyAgICAgICAgYXV0byogcHJvbWlzZSA9
IHN0ZDo6Z2V0X2lmPERPTVByb21pc2VEZWZlcnJlZDxJRExVbnNpZ25lZExvbmdMb25nPj4oJnBl
bmRpbmdQcm9taXNlKTsKKyAgICAgICAgQVNTRVJUKHByb21pc2UpOworICAgICAgICBwcm9taXNl
LT5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKKyAgICB9KTsKK30KKwogY29uc3QgY2hhciogRmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogewog
ICAgIHJldHVybiAiRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUiOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5
c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaAppbmRleCA3MGFmZjMzOWEyMTA5MzA0ODBlNDQ3YzIwODU3
OTFmNTIzMmJhMTMwLi45MTVmZmQwMTNmOGNmZDIzNGVkNDgyMDg5ODExODU3NDViNTZkZDg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5
c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN5bmNBY2Nl
c3NIYW5kbGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKKyNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKQEAgLTU0LDEyICs1NSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDbG9z
ZShFeGNlcHRpb25Pcjx2b2lkPiYmKTsKICAgICBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxv
bmc+IHJlYWQoQnVmZmVyU291cmNlJiYsIEZpbGVzeXN0ZW1SZWFkV3JpdGVPcHRpb25zKTsKICAg
ICBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+IHdyaXRlKEJ1ZmZlclNvdXJjZSYmLCBG
aWxlc3lzdGVtUmVhZFdyaXRlT3B0aW9ucyk7CisgICAgdXNpbmcgUmVzdWx0ID0gc3RkOjp2YXJp
YW50PEV4Y2VwdGlvbk9yPHZvaWQ+LCBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+PjsK
KyAgICB2b2lkIGNvbXBsZXRlUHJvbWlzZShSZXN1bHQmJik7CiAKIHByaXZhdGU6CiAgICAgRmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0
ZW1GaWxlSGFuZGxlJiwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIGJvb2wgaXNDbG9zaW5nT3JDbG9zZWQo
KSBjb25zdDsKICAgICB1c2luZyBDbG9zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeGNlcHRpb25Pcjx2b2lkPiYmKT47CiAgICAgdm9pZCBjbG9zZUludGVybmFsKENsb3NlQ2Fs
bGJhY2smJik7CisgICAgZW51bSBjbGFzcyBDbG9zZU1vZGUgOiBib29sIHsgQXN5bmMsIFN5bmMg
fTsKKyAgICB2b2lkIGNsb3NlQmFja2VuZChDbG9zZU1vZGUpOwogCiAgICAgLy8gQWN0aXZlRE9N
T2JqZWN0CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFs
OwpAQCAtNjcsMTAgKzcyLDExIEBAIHByaXZhdGU6CiAKICAgICBSZWY8RmlsZVN5c3RlbUZpbGVI
YW5kbGU+IG1fc291cmNlOwogICAgIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7Ci0gICAgdWludDY0X3QgbV9wZW5kaW5nT3BlcmF0aW9uQ291bnQgeyAw
IH07CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZTsKICAgICBzdGQ6
Om9wdGlvbmFsPEV4Y2VwdGlvbk9yPHZvaWQ+PiBtX2Nsb3NlUmVzdWx0OwogICAgIFZlY3RvcjxD
bG9zZUNhbGxiYWNrPiBtX2Nsb3NlQ2FsbGJhY2tzOworICAgIHVzaW5nIFByb21pc2UgPSBzdGQ6
OnZhcmlhbnQ8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+LCBET01Qcm9taXNlRGVmZXJyZWQ8SURM
VW5zaWduZWRMb25nTG9uZz4+OworICAgIERlcXVlPFByb21pc2U+IG1fcGVuZGluZ1Byb21pc2Vz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2Vy
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCBhZTI4ZjMwZjQ5NGFkMDMyYTdk
NTIzZjI2ZDQ2Y2MxOThkMzdjZTNjLi4xZGY3MGM0ODAzMTNjZGQ4YmJlYTYzYTIxOGJjYThhYTIx
MjZmYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nl
c3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcApAQCAtMjA4LDEyICsyMDgsNiBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbjo6ZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShDYWxsYmFja0lkZW50aQog
ICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIFdvcmtlckZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y29tcGxldGVJbnRlZ2VyQ2FsbGJhY2soQ2FsbGJhY2tJ
ZGVudGlmaWVyIGNhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9uT3I8dWludDY0X3Q+JiYgcmVz
dWx0KQotewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9pbnRlZ2VyQ2FsbGJhY2tzLnRha2Uo
Y2FsbGJhY2tJZGVudGlmaWVyKSkKLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsK
LX0KLQogdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNvbXBsZXRlVm9p
ZENhbGxiYWNrKENhbGxiYWNrSWRlbnRpZmllciBjYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlv
bk9yPHZvaWQ+JiYgcmVzdWx0KQogewogICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV92b2lkQ2Fs
bGJhY2tzLnRha2UoY2FsbGJhY2tJZGVudGlmaWVyKSkKQEAgLTI0Myw2NiArMjM3LDYgQEAgdm9p
ZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NIYW5k
bGUoRmlsZVN5c3RlbUhhbmRsZUkKICAgICB9KTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb246OmdldFNpemUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6SW50ZWdlckNhbGxiYWNr
JiYgY2FsbGJhY2spCi17Ci0gICAgaWYgKCFtX3Njb3BlKQotICAgICAgICByZXR1cm4gY2FsbGJh
Y2soRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7Ci0KLSAgICBhdXRvIGNhbGxiYWNr
SWRlbnRpZmllciA9IENhbGxiYWNrSWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7Ci0g
ICAgbV9pbnRlZ2VyQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2Fs
bGJhY2spKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrSWRlbnRpZmllciwgd29y
a2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rp
b24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVu
dGlmaWVyXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIG1haW5UaHJlYWRDYWxsYmFjayA9IFtj
YWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKV0o
YXV0byByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29w
KCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhy
ZWFkQ29weShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgewotICAgICAgICAgICAgICAg
IGlmIChhdXRvIGNvbm5lY3Rpb24gPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUp
LmZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigpKQotICAgICAgICAgICAgICAgICAgICBjb25u
ZWN0aW9uLT5jb21wbGV0ZUludGVnZXJDYWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIsIFdURk1v
dmUocmVzdWx0KSk7Ci0gICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgp
KTsKLSAgICAgICAgfTsKLQotICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlvbi0+Z2V0U2l6ZShp
ZGVudGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBXVEZNb3ZlKG1haW5UaHJlYWRDYWxs
YmFjaykpOwotICAgIH0pOwotfQotCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6dHJ1bmNhdGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgRmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIs
IHVpbnQ2NF90IHNpemUsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNr
JiYgY2FsbGJhY2spCi17Ci0gICAgaWYgKCFtX3Njb3BlKQotICAgICAgICByZXR1cm4gY2FsbGJh
Y2soRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7Ci0KLSAgICBhdXRvIGNhbGxiYWNr
SWRlbnRpZmllciA9IENhbGxiYWNrSWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7Ci0g
ICAgbV92b2lkQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJh
Y2spKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2Vy
VGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24g
PSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVudGlm
aWVyLCBzaXplXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIG1haW5UaHJlYWRDYWxsYmFjayA9
IFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFk
KV0oYXV0byByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3Nz
VGhyZWFkQ29weShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgewotICAgICAgICAgICAg
ICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2Nv
cGUpLmZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigpKQotICAgICAgICAgICAgICAgICAgICBj
b25uZWN0aW9uLT5jb21wbGV0ZVZvaWRDYWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIsIFdURk1v
dmUocmVzdWx0KSk7Ci0gICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgp
KTsKLSAgICAgICAgfTsKLQotICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlvbi0+dHJ1bmNhdGUo
aWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgc2l6ZSwgV1RGTW92ZShtYWluVGhy
ZWFkQ2FsbGJhY2spKTsKLSAgICB9KTsKLX0KLQotdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb246OmZsdXNoKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlm
aWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmIGNhbGxiYWNr
KQotewotICAgIGlmICghbV9zY29wZSkKLSAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwotCi0gICAgYXV0byBjYWxsYmFja0lkZW50aWZpZXIg
PSBDYWxsYmFja0lkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOwotICAgIG1fdm9pZENh
bGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAg
ICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFJl
ZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhy
ZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllcl0oKSBtdXRh
YmxlIHsKLSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBbY2FsbGJhY2tJZGVudGlm
aWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gcmVzdWx0KSBt
dXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9y
TW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0
KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBjb25u
ZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Y29tcGxl
dGVWb2lkQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAg
ICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPmZsdXNoKGlkZW50aWZpZXIsIGFjY2Vzc0hh
bmRsZUlkZW50aWZpZXIsIFdURk1vdmUobWFpblRocmVhZENhbGxiYWNrKSk7Ci0gICAgfSk7Ci19
Ci0KIHZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjbG9zZShGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpWb2lkQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fc2NvcGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2Vy
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXgg
NWJjYmZjMmFiMjk2MzMzNmY0YzVlYmZkYjI3NDMwMTlhMjg1NmJjZC4uMTJmYTFjMTgzOGNlNjE3
ODczYTE3OGYzZWJkMDBmMTA0MGIwYzUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNDksNyArNDksNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRSZXNvbHZlKENhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9uT3I8VmVjdG9yPFN0
cmluZz4+JiYpOwogICAgIHZvaWQgZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShDYWxsYmFja0lk
ZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZT4+JiYpOwogICAgIHZv
aWQgY29tcGxldGVWb2lkQ2FsbGJhY2soQ2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25Pcjx2
b2lkPiYmIHJlc3VsdCk7Ci0gICAgdm9pZCBjb21wbGV0ZUludGVnZXJDYWxsYmFjayhDYWxsYmFj
a0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHVpbnQ2NF90PiYmIHJlc3VsdCk7CiAgICAgdm9pZCBk
aWRHZXRIYW5kbGVOYW1lcyhDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPFZlY3RvcjxT
dHJpbmc+PiYmKTsKICAgICB2b2lkIGRpZEdldEhhbmRsZVdpdGhUeXBlKENhbGxiYWNrSWRlbnRp
ZmllciwgRXhjZXB0aW9uT3I8c3RkOjpwYWlyPEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBi
b29sPj4mJik7CiAKQEAgLTY4LDkgKzY3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldEhhbmRs
ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBHZXRIYW5k
bGVXaXRoVHlwZUNhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgdm9pZCBjcmVhdGVTeW5jQWNjZXNz
SGFuZGxlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb246OkdldEFjY2Vzc0hhbmRsZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2l6
ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkludGVnZXJDYWxsYmFjayYm
KSBmaW5hbDsKLSAgICB2b2lkIHRydW5jYXRlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIEZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQg
Zmx1c2goRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCBjbG9zZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb246OlZvaWRDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIFdlYWtQdHI8V29ya2VyR2xvYmFs
U2NvcGU+IG1fc2NvcGU7CkBAIC04MCw3ICs3Niw2IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxD
YWxsYmFja0lkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6UmVzb2x2ZUNh
bGxiYWNrPiBtX3Jlc29sdmVDYWxsYmFja3M7CiAgICAgSGFzaE1hcDxDYWxsYmFja0lkZW50aWZp
ZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0QWNjZXNzSGFuZGxlQ2FsbGJhY2s+
IG1fZ2V0QWNjZXNzSGFuZGxDYWxsYmFja3M7CiAgICAgSGFzaE1hcDxDYWxsYmFja0lkZW50aWZp
ZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrPiBtX3ZvaWRDYWxs
YmFja3M7Ci0gICAgSGFzaE1hcDxDYWxsYmFja0lkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbjo6SW50ZWdlckNhbGxiYWNrPiBtX2ludGVnZXJDYWxsYmFja3M7CiAgICAgSGFz
aE1hcDxDYWxsYmFja0lkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0
SGFuZGxlTmFtZXNDYWxsYmFjaz4gbV9nZXRIYW5kbGVOYW1lc0NhbGxiYWNrczsKICAgICBIYXNo
TWFwPENhbGxiYWNrSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRI
YW5kbGVXaXRoVHlwZUNhbGxiYWNrPiBtX2dldEhhbmRsZVdpdGhUeXBlQ2FsbGJhY2tzOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNzVm
YTQzODVkZDBhZTdlMDY1YjJmNjY0ZGRkYmNjMzdlODI5ZjY2NC4uMmM0NjJjMmUwY2Y2OGU3YzQw
NWUzYzJlMDkzNmVhMzMwZDVkMTc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKQEAgLTc3LDYgKzc3LDEyIEBAIHN0YXRpYyBIYXNoU2V0PFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlm
aWVyCiAgICAgcmV0dXJuIGlkZW50aWZpZXJzOwogfQogCitzdGF0aWMgUmVmPFdvcmtRdWV1ZT4g
c2hhcmVkRmlsZVN5c3RlbVN0b3JhZ2VRdWV1ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJlZjxXb3JrUXVldWU+PiBxdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiU2hhcmVkIEZpbGUg
U3lzdGVtIFN0b3JhZ2UgUXVldWUiLCAgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHkpKTsKKyAgICBy
ZXR1cm4gcXVldWUuZ2V0KCkuY29weVJlZigpOworfQorCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoV29ya2VyR2xvYmFsU2NvcGUpOwogCiBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xv
YmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSB0eXBlLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBw
YXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdvcmtlclRocmVhZCYgdGhyZWFk
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rp
b25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIp
CkBAIC0yMzIsNiArMjM4LDExIEBAIFdvcmtlclN0b3JhZ2VDb25uZWN0aW9uJiBXb3JrZXJHbG9i
YWxTY29wZTo6c3RvcmFnZUNvbm5lY3Rpb24oKQogICAgIHJldHVybiAqbV9zdG9yYWdlQ29ubmVj
dGlvbjsKIH0KIAordm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdl
VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKK3sKKyAgICBzaGFyZWRGaWxlU3lzdGVtU3Rv
cmFnZVF1ZXVlKCktPmRpc3BhdGNoKFdURk1vdmUodGFzaykpOworfQorCiBXb3JrZXJGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb24mIFdvcmtlckdsb2JhbFNjb3BlOjpnZXRGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb24oUmVmPEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbj4mJiBtYWluVGhy
ZWFkQ29ubmVjdGlvbikKIHsKICAgICBpZiAoIW1fZmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGQ1ODgw
ZWYyNzA3N2EzNjQ1ZDhmMzM1MTFiZmQ0NGI1OWM1YjkxNDEuLmFlM2IyZGJkYWM3ZmE0NGNlN2Uz
ZjMyMjIwMmMwMDhiM2VjODc4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmgKQEAgLTg4LDYgKzg4LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFdlYWtWYWx1
ZVR5cGUgPSBFdmVudFRhcmdldDo6V2Vha1ZhbHVlVHlwZTsKICAgICB1c2luZyBFdmVudFRhcmdl
dDo6d2Vha1B0ckZhY3Rvcnk7CiAgICAgV29ya2VyU3RvcmFnZUNvbm5lY3Rpb24mIHN0b3JhZ2VD
b25uZWN0aW9uKCk7CisgICAgc3RhdGljIHZvaWQgcG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhG
dW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
biYgZ2V0RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKFJlZjxGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24+JiYpOwogICAgIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiogZmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKCk7CiAgICAgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbiYgY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUVycm9yLmgK
aW5kZXggMDI3NzM3YTJiNDBiMmMyNzBlYWE2NGI4YTVmOWU2NDMwMWVlODc5Ni4uYzM2Zjc1MzRj
NmFiNWI2MmFhNGE1ZGQzNDY5MzRmMzFlZGIwOGJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VFcnJv
ci5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBjbGFzcyBG
aWxlU3lzdGVtU3RvcmFnZUVycm9yIDogdWludDhfdCB7CisgICAgQWNjZXNzSGFuZGxlQWN0aXZl
LAogICAgIEJhY2tlbmROb3RTdXBwb3J0ZWQsCiAgICAgRmlsZU5vdEZvdW5kLAogICAgIEludmFs
aWRNb2RpZmljYXRpb24sCkBAIC00MywxNCArNDQsMTYgQEAgZW51bSBjbGFzcyBGaWxlU3lzdGVt
U3RvcmFnZUVycm9yIDogdWludDhfdCB7CiBpbmxpbmUgV2ViQ29yZTo6RXhjZXB0aW9uIGNvbnZl
cnRUb0V4Y2VwdGlvbihGaWxlU3lzdGVtU3RvcmFnZUVycm9yIGVycm9yKQogewogICAgIHN3aXRj
aCAoZXJyb3IpIHsKKyAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkFjY2Vzc0hhbmRs
ZUFjdGl2ZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6Oklu
dmFsaWRTdGF0ZUVycm9yLCAiU29tZSBBY2Nlc3NIYW5kbGUgaXMgYWN0aXZlIl9zIH07CiAgICAg
Y2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpCYWNrZW5kTm90U3VwcG9ydGVkOgotICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6Tm90U3VwcG9ydGVkRXJyb3Is
ICJCYWNrZW5kIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24iIH07CisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpOb3RTdXBwb3J0ZWRFcnJvciwgIkJh
Y2tlbmQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbiJfcyB9OwogICAgIGNhc2UgRmls
ZVN5c3RlbVN0b3JhZ2VFcnJvcjo6RmlsZU5vdEZvdW5kOgogICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6Tm90Rm91bmRFcnJvciB9OwogICAgIGNhc2UgRmlsZVN5
c3RlbVN0b3JhZ2VFcnJvcjo6SW52YWxpZE1vZGlmaWNhdGlvbjoKICAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OkludmFsaWRNb2RpZmljYXRpb25FcnJvciB9Owog
ICAgIGNhc2UgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6SW52YWxpZE5hbWU6Ci0gICAgICAgIHJl
dHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJOYW1lIGlz
IGludmFsaWQiIH07CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3Jl
OjpVbmtub3duRXJyb3IsICJOYW1lIGlzIGludmFsaWQiX3MgfTsKICAgICBjYXNlIEZpbGVTeXN0
ZW1TdG9yYWdlRXJyb3I6OkludmFsaWRTdGF0ZToKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4
Y2VwdGlvbiB7IFdlYkNvcmU6OkludmFsaWRTdGF0ZUVycm9yIH07CiAgICAgY2FzZSBGaWxlU3lz
dGVtU3RvcmFnZUVycm9yOjpUeXBlTWlzbWF0Y2g6CkBAIC03Nyw2ICs4MCw3IEBAIG5hbWVzcGFj
ZSBXVEYgewogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OkZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3I+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBX
ZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IsCisgICAgICAgIFdlYktpdDo6RmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcjo6QWNjZXNzSGFuZGxlQWN0aXZlLAogICAgICAgICBXZWJLaXQ6OkZpbGVT
eXN0ZW1TdG9yYWdlRXJyb3I6OkJhY2tlbmROb3RTdXBwb3J0ZWQsCiAgICAgICAgIFdlYktpdDo6
RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6RmlsZU5vdEZvdW5kLAogICAgICAgICBXZWJLaXQ6OkZp
bGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkludmFsaWRNb2RpZmljYXRpb24sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5k
bGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlLmNwcAppbmRleCA2MDcxY2JjNTAxYTBiNzc2NjUxY2I1ZTI0Y2ZiNzFlZGI2
NDk1Y2U3Li40ZjcyY2QwM2YzNjhmNDU3NmQ0MzVkNjdlNjJlM2ExMWI5MmNmZWE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKQEAgLTYzLDEyICs2Myw2IEBAIEZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlOjpGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZShGaWxlU3lzdGVtU3RvcmFnZU1h
bmFnZXImIG1hbmFnCiAgICAgfQogfQogCi1GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6fkZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlKCkKLXsKLSAgICBpZiAobV9oYW5kbGUgIT0gRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KG1faGFuZGxlKTsKLX0KLQogdm9pZCBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6Y2xvc2UoKQog
ewogICAgIGlmICghbV9tYW5hZ2VyKQpAQCAtMTcyLDEzICsxNjYsMTMgQEAgRXhwZWN0ZWQ8Rmls
ZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OkFjY2Vzc0hhbmRsZUluZm8sIEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I+IEZpbGUKICAgICBpZiAoIWFjcXVpcmVkKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6SW52YWxpZFN0YXRlKTsKIAotICAgIG1faGFu
ZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9wYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1v
ZGU6OlJlYWRXcml0ZSk7Ci0gICAgaWYgKG1faGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmls
ZShtX3BhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlKTsKKyAgICBpZiAo
aGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duKTsK
IAotICAgIGF1dG8gaXBjSGFuZGxlID0gSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUobV9o
YW5kbGUpOworICAgIGF1dG8gaXBjSGFuZGxlID0gSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpjcmVh
dGUoaGFuZGxlKTsKICAgICBpZiAoIWlwY0hhbmRsZSkgewotICAgICAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUobV9oYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxl
KTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6
OkJhY2tlbmROb3RTdXBwb3J0ZWQpOwogICAgIH0KIApAQCAtMTg3LDYxICsxODEsMTEgQEAgRXhw
ZWN0ZWQ8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OkFjY2Vzc0hhbmRsZUluZm8sIEZpbGVTeXN0
ZW1TdG9yYWdlRXJyb3I+IEZpbGUKICAgICByZXR1cm4gc3RkOjpwYWlyIHsgKm1fYWN0aXZlU3lu
Y0FjY2Vzc0hhbmRsZSwgV1RGTW92ZSgqaXBjSGFuZGxlKSB9OwogfQogCi1FeHBlY3RlZDx1aW50
NjRfdCwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6Omdl
dFNpemUoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vz
c0hhbmRsZUlkZW50aWZpZXIpCi17Ci0gICAgaWYgKCFtX21hbmFnZXIpCi0gICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duKTsKLQotICAg
IGlmICghbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlIHx8ICptX2FjdGl2ZVN5bmNBY2Nlc3NIYW5k
bGUgIT0gYWNjZXNzSGFuZGxlSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd24pOwotCi0gICAgYXV0byBzaXplID0g
RmlsZVN5c3RlbTo6ZmlsZVNpemUobV9wYXRoKTsKLSAgICBpZiAoIXNpemUpCi0gICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duKTsKLQot
ICAgIHJldHVybiBzaXplLnZhbHVlKCk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OnRydW5jYXRlKFdlYkNvcmU6OkZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVy
LCB1aW50NjRfdCBzaXplKQotewotICAgIGlmICghbV9tYW5hZ2VyKQotICAgICAgICByZXR1cm4g
RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsKLQotICAgIGlmICghbV9hY3RpdmVTeW5j
QWNjZXNzSGFuZGxlIHx8ICptX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgIT0gYWNjZXNzSGFuZGxl
SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25v
d247Ci0KLSAgICBBU1NFUlQobV9oYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSk7Ci0gICAgYXV0byByZXN1bHQgPSBGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUo
bV9oYW5kbGUsIHNpemUpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gRmlsZVN5
c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsKLQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19
Ci0KLXN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGU6OmZsdXNoKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRp
ZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKQotewotICAgIGlmICghbV9tYW5hZ2VyKQotICAg
ICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsKLQotICAgIGlmICgh
bV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlIHx8ICptX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgIT0g
YWNjZXNzSGFuZGxlSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I6OlVua25vd247Ci0KLSAgICBBU1NFUlQobV9oYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgYXV0byByZXN1bHQgPSBGaWxlU3lzdGVtOjpm
bHVzaEZpbGUobV9oYW5kbGUpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gRmls
ZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsKLQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci19Ci0KIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGU6OmNsb3NlKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRl
bnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKQogewogICAgIGlmICghbV9hY3RpdmVTeW5j
QWNjZXNzSGFuZGxlIHx8ICptX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgIT0gYWNjZXNzSGFuZGxl
SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25v
d247CiAKLSAgICBBU1NFUlQobV9oYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSk7Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1faGFuZGxlKTsKLQogICAg
IGlmICghbV9tYW5hZ2VyKQogICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6
VW5rbm93bjsKIApAQCAtMjc4LDcgKzIyMiw3IEBAIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6Om1vdmUoV2ViQ29yZTo6RmlsCiAK
ICAgICAvLyBEbyBub3QgbW92ZSBmaWxlIGlmIHRoZXJlIGlzIG9uZ29pbmcgb3BlcmF0aW9uLgog
ICAgIGlmIChtX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUpCi0gICAgICAgIHJldHVybiBGaWxlU3lz
dGVtU3RvcmFnZUVycm9yOjpJbnZhbGlkU3RhdGU7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVt
U3RvcmFnZUVycm9yOjpBY2Nlc3NIYW5kbGVBY3RpdmU7CiAKICAgICBpZiAobV9tYW5hZ2VyLT5n
ZXRUeXBlKGRlc3RpbmF0aW9uSWRlbnRpZmllcikgIT0gVHlwZTo6RGlyZWN0b3J5KQogICAgICAg
ICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VHlwZU1pc21hdGNoOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGUuaAppbmRleCAzZGFmNDcyZjcxNmM1M2RiNWM0YzJiOGU5NThmNTc0Zjhl
ZWVhZGQ4Li5mYjkyOTgxNDFiMGRiYzM4MWZhOGIzYjM4MTdlNjhjYTAxODk3OWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmls
ZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaApAQCAtNDQsNyArNDQsNiBAQCBjbGFzcyBGaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxGaWxlU3lzdGVtU3RvcmFnZUhh
bmRsZSwgVwogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBGaWxlLCBE
aXJlY3RvcnksIEFueSB9OwogICAgIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlKEZpbGVTeXN0ZW1T
dG9yYWdlTWFuYWdlciYsIFR5cGUsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIG5hbWUpOwotICAg
IH5GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZSgpOwogCiAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbUhh
bmRsZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsg
fQogICAgIGNvbnN0IFN0cmluZyYgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQpAQCAt
NjIsOSArNjEsNiBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBBY2Nlc3NIYW5kbGVJbmZvID0gc3Rk
OjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgSVBD
OjpTaGFyZWRGaWxlSGFuZGxlPjsKICAgICBFeHBlY3RlZDxBY2Nlc3NIYW5kbGVJbmZvLCBGaWxl
U3lzdGVtU3RvcmFnZUVycm9yPiBjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKCk7Ci0gICAgRXhwZWN0
ZWQ8dWludDY0X3QsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGdldFNpemUoV2ViQ29yZTo6Rmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyKTsKLSAgICBzdGQ6Om9wdGlvbmFsPEZp
bGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHRydW5jYXRlKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSk7Ci0gICAgc3RkOjpvcHRpb25hbDxG
aWxlU3lzdGVtU3RvcmFnZUVycm9yPiBmbHVzaChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIpOwogICAgIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VF
cnJvcj4gY2xvc2UoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
KTsKIAogcHJpdmF0ZToKQEAgLTc2LDcgKzcyLDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9w
YXRoOwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXI+IG1fYWN0aXZlU3luY0FjY2Vzc0hhbmRs
ZTsKLSAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9oYW5kbGUgeyBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggY2U1ODExNDAzNGY5OGVlMzI2
ZGFiNzdkYWZhZjU2MjNkZGQyMjAwOS4uNGU0YzA4NTgzMjFlMjUyYWFkODllMzQzZDdjYmE5ZjE4
YjU5NTcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI1Myw0MCArMjUzLDEy
IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKFdl
YkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVuCiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yOjpVbmtub3duKSk7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGUtPmNyZWF0ZVN5
bmNBY2Nlc3NIYW5kbGUoKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRT
aXplRm9yQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBh
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHVp
bnQ2NF90LCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17
Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBhdXRvIGhhbmRsZSA9IG1f
ZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS0+Z2V0SGFuZGxlKGlkZW50aWZpZXIpOwot
ICAgIGlmICghaGFuZGxlKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobWFrZVVu
ZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bikpOwotCi0gICAgY29tcGxl
dGlvbkhhbmRsZXIoaGFuZGxlLT5nZXRTaXplKGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpKTsKLX0K
LQotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnRydW5jYXRlRm9yQWNjZXNzSGFuZGxlKFdl
YkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVy
LCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Rmls
ZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgYXV0byBoYW5kbGUgPSBtX2ZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlUmVnaXN0cnktPmdldEhhbmRsZShpZGVudGlmaWVyKTsKLSAgICBpZiAoIWhh
bmRsZSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I6OlVua25vd24pOwotCi0gICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlLT50cnVuY2F0
ZShhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBzaXplKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpmbHVzaEZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGF1dG8gaGFu
ZGxlID0gbV9maWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LT5nZXRIYW5kbGUoaWRlbnRp
Zmllcik7Ci0gICAgaWYgKCFoYW5kbGUpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duKTsKKyAgICBhdXRvIHJlc3VsdCA9IGhh
bmRsZS0+Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZSgpOworICAgIGF1dG8gZmlsZUhhbmRsZSA9IHJl
c3VsdCA/IHJlc3VsdC52YWx1ZSgpLnNlY29uZCA6IElQQzo6U2hhcmVkRmlsZUhhbmRsZSgpOwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAKLSAgICBjb21wbGV0aW9u
SGFuZGxlcihoYW5kbGUtPmZsdXNoKGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpKTsKKyAgICAvLyBD
bG9zZSB0aGUgZmlsZSBoYW5kbGUgaW4gbmV0d29yayBwcm9jZXNzLgorICAgIGZpbGVIYW5kbGUu
Y2xvc2UoKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsb3NlQWNjZXNzSGFu
ZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNv
cmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5o
CmluZGV4IGUyNTUwNDE4OTYwZmQ0ZjdlMzhjODQxYzQwOGYzZjQwNWFkNjYzNzguLmIxNmNjMjU4
OGUzZmU2ZTFmYzVkMWVmNGRlNGNhMmZjODM1YzU4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
LmgKQEAgLTc5LDkgKzc5LDYgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEFjY2Vzc0hhbmRsZUlu
Zm8gPSBzdGQ6OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlm
aWVyLCBJUEM6OlNoYXJlZEZpbGVIYW5kbGU+OwogICAgIHZvaWQgY3JlYXRlU3luY0FjY2Vzc0hh
bmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxBY2Nlc3NIYW5kbGVJbmZvLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9y
Pik+JiYpOwotICAgIHZvaWQgZ2V0U2l6ZUZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHVpbnQ2NF90LCBGaWxl
U3lzdGVtU3RvcmFnZUVycm9yPik+JiYpOwotICAgIHZvaWQgdHJ1bmNhdGVGb3JBY2Nlc3NIYW5k
bGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7Ci0g
ICAgdm9pZCBmbHVzaEZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRl
bnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4pPiYmKTsKICAgICB2b2lkIGNsb3NlQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1I
YW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3Rv
cmFnZUVycm9yPik+JiYpOwogICAgIHZvaWQgZ2V0SGFuZGxlTmFtZXMoV2ViQ29yZTo6RmlsZVN5
c3RlbUhhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8VmVj
dG9yPFN0cmluZz4sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7CiAgICAgdm9pZCBnZXRI
YW5kbGUoSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIsIFN0cmluZyYmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpw
YWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBib29sPiwgRmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcj4pPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3Nh
Z2VzLmluCmluZGV4IDFmYmJmMzdiYWFkN2QwNDNjODc1Y2U4ZGYxYmFiOWExNTc2YTc5MDUuLmI0
ZmFhZjdhY2U2NzVkYmJlMDRkNjNkMWNiODMwNzEzNjI5NmNlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMzYsOSArMzYsNiBAQAogICAgIE1vdmUo
V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6
RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBTdHJpbmcg
bmV3TmFtZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9y
PiByZXN1bHQpIEFzeW5jCiAKICAgICBDcmVhdGVTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZp
bGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChFeHBlY3RlZDxzdGQ6OnBh
aXI8V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBJUEM6OlNo
YXJlZEZpbGVIYW5kbGU+LCBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkg
QXN5bmMKLSAgICBHZXRTaXplRm9yQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSAtPiAoRXhwZWN0ZWQ8dWludDY0
X3QsIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwotICAgIFRy
dW5jYXRlRm9yQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
ciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXplKSAtPiAoc3RkOjpvcHRpb25h
bDxXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKLSAgICBGbHVz
aEZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNj
ZXNzSGFuZGxlSWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpGaWxlU3lzdGVt
U3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jCiAgICAgQ2xvc2VBY2Nlc3NIYW5kbGUoV2ViQ29y
ZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5
c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpIC0+
IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBB
c3luYwogICAgIEdldEhhbmRsZU5hbWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlm
aWVyIGlkZW50aWZpZXIpIC0+IChFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgV2ViS2l0OjpGaWxl
U3lzdGVtU3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jCiAgICAgR2V0SGFuZGxlKFdlYkNvcmU6
OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyBuYW1lKSAtPiAo
RXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBi
b29sPiwgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jIFdhbnRz
Q29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
RmlsZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFu
ZGxlLmNwcAppbmRleCA4ZWJjZTk4MDA4N2MwNzViMDIzYjU4YWVhMmUxNTU4NjBkNzY5NDY0Li42
NGU0MjE3ODAxYTIxZjA1ZDg4YjRlNjE2OGQ3MGI4OWY5NWE3ZTAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmNwcApAQCAtMjgsNiArMjgsMTEg
QEAKIAogbmFtZXNwYWNlIElQQyB7CiAKK3ZvaWQgU2hhcmVkRmlsZUhhbmRsZTo6Y2xvc2UoKQor
eworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2hhbmRsZSk7Cit9CisKICNpZiAhUExBVEZP
Uk0oQ09DT0EpCiAKIHN0ZDo6b3B0aW9uYWw8U2hhcmVkRmlsZUhhbmRsZT4gU2hhcmVkRmlsZUhh
bmRsZTo6Y3JlYXRlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuaAppbmRleCBhNDZhYzg5MDUwN2Vi
NjkzYTEwN2I0OTllNTQzNjA2YTc5N2U0NDlhLi41ODVhZDk5MzcyNzJjMmQwYWE5ZDUzN2MyMzdj
ODNhNmI1NjA4YjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRGaWxlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmls
ZUhhbmRsZS5oCkBAIC0zOSw5ICszOSw5IEBAIHB1YmxpYzoKIAogICAgIFNoYXJlZEZpbGVIYW5k
bGUoKSA9IGRlZmF1bHQ7CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSgpIHsgcmV0dXJuIG1faGFuZGxlOyB9CisgICAgdm9pZCBjbG9zZSgpOwogCiAgICAgdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotCiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2hhcmVk
RmlsZUhhbmRsZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IGQxZDc5ODVlNjVl
ZGQyNTllZjkzMjVmMjk0ZjA0YzhlMDYxOGZiZDIuLmYwMWYyMWZmOGY2MTYzYWU1M2U0ODczMjQy
Y2ZlNWI3Zjk4NmZkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCkBAIC0xMzQsMzkgKzEzNCw2IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1I
CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRT
aXplKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNv
cmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVu
dGlmaWVyLCBJbnRlZ2VyQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAo
IW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6
OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIg
fSk7Ci0KLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRTaXplRm9yQWNjZXNzSGFuZGxlKGlkZW50aWZpZXIsIGFj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUgewotICAgICAgICBpZiAoIXJlc3Vs
dCkKLSAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihjb252ZXJ0VG9FeGNlcHRp
b24ocmVzdWx0LmVycm9yKCkpKTsKLQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQu
dmFsdWUoKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjp0cnVuY2F0ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNz
SGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSwgVm9pZENhbGxiYWNrJiYgY29tcGxldGlv
bkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3Is
ICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOwotCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6VHJ1bmNhdGVGb3JBY2Nl
c3NIYW5kbGUoaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgc2l6ZSksIFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGVycm9yKSBt
dXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udmVydFRvRXhjZXB0aW9uT3Io
ZXJyb3IpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b246OmZsdXNoKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBWb2lkQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBp
ZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNv
cmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9z
dCIgfSk7Ci0KLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpGbHVzaEZvckFjY2Vzc0hhbmRsZShpZGVudGlmaWVyLCBh
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihjb252ZXJ0VG9FeGNlcHRpb25PcihlcnJvcikpOwotICAgIH0pOwotfQotCiB2b2lk
IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y2xvc2UoV2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nl
c3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFZvaWRDYWxsYmFjayYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IGE3NmE3ZDEzYzMwZDU5
ODFmZTcxYTc3NGNkNGQwNWMyMTY0NzE0MTAuLmQ1NzEzZjhhZDIxYjEyZTYxY2E0YWVhNWFhODUx
MWVkZTNhNjg2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uLmgKQEAgLTgzLDkgKzgzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldEhhbmRsZShXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEhhbmRsZVdpdGhUeXBlQ2FsbGJhY2smJikgZmlu
YWw7CiAKICAgICB2b2lkIGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
R2V0QWNjZXNzSGFuZGxlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBnZXRTaXplKFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6SW50ZWdlckNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdHJ1bmNhdGUoV2ViQ29yZTo6
RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBmbHVzaChXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b246OlZvaWRDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKFdlYkNvcmU6OkZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENh
bGxiYWNrJiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGVlNGJmOGRjNTliOTg4ODE1NWQ3NWMzYjE5MjQ1MzVjODVkNzAzY2EuLjEz
MTg2NDg2MDc2NWRkMTVjNGM4YjBmYTk1YTcwYTcyNzc2ZmE0OWMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMS0xMS0wMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAg
ICAgICBQZXJmb3JtIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlIG9wZXJhdGlvbnMgaW4gd2Vi
IHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMjE0NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQ4MDk0Mjg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2ZpbGVzeXN0ZW1h
Y2Nlc3MvaGFuZGxlLW1vdmUtd29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdl
L2ZpbGVzeXN0ZW1hY2Nlc3MvcmVzb3VyY2VzL2hhbmRsZS1tb3ZlLmpzOgorICAgICAgICAoYXN5
bmMgdGVzdCk6CisKIDIwMjEtMTEtMDEgIEF5dW1pIEtvamltYSAgPGF5dW1pX2tvamltYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgWyBpT1MgRGVidWcgXSBodHRwL3dwdC9wdXNoLWFwaSB0ZXN0cyBh
cmUgZmxha3kgZmFpbGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5
c3RlbWFjY2Vzcy9oYW5kbGUtbW92ZS13b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL2hhbmRsZS1tb3ZlLXdvcmtlci1leHBlY3RlZC50eHQK
aW5kZXggMmJiODhiNDg3MWYxNWE3MzVhNzhjZjljMTIwYWZiMmQ5YjI5ODQ5ZC4uNjQ1OWIwNGNl
NmQ0ZjU1YjQ3YWQyZTNmNmYwOTA2ZmRlMWNlZmU3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL2hhbmRsZS1tb3ZlLXdvcmtlci1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL2hhbmRsZS1tb3ZlLXdv
cmtlci1leHBlY3RlZC50eHQKQEAgLTE4LDcgKzE4LDcgQEAgUEFTUyBbV29ya2VyXSBtb3ZlRmls
ZUVycm9yLnRvU3RyaW5nKCkgaXMgIlVua25vd25FcnJvcjogVGhlIG9wZXJhdGlvbiBmYWlsZWQg
Zm8KIFBBU1MgW1dvcmtlcl0gbW92ZUZpbGVFcnJvci50b1N0cmluZygpIGlzICJVbmtub3duRXJy
b3I6IE5hbWUgaXMgaW52YWxpZCIKIFBBU1MgW1dvcmtlcl0gbW92ZUZpbGVFcnJvci50b1N0cmlu
ZygpIGlzICJVbmtub3duRXJyb3I6IE5hbWUgaXMgaW52YWxpZCIKIFtXb3JrZXJdIFRlc3QgbW92
ZSB3aXRoIG9wZW4gYWNjZXNzIGhhbmRsZToKLVBBU1MgW1dvcmtlcl0gbW92ZUZpbGVFcnJvci50
b1N0cmluZygpIGlzICJJbnZhbGlkU3RhdGVFcnJvcjogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZh
bGlkIHN0YXRlLiIKK1BBU1MgW1dvcmtlcl0gbW92ZUZpbGVFcnJvci50b1N0cmluZygpIGlzICJJ
bnZhbGlkU3RhdGVFcnJvcjogU29tZSBBY2Nlc3NIYW5kbGUgaXMgYWN0aXZlIgogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvcmVzb3VyY2VzL2hhbmRsZS1tb3ZlLmpz
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL3Jlc291cmNlcy9oYW5kbGUt
bW92ZS5qcwppbmRleCBkOTFkOTFiYzUzOTJmYTAwNTg3ZWVlZDVhMTMwZmFmYzg1NTJmNjFhLi45
YzhkY2YxNTNlYmNjMDI3NWEzY2MyMThkNjg2ODRjYjNmNTgwYTkwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvcmVzb3VyY2VzL2hhbmRsZS1tb3ZlLmpz
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9yZXNvdXJjZXMvaGFu
ZGxlLW1vdmUuanMKQEAgLTEwNSw3ICsxMDUsNyBAQCBhc3luYyBmdW5jdGlvbiB0ZXN0KCkgewog
ICAgICAgICAgICAgICAgIHRlc3RFcnJvciA9ICAiTW92ZWQgZmlsZSBiYWNrIHRvIGRpckhhbmRs
ZTEgdW5leHBlY3RlZGx5IjsKICAgICAgICAgICAgIH0sIChlcnJvcikgPT4gewogICAgICAgICAg
ICAgICAgIG1vdmVGaWxlRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIm1vdmVGaWxlRXJyb3IudG9TdHJpbmcoKSIsICJJbnZhbGlkU3RhdGVFcnJv
cjogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLiIpOworICAgICAgICAgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygibW92ZUZpbGVFcnJvci50b1N0cmluZygpIiwgIkludmFs
aWRTdGF0ZUVycm9yOiBTb21lIEFjY2Vzc0hhbmRsZSBpcyBhY3RpdmUiKTsKICAgICAgICAgICAg
IH0pOwogCiAgICAgICAgICAgICBpZiAodGVzdEVycm9yKSB7Cg==
</data>
<flag name="commit-queue"
          id="467680"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443039</attachid>
            <date>2021-11-01 17:11:13 -0700</date>
            <delta_ts>2021-11-01 17:31:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232146-20211101171112.patch</filename>
            <type>text/plain</type>
            <size>52155</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjlmNWM4YmMzZjc2MTIw
ODI1ODI4NTZhN2EyNjJiNWIwMjVmODg5Yy4uY2U3ZTM5ODhmZjE5ZTJkNTNkMjBjNzFmNGE0MzEw
MGI1ZWFkYmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTExLTAxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFBlcmZvcm0gRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGUgb3BlcmF0aW9ucyBpbiB3ZWIgcHJvY2VzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMTQ2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84NDgwOTQyOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICB0cnVuY2F0ZSgpLCBnZXRTaXplKCkgYW5kIGZsdXNoKCkgb3BlcmF0aW9u
cyBhcmUgbm93IHBlcmZvcm1lZCBvbiBhIGdsb2JhbCBXb3JrUXVldWUgaW4gd2ViIHByb2Nlc3Mu
CisKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZpbGVIYW5kbGU6OmdldFNpemUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZpbGVIYW5kbGU6OnRydW5j
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1GaWxlSGFuZGxlOjpm
bHVzaCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVT
eXN0ZW1GaWxlSGFuZGxlLmg6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0Zp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3Rl
bWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6fkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjp0cnVuY2F0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Z2V0U2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Zmx1c2gp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3NlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjbG9zZUludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjbG9z
ZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6
OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6Ondy
aXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjb21w
bGV0ZVByb21pc2UpOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZS5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6Y29tcGxldGVJbnRlZ2VyQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRTaXplKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6dHJ1bmNh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpmbHVzaCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkRmls
ZVN5c3RlbVN0b3JhZ2VRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29w
ZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oOgorCiAyMDIxLTExLTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQWxpZ24gWFNMVFByb2Nlc3NvciB3aXRoIEJsaW5rIGFuZCBnZXQgY2xv
c2VyIHRvIEdlY2tvIGluIHRoZSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ2NGFhMWJjMjNhYTFmY2Uw
YTQxNWRmNWExN2JhZTg5NjM4YzM4MGMuLmFhNjEzNjQ5NmIzMzdhYjdkN2NlMzQzZGRhZGUwYjQ1
YzhiZjc1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTEtMDEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgUGVyZm9ybSBGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZSBvcGVyYXRpb25zIGluIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIxNDYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg0ODA5NDI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5ldHdvcmsgcHJvY2VzcyBubyBsb25nZXIgbmVlZHMgdG8gaG9sZCBvcGVuIGZp
bGUgaGFuZGxlIGZvciBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS4gTm93IGl0IGNyZWF0ZXMg
YW4gb3BlbiAKKyAgICAgICAgZmlsZSBoYW5kbGUsIHBhc3MgaXQgdG8gd2ViIHByb2Nlc3MgYW5k
IGNsb3NlIGl0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVt
U3RvcmFnZUVycm9yLmg6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb0V4Y2VwdGlvbik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpjcmVhdGVTeW5j
QWNjZXNzSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6
OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6Om1vdmUp
OgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6fkZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGU6OmdldFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZTo6dHJ1bmNhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpGaWxl
U3lzdGVtU3RvcmFnZUhhbmRsZTo6Zmx1c2gpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaDoKKyAgICAgICAgKCk6IERl
bGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmdldFNpemVGb3JBY2Nlc3NIYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnRydW5jYXRlRm9yQWNjZXNzSGFuZGxlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmbHVzaEZvckFjY2Vzc0hh
bmRsZSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkRmlsZUhhbmRsZS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEZpbGVIYW5kbGU6OmNsb3Nl
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpn
ZXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjp0cnVuY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Zmx1c2gpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmg6CisK
IDIwMjEtMTEtMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGEgdGVzdGluZyBwcmVmZXJlbmNlIHRvIHJlcGxheSBDRyBkaXNwbGF5IGxpc3Rz
IG1hbnVhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1h
Y2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmNwcAppbmRleCAyZGJiNGUzYTgw
MGZlMmY0NTg5NjE3ZGExN2MzYzUzMzA5MDFkYjFkLi4xNzUxMWYwYWUwOGJmNzJhOTQxMjMzM2Q1
YTg1N2QxYjIwZmZkMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKQEAgLTc1
LDMwICs3NSw2IEBAIHZvaWQgRmlsZVN5c3RlbUZpbGVIYW5kbGU6OmNyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUoRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjCiAgICAgfSk7CiB9CiAKLXZvaWQg
RmlsZVN5c3RlbUZpbGVIYW5kbGU6OmdldFNpemUoRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhjZXB0aW9uT3I8dWludDY0X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlm
IChpc0Nsb3NlZCgpKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJIYW5kbGUgaXMgY2xvc2VkIl9zIH0pOwotCi0gICAgY29u
bmVjdGlvbigpLmdldFNpemUoaWRlbnRpZmllcigpLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgRmlsZVN5c3RlbUZpbGVIYW5k
bGU6OnRydW5jYXRlKEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAg
ICBpZiAoaXNDbG9zZWQoKSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiSGFuZGxlIGlzIGNsb3NlZCJfcyB9KTsKLQotICAg
IGNvbm5lY3Rpb24oKS50cnVuY2F0ZShpZGVudGlmaWVyKCksIGFjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIsIHNpemUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQotdm9pZCBGaWxlU3lz
dGVtRmlsZUhhbmRsZTo6Zmx1c2goRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8dm9pZD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGlzQ2xvc2VkKCkp
Ci0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgIkhhbmRsZSBpcyBjbG9zZWQiX3MgfSk7Ci0KLSAgICBjb25uZWN0aW9uKCkuZmx1
c2goaWRlbnRpZmllcigpLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Ci19Ci0KIHZvaWQgRmlsZVN5c3RlbUZpbGVIYW5kbGU6OmNsb3NlKEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChpc0Nsb3NlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUu
aAppbmRleCBiYWE0MmY4ZDkyMzFhYWRkZTI1MjljZmVjMjAxYjM0ZWI1NWYyOTE1Li44Y2VlMTJj
YmRmYmY0MDA5MmY3YTA0MjBhZDkxYzcxYTgyYWMyOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVI
YW5kbGUuaApAQCAtNDEsOSArNDEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRGaWxlKERPTVBy
b21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RmlsZT4+JiYpOwogCiAgICAgdm9pZCBjcmVhdGVT
eW5jQWNjZXNzSGFuZGxlKERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGU+PiYmKTsKLSAgICB2b2lkIGdldFNpemUoRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9y
PHVpbnQ2NF90PiYmKT4mJik7Ci0gICAgdm9pZCB0cnVuY2F0ZShGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKTsKLSAgICB2b2lkIGZsdXNoKEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25Pcjx2b2lkPiYmKT4mJik7CiAgICAgdm9pZCBjbG9zZShGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8
dm9pZD4mJik+JiYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbi5oCmluZGV4IDczZWJmOTljNDVlNDE2MWRjZTQxMDY4M2VkMzg0MTU5NzQ4YWJhODcu
Ljc4ZTQ2OTIwNWY2MWE0MzkzYjZjNTcyNDgzZjQ3NGM1MzYwNzBiM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3Mv
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTU4LDkgKzU4LDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFbnRyeShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGRlbGV0ZVJlY3Vyc2l2ZWx5LCBWb2lkQ2FsbGJhY2sm
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlm
aWVyLCBGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgUmVzb2x2ZUNhbGxiYWNrJiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU3luY0FjY2Vzc0hhbmRsZShGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciwgR2V0QWNjZXNzSGFuZGxlQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRTaXplKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIEludGVnZXJDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHRydW5jYXRlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIFZvaWRDYWxsYmFjayYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZsdXNoKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFZvaWRDYWxsYmFjayYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFZvaWRDYWxsYmFjayYmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldEhhbmRsZU5hbWVzKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVy
LCBHZXRIYW5kbGVOYW1lc0NhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SGFu
ZGxlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIEdldEhh
bmRsZVdpdGhUeXBlQ2FsbGJhY2smJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZS5jcHAKaW5kZXggYTQ2ZTBkYzMwNjNlM2VmMjY2MjZkMGQ5YjIwMWEzMDVjZWRl
OWE2MS4uYmQ2ZWM4MGMyMDg3NjU3MjlkNmI1NzExOTRiY2RmZTNjZjBiOTFjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1h
Y2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUZpbGVIYW5kbGUu
aCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIldvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTUwLDcgKzUxLDE5IEBAIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
CiAKIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjp+RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGUoKQogewotICAgIEFTU0VSVChtX2Nsb3NlUmVzdWx0KTsKKyAgICBBU1NFUlQoaXNDbG9zaW5n
T3JDbG9zZWQoKSk7CisgICAgaWYgKG1fY2xvc2VSZXN1bHQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIFRhc2sgcmVwbGllcyBtYXkgYmUgc2NoZWR1bGVkIHRvIFdvcmtlclJ1bkxvb3AgYnV0
IGRvIG5vdCBydW4uCisgICAgYXV0byBwZW5kaW5nUHJvbWlzZXMgPSBzdGQ6OmV4Y2hhbmdlKG1f
cGVuZGluZ1Byb21pc2VzLCB7IH0pOworICAgIGZvciAoYXV0byYgcHJvbWlzZSA6IHBlbmRpbmdQ
cm9taXNlcykgeworICAgICAgICBzdGQ6OnZpc2l0KFtdKGF1dG8mIHByb21pc2UpIHsKKyAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIkFjY2Vzc0hh
bmRsZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQiX3MgfSk7CisgICAgICAgIH0sIHByb21pc2Up
OworICAgIH0KKworICAgIGNsb3NlQmFja2VuZChDbG9zZU1vZGU6OlN5bmMpOwogfQogCiBib29s
IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjppc0Nsb3NpbmdPckNsb3NlZCgpIGNvbnN0CkBA
IC02MywxMiArNzYsMTYgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6dHJ1bmNh
dGUodW5zaWduZWQgbG9uZyBsb25nIHNpemUsIERPTVByb21pc2VEZWYKICAgICBpZiAoaXNDbG9z
aW5nT3JDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzSGFuZGxlIGlzIGNsb3Npbmcgb3IgY2xvc2VkIl9z
IH0pOwogCi0gICAgbV9wZW5kaW5nT3BlcmF0aW9uQ291bnQrKzsKLSAgICBtX3NvdXJjZS0+dHJ1
bmNhdGUobV9pZGVudGlmaWVyLCBzaXplLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAg
ICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPm1fcGVuZGluZ09wZXJhdGlv
bkNvdW50LS07CisgICAgYXV0byogc2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIXNjb3BlKQorICAgICAgICByZXR1
cm4gcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJDb250ZXh0
IGlzIGludmFsaWQiX3MgfSk7CiAKLSAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1
bHQpKTsKKyAgICBtX3BlbmRpbmdQcm9taXNlcy5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7Cisg
ICAgV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIGZpbGUgPSBtX2ZpbGUsIHNpemUsIHdvcmtlclRocmVhZCA9
IFJlZiB7IHNjb3BlLT50aHJlYWQoKSB9XSgpIG11dGFibGUgeworICAgICAgICB3b3JrZXJUaHJl
YWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc3Vj
Y2VzcyA9IEZpbGVTeXN0ZW06OnRydW5jYXRlRmlsZShmaWxlLCBzaXplKV0oYXV0byYpIG11dGFi
bGUgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlz
LT5jb21wbGV0ZVByb21pc2Uoc3VjY2VzcyA/IEV4Y2VwdGlvbk9yPHZvaWQ+IHsgfSA6IEV4Y2Vw
dGlvbiB7IFVua25vd25FcnJvciB9KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTc3
LDEyICs5NCwxNiBAQCB2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpnZXRTaXplKERP
TVByb21pc2VEZWZlcnJlZDxJRExVbnNpZ25lZExvbmdMb25nPgogICAgIGlmIChpc0Nsb3NpbmdP
ckNsb3NlZCgpKQogICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3NIYW5kbGUgaXMgY2xvc2luZyBvciBjbG9zZWQiX3MgfSk7
CiAKLSAgICBtX3BlbmRpbmdPcGVyYXRpb25Db3VudCsrOwotICAgIG1fc291cmNlLT5nZXRTaXpl
KG1faWRlbnRpZmllciwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFr
VGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX3BlbmRpbmdPcGVyYXRpb25Db3VudC0tOwor
ICAgIGF1dG8qIHNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKCFzY29wZSkKKyAgICAgICAgcmV0dXJuIHByb21pc2Uu
cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQ29udGV4dCBpcyBpbnZhbGlk
Il9zIH0pOwogCi0gICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CisgICAg
bV9wZW5kaW5nUHJvbWlzZXMuYXBwZW5kKFdURk1vdmUocHJvbWlzZSkpOworICAgIFdvcmtlckds
b2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBmaWxlID0gbV9maWxlLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBzY29wZS0+dGhy
ZWFkKCkgfV0oKSBtdXRhYmxlIHsKKyAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dFRhc2soW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHN1Y2Nlc3MgPSBGaWxlU3lzdGVt
OjpmaWxlU2l6ZShmaWxlKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHdlYWtU
aGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jb21wbGV0ZVByb21pc2Uoc3VjY2VzcyA/
IEV4Y2VwdGlvbk9yPHVuc2lnbmVkIGxvbmcgbG9uZz4geyAodW5zaWduZWQgbG9uZyBsb25nKShz
dWNjZXNzLnZhbHVlKSB9IDogRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yIH0pOworICAgICAgICB9
KTsKICAgICB9KTsKIH0KIApAQCAtOTEsMjAgKzExMiwyMiBAQCB2b2lkIEZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlOjpmbHVzaChET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQog
ICAgIGlmIChpc0Nsb3NpbmdPckNsb3NlZCgpKQogICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWpl
Y3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3NIYW5kbGUgaXMgY2xvc2lu
ZyBvciBjbG9zZWQiX3MgfSk7CiAKLSAgICBtX3BlbmRpbmdPcGVyYXRpb25Db3VudCsrOwotICAg
IG1fc291cmNlLT5mbHVzaChtX2lkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byByZXN1bHQpIG11dGFibGUgewot
ICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9wZW5kaW5nT3Bl
cmF0aW9uQ291bnQtLTsKKyAgICBhdXRvKiBzY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghc2NvcGUpCisgICAgICAg
IHJldHVybiBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkNv
bnRleHQgaXMgaW52YWxpZCJfcyB9KTsKIAotICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3Zl
KHJlc3VsdCkpOworICAgIG1fcGVuZGluZ1Byb21pc2VzLmFwcGVuZChXVEZNb3ZlKHByb21pc2Up
KTsKKyAgICBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhbd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZmlsZSA9IG1fZmlsZSwgd29ya2VyVGhyZWFkID0g
UmVmIHsgc2NvcGUtPnRocmVhZCgpIH1dKCkgbXV0YWJsZSB7CisgICAgICAgIHdvcmtlclRocmVh
ZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzdWNj
ZXNzID0gRmlsZVN5c3RlbTo6Zmx1c2hGaWxlKGZpbGUpXShhdXRvJikgbXV0YWJsZSB7CisgICAg
ICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNvbXBsZXRl
UHJvbWlzZShzdWNjZXNzID8gRXhjZXB0aW9uT3I8dm9pZD4geyB9IDogRXhjZXB0aW9uIHsgVW5r
bm93bkVycm9yIH0pOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAogdm9pZCBGaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZTo6Y2xvc2UoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSkKIHsKLSAgICBtX3BlbmRpbmdPcGVyYXRpb25Db3VudCsrOwogICAgIGNsb3NlSW50ZXJuYWwo
W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHdlYWtUaGlzLT5tX3BlbmRpbmdPcGVy
YXRpb25Db3VudC0tOwogICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwog
ICAgIH0pOwogfQpAQCAtMTE5LDEyICsxNDIsMzEgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZTo6Y2xvc2VJbnRlcm5hbChDbG9zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgaWYg
KGlzQ2xvc2luZykKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KG1fZmlsZSk7Ci0gICAgbV9zb3VyY2UtPmNsb3NlKG1faWRlbnRpZmllciwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShhdXRvIHJlc3VsdCkgewotICAgICAgICBkaWRDbG9z
ZShXVEZNb3ZlKHJlc3VsdCkpOworICAgIGF1dG8qIHNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgQVNTRVJUKHNjb3BlKTsK
KworICAgIEFTU0VSVChtX2ZpbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSk7CisgICAgV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2so
W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGZpbGUgPSBzdGQ6OmV4Y2hhbmdlKG1fZmls
ZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSksIHdvcmtlclRocmVhZCA9
IFJlZiB7IHNjb3BlLT50aHJlYWQoKSB9XSgpIG11dGFibGUgeworICAgICAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoZmlsZSk7CisgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXShhdXRvJikgbXV0YWJsZSB7CisgICAg
ICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNsb3NlQmFj
a2VuZChDbG9zZU1vZGU6OkFzeW5jKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKK3ZvaWQg
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3NlQmFja2VuZChDbG9zZU1vZGUgbW9kZSkK
K3sKKyAgICBpZiAobW9kZSA9PSBDbG9zZU1vZGU6OkFzeW5jKSB7CisgICAgICAgIG1fc291cmNl
LT5jbG9zZShtX2lkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fV0oYXV0byByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgZGlkQ2xvc2UoV1RGTW92ZShy
ZXN1bHQpKTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9zb3VyY2UtPmNs
b3NlKG1faWRlbnRpZmllciwgW10oYXV0bykgeyB9KTsKKyAgICAgICAgZGlkQ2xvc2UoeyB9KTsK
KyAgICB9Cit9CisKIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmRpZENsb3NlKEV4
Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KQogewogICAgIEFTU0VSVCghbV9jbG9zZVJlc3VsdCk7
CkBAIC0xNDIsNyArMTg0LDcgQEAgRXhjZXB0aW9uT3I8dW5zaWduZWQgbG9uZyBsb25nPiBGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6cmVhZChCdWZmZXJTb3VyY2UmJgogICAgIGlmIChpc0Ns
b3NpbmdPckNsb3NlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJBY2Nlc3NIYW5kbGUgaXMgY2xvc2luZyBvciBjbG9zZWQiX3MgfTsKIAotICAgIGlm
IChtX3BlbmRpbmdPcGVyYXRpb25Db3VudCkKKyAgICBpZiAoIW1fcGVuZGluZ1Byb21pc2VzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAi
QWNjZXNzIGhhbmRsZSBoYXMgdW5maW5pc2hlZCBvcGVyYXRpb24iX3MgfTsKIAogICAgIGludCBy
ZXN1bHQgPSBGaWxlU3lzdGVtOjpzZWVrRmlsZShtX2ZpbGUsIG9wdGlvbnMuYXQsIEZpbGVTeXN0
ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmcpOwpAQCAtMTYzLDcgKzIwNSw3IEBAIEV4Y2Vw
dGlvbk9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6Ondy
aXRlKEJ1ZmZlclNvdXJjZSYmCiAgICAgaWYgKGlzQ2xvc2luZ09yQ2xvc2VkKCkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2Vzc0hhbmRsZSBpcyBj
bG9zaW5nIG9yIGNsb3NlZCJfcyB9OwogCi0gICAgaWYgKG1fcGVuZGluZ09wZXJhdGlvbkNvdW50
KQorICAgIGlmICghbV9wZW5kaW5nUHJvbWlzZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3MgaGFuZGxlIGhhcyB1bmZpbmlz
aGVkIG9wZXJhdGlvbiJfcyB9OwogCiAgICAgaW50IHJlc3VsdCA9IEZpbGVTeXN0ZW06OnNlZWtG
aWxlKG1fZmlsZSwgb3B0aW9ucy5hdCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW46OkJlZ2lu
bmluZyk7CkBAIC0xNzcsNiArMjE5LDIzIEBAIEV4Y2VwdGlvbk9yPHVuc2lnbmVkIGxvbmcgbG9u
Zz4gRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OndyaXRlKEJ1ZmZlclNvdXJjZSYmCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y29t
cGxldGVQcm9taXNlKFJlc3VsdCYmIHJlc3VsdCkKK3sKKyAgICBpZiAobV9wZW5kaW5nUHJvbWlz
ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHBlbmRpbmdQcm9taXNl
ID0gbV9wZW5kaW5nUHJvbWlzZXMudGFrZUZpcnN0KCk7CisgICAgV1RGOjpzd2l0Y2hPbihXVEZN
b3ZlKHJlc3VsdCksIFsmcGVuZGluZ1Byb21pc2VdKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0
KSB7CisgICAgICAgIGF1dG8qIHByb21pc2UgPSBzdGQ6OmdldF9pZjxET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4+KCZwZW5kaW5nUHJvbWlzZSk7CisgICAgICAgIEFTU0VSVChwcm9taXNlKTsKKyAg
ICAgICAgcHJvbWlzZS0+c2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CisgICAgfSwgWyZwZW5kaW5n
UHJvbWlzZV0oRXhjZXB0aW9uT3I8dW5zaWduZWQgbG9uZyBsb25nPiYmIHJlc3VsdCkgeworICAg
ICAgICBhdXRvKiBwcm9taXNlID0gc3RkOjpnZXRfaWY8RE9NUHJvbWlzZURlZmVycmVkPElETFVu
c2lnbmVkTG9uZ0xvbmc+PigmcGVuZGluZ1Byb21pc2UpOworICAgICAgICBBU1NFUlQocHJvbWlz
ZSk7CisgICAgICAgIHByb21pc2UtPnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOworICAgIH0pOwor
fQorCiBjb25zdCBjaGFyKiBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6YWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICJGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3Mv
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5oCmluZGV4IDcwYWZmMzM5
YTIxMDkzMDQ4MGU0NDdjMjA4NTc5MWY1MjMyYmExMzAuLjkxNWZmZDAxM2Y4Y2ZkMjM0ZWQ0ODIw
ODk4MTE4NTc0NWI1NmRkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRl
ICJGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJRExU
eXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNTQsMTIgKzU1LDE2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZENsb3NlKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpOwogICAgIEV4Y2VwdGlv
bk9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gcmVhZChCdWZmZXJTb3VyY2UmJiwgRmlsZXN5c3RlbVJl
YWRXcml0ZU9wdGlvbnMpOwogICAgIEV4Y2VwdGlvbk9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gd3Jp
dGUoQnVmZmVyU291cmNlJiYsIEZpbGVzeXN0ZW1SZWFkV3JpdGVPcHRpb25zKTsKKyAgICB1c2lu
ZyBSZXN1bHQgPSBzdGQ6OnZhcmlhbnQ8RXhjZXB0aW9uT3I8dm9pZD4sIEV4Y2VwdGlvbk9yPHVu
c2lnbmVkIGxvbmcgbG9uZz4+OworICAgIHZvaWQgY29tcGxldGVQcm9taXNlKFJlc3VsdCYmKTsK
IAogcHJpdmF0ZToKICAgICBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgRmlsZVN5c3RlbUZpbGVIYW5kbGUmLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSk7CiAgICAgYm9v
bCBpc0Nsb3NpbmdPckNsb3NlZCgpIGNvbnN0OwogICAgIHVzaW5nIENsb3NlQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPjsKICAgICB2b2lkIGNs
b3NlSW50ZXJuYWwoQ2xvc2VDYWxsYmFjayYmKTsKKyAgICBlbnVtIGNsYXNzIENsb3NlTW9kZSA6
IGJvb2wgeyBBc3luYywgU3luYyB9OworICAgIHZvaWQgY2xvc2VCYWNrZW5kKENsb3NlTW9kZSk7
CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QgZmluYWw7CkBAIC02NywxMCArNzIsMTEgQEAgcHJpdmF0ZToKIAogICAg
IFJlZjxGaWxlU3lzdGVtRmlsZUhhbmRsZT4gbV9zb3VyY2U7CiAgICAgRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICB1aW50NjRfdCBtX3BlbmRp
bmdPcGVyYXRpb25Db3VudCB7IDAgfTsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgbV9maWxlOwogICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IG1fY2xvc2VS
ZXN1bHQ7CiAgICAgVmVjdG9yPENsb3NlQ2FsbGJhY2s+IG1fY2xvc2VDYWxsYmFja3M7CisgICAg
dXNpbmcgUHJvbWlzZSA9IHN0ZDo6dmFyaWFudDxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4sIERP
TVByb21pc2VEZWZlcnJlZDxJRExVbnNpZ25lZExvbmdMb25nPj47CisgICAgRGVxdWU8UHJvbWlz
ZT4gbV9wZW5kaW5nUHJvbWlzZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4
IGFlMjhmMzBmNDk0YWQwMzJhN2Q1MjNmMjZkNDZjYzE5OGQzN2NlM2MuLjFkZjcwYzQ4MDMxM2Nk
ZDhiYmVhNjNhMjE4YmNhOGFhMjEyNmZiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC0yMDgsMTIgKzIwOCw2IEBAIHZvaWQg
V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpkaWRDcmVhdGVTeW5jQWNjZXNzSGFu
ZGxlKENhbGxiYWNrSWRlbnRpCiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7CiB9
CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wbGV0ZUludGVn
ZXJDYWxsYmFjayhDYWxsYmFja0lkZW50aWZpZXIgY2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRp
b25Pcjx1aW50NjRfdD4mJiByZXN1bHQpCi17Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2lu
dGVnZXJDYWxsYmFja3MudGFrZShjYWxsYmFja0lkZW50aWZpZXIpKQotICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKHJlc3VsdCkpOwotfQotCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbjo6Y29tcGxldGVWb2lkQ2FsbGJhY2soQ2FsbGJhY2tJZGVudGlmaWVyIGNhbGxiYWNr
SWRlbnRpZmllciwgRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpCiB7CiAgICAgaWYgKGF1dG8g
Y2FsbGJhY2sgPSBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lkZW50aWZpZXIpKQpAQCAt
MjQzLDY2ICsyMzcsNiBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZShGaWxlU3lzdGVtSGFuZGxlSQogICAgIH0pOwogfQogCi12
b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0U2l6ZShGaWxlU3lzdGVt
SGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlk
ZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjpJbnRlZ2VyQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICBpZiAoIW1fc2NvcGUpCi0g
ICAgICAgIHJldHVybiBjYWxsYmFjayhFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsK
LQotICAgIGF1dG8gY2FsbGJhY2tJZGVudGlmaWVyID0gQ2FsbGJhY2tJZGVudGlmaWVyOjpnZW5l
cmF0ZVRocmVhZFNhZmUoKTsKLSAgICBtX2ludGVnZXJDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRl
bnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwotCi0gICAgY2FsbE9uTWFpblRocmVhZChbY2Fs
bGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9
LCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIGlkZW50aWZp
ZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXJdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFp
blRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RG
TW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3
b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW2NhbGxiYWNrSWRlbnRpZmll
ciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPihzY29wZSkuZmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKCkpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmNvbXBsZXRlSW50ZWdlckNhbGxiYWNrKGNhbGxi
YWNrSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAgICAgIH0sIFdvcmtlclJ1
bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwotICAgICAgICB9OwotCi0gICAgICAgIG1haW5UaHJlYWRD
b25uZWN0aW9uLT5nZXRTaXplKGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFdU
Rk1vdmUobWFpblRocmVhZENhbGxiYWNrKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV29ya2VyRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjp0cnVuY2F0ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNj
ZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSwgRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpWb2lkQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICBpZiAoIW1fc2NvcGUpCi0g
ICAgICAgIHJldHVybiBjYWxsYmFjayhFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsK
LQotICAgIGF1dG8gY2FsbGJhY2tJZGVudGlmaWVyID0gQ2FsbGJhY2tJZGVudGlmaWVyOjpnZW5l
cmF0ZVRocmVhZFNhZmUoKTsKLSAgICBtX3ZvaWRDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRp
ZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwotCi0gICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJh
Y2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBt
YWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIGlkZW50aWZpZXIs
IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHNpemVdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8g
bWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0g
V1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW2NhbGxiYWNrSWRlbnRp
ZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0
YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPihzY29wZSkuZmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKCkpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmNvbXBsZXRlVm9pZENhbGxiYWNrKGNhbGxi
YWNrSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAgICAgIH0sIFdvcmtlclJ1
bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwotICAgICAgICB9OwotCi0gICAgICAgIG1haW5UaHJlYWRD
b25uZWN0aW9uLT50cnVuY2F0ZShpZGVudGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBz
aXplLCBXVEZNb3ZlKG1haW5UaHJlYWRDYWxsYmFjaykpOwotICAgIH0pOwotfQotCi12b2lkIFdv
cmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Zmx1c2goRmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9p
ZENhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgaWYgKCFtX3Njb3BlKQotICAgICAgICByZXR1
cm4gY2FsbGJhY2soRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7Ci0KLSAgICBhdXRv
IGNhbGxiYWNrSWRlbnRpZmllciA9IENhbGxiYWNrSWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRT
YWZlKCk7Ci0gICAgbV92b2lkQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdURk1v
dmUoY2FsbGJhY2spKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrSWRlbnRpZmll
ciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFpblRocmVhZENv
bm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyLCBhY2Nlc3NIYW5k
bGVJZGVudGlmaWVyXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIG1haW5UaHJlYWRDYWxsYmFj
ayA9IFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhy
ZWFkKV0oYXV0byByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5y
dW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJlc3VsdCA9IGNy
b3NzVGhyZWFkQ29weShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgewotICAgICAgICAg
ICAgICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
c2NvcGUpLmZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigpKQotICAgICAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uLT5jb21wbGV0ZVZvaWRDYWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIsIFdU
Rk1vdmUocmVzdWx0KSk7Ci0gICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9k
ZSgpKTsKLSAgICAgICAgfTsKLQotICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlvbi0+Zmx1c2go
aWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV1RGTW92ZShtYWluVGhyZWFkQ2Fs
bGJhY2spKTsKLSAgICB9KTsKLX0KLQogdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb246OmNsb3NlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIGlmICghbV9zY29wZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb24uaAppbmRleCA1YmNiZmMyYWIyOTYzMzM2ZjRjNWViZmRiMjc0MzAxOWEyODU2
YmNkLi4xMmZhMWMxODM4Y2U2MTc4NzNhMTc4ZjNlYmQwMGYxMDQwYjBjNTAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC00OSw3ICs0
OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlc29sdmUoQ2FsbGJhY2tJZGVudGlmaWVyLCBF
eGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4mJik7CiAgICAgdm9pZCBkaWRDcmVhdGVTeW5jQWNj
ZXNzSGFuZGxlKENhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9uT3I8c3RkOjpwYWlyPEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlPj4mJik7CiAgICAgdm9pZCBjb21wbGV0ZVZvaWRDYWxsYmFjayhDYWxsYmFja0lkZW50
aWZpZXIsIEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KTsKLSAgICB2b2lkIGNvbXBsZXRlSW50
ZWdlckNhbGxiYWNrKENhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9uT3I8dWludDY0X3Q+JiYg
cmVzdWx0KTsKICAgICB2b2lkIGRpZEdldEhhbmRsZU5hbWVzKENhbGxiYWNrSWRlbnRpZmllciwg
RXhjZXB0aW9uT3I8VmVjdG9yPFN0cmluZz4+JiYpOwogICAgIHZvaWQgZGlkR2V0SGFuZGxlV2l0
aFR5cGUoQ2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25PcjxzdGQ6OnBhaXI8RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+PiYmKTsKIApAQCAtNjgsOSArNjcsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgZ2V0SGFuZGxlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEdldEhhbmRsZVdpdGhUeXBlQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICB2
b2lkIGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0QWNjZXNzSGFuZGxlQ2FsbGJhY2smJikgZmlu
YWw7Ci0gICAgdm9pZCBnZXRTaXplKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6SW50ZWdlckNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdHJ1bmNhdGUoRmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwg
dWludDY0X3Qgc2l6ZSwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2sm
JikgZmluYWw7Ci0gICAgdm9pZCBmbHVzaChGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb246OlZvaWRDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKEZpbGVTeXN0ZW1I
YW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAg
V2Vha1B0cjxXb3JrZXJHbG9iYWxTY29wZT4gbV9zY29wZTsKQEAgLTgwLDcgKzc2LDYgQEAgcHJp
dmF0ZToKICAgICBIYXNoTWFwPENhbGxiYWNrSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpSZXNvbHZlQ2FsbGJhY2s+IG1fcmVzb2x2ZUNhbGxiYWNrczsKICAgICBIYXNo
TWFwPENhbGxiYWNrSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRB
Y2Nlc3NIYW5kbGVDYWxsYmFjaz4gbV9nZXRBY2Nlc3NIYW5kbENhbGxiYWNrczsKICAgICBIYXNo
TWFwPENhbGxiYWNrSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lk
Q2FsbGJhY2s+IG1fdm9pZENhbGxiYWNrczsKLSAgICBIYXNoTWFwPENhbGxiYWNrSWRlbnRpZmll
ciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpJbnRlZ2VyQ2FsbGJhY2s+IG1faW50ZWdl
ckNhbGxiYWNrczsKICAgICBIYXNoTWFwPENhbGxiYWNrSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpHZXRIYW5kbGVOYW1lc0NhbGxiYWNrPiBtX2dldEhhbmRsZU5hbWVz
Q2FsbGJhY2tzOwogICAgIEhhc2hNYXA8Q2FsbGJhY2tJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb246OkdldEhhbmRsZVdpdGhUeXBlQ2FsbGJhY2s+IG1fZ2V0SGFuZGxlV2l0
aFR5cGVDYWxsYmFja3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcAppbmRleCA3NWZhNDM4NWRkMGFlN2UwNjViMmY2NjRkZGRiY2MzN2U4MjlmNjY0
Li4yYzQ2MmMyZTBjZjY4ZTdjNDA1ZTNjMmUwOTM2ZWEzMzBkNWQxNzg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNzcsNiArNzcsMTIgQEAg
c3RhdGljIEhhc2hTZXQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+JiBhbGxXb3Jr
ZXJHbG9iYWxTY29wZUlkZW50aWZpZXIKICAgICByZXR1cm4gaWRlbnRpZmllcnM7CiB9CiAKK3N0
YXRpYyBSZWY8V29ya1F1ZXVlPiBzaGFyZWRGaWxlU3lzdGVtU3RvcmFnZVF1ZXVlKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdvcmtRdWV1ZT4+IHF1ZXVlKFdvcmtRdWV1ZTo6
Y3JlYXRlKCJTaGFyZWQgRmlsZSBTeXN0ZW0gU3RvcmFnZSBRdWV1ZSIsICBXb3JrUXVldWU6OlFP
Uzo6VXRpbGl0eSkpOworICAgIHJldHVybiBxdWV1ZS5nZXQoKS5jb3B5UmVmKCk7Cit9CisKIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3JrZXJHbG9iYWxTY29wZSk7CiAKIFdvcmtlckds
b2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlIHR5cGUsIGNvbnN0
IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwg
V29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3Zp
ZGVyKiBzb2NrZXRQcm92aWRlcikKQEAgLTIzMiw2ICsyMzgsMTEgQEAgV29ya2VyU3RvcmFnZUNv
bm5lY3Rpb24mIFdvcmtlckdsb2JhbFNjb3BlOjpzdG9yYWdlQ29ubmVjdGlvbigpCiAgICAgcmV0
dXJuICptX3N0b3JhZ2VDb25uZWN0aW9uOwogfQogCit2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpw
b3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQoreworICAg
IHNoYXJlZEZpbGVTeXN0ZW1TdG9yYWdlUXVldWUoKS0+ZGlzcGF0Y2goV1RGTW92ZSh0YXNrKSk7
Cit9CisKIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiYgV29ya2VyR2xvYmFsU2Nv
cGU6OmdldEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbihSZWY8RmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uPiYmIG1haW5UaHJlYWRDb25uZWN0aW9uKQogewogICAgIGlmICghbV9maWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmgKaW5kZXggZDU4ODBlZjI3MDc3YTM2NDVkOGYzMzUxMWJmZDQ0YjU5YzViOTE0MS4u
YWUzYjJkYmRhYzdmYTQ0Y2U3ZTNmMzIyMjAyYzAwOGIzZWM4NzhmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtODgsNiArODgsNyBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IEV2ZW50VGFyZ2V0OjpXZWFrVmFsdWVUeXBlOwog
ICAgIHVzaW5nIEV2ZW50VGFyZ2V0Ojp3ZWFrUHRyRmFjdG9yeTsKICAgICBXb3JrZXJTdG9yYWdl
Q29ubmVjdGlvbiYgc3RvcmFnZUNvbm5lY3Rpb24oKTsKKyAgICBzdGF0aWMgdm9pZCBwb3N0Rmls
ZVN5c3RlbVN0b3JhZ2VUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAgICAgV29ya2VyRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uJiBnZXRGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oUmVm
PEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbj4mJik7CiAgICAgV29ya2VyRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uKiBmaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKTsKICAgICBXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0
b3JhZ2VFcnJvci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVT
eXN0ZW1TdG9yYWdlRXJyb3IuaAppbmRleCAwMjc3MzdhMmI0MGIyYzI3MGVhYTY0YjhhNWY5ZTY0
MzAxZWU4Nzk2Li5jMzZmNzUzNGM2YWI1YjYyYWE0YTVkZDM0NjkzNGYzMWVkYjA4YmZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0
b3JhZ2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZUVycm9yLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBlbnVtIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IgOiB1aW50OF90IHsKKyAg
ICBBY2Nlc3NIYW5kbGVBY3RpdmUsCiAgICAgQmFja2VuZE5vdFN1cHBvcnRlZCwKICAgICBGaWxl
Tm90Rm91bmQsCiAgICAgSW52YWxpZE1vZGlmaWNhdGlvbiwKQEAgLTQzLDE0ICs0NCwxNiBAQCBl
bnVtIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IgOiB1aW50OF90IHsKIGlubGluZSBXZWJD
b3JlOjpFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uKEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3Ig
ZXJyb3IpCiB7CiAgICAgc3dpdGNoIChlcnJvcikgeworICAgIGNhc2UgRmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvcjo6QWNjZXNzSGFuZGxlQWN0aXZlOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6RXhj
ZXB0aW9uIHsgV2ViQ29yZTo6SW52YWxpZFN0YXRlRXJyb3IsICJTb21lIEFjY2Vzc0hhbmRsZSBp
cyBhY3RpdmUiX3MgfTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkJhY2tlbmRO
b3RTdXBwb3J0ZWQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3Jl
OjpOb3RTdXBwb3J0ZWRFcnJvciwgIkJhY2tlbmQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJh
dGlvbiIgfTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6Ok5v
dFN1cHBvcnRlZEVycm9yLCAiQmFja2VuZCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9u
Il9zIH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpGaWxlTm90Rm91bmQ6CiAg
ICAgICAgIHJldHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpOb3RGb3VuZEVycm9y
IH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpJbnZhbGlkTW9kaWZpY2F0aW9u
OgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6SW52YWxpZE1v
ZGlmaWNhdGlvbkVycm9yIH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpJbnZh
bGlkTmFtZToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVu
a25vd25FcnJvciwgIk5hbWUgaXMgaW52YWxpZCIgfTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIk5hbWUgaXMgaW52YWxpZCJfcyB9
OwogICAgIGNhc2UgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6SW52YWxpZFN0YXRlOgogICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6SW52YWxpZFN0YXRlRXJyb3Ig
fTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlR5cGVNaXNtYXRjaDoKQEAgLTc3
LDYgKzgwLDcgQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8CiAgICAgICAgIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvciwKKyAgICAg
ICAgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpBY2Nlc3NIYW5kbGVBY3RpdmUsCiAg
ICAgICAgIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6QmFja2VuZE5vdFN1cHBvcnRl
ZCwKICAgICAgICAgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpGaWxlTm90Rm91bmQs
CiAgICAgICAgIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6SW52YWxpZE1vZGlmaWNh
dGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCmluZGV4IDYwNzFjYmM1MDFhMGI3
NzY2NTFjYjVlMjRjZmI3MWVkYjY0OTVjZTcuLjRmNzJjZDAzZjM2OGY0NTc2ZDQzNWQ2N2U2MmUz
YTExYjkyY2ZlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcApAQCAtNjMsMTIg
KzYzLDYgQEAgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxl
KEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYgbWFuYWcKICAgICB9CiB9CiAKLUZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlOjp+RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUoKQotewotICAgIGlmIChtX2hh
bmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUobV9oYW5kbGUpOwotfQotCiB2b2lkIEZpbGVTeXN0ZW1TdG9y
YWdlSGFuZGxlOjpjbG9zZSgpCiB7CiAgICAgaWYgKCFtX21hbmFnZXIpCkBAIC0xNzIsMTMgKzE2
NiwxMyBAQCBFeHBlY3RlZDxGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6QWNjZXNzSGFuZGxlSW5m
bywgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZQogICAgIGlmICghYWNxdWlyZWQpCiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpJbnZhbGlk
U3RhdGUpOwogCi0gICAgbV9oYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX3BhdGgsIEZp
bGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlKTsKLSAgICBpZiAobV9oYW5kbGUgPT0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICBhdXRvIGhhbmRsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpS
ZWFkV3JpdGUpOworICAgIGlmIChoYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1TdG9y
YWdlRXJyb3I6OlVua25vd24pOwogCi0gICAgYXV0byBpcGNIYW5kbGUgPSBJUEM6OlNoYXJlZEZp
bGVIYW5kbGU6OmNyZWF0ZShtX2hhbmRsZSk7CisgICAgYXV0byBpcGNIYW5kbGUgPSBJUEM6OlNo
YXJlZEZpbGVIYW5kbGU6OmNyZWF0ZShoYW5kbGUpOwogICAgIGlmICghaXBjSGFuZGxlKSB7Ci0g
ICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2hhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRmls
ZVN5c3RlbVN0b3JhZ2VFcnJvcjo6QmFja2VuZE5vdFN1cHBvcnRlZCk7CiAgICAgfQogCkBAIC0x
ODcsNjEgKzE4MSwxMSBAQCBFeHBlY3RlZDxGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6QWNjZXNz
SGFuZGxlSW5mbywgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZQogICAgIHJldHVybiBzdGQ6
OnBhaXIgeyAqbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlLCBXVEZNb3ZlKCppcGNIYW5kbGUpIH07
CiB9CiAKLUV4cGVjdGVkPHVpbnQ2NF90LCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBGaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZTo6Z2V0U2l6ZShXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllcikKLXsKLSAgICBpZiAoIW1fbWFu
YWdlcikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I6OlVua25vd24pOwotCi0gICAgaWYgKCFtX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgfHwgKm1f
YWN0aXZlU3luY0FjY2Vzc0hhbmRsZSAhPSBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKQotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bik7
Ci0KLSAgICBhdXRvIHNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShtX3BhdGgpOwotICAgIGlm
ICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I6OlVua25vd24pOwotCi0gICAgcmV0dXJuIHNpemUudmFsdWUoKTsKLX0KLQotc3RkOjpv
cHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6
dHJ1bmNhdGUoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUpCi17Ci0gICAgaWYgKCFtX21hbmFn
ZXIpCi0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwotCi0g
ICAgaWYgKCFtX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgfHwgKm1fYWN0aXZlU3luY0FjY2Vzc0hh
bmRsZSAhPSBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gRmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsKLQotICAgIEFTU0VSVChtX2hhbmRsZSAhPSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBhdXRvIHJlc3VsdCA9IEZpbGVT
eXN0ZW06OnRydW5jYXRlRmlsZShtX2hhbmRsZSwgc2l6ZSk7Ci0gICAgaWYgKCFyZXN1bHQpCi0g
ICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwotCi0gICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yPiBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6Zmx1c2goV2ViQ29yZTo6RmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpCi17Ci0gICAg
aWYgKCFtX21hbmFnZXIpCi0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpV
bmtub3duOwotCi0gICAgaWYgKCFtX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgfHwgKm1fYWN0aXZl
U3luY0FjY2Vzc0hhbmRsZSAhPSBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKQotICAgICAgICByZXR1
cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsKLQotICAgIEFTU0VSVChtX2hhbmRs
ZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBhdXRvIHJl
c3VsdCA9IEZpbGVTeXN0ZW06OmZsdXNoRmlsZShtX2hhbmRsZSk7Ci0gICAgaWYgKCFyZXN1bHQp
Ci0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwotCi0gICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQogc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFn
ZUVycm9yPiBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6Y2xvc2UoV2ViQ29yZTo6RmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpCiB7CiAg
ICAgaWYgKCFtX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgfHwgKm1fYWN0aXZlU3luY0FjY2Vzc0hh
bmRsZSAhPSBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gRmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsKIAotICAgIEFTU0VSVChtX2hhbmRsZSAhPSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUobV9oYW5kbGUpOwotCiAgICAgaWYgKCFtX21hbmFnZXIpCiAgICAgICAgIHJldHVybiBGaWxl
U3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwogCkBAIC0yNzgsNyArMjIyLDcgQEAgc3RkOjpv
cHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6
bW92ZShXZWJDb3JlOjpGaWwKIAogICAgIC8vIERvIG5vdCBtb3ZlIGZpbGUgaWYgdGhlcmUgaXMg
b25nb2luZyBvcGVyYXRpb24uCiAgICAgaWYgKG1fYWN0aXZlU3luY0FjY2Vzc0hhbmRsZSkKLSAg
ICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkludmFsaWRTdGF0ZTsKKyAgICAg
ICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkFjY2Vzc0hhbmRsZUFjdGl2ZTsKIAog
ICAgIGlmIChtX21hbmFnZXItPmdldFR5cGUoZGVzdGluYXRpb25JZGVudGlmaWVyKSAhPSBUeXBl
OjpEaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpUeXBl
TWlzbWF0Y2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCmluZGV4IDNkYWY0NzJmNzE2YzUz
ZGI1YzRjMmI4ZTk1OGY1NzRmOGVlZWFkZDguLmZiOTI5ODE0MWIwZGJjMzgxZmE4YjNiMzgxN2U2
OGNhMDE4OTc5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCkBAIC00NCw3ICs0NCw2
IEBAIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlIDogcHVibGljIENhbk1ha2VXZWFrUHRy
PEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLCBXCiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBl
IDogdWludDhfdCB7IEZpbGUsIERpcmVjdG9yeSwgQW55IH07CiAgICAgRmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGUoRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiwgVHlwZSwgU3RyaW5nJiYgcGF0aCwg
U3RyaW5nJiYgbmFtZSk7Ci0gICAgfkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlKCk7CiAKICAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgY29uc3QgU3RyaW5nJiBwYXRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXRoOyB9CkBAIC02Miw5ICs2MSw2IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIEFj
Y2Vzc0hhbmRsZUluZm8gPSBzdGQ6OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEZpbGVIYW5kbGU+OwogICAgIEV4cGVjdGVkPEFj
Y2Vzc0hhbmRsZUluZm8sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGNyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUoKTsKLSAgICBFeHBlY3RlZDx1aW50NjRfdCwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4g
Z2V0U2l6ZShXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIpOwot
ICAgIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gdHJ1bmNhdGUoV2ViQ29y
ZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXplKTsK
LSAgICBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGZsdXNoKFdlYkNvcmU6
OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllcik7CiAgICAgc3RkOjpvcHRpb25h
bDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBjbG9zZShXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIpOwogCiBwcml2YXRlOgpAQCAtNzYsNyArNzIsNiBAQCBwcml2
YXRlOgogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllcj4gbV9h
Y3RpdmVTeW5jQWNjZXNzSGFuZGxlOwotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBtX2hhbmRsZSB7IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRl
eCBjZTU4MTE0MDM0Zjk4ZWUzMjZkYWI3N2RhZmFmNTYyM2RkZDIyMDA5Li40ZTRjMDg1ODMyMWUy
NTJhYWQ4OWUzNDNkN2NiYTlmMThiNTk1NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNw
cApAQCAtMjUzLDQwICsyNTMsMTIgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW4KICAgICBpZiAo
IWhhbmRsZSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVk
KEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd24pKTsKIAotICAgIGNvbXBsZXRpb25IYW5k
bGVyKGhhbmRsZS0+Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZSgpKTsKLX0KLQotdm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmdldFNpemVGb3JBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nl
c3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhwZWN0ZWQ8dWludDY0X3QsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQot
ICAgIGF1dG8gaGFuZGxlID0gbV9maWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LT5nZXRI
YW5kbGUoaWRlbnRpZmllcik7Ci0gICAgaWYgKCFoYW5kbGUpCi0gICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtu
b3duKSk7Ci0KLSAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGUtPmdldFNpemUoYWNjZXNzSGFu
ZGxlSWRlbnRpZmllcikpOwotfQotCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6dHJ1bmNh
dGVGb3JBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBhdXRvIGhh
bmRsZSA9IG1fZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS0+Z2V0SGFuZGxlKGlkZW50
aWZpZXIpOwotICAgIGlmICghaGFuZGxlKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bik7Ci0KLSAgICBjb21wbGV0aW9uSGFu
ZGxlcihoYW5kbGUtPnRydW5jYXRlKGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHNpemUpKTsKLX0K
LQotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmZsdXNoRm9yQWNjZXNzSGFuZGxlKFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwotCi0gICAgYXV0byBoYW5kbGUgPSBtX2ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0
cnktPmdldEhhbmRsZShpZGVudGlmaWVyKTsKLSAgICBpZiAoIWhhbmRsZSkKLSAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd24pOwor
ICAgIGF1dG8gcmVzdWx0ID0gaGFuZGxlLT5jcmVhdGVTeW5jQWNjZXNzSGFuZGxlKCk7CisgICAg
YXV0byBmaWxlSGFuZGxlID0gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkuc2Vjb25kIDogSVBDOjpT
aGFyZWRGaWxlSGFuZGxlKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQp
KTsKIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+Zmx1c2goYWNjZXNzSGFuZGxlSWRl
bnRpZmllcikpOworICAgIC8vIENsb3NlIHRoZSBmaWxlIGhhbmRsZSBpbiBuZXR3b3JrIHByb2Nl
c3MuCisgICAgZmlsZUhhbmRsZS5jbG9zZSgpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Y2xvc2VBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlm
aWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggZTI1NTA0MTg5NjBmZDRmN2UzOGM4NDFjNDA4ZjNm
NDA1YWQ2NjM3OC4uYjE2Y2MyNTg4ZTNmZTZlMWZjNWQxZWY0ZGU0Y2EyZmM4MzVjNTg5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9y
YWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAtNzksOSArNzksNiBAQCBwcml2YXRlOgogCiAgICAg
dXNpbmcgQWNjZXNzSGFuZGxlSW5mbyA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIElQQzo6U2hhcmVkRmlsZUhhbmRsZT47CiAgICAgdm9p
ZCBjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEFjY2Vzc0hhbmRsZUluZm8sIEZp
bGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBnZXRTaXplRm9yQWNjZXNzSGFu
ZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8dWludDY0X3QsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7Ci0gICAgdm9pZCB0
cnVuY2F0ZUZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmll
ciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRf
dCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcj4pPiYmKTsKLSAgICB2b2lkIGZsdXNoRm9yQWNjZXNzSGFuZGxlKFdlYkNvcmU6
OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxG
aWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYpOwogICAgIHZvaWQgY2xvc2VBY2Nlc3NIYW5kbGUo
V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7CiAgICAgdm9pZCBnZXRIYW5kbGVO
YW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4p
PiYmKTsKICAgICB2b2lkIGdldEhhbmRsZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxzdGQ6OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIsIGJvb2w+LCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMWZiYmYzN2JhYWQ3ZDA0M2M4NzVjZThk
ZjFiYWI5YTE1NzZhNzkwNS4uYjRmYWFmN2FjZTY3NWRiYmUwNGQ2M2QxY2I4MzA3MTM2Mjk2Y2Ux
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0zNiw5
ICszNiw2IEBACiAgICAgTW92ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIFN0cmluZyBuZXdOYW1lKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkZp
bGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKIAogICAgIENyZWF0ZVN5bmNBY2Nl
c3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllcikg
LT4gKEV4cGVjdGVkPHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIsIElQQzo6U2hhcmVkRmlsZUhhbmRsZT4sIFdlYktpdDo6RmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwotICAgIEdldFNpemVGb3JBY2Nlc3NIYW5kbGUoV2Vi
Q29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6Rmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIp
IC0+IChFeHBlY3RlZDx1aW50NjRfdCwgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBy
ZXN1bHQpIEFzeW5jCi0gICAgVHJ1bmNhdGVGb3JBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5
c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNp
emUpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVz
dWx0KSBBc3luYwotICAgIEZsdXNoRm9yQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1I
YW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25h
bDxXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKICAgICBDbG9z
ZUFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNz
SGFuZGxlSWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpGaWxlU3lzdGVtU3Rv
cmFnZUVycm9yPiByZXN1bHQpIEFzeW5jCiAgICAgR2V0SGFuZGxlTmFtZXMoV2ViQ29yZTo6Rmls
ZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKEV4cGVjdGVkPFZlY3RvcjxT
dHJpbmc+LCBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKICAg
ICBHZXRIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgU3RyaW5nIG5hbWUpIC0+IChFeHBlY3RlZDxzdGQ6OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+LCBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+
IHJlc3VsdCkgQXN5bmMgV2FudHNDb25uZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuY3BwCmluZGV4IDhlYmNlOTgwMDg3YzA3NWIwMjNiNThh
ZWEyZTE1NTg2MGQ3Njk0NjQuLjY0ZTQyMTc4MDFhMjFmMDVkODhiNGU2MTY4ZDcwYjg5Zjk1YTdl
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5k
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUu
Y3BwCkBAIC0yOCw2ICsyOCwxMSBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAordm9pZCBTaGFyZWRG
aWxlSGFuZGxlOjpjbG9zZSgpCit7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1faGFuZGxl
KTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIAogc3RkOjpvcHRpb25hbDxTaGFyZWRGaWxl
SGFuZGxlPiBTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmls
ZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5o
CmluZGV4IGE0NmFjODkwNTA3ZWI2OTNhMTA3YjQ5OWU1NDM2MDZhNzk3ZTQ0OWEuLjU4NWFkOTkz
NzI3MmMyZDBhYTlkNTM3YzIzN2M4M2E2YjU2MDhiN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmgKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgog
CiAgICAgU2hhcmVkRmlsZUhhbmRsZSgpID0gZGVmYXVsdDsKICAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKCkgeyByZXR1cm4gbV9oYW5kbGU7IH0KKyAgICB2b2lkIGNs
b3NlKCk7CiAKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0KICAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxTaGFyZWRGaWxlSGFuZGxlPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5j
cHAKaW5kZXggZDFkNzk4NWU2NWVkZDI1OWVmOTMyNWYyOTRmMDRjOGUwNjE4ZmJkMi4uZjAxZjIx
ZmY4ZjYxNjNhZTUzZTQ4NzMyNDJjZmU1YjdmOTg2ZmRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTEzNCwzOSArMTM0LDYgQEAgdm9p
ZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUo
V2ViQ29yZTo6RmlsZVN5c3RlbUgKICAgICB9KTsKIH0KIAotdm9pZCBXZWJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb246OmdldFNpemUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlm
aWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEludGVnZXJDYWxsYmFjayYmIGNvbXBsZXRpb25I
YW5kbGVyKQotewotICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAi
Q29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKLQotICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldFNpemVGb3JBY2Nlc3NI
YW5kbGUoaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7
Ci0gICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKGNvbnZlcnRUb0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOwotCi0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJlc3VsdC52YWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OnRydW5jYXRlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXplLCBWb2lk
Q2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoIW1fY29ubmVjdGlvbikK
LSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdl
YkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7Ci0KLSAgICBtX2Nv
bm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpUcnVuY2F0ZUZvckFjY2Vzc0hhbmRsZShpZGVudGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVu
dGlmaWVyLCBzaXplKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihj
b252ZXJ0VG9FeGNlcHRpb25PcihlcnJvcikpOwotICAgIH0pOwotfQotCi12b2lkIFdlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Zmx1c2goV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFZvaWRDYWxsYmFjayYmIGNvbXBsZXRp
b25IYW5kbGVyKQotewotICAgIGlmICghbV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9y
LCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKLQotICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkZsdXNoRm9yQWNjZXNz
SGFuZGxlKGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpLCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBlcnJvcikgbXV0YWJsZSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnZlcnRUb0V4Y2VwdGlvbk9yKGVycm9yKSk7
Ci0gICAgfSk7Ci19Ci0KIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjbG9z
ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRp
ZmllciwgVm9pZENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Nv
bm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgK
aW5kZXggYTc2YTdkMTNjMzBkNTk4MWZlNzFhNzc0Y2Q0ZDA1YzIxNjQ3MTQxMC4uZDU3MTNmOGFk
MjFiMTJlNjFjYTRhZWE1YWE4NTExZWRlM2E2ODZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtODMsOSArODMsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgZ2V0SGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0SGFuZGxlV2l0
aFR5cGVDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgY3JlYXRlU3luY0FjY2Vzc0hhbmRs
ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRBY2Nlc3NIYW5kbGVDYWxsYmFjayYmKSBmaW5hbDsKLSAg
ICB2b2lkIGdldFNpemUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdlYkNv
cmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpJbnRlZ2VyQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9p
ZCB0cnVuY2F0ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXplLCBXZWJD
b3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmKSBmaW5hbDsK
LSAgICB2b2lkIGZsdXNoKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJD
b3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQg
Y2xvc2UoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICBSZWZQdHI8SVBDOjpD
b25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWU0YmY4ZGM1OWI5ODg4MTU1ZDc1YzNi
MTkyNDUzNWM4NWQ3MDNjYS4uMTMxODY0ODYwNzY1ZGQxNWM0YzhiMGZhOTVhNzBhNzI3NzZmYTQ5
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTExLTAxICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwbGUuY29tPgorCisgICAgICAgIFBlcmZvcm0gRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGUgb3BlcmF0aW9ucyBpbiB3ZWIgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMTQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDgw
OTQyOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9oYW5kbGUtbW92ZS13b3JrZXItZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHN0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9yZXNvdXJjZXMvaGFuZGxlLW1v
dmUuanM6CisgICAgICAgIChhc3luYyB0ZXN0KToKKwogMjAyMS0xMS0wMSAgQXl1bWkgS29qaW1h
ICA8YXl1bWlfa29qaW1hQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBEZWJ1ZyBdIGh0dHAv
d3B0L3B1c2gtYXBpIHRlc3RzIGFyZSBmbGFreSBmYWlsaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL2hhbmRsZS1tb3ZlLXdvcmtlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvaGFuZGxlLW1vdmUt
d29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCAyYmI4OGI0ODcxZjE1YTczNWE3OGNmOWMxMjBhZmIy
ZDliMjk4NDlkLi42NDU5YjA0Y2U2ZDRmNTViNDdhZDJlM2Y2ZjA5MDZmZGUxY2VmZTcyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvaGFuZGxlLW1vdmUt
d29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1h
Y2Nlc3MvaGFuZGxlLW1vdmUtd29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMTgsNyArMTgsNyBAQCBQ
QVNTIFtXb3JrZXJdIG1vdmVGaWxlRXJyb3IudG9TdHJpbmcoKSBpcyAiVW5rbm93bkVycm9yOiBU
aGUgb3BlcmF0aW9uIGZhaWxlZCBmbwogUEFTUyBbV29ya2VyXSBtb3ZlRmlsZUVycm9yLnRvU3Ry
aW5nKCkgaXMgIlVua25vd25FcnJvcjogTmFtZSBpcyBpbnZhbGlkIgogUEFTUyBbV29ya2VyXSBt
b3ZlRmlsZUVycm9yLnRvU3RyaW5nKCkgaXMgIlVua25vd25FcnJvcjogTmFtZSBpcyBpbnZhbGlk
IgogW1dvcmtlcl0gVGVzdCBtb3ZlIHdpdGggb3BlbiBhY2Nlc3MgaGFuZGxlOgotUEFTUyBbV29y
a2VyXSBtb3ZlRmlsZUVycm9yLnRvU3RyaW5nKCkgaXMgIkludmFsaWRTdGF0ZUVycm9yOiBUaGUg
b2JqZWN0IGlzIGluIGFuIGludmFsaWQgc3RhdGUuIgorUEFTUyBbV29ya2VyXSBtb3ZlRmlsZUVy
cm9yLnRvU3RyaW5nKCkgaXMgIkludmFsaWRTdGF0ZUVycm9yOiBTb21lIEFjY2Vzc0hhbmRsZSBp
cyBhY3RpdmUiCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExF
VEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9yZXNv
dXJjZXMvaGFuZGxlLW1vdmUuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nl
c3MvcmVzb3VyY2VzL2hhbmRsZS1tb3ZlLmpzCmluZGV4IGQ5MWQ5MWJjNTM5MmZhMDA1ODdlZWVk
NWExMzBmYWZjODU1MmY2MWEuLjljOGRjZjE1M2ViY2MwMjc1YTNjYzIxOGQ2ODY4NGNiM2Y1ODBh
OTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9yZXNv
dXJjZXMvaGFuZGxlLW1vdmUuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVt
YWNjZXNzL3Jlc291cmNlcy9oYW5kbGUtbW92ZS5qcwpAQCAtMTA1LDcgKzEwNSw3IEBAIGFzeW5j
IGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgdGVzdEVycm9yID0gICJNb3ZlZCBm
aWxlIGJhY2sgdG8gZGlySGFuZGxlMSB1bmV4cGVjdGVkbHkiOwogICAgICAgICAgICAgfSwgKGVy
cm9yKSA9PiB7CiAgICAgICAgICAgICAgICAgbW92ZUZpbGVFcnJvciA9IGVycm9yOwotICAgICAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibW92ZUZpbGVFcnJvci50b1N0cmluZygp
IiwgIkludmFsaWRTdGF0ZUVycm9yOiBUaGUgb2JqZWN0IGlzIGluIGFuIGludmFsaWQgc3RhdGUu
Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtb3ZlRmlsZUVycm9y
LnRvU3RyaW5nKCkiLCAiSW52YWxpZFN0YXRlRXJyb3I6IFNvbWUgQWNjZXNzSGFuZGxlIGlzIGFj
dGl2ZSIpOwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIGlmICh0ZXN0RXJyb3IpIHsK
</data>
<flag name="commit-queue"
          id="467684"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443040</attachid>
            <date>2021-11-01 17:23:59 -0700</date>
            <delta_ts>2021-11-01 17:59:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232146-20211101172358.patch</filename>
            <type>text/plain</type>
            <size>52157</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjlmNWM4YmMzZjc2MTIw
ODI1ODI4NTZhN2EyNjJiNWIwMjVmODg5Yy4uY2U3ZTM5ODhmZjE5ZTJkNTNkMjBjNzFmNGE0MzEw
MGI1ZWFkYmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTExLTAxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFBlcmZvcm0gRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGUgb3BlcmF0aW9ucyBpbiB3ZWIgcHJvY2VzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMTQ2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84NDgwOTQyOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICB0cnVuY2F0ZSgpLCBnZXRTaXplKCkgYW5kIGZsdXNoKCkgb3BlcmF0aW9u
cyBhcmUgbm93IHBlcmZvcm1lZCBvbiBhIGdsb2JhbCBXb3JrUXVldWUgaW4gd2ViIHByb2Nlc3Mu
CisKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZpbGVIYW5kbGU6OmdldFNpemUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZpbGVIYW5kbGU6OnRydW5j
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1GaWxlSGFuZGxlOjpm
bHVzaCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVT
eXN0ZW1GaWxlSGFuZGxlLmg6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0Zp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3Rl
bWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6fkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjp0cnVuY2F0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Z2V0U2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Zmx1c2gp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3NlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjbG9zZUludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjbG9z
ZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6
OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6Ondy
aXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjb21w
bGV0ZVByb21pc2UpOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZS5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6Y29tcGxldGVJbnRlZ2VyQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRTaXplKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6dHJ1bmNh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpmbHVzaCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkRmls
ZVN5c3RlbVN0b3JhZ2VRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29w
ZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oOgorCiAyMDIxLTExLTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQWxpZ24gWFNMVFByb2Nlc3NvciB3aXRoIEJsaW5rIGFuZCBnZXQgY2xv
c2VyIHRvIEdlY2tvIGluIHRoZSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ2NGFhMWJjMjNhYTFmY2Uw
YTQxNWRmNWExN2JhZTg5NjM4YzM4MGMuLmFhNjEzNjQ5NmIzMzdhYjdkN2NlMzQzZGRhZGUwYjQ1
YzhiZjc1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTEtMDEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgUGVyZm9ybSBGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZSBvcGVyYXRpb25zIGluIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIxNDYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg0ODA5NDI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5ldHdvcmsgcHJvY2VzcyBubyBsb25nZXIgbmVlZHMgdG8gaG9sZCBvcGVuIGZp
bGUgaGFuZGxlIGZvciBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS4gTm93IGl0IGNyZWF0ZXMg
YW4gb3BlbiAKKyAgICAgICAgZmlsZSBoYW5kbGUsIHBhc3MgaXQgdG8gd2ViIHByb2Nlc3MgYW5k
IGNsb3NlIGl0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVt
U3RvcmFnZUVycm9yLmg6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb0V4Y2VwdGlvbik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpjcmVhdGVTeW5j
QWNjZXNzSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6
OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6Om1vdmUp
OgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6fkZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGU6OmdldFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZTo6dHJ1bmNhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpGaWxl
U3lzdGVtU3RvcmFnZUhhbmRsZTo6Zmx1c2gpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaDoKKyAgICAgICAgKCk6IERl
bGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmdldFNpemVGb3JBY2Nlc3NIYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnRydW5jYXRlRm9yQWNjZXNzSGFuZGxlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmbHVzaEZvckFjY2Vzc0hh
bmRsZSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkRmlsZUhhbmRsZS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEZpbGVIYW5kbGU6OmNsb3Nl
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpn
ZXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjp0cnVuY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Zmx1c2gpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmg6CisK
IDIwMjEtMTEtMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGEgdGVzdGluZyBwcmVmZXJlbmNlIHRvIHJlcGxheSBDRyBkaXNwbGF5IGxpc3Rz
IG1hbnVhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1h
Y2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmNwcAppbmRleCAyZGJiNGUzYTgw
MGZlMmY0NTg5NjE3ZGExN2MzYzUzMzA5MDFkYjFkLi4xNzUxMWYwYWUwOGJmNzJhOTQxMjMzM2Q1
YTg1N2QxYjIwZmZkMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKQEAgLTc1
LDMwICs3NSw2IEBAIHZvaWQgRmlsZVN5c3RlbUZpbGVIYW5kbGU6OmNyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUoRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjCiAgICAgfSk7CiB9CiAKLXZvaWQg
RmlsZVN5c3RlbUZpbGVIYW5kbGU6OmdldFNpemUoRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhjZXB0aW9uT3I8dWludDY0X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlm
IChpc0Nsb3NlZCgpKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJIYW5kbGUgaXMgY2xvc2VkIl9zIH0pOwotCi0gICAgY29u
bmVjdGlvbigpLmdldFNpemUoaWRlbnRpZmllcigpLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgRmlsZVN5c3RlbUZpbGVIYW5k
bGU6OnRydW5jYXRlKEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAg
ICBpZiAoaXNDbG9zZWQoKSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiSGFuZGxlIGlzIGNsb3NlZCJfcyB9KTsKLQotICAg
IGNvbm5lY3Rpb24oKS50cnVuY2F0ZShpZGVudGlmaWVyKCksIGFjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIsIHNpemUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQotdm9pZCBGaWxlU3lz
dGVtRmlsZUhhbmRsZTo6Zmx1c2goRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8dm9pZD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGlzQ2xvc2VkKCkp
Ci0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgIkhhbmRsZSBpcyBjbG9zZWQiX3MgfSk7Ci0KLSAgICBjb25uZWN0aW9uKCkuZmx1
c2goaWRlbnRpZmllcigpLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Ci19Ci0KIHZvaWQgRmlsZVN5c3RlbUZpbGVIYW5kbGU6OmNsb3NlKEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChpc0Nsb3NlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUu
aAppbmRleCBiYWE0MmY4ZDkyMzFhYWRkZTI1MjljZmVjMjAxYjM0ZWI1NWYyOTE1Li44Y2VlMTJj
YmRmYmY0MDA5MmY3YTA0MjBhZDkxYzcxYTgyYWMyOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVI
YW5kbGUuaApAQCAtNDEsOSArNDEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRGaWxlKERPTVBy
b21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RmlsZT4+JiYpOwogCiAgICAgdm9pZCBjcmVhdGVT
eW5jQWNjZXNzSGFuZGxlKERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGU+PiYmKTsKLSAgICB2b2lkIGdldFNpemUoRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9y
PHVpbnQ2NF90PiYmKT4mJik7Ci0gICAgdm9pZCB0cnVuY2F0ZShGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKTsKLSAgICB2b2lkIGZsdXNoKEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25Pcjx2b2lkPiYmKT4mJik7CiAgICAgdm9pZCBjbG9zZShGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8
dm9pZD4mJik+JiYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbi5oCmluZGV4IDczZWJmOTljNDVlNDE2MWRjZTQxMDY4M2VkMzg0MTU5NzQ4YWJhODcu
Ljc4ZTQ2OTIwNWY2MWE0MzkzYjZjNTcyNDgzZjQ3NGM1MzYwNzBiM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3Mv
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTU4LDkgKzU4LDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFbnRyeShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGRlbGV0ZVJlY3Vyc2l2ZWx5LCBWb2lkQ2FsbGJhY2sm
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlm
aWVyLCBGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgUmVzb2x2ZUNhbGxiYWNrJiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU3luY0FjY2Vzc0hhbmRsZShGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciwgR2V0QWNjZXNzSGFuZGxlQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRTaXplKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIEludGVnZXJDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHRydW5jYXRlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIFZvaWRDYWxsYmFjayYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZsdXNoKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFZvaWRDYWxsYmFjayYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFZvaWRDYWxsYmFjayYmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldEhhbmRsZU5hbWVzKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVy
LCBHZXRIYW5kbGVOYW1lc0NhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SGFu
ZGxlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIEdldEhh
bmRsZVdpdGhUeXBlQ2FsbGJhY2smJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZS5jcHAKaW5kZXggYTQ2ZTBkYzMwNjNlM2VmMjY2MjZkMGQ5YjIwMWEzMDVjZWRl
OWE2MS4uYjc4ZDYyY2E2Nzg5ZmVjZWYzMGVhYmNjOTA1NThkZmUzNDhkN2MwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1h
Y2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUZpbGVIYW5kbGUu
aCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIldvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTUwLDcgKzUxLDE5IEBAIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
CiAKIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjp+RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGUoKQogewotICAgIEFTU0VSVChtX2Nsb3NlUmVzdWx0KTsKKyAgICBBU1NFUlQoaXNDbG9zaW5n
T3JDbG9zZWQoKSk7CisgICAgaWYgKG1fY2xvc2VSZXN1bHQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIFRhc2sgcmVwbGllcyBtYXkgYmUgc2NoZWR1bGVkIHRvIFdvcmtlclJ1bkxvb3AgYnV0
IGRvIG5vdCBydW4uCisgICAgYXV0byBwZW5kaW5nUHJvbWlzZXMgPSBzdGQ6OmV4Y2hhbmdlKG1f
cGVuZGluZ1Byb21pc2VzLCB7IH0pOworICAgIGZvciAoYXV0byYgcHJvbWlzZSA6IHBlbmRpbmdQ
cm9taXNlcykgeworICAgICAgICBzdGQ6OnZpc2l0KFtdKGF1dG8mIHByb21pc2UpIHsKKyAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIkFjY2Vzc0hh
bmRsZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQiX3MgfSk7CisgICAgICAgIH0sIHByb21pc2Up
OworICAgIH0KKworICAgIGNsb3NlQmFja2VuZChDbG9zZU1vZGU6OlN5bmMpOwogfQogCiBib29s
IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjppc0Nsb3NpbmdPckNsb3NlZCgpIGNvbnN0CkBA
IC02MywxMiArNzYsMTYgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6dHJ1bmNh
dGUodW5zaWduZWQgbG9uZyBsb25nIHNpemUsIERPTVByb21pc2VEZWYKICAgICBpZiAoaXNDbG9z
aW5nT3JDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzSGFuZGxlIGlzIGNsb3Npbmcgb3IgY2xvc2VkIl9z
IH0pOwogCi0gICAgbV9wZW5kaW5nT3BlcmF0aW9uQ291bnQrKzsKLSAgICBtX3NvdXJjZS0+dHJ1
bmNhdGUobV9pZGVudGlmaWVyLCBzaXplLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAg
ICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPm1fcGVuZGluZ09wZXJhdGlv
bkNvdW50LS07CisgICAgYXV0byogc2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIXNjb3BlKQorICAgICAgICByZXR1
cm4gcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJDb250ZXh0
IGlzIGludmFsaWQiX3MgfSk7CiAKLSAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1
bHQpKTsKKyAgICBtX3BlbmRpbmdQcm9taXNlcy5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7Cisg
ICAgV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIGZpbGUgPSBtX2ZpbGUsIHNpemUsIHdvcmtlclRocmVhZCA9
IFJlZiB7IHNjb3BlLT50aHJlYWQoKSB9XSgpIG11dGFibGUgeworICAgICAgICB3b3JrZXJUaHJl
YWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc3Vj
Y2VzcyA9IEZpbGVTeXN0ZW06OnRydW5jYXRlRmlsZShmaWxlLCBzaXplKV0oYXV0byYpIG11dGFi
bGUgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlz
LT5jb21wbGV0ZVByb21pc2Uoc3VjY2VzcyA/IEV4Y2VwdGlvbk9yPHZvaWQ+IHsgfSA6IEV4Y2Vw
dGlvbiB7IFVua25vd25FcnJvciB9KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTc3
LDEyICs5NCwxNiBAQCB2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpnZXRTaXplKERP
TVByb21pc2VEZWZlcnJlZDxJRExVbnNpZ25lZExvbmdMb25nPgogICAgIGlmIChpc0Nsb3NpbmdP
ckNsb3NlZCgpKQogICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3NIYW5kbGUgaXMgY2xvc2luZyBvciBjbG9zZWQiX3MgfSk7
CiAKLSAgICBtX3BlbmRpbmdPcGVyYXRpb25Db3VudCsrOwotICAgIG1fc291cmNlLT5nZXRTaXpl
KG1faWRlbnRpZmllciwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFr
VGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX3BlbmRpbmdPcGVyYXRpb25Db3VudC0tOwor
ICAgIGF1dG8qIHNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKCFzY29wZSkKKyAgICAgICAgcmV0dXJuIHByb21pc2Uu
cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQ29udGV4dCBpcyBpbnZhbGlk
Il9zIH0pOwogCi0gICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CisgICAg
bV9wZW5kaW5nUHJvbWlzZXMuYXBwZW5kKFdURk1vdmUocHJvbWlzZSkpOworICAgIFdvcmtlckds
b2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBmaWxlID0gbV9maWxlLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBzY29wZS0+dGhy
ZWFkKCkgfV0oKSBtdXRhYmxlIHsKKyAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dFRhc2soW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHN1Y2Nlc3MgPSBGaWxlU3lzdGVt
OjpmaWxlU2l6ZShmaWxlKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHdlYWtU
aGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jb21wbGV0ZVByb21pc2Uoc3VjY2VzcyA/
IEV4Y2VwdGlvbk9yPHVuc2lnbmVkIGxvbmcgbG9uZz4geyAodW5zaWduZWQgbG9uZyBsb25nKShz
dWNjZXNzLnZhbHVlKCkpIH0gOiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IgfSk7CisgICAgICAg
IH0pOwogICAgIH0pOwogfQogCkBAIC05MSwyMCArMTEyLDIyIEBAIHZvaWQgRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGU6OmZsdXNoKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2Up
CiAgICAgaWYgKGlzQ2xvc2luZ09yQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybiBwcm9taXNlLnJl
amVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2Vzc0hhbmRsZSBpcyBjbG9z
aW5nIG9yIGNsb3NlZCJfcyB9KTsKIAotICAgIG1fcGVuZGluZ09wZXJhdGlvbkNvdW50Kys7Ci0g
ICAgbV9zb3VyY2UtPmZsdXNoKG1faWRlbnRpZmllciwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7
Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX3BlbmRpbmdP
cGVyYXRpb25Db3VudC0tOworICAgIGF1dG8qIHNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKCFzY29wZSkKKyAgICAg
ICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAi
Q29udGV4dCBpcyBpbnZhbGlkIl9zIH0pOwogCi0gICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1v
dmUocmVzdWx0KSk7CisgICAgbV9wZW5kaW5nUHJvbWlzZXMuYXBwZW5kKFdURk1vdmUocHJvbWlz
ZSkpOworICAgIFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKFt3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBmaWxlID0gbV9maWxlLCB3b3JrZXJUaHJlYWQg
PSBSZWYgeyBzY29wZS0+dGhyZWFkKCkgfV0oKSBtdXRhYmxlIHsKKyAgICAgICAgd29ya2VyVGhy
ZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHN1
Y2Nlc3MgPSBGaWxlU3lzdGVtOjpmbHVzaEZpbGUoZmlsZSldKGF1dG8mKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y29tcGxl
dGVQcm9taXNlKHN1Y2Nlc3MgPyBFeGNlcHRpb25Pcjx2b2lkPiB7IH0gOiBFeGNlcHRpb24geyBV
bmtub3duRXJyb3IgfSk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCiB2b2lkIEZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlOjpjbG9zZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9t
aXNlKQogewotICAgIG1fcGVuZGluZ09wZXJhdGlvbkNvdW50Kys7CiAgICAgY2xvc2VJbnRlcm5h
bChbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgd2Vha1RoaXMtPm1fcGVuZGluZ09w
ZXJhdGlvbkNvdW50LS07CiAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7
CiAgICAgfSk7CiB9CkBAIC0xMTksMTIgKzE0MiwzMSBAQCB2b2lkIEZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlOjpjbG9zZUludGVybmFsKENsb3NlQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICBp
ZiAoaXNDbG9zaW5nKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUobV9maWxlKTsKLSAgICBtX3NvdXJjZS0+Y2xvc2UobV9pZGVudGlmaWVyLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGF1dG8gcmVzdWx0KSB7Ci0gICAgICAgIGRpZENs
b3NlKFdURk1vdmUocmVzdWx0KSk7CisgICAgYXV0byogc2NvcGUgPSBkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoc2NvcGUp
OworCisgICAgQVNTRVJUKG1fZmlsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKTsKKyAgICBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFz
ayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZmlsZSA9IHN0ZDo6ZXhjaGFuZ2UobV9m
aWxlLCBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSwgd29ya2VyVGhyZWFk
ID0gUmVmIHsgc2NvcGUtPnRocmVhZCgpIH1dKCkgbXV0YWJsZSB7CisgICAgICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dFRhc2soW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldKGF1dG8mKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y2xvc2VC
YWNrZW5kKENsb3NlTW9kZTo6QXN5bmMpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAordm9p
ZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y2xvc2VCYWNrZW5kKENsb3NlTW9kZSBtb2Rl
KQoreworICAgIGlmIChtb2RlID09IENsb3NlTW9kZTo6QXN5bmMpIHsKKyAgICAgICAgbV9zb3Vy
Y2UtPmNsb3NlKG1faWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9XShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBkaWRDbG9zZShXVEZNb3Zl
KHJlc3VsdCkpOworICAgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3NvdXJjZS0+
Y2xvc2UobV9pZGVudGlmaWVyLCBbXShhdXRvKSB7IH0pOworICAgICAgICBkaWRDbG9zZSh7IH0p
OworICAgIH0KK30KKwogdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6ZGlkQ2xvc2Uo
RXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFtX2Nsb3NlUmVzdWx0
KTsKQEAgLTE0Miw3ICsxODQsNyBAQCBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+IEZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpyZWFkKEJ1ZmZlclNvdXJjZSYmCiAgICAgaWYgKGlz
Q2xvc2luZ09yQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgIkFjY2Vzc0hhbmRsZSBpcyBjbG9zaW5nIG9yIGNsb3NlZCJfcyB9OwogCi0gICAg
aWYgKG1fcGVuZGluZ09wZXJhdGlvbkNvdW50KQorICAgIGlmICghbV9wZW5kaW5nUHJvbWlzZXMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJBY2Nlc3MgaGFuZGxlIGhhcyB1bmZpbmlzaGVkIG9wZXJhdGlvbiJfcyB9OwogCiAgICAgaW50
IHJlc3VsdCA9IEZpbGVTeXN0ZW06OnNlZWtGaWxlKG1fZmlsZSwgb3B0aW9ucy5hdCwgRmlsZVN5
c3RlbTo6RmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZyk7CkBAIC0xNjMsNyArMjA1LDcgQEAgRXhj
ZXB0aW9uT3I8dW5zaWduZWQgbG9uZyBsb25nPiBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6
d3JpdGUoQnVmZmVyU291cmNlJiYKICAgICBpZiAoaXNDbG9zaW5nT3JDbG9zZWQoKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzSGFuZGxlIGlz
IGNsb3Npbmcgb3IgY2xvc2VkIl9zIH07CiAKLSAgICBpZiAobV9wZW5kaW5nT3BlcmF0aW9uQ291
bnQpCisgICAgaWYgKCFtX3BlbmRpbmdQcm9taXNlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2VzcyBoYW5kbGUgaGFzIHVuZmlu
aXNoZWQgb3BlcmF0aW9uIl9zIH07CiAKICAgICBpbnQgcmVzdWx0ID0gRmlsZVN5c3RlbTo6c2Vl
a0ZpbGUobV9maWxlLCBvcHRpb25zLmF0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6QmVn
aW5uaW5nKTsKQEAgLTE3Nyw2ICsyMTksMjMgQEAgRXhjZXB0aW9uT3I8dW5zaWduZWQgbG9uZyBs
b25nPiBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6d3JpdGUoQnVmZmVyU291cmNlJiYKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpj
b21wbGV0ZVByb21pc2UoUmVzdWx0JiYgcmVzdWx0KQoreworICAgIGlmIChtX3BlbmRpbmdQcm9t
aXNlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcGVuZGluZ1Byb21p
c2UgPSBtX3BlbmRpbmdQcm9taXNlcy50YWtlRmlyc3QoKTsKKyAgICBXVEY6OnN3aXRjaE9uKFdU
Rk1vdmUocmVzdWx0KSwgWyZwZW5kaW5nUHJvbWlzZV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1
bHQpIHsKKyAgICAgICAgYXV0byogcHJvbWlzZSA9IHN0ZDo6Z2V0X2lmPERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPj4oJnBlbmRpbmdQcm9taXNlKTsKKyAgICAgICAgQVNTRVJUKHByb21pc2UpOwor
ICAgICAgICBwcm9taXNlLT5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKKyAgICB9LCBbJnBlbmRp
bmdQcm9taXNlXShFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+JiYgcmVzdWx0KSB7Cisg
ICAgICAgIGF1dG8qIHByb21pc2UgPSBzdGQ6OmdldF9pZjxET01Qcm9taXNlRGVmZXJyZWQ8SURM
VW5zaWduZWRMb25nTG9uZz4+KCZwZW5kaW5nUHJvbWlzZSk7CisgICAgICAgIEFTU0VSVChwcm9t
aXNlKTsKKyAgICAgICAgcHJvbWlzZS0+c2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CisgICAgfSk7
Cit9CisKIGNvbnN0IGNoYXIqIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjphY3RpdmVET01P
YmplY3ROYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gIkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vz
cy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmgKaW5kZXggNzBhZmYz
MzlhMjEwOTMwNDgwZTQ0N2MyMDg1NzkxZjUyMzJiYTEzMC4uOTE1ZmZkMDEzZjhjZmQyMzRlZDQ4
MjA4OTgxMTg1NzQ1YjU2ZGQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1
ZGUgIkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIklE
TFR5cGVzLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC01NCwxMiArNTUsMTYgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkQ2xvc2UoRXhjZXB0aW9uT3I8dm9pZD4mJik7CiAgICAgRXhjZXB0
aW9uT3I8dW5zaWduZWQgbG9uZyBsb25nPiByZWFkKEJ1ZmZlclNvdXJjZSYmLCBGaWxlc3lzdGVt
UmVhZFdyaXRlT3B0aW9ucyk7CiAgICAgRXhjZXB0aW9uT3I8dW5zaWduZWQgbG9uZyBsb25nPiB3
cml0ZShCdWZmZXJTb3VyY2UmJiwgRmlsZXN5c3RlbVJlYWRXcml0ZU9wdGlvbnMpOworICAgIHVz
aW5nIFJlc3VsdCA9IHN0ZDo6dmFyaWFudDxFeGNlcHRpb25Pcjx2b2lkPiwgRXhjZXB0aW9uT3I8
dW5zaWduZWQgbG9uZyBsb25nPj47CisgICAgdm9pZCBjb21wbGV0ZVByb21pc2UoUmVzdWx0JiYp
OwogCiBwcml2YXRlOgogICAgIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBGaWxlU3lzdGVtRmlsZUhhbmRsZSYsIEZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlKTsKICAgICBi
b29sIGlzQ2xvc2luZ09yQ2xvc2VkKCkgY29uc3Q7CiAgICAgdXNpbmcgQ2xvc2VDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+OwogICAgIHZvaWQg
Y2xvc2VJbnRlcm5hbChDbG9zZUNhbGxiYWNrJiYpOworICAgIGVudW0gY2xhc3MgQ2xvc2VNb2Rl
IDogYm9vbCB7IEFzeW5jLCBTeW5jIH07CisgICAgdm9pZCBjbG9zZUJhY2tlbmQoQ2xvc2VNb2Rl
KTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBmaW5hbDsKQEAgLTY3LDEwICs3MiwxMSBAQCBwcml2YXRlOgogCiAg
ICAgUmVmPEZpbGVTeXN0ZW1GaWxlSGFuZGxlPiBtX3NvdXJjZTsKICAgICBGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIHVpbnQ2NF90IG1fcGVu
ZGluZ09wZXJhdGlvbkNvdW50IHsgMCB9OwogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBtX2ZpbGU7CiAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25Pcjx2b2lkPj4gbV9jbG9z
ZVJlc3VsdDsKICAgICBWZWN0b3I8Q2xvc2VDYWxsYmFjaz4gbV9jbG9zZUNhbGxiYWNrczsKKyAg
ICB1c2luZyBQcm9taXNlID0gc3RkOjp2YXJpYW50PERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiwg
RE9NUHJvbWlzZURlZmVycmVkPElETFVuc2lnbmVkTG9uZ0xvbmc+PjsKKyAgICBEZXF1ZTxQcm9t
aXNlPiBtX3BlbmRpbmdQcm9taXNlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5k
ZXggYWUyOGYzMGY0OTRhZDAzMmE3ZDUyM2YyNmQ0NmNjMTk4ZDM3Y2UzYy4uMWRmNzBjNDgwMzEz
Y2RkOGJiZWE2M2EyMThiY2E4YWEyMTI2ZmIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtl
ckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTIwOCwxMiArMjA4LDYgQEAgdm9p
ZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmRpZENyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUoQ2FsbGJhY2tJZGVudGkKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsK
IH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNvbXBsZXRlSW50
ZWdlckNhbGxiYWNrKENhbGxiYWNrSWRlbnRpZmllciBjYWxsYmFja0lkZW50aWZpZXIsIEV4Y2Vw
dGlvbk9yPHVpbnQ2NF90PiYmIHJlc3VsdCkKLXsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1f
aW50ZWdlckNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSWRlbnRpZmllcikpCi0gICAgICAgIGNhbGxi
YWNrKFdURk1vdmUocmVzdWx0KSk7Ci19Ci0KIHZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpjb21wbGV0ZVZvaWRDYWxsYmFjayhDYWxsYmFja0lkZW50aWZpZXIgY2FsbGJh
Y2tJZGVudGlmaWVyLCBFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkKIHsKICAgICBpZiAoYXV0
byBjYWxsYmFjayA9IG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSWRlbnRpZmllcikpCkBA
IC0yNDMsNjYgKzIzNyw2IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
OjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKEZpbGVTeXN0ZW1IYW5kbGVJCiAgICAgfSk7CiB9CiAK
LXZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRTaXplKEZpbGVTeXN0
ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
SWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb246OkludGVnZXJDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIGlmICghbV9zY29wZSkK
LSAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0p
OwotCi0gICAgYXV0byBjYWxsYmFja0lkZW50aWZpZXIgPSBDYWxsYmFja0lkZW50aWZpZXI6Omdl
bmVyYXRlVGhyZWFkU2FmZSgpOwotICAgIG1faW50ZWdlckNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJ
ZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAgICBjYWxsT25NYWluVGhyZWFkKFtj
YWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgp
IH0sIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRp
ZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBt
YWluVGhyZWFkQ2FsbGJhY2sgPSBbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBX
VEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAg
IHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlm
aWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Y29tcGxldGVJbnRlZ2VyQ2FsbGJhY2soY2Fs
bGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAgfSwgV29ya2Vy
UnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbWFpblRocmVh
ZENvbm5lY3Rpb24tPmdldFNpemUoaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwg
V1RGTW92ZShtYWluVGhyZWFkQ2FsbGJhY2spKTsKLSAgICB9KTsKLX0KLQotdm9pZCBXb3JrZXJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OnRydW5jYXRlKEZpbGVTeXN0ZW1IYW5kbGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBh
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXplLCBGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb246OlZvaWRDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIGlmICghbV9zY29wZSkK
LSAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0p
OwotCi0gICAgYXV0byBjYWxsYmFja0lkZW50aWZpZXIgPSBDYWxsYmFja0lkZW50aWZpZXI6Omdl
bmVyYXRlVGhyZWFkU2FmZSgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVu
dGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxs
YmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0s
IG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmll
ciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgc2l6ZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0
byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQg
PSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVu
dGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkK
LSAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Y29tcGxldGVWb2lkQ2FsbGJhY2soY2Fs
bGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAgfSwgV29ya2Vy
UnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgbWFpblRocmVh
ZENvbm5lY3Rpb24tPnRydW5jYXRlKGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIs
IHNpemUsIFdURk1vdmUobWFpblRocmVhZENhbGxiYWNrKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQg
V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpmbHVzaChGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpW
b2lkQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICBpZiAoIW1fc2NvcGUpCi0gICAgICAgIHJl
dHVybiBjYWxsYmFjayhFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKLQotICAgIGF1
dG8gY2FsbGJhY2tJZGVudGlmaWVyID0gQ2FsbGJhY2tJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVh
ZFNhZmUoKTsKLSAgICBtX3ZvaWRDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RG
TW92ZShjYWxsYmFjaykpOwotCi0gICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2tJZGVudGlm
aWVyLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBtYWluVGhyZWFk
Q29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGFjY2Vzc0hh
bmRsZUlkZW50aWZpZXJdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxi
YWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJU
aHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQt
PnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0g
Y3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
PihzY29wZSkuZmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbm5lY3Rpb24tPmNvbXBsZXRlVm9pZENhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwg
V1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRN
b2RlKCkpOwotICAgICAgICB9OwotCi0gICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5mbHVz
aChpZGVudGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBXVEZNb3ZlKG1haW5UaHJlYWRD
YWxsYmFjaykpOwotICAgIH0pOwotfQotCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbjo6Y2xvc2UoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgRmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIs
IEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYgY2FsbGJhY2spCiB7
CiAgICAgaWYgKCFtX3Njb3BlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbi5oCmluZGV4IDViY2JmYzJhYjI5NjMzMzZmNGM1ZWJmZGIyNzQzMDE5YTI4
NTZiY2QuLjEyZmExYzE4MzhjZTYxNzg3M2ExNzhmM2ViZDAwZjEwNDBiMGM1MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTQ5LDcg
KzQ5LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVzb2x2ZShDYWxsYmFja0lkZW50aWZpZXIs
IEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiYmKTsKICAgICB2b2lkIGRpZENyZWF0ZVN5bmNB
Y2Nlc3NIYW5kbGUoQ2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25PcjxzdGQ6OnBhaXI8Rmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGU+PiYmKTsKICAgICB2b2lkIGNvbXBsZXRlVm9pZENhbGxiYWNrKENhbGxiYWNrSWRl
bnRpZmllciwgRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpOwotICAgIHZvaWQgY29tcGxldGVJ
bnRlZ2VyQ2FsbGJhY2soQ2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25Pcjx1aW50NjRfdD4m
JiByZXN1bHQpOwogICAgIHZvaWQgZGlkR2V0SGFuZGxlTmFtZXMoQ2FsbGJhY2tJZGVudGlmaWVy
LCBFeGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4mJik7CiAgICAgdm9pZCBkaWRHZXRIYW5kbGVX
aXRoVHlwZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4+JiYpOwogCkBAIC02OCw5ICs2Nyw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBnZXRIYW5kbGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmFtZSwgR2V0SGFuZGxlV2l0aFR5cGVDYWxsYmFjayYmKSBmaW5hbDsKIAogICAg
IHZvaWQgY3JlYXRlU3luY0FjY2Vzc0hhbmRsZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRBY2Nlc3NIYW5kbGVDYWxsYmFjayYmKSBm
aW5hbDsKLSAgICB2b2lkIGdldFNpemUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjpJbnRlZ2VyQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB0cnVuY2F0ZShGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
LCB1aW50NjRfdCBzaXplLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFj
ayYmKSBmaW5hbDsKLSAgICB2b2lkIGZsdXNoKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2UoRmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwg
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJikgZmluYWw7CiAKICAg
ICBXZWFrUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBtX3Njb3BlOwpAQCAtODAsNyArNzYsNiBAQCBw
cml2YXRlOgogICAgIEhhc2hNYXA8Q2FsbGJhY2tJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb246OlJlc29sdmVDYWxsYmFjaz4gbV9yZXNvbHZlQ2FsbGJhY2tzOwogICAgIEhh
c2hNYXA8Q2FsbGJhY2tJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Okdl
dEFjY2Vzc0hhbmRsZUNhbGxiYWNrPiBtX2dldEFjY2Vzc0hhbmRsQ2FsbGJhY2tzOwogICAgIEhh
c2hNYXA8Q2FsbGJhY2tJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZv
aWRDYWxsYmFjaz4gbV92b2lkQ2FsbGJhY2tzOwotICAgIEhhc2hNYXA8Q2FsbGJhY2tJZGVudGlm
aWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkludGVnZXJDYWxsYmFjaz4gbV9pbnRl
Z2VyQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8Q2FsbGJhY2tJZGVudGlmaWVyLCBGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb246OkdldEhhbmRsZU5hbWVzQ2FsbGJhY2s+IG1fZ2V0SGFuZGxlTmFt
ZXNDYWxsYmFja3M7CiAgICAgSGFzaE1hcDxDYWxsYmFja0lkZW50aWZpZXIsIEZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbjo6R2V0SGFuZGxlV2l0aFR5cGVDYWxsYmFjaz4gbV9nZXRIYW5kbGVX
aXRoVHlwZUNhbGxiYWNrczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuY3BwCmluZGV4IDc1ZmE0Mzg1ZGQwYWU3ZTA2NWIyZjY2NGRkZGJjYzM3ZTgyOWY2
NjQuLjJjNDYyYzJlMGNmNjhlN2M0MDVlM2MyZTA5MzZlYTMzMGQ1ZDE3ODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC03Nyw2ICs3NywxMiBA
QCBzdGF0aWMgSGFzaFNldDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mIGFsbFdv
cmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcgogICAgIHJldHVybiBpZGVudGlmaWVyczsKIH0KIAor
c3RhdGljIFJlZjxXb3JrUXVldWU+IHNoYXJlZEZpbGVTeXN0ZW1TdG9yYWdlUXVldWUoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWY8V29ya1F1ZXVlPj4gcXVldWUoV29ya1F1ZXVl
OjpjcmVhdGUoIlNoYXJlZCBGaWxlIFN5c3RlbSBTdG9yYWdlIFF1ZXVlIiwgIFdvcmtRdWV1ZTo6
UU9TOjpVdGlsaXR5KSk7CisgICAgcmV0dXJuIHF1ZXVlLmdldCgpLmNvcHlSZWYoKTsKK30KKwog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdvcmtlckdsb2JhbFNjb3BlKTsKIAogV29ya2Vy
R2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGUgdHlwZSwgY29u
c3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2lu
LCBXb3JrZXJUaHJlYWQmIHRocmVhZCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwg
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJv
dmlkZXIqIHNvY2tldFByb3ZpZGVyKQpAQCAtMjMyLDYgKzIzOCwxMSBAQCBXb3JrZXJTdG9yYWdl
Q29ubmVjdGlvbiYgV29ya2VyR2xvYmFsU2NvcGU6OnN0b3JhZ2VDb25uZWN0aW9uKCkKICAgICBy
ZXR1cm4gKm1fc3RvcmFnZUNvbm5lY3Rpb247CiB9CiAKK3ZvaWQgV29ya2VyR2xvYmFsU2NvcGU6
OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCit7Cisg
ICAgc2hhcmVkRmlsZVN5c3RlbVN0b3JhZ2VRdWV1ZSgpLT5kaXNwYXRjaChXVEZNb3ZlKHRhc2sp
KTsKK30KKwogV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uJiBXb3JrZXJHbG9iYWxT
Y29wZTo6Z2V0RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKFJlZjxGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb24+JiYgbWFpblRocmVhZENvbm5lY3Rpb24pCiB7CiAgICAgaWYgKCFtX2ZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuaAppbmRleCBkNTg4MGVmMjcwNzdhMzY0NWQ4ZjMzNTExYmZkNDRiNTljNWI5MTQx
Li5hZTNiMmRiZGFjN2ZhNDRjZTdlM2YzMjIyMDJjMDA4YjNlYzg3OGZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC04OCw2ICs4OCw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBXZWFrVmFsdWVUeXBlID0gRXZlbnRUYXJnZXQ6OldlYWtWYWx1ZVR5cGU7
CiAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OndlYWtQdHJGYWN0b3J5OwogICAgIFdvcmtlclN0b3Jh
Z2VDb25uZWN0aW9uJiBzdG9yYWdlQ29ubmVjdGlvbigpOworICAgIHN0YXRpYyB2b2lkIHBvc3RG
aWxlU3lzdGVtU3RvcmFnZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICBXb3JrZXJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24mIGdldEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbihS
ZWY8RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uPiYmKTsKICAgICBXb3JrZXJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb24qIGZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigpOwogICAgIFdv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24mIGNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVt
U3RvcmFnZUVycm9yLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmls
ZVN5c3RlbVN0b3JhZ2VFcnJvci5oCmluZGV4IDAyNzczN2EyYjQwYjJjMjcwZWFhNjRiOGE1Zjll
NjQzMDFlZTg3OTYuLmMzNmY3NTM0YzZhYjViNjJhYTRhNWRkMzQ2OTM0ZjMxZWRiMDhiZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVt
U3RvcmFnZUVycm9yLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0ZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGVudW0gY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvciA6IHVpbnQ4X3Qgewor
ICAgIEFjY2Vzc0hhbmRsZUFjdGl2ZSwKICAgICBCYWNrZW5kTm90U3VwcG9ydGVkLAogICAgIEZp
bGVOb3RGb3VuZCwKICAgICBJbnZhbGlkTW9kaWZpY2F0aW9uLApAQCAtNDMsMTQgKzQ0LDE2IEBA
IGVudW0gY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvciA6IHVpbnQ4X3QgewogaW5saW5lIFdl
YkNvcmU6OkV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb24oRmlsZVN5c3RlbVN0b3JhZ2VFcnJv
ciBlcnJvcikKIHsKICAgICBzd2l0Y2ggKGVycm9yKSB7CisgICAgY2FzZSBGaWxlU3lzdGVtU3Rv
cmFnZUVycm9yOjpBY2Nlc3NIYW5kbGVBY3RpdmU6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpF
eGNlcHRpb24geyBXZWJDb3JlOjpJbnZhbGlkU3RhdGVFcnJvciwgIlNvbWUgQWNjZXNzSGFuZGxl
IGlzIGFjdGl2ZSJfcyB9OwogICAgIGNhc2UgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6QmFja2Vu
ZE5vdFN1cHBvcnRlZDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNv
cmU6Ok5vdFN1cHBvcnRlZEVycm9yLCAiQmFja2VuZCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bl
cmF0aW9uIiB9OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6
Tm90U3VwcG9ydGVkRXJyb3IsICJCYWNrZW5kIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRp
b24iX3MgfTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkZpbGVOb3RGb3VuZDoK
ICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6Ok5vdEZvdW5kRXJy
b3IgfTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkludmFsaWRNb2RpZmljYXRp
b246CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpJbnZhbGlk
TW9kaWZpY2F0aW9uRXJyb3IgfTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6Oklu
dmFsaWROYW1lOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6
VW5rbm93bkVycm9yLCAiTmFtZSBpcyBpbnZhbGlkIiB9OworICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiTmFtZSBpcyBpbnZhbGlkIl9z
IH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpJbnZhbGlkU3RhdGU6CiAgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpJbnZhbGlkU3RhdGVFcnJv
ciB9OwogICAgIGNhc2UgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VHlwZU1pc21hdGNoOgpAQCAt
NzcsNiArODAsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiB7CiAgICAgdXNpbmcgdmFsdWVzID0g
RW51bVZhbHVlczwKICAgICAgICAgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yLAorICAg
ICAgICBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkFjY2Vzc0hhbmRsZUFjdGl2ZSwK
ICAgICAgICAgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpCYWNrZW5kTm90U3VwcG9y
dGVkLAogICAgICAgICBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkZpbGVOb3RGb3Vu
ZCwKICAgICAgICAgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpJbnZhbGlkTW9kaWZp
Y2F0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKaW5kZXggNjA3MWNiYzUwMWEw
Yjc3NjY1MWNiNWUyNGNmYjcxZWRiNjQ5NWNlNy4uNGY3MmNkMDNmMzY4ZjQ1NzZkNDM1ZDY3ZTYy
ZTNhMTFiOTJjZmVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCkBAIC02Mywx
MiArNjMsNiBAQCBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5k
bGUoRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBtYW5hZwogICAgIH0KIH0KIAotRmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGU6On5GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZSgpCi17Ci0gICAgaWYgKG1f
aGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2hhbmRsZSk7Ci19Ci0KIHZvaWQgRmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGU6OmNsb3NlKCkKIHsKICAgICBpZiAoIW1fbWFuYWdlcikKQEAgLTE3MiwxMyAr
MTY2LDEzIEBAIEV4cGVjdGVkPEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpBY2Nlc3NIYW5kbGVJ
bmZvLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBGaWxlCiAgICAgaWYgKCFhY3F1aXJlZCkKICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkludmFs
aWRTdGF0ZSk7CiAKLSAgICBtX2hhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fcGF0aCwg
RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUpOwotICAgIGlmIChtX2hhbmRsZSA9
PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgIGF1dG8gaGFuZGxl
ID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9wYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6
OlJlYWRXcml0ZSk7CisgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcjo6VW5rbm93bik7CiAKLSAgICBhdXRvIGlwY0hhbmRsZSA9IElQQzo6U2hhcmVk
RmlsZUhhbmRsZTo6Y3JlYXRlKG1faGFuZGxlKTsKKyAgICBhdXRvIGlwY0hhbmRsZSA9IElQQzo6
U2hhcmVkRmlsZUhhbmRsZTo6Y3JlYXRlKGhhbmRsZSk7CiAgICAgaWYgKCFpcGNIYW5kbGUpIHsK
LSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1faGFuZGxlKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChG
aWxlU3lzdGVtU3RvcmFnZUVycm9yOjpCYWNrZW5kTm90U3VwcG9ydGVkKTsKICAgICB9CiAKQEAg
LTE4Nyw2MSArMTgxLDExIEBAIEV4cGVjdGVkPEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpBY2Nl
c3NIYW5kbGVJbmZvLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBGaWxlCiAgICAgcmV0dXJuIHN0
ZDo6cGFpciB7ICptX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUsIFdURk1vdmUoKmlwY0hhbmRsZSkg
fTsKIH0KIAotRXhwZWN0ZWQ8dWludDY0X3QsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlOjpnZXRTaXplKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKQotewotICAgIGlmICghbV9t
YW5hZ2VyKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VF
cnJvcjo6VW5rbm93bik7Ci0KLSAgICBpZiAoIW1fYWN0aXZlU3luY0FjY2Vzc0hhbmRsZSB8fCAq
bV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlICE9IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpCi0gICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3du
KTsKLQotICAgIGF1dG8gc2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKG1fcGF0aCk7Ci0gICAg
aWYgKCFzaXplKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvcjo6VW5rbm93bik7Ci0KLSAgICByZXR1cm4gc2l6ZS52YWx1ZSgpOwotfQotCi1zdGQ6
Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxl
Ojp0cnVuY2F0ZShXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIg
YWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSkKLXsKLSAgICBpZiAoIW1fbWFu
YWdlcikKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247Ci0K
LSAgICBpZiAoIW1fYWN0aXZlU3luY0FjY2Vzc0hhbmRsZSB8fCAqbV9hY3RpdmVTeW5jQWNjZXNz
SGFuZGxlICE9IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBGaWxlU3lz
dGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwotCi0gICAgQVNTRVJUKG1faGFuZGxlICE9IEZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIGF1dG8gcmVzdWx0ID0gRmls
ZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKG1faGFuZGxlLCBzaXplKTsKLSAgICBpZiAoIXJlc3VsdCkK
LSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247Ci0KLSAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi1zdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpmbHVzaChXZWJDb3JlOjpGaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllcikKLXsKLSAg
ICBpZiAoIW1fbWFuYWdlcikKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6
OlVua25vd247Ci0KLSAgICBpZiAoIW1fYWN0aXZlU3luY0FjY2Vzc0hhbmRsZSB8fCAqbV9hY3Rp
dmVTeW5jQWNjZXNzSGFuZGxlICE9IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpCi0gICAgICAgIHJl
dHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwotCi0gICAgQVNTRVJUKG1faGFu
ZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIGF1dG8g
cmVzdWx0ID0gRmlsZVN5c3RlbTo6Zmx1c2hGaWxlKG1faGFuZGxlKTsKLSAgICBpZiAoIXJlc3Vs
dCkKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247Ci0KLSAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCiBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9y
YWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpjbG9zZShXZWJDb3JlOjpGaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllcikKIHsK
ICAgICBpZiAoIW1fYWN0aXZlU3luY0FjY2Vzc0hhbmRsZSB8fCAqbV9hY3RpdmVTeW5jQWNjZXNz
SGFuZGxlICE9IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBGaWxlU3lz
dGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwogCi0gICAgQVNTRVJUKG1faGFuZGxlICE9IEZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShtX2hhbmRsZSk7Ci0KICAgICBpZiAoIW1fbWFuYWdlcikKICAgICAgICAgcmV0dXJuIEZp
bGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247CiAKQEAgLTI3OCw3ICsyMjIsNyBAQCBzdGQ6
Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxl
Ojptb3ZlKFdlYkNvcmU6OkZpbAogCiAgICAgLy8gRG8gbm90IG1vdmUgZmlsZSBpZiB0aGVyZSBp
cyBvbmdvaW5nIG9wZXJhdGlvbi4KICAgICBpZiAobV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlKQot
ICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6SW52YWxpZFN0YXRlOworICAg
ICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6QWNjZXNzSGFuZGxlQWN0aXZlOwog
CiAgICAgaWYgKG1fbWFuYWdlci0+Z2V0VHlwZShkZXN0aW5hdGlvbklkZW50aWZpZXIpICE9IFR5
cGU6OkRpcmVjdG9yeSkKICAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlR5
cGVNaXNtYXRjaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmgKaW5kZXggM2RhZjQ3MmY3MTZj
NTNkYjVjNGMyYjhlOTU4ZjU3NGY4ZWVlYWRkOC4uZmI5Mjk4MTQxYjBkYmMzODFmYThiM2IzODE3
ZTY4Y2EwMTg5NzlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmgKQEAgLTQ0LDcgKzQ0
LDYgQEAgY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUsIFcKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5
cGUgOiB1aW50OF90IHsgRmlsZSwgRGlyZWN0b3J5LCBBbnkgfTsKICAgICBGaWxlU3lzdGVtU3Rv
cmFnZUhhbmRsZShGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImLCBUeXBlLCBTdHJpbmcmJiBwYXRo
LCBTdHJpbmcmJiBuYW1lKTsKLSAgICB+RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUoKTsKIAogICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIHBhdGgoKSBjb25zdCB7
IHJldHVybiBtX3BhdGg7IH0KQEAgLTYyLDkgKzYxLDYgQEAgcHVibGljOgogCiAgICAgdXNpbmcg
QWNjZXNzSGFuZGxlSW5mbyA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIsIElQQzo6U2hhcmVkRmlsZUhhbmRsZT47CiAgICAgRXhwZWN0ZWQ8
QWNjZXNzSGFuZGxlSW5mbywgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gY3JlYXRlU3luY0FjY2Vz
c0hhbmRsZSgpOwotICAgIEV4cGVjdGVkPHVpbnQ2NF90LCBGaWxlU3lzdGVtU3RvcmFnZUVycm9y
PiBnZXRTaXplKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllcik7
Ci0gICAgc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiB0cnVuY2F0ZShXZWJD
b3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUp
OwotICAgIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gZmx1c2goV2ViQ29y
ZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyKTsKICAgICBzdGQ6Om9wdGlv
bmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGNsb3NlKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CkBAIC03Niw3ICs3Miw2IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fcGF0aDsKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyPiBt
X2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGU7Ci0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIG1faGFuZGxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmlu
ZGV4IGNlNTgxMTQwMzRmOThlZTMyNmRhYjc3ZGFmYWY1NjIzZGRkMjIwMDkuLjRlNGMwODU4MzIx
ZTI1MmFhZDg5ZTM0M2Q3Y2JhOWYxOGI1OTU3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIu
Y3BwCkBAIC0yNTMsNDAgKzI1MywxMiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3Jl
YXRlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbgogICAgIGlm
ICghaGFuZGxlKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0
ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bikpOwogCi0gICAgY29tcGxldGlvbkhh
bmRsZXIoaGFuZGxlLT5jcmVhdGVTeW5jQWNjZXNzSGFuZGxlKCkpOwotfQotCi12b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Z2V0U2l6ZUZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDx1aW50NjRfdCwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwot
Ci0gICAgYXV0byBoYW5kbGUgPSBtX2ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnktPmdl
dEhhbmRsZShpZGVudGlmaWVyKTsKLSAgICBpZiAoIWhhbmRsZSkKLSAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVu
a25vd24pKTsKLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+Z2V0U2l6ZShhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjp0cnVu
Y2F0ZUZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIg
YWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGF1dG8g
aGFuZGxlID0gbV9maWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LT5nZXRIYW5kbGUoaWRl
bnRpZmllcik7Ci0gICAgaWYgKCFoYW5kbGUpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duKTsKLQotICAgIGNvbXBsZXRpb25I
YW5kbGVyKGhhbmRsZS0+dHJ1bmNhdGUoYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgc2l6ZSkpOwot
fQotCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Zmx1c2hGb3JBY2Nlc3NIYW5kbGUoV2Vi
Q29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6Rmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7Ci0KLSAgICBhdXRvIGhhbmRsZSA9IG1fZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdp
c3RyeS0+Z2V0SGFuZGxlKGlkZW50aWZpZXIpOwotICAgIGlmICghaGFuZGxlKQotICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bik7
CisgICAgYXV0byByZXN1bHQgPSBoYW5kbGUtPmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoKTsKKyAg
ICBhdXRvIGZpbGVIYW5kbGUgPSByZXN1bHQgPyByZXN1bHQudmFsdWUoKS5zZWNvbmQgOiBJUEM6
OlNoYXJlZEZpbGVIYW5kbGUoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3Vs
dCkpOwogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlLT5mbHVzaChhY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyKSk7CisgICAgLy8gQ2xvc2UgdGhlIGZpbGUgaGFuZGxlIGluIG5ldHdvcmsgcHJv
Y2Vzcy4KKyAgICBmaWxlSGFuZGxlLmNsb3NlKCk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpjbG9zZUFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50
aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAppbmRleCBlMjU1MDQxODk2MGZkNGY3ZTM4Yzg0MWM0MDhm
M2Y0MDVhZDY2Mzc4Li5iMTZjYzI1ODhlM2ZlNmUxZmM1ZDFlZjRkZTRjYTJmYzgzNWM1ODkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCkBAIC03OSw5ICs3OSw2IEBAIHByaXZhdGU6CiAKICAg
ICB1c2luZyBBY2Nlc3NIYW5kbGVJbmZvID0gc3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgSVBDOjpTaGFyZWRGaWxlSGFuZGxlPjsKICAgICB2
b2lkIGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8QWNjZXNzSGFuZGxlSW5mbywg
RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmKTsKLSAgICB2b2lkIGdldFNpemVGb3JBY2Nlc3NI
YW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDx1aW50NjRfdCwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmKTsKLSAgICB2b2lk
IHRydW5jYXRlRm9yQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlm
aWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2
NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVt
U3RvcmFnZUVycm9yPik+JiYpOwotICAgIHZvaWQgZmx1c2hGb3JBY2Nlc3NIYW5kbGUoV2ViQ29y
ZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7CiAgICAgdm9pZCBjbG9zZUFjY2Vzc0hhbmRs
ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmKTsKICAgICB2b2lkIGdldEhhbmRs
ZU5hbWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4cGVjdGVkPFZlY3RvcjxTdHJpbmc+LCBGaWxlU3lzdGVtU3RvcmFnZUVycm9y
Pik+JiYpOwogICAgIHZvaWQgZ2V0SGFuZGxlKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZp
bGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciwgYm9vbD4sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAxZmJiZjM3YmFhZDdkMDQzYzg3NWNl
OGRmMWJhYjlhMTU3NmE3OTA1Li5iNGZhYWY3YWNlNjc1ZGJiZTA0ZDYzZDFjYjgzMDcxMzYyOTZj
ZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTM2
LDkgKzM2LDYgQEAKICAgICBNb3ZlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGRlc3RpbmF0
aW9uSWRlbnRpZmllciwgU3RyaW5nIG5ld05hbWUpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6
RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwogCiAgICAgQ3JlYXRlU3luY0Fj
Y2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVy
KSAtPiAoRXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlSWRlbnRpZmllciwgSVBDOjpTaGFyZWRGaWxlSGFuZGxlPiwgV2ViS2l0OjpGaWxlU3lzdGVt
U3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jCi0gICAgR2V0U2l6ZUZvckFjY2Vzc0hhbmRsZShX
ZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmll
cikgLT4gKEV4cGVjdGVkPHVpbnQ2NF90LCBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+
IHJlc3VsdCkgQXN5bmMKLSAgICBUcnVuY2F0ZUZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qg
c2l6ZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBy
ZXN1bHQpIEFzeW5jCi0gICAgRmx1c2hGb3JBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nl
c3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlv
bmFsPFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwogICAgIENs
b3NlQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nl
c3NIYW5kbGVJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKICAgICBHZXRIYW5kbGVOYW1lcyhXZWJDb3JlOjpG
aWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoRXhwZWN0ZWQ8VmVjdG9y
PFN0cmluZz4sIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwog
ICAgIEdldEhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBTdHJpbmcgbmFtZSkgLT4gKEV4cGVjdGVkPHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4sIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4gcmVzdWx0KSBBc3luYyBXYW50c0Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAKaW5kZXggOGViY2U5ODAwODdjMDc1YjAyM2I1
OGFlYTJlMTU1ODYwZDc2OTQ2NC4uNjRlNDIxNzgwMWEyMWYwNWQ4OGI0ZTYxNjhkNzBiODlmOTVh
N2UwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRs
ZS5jcHAKQEAgLTI4LDYgKzI4LDExIEBACiAKIG5hbWVzcGFjZSBJUEMgewogCit2b2lkIFNoYXJl
ZEZpbGVIYW5kbGU6OmNsb3NlKCkKK3sKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9oYW5k
bGUpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEZp
bGVIYW5kbGU+IFNoYXJlZEZpbGVIYW5kbGU6OmNyZWF0ZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRG
aWxlSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxl
LmgKaW5kZXggYTQ2YWM4OTA1MDdlYjY5M2ExMDdiNDk5ZTU0MzYwNmE3OTdlNDQ5YS4uNTg1YWQ5
OTM3MjcyYzJkMGFhOWQ1MzdjMjM3YzgzYTZiNTYwOGI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuaApAQCAtMzksOSArMzksOSBAQCBwdWJsaWM6
CiAKICAgICBTaGFyZWRGaWxlSGFuZGxlKCkgPSBkZWZhdWx0OwogICAgIEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUoKSB7IHJldHVybiBtX2hhbmRsZTsgfQorICAgIHZvaWQg
Y2xvc2UoKTsKIAogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLQogICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFNoYXJlZEZpbGVIYW5kbGU+IGRlY29kZShEZWNvZGVyJik7CiAgICAg
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcAppbmRleCBkMWQ3OTg1ZTY1ZWRkMjU5ZWY5MzI1ZjI5NGYwNGM4ZTA2MThmYmQyLi5mMDFm
MjFmZjhmNjE2M2FlNTNlNDg3MzI0MmNmZTViN2Y5ODZmZGE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMTM0LDM5ICsxMzQsNiBAQCB2
b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRs
ZShXZWJDb3JlOjpGaWxlU3lzdGVtSAogICAgIH0pOwogfQogCi12b2lkIFdlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbjo6Z2V0U2l6ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50
aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgSW50ZWdlckNhbGxiYWNrJiYgY29tcGxldGlv
bkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3Is
ICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOwotCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0U2l6ZUZvckFjY2Vz
c0hhbmRsZShpZGVudGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSwgW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBtdXRhYmxl
IHsKLSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoY29udmVydFRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7Ci0KLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmVzdWx0LnZhbHVlKCkpOwotICAgIH0pOwotfQotCi12b2lkIFdlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6dHJ1bmNhdGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhh
bmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIFZv
aWRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV9jb25uZWN0aW9u
KQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsg
V2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKLQotICAgIG1f
Y29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OlRydW5jYXRlRm9yQWNjZXNzSGFuZGxlKGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlk
ZW50aWZpZXIsIHNpemUpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oYXV0byBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGNvbnZlcnRUb0V4Y2VwdGlvbk9yKGVycm9yKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpmbHVzaChXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgVm9pZENhbGxiYWNrJiYgY29tcGxl
dGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJy
b3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOwotCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Rmx1c2hGb3JBY2Nl
c3NIYW5kbGUoaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciksIFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGVycm9yKSBtdXRhYmxl
IHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udmVydFRvRXhjZXB0aW9uT3IoZXJyb3Ip
KTsKLSAgICB9KTsKLX0KLQogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNs
b3NlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNv
cmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVu
dGlmaWVyLCBWb2lkQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1f
Y29ubmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24u
aAppbmRleCBhNzZhN2QxM2MzMGQ1OTgxZmU3MWE3NzRjZDRkMDVjMjE2NDcxNDEwLi5kNTcxM2Y4
YWQyMWIxMmU2MWNhNGFlYTVhYTg1MTFlZGUzYTY4NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC04Myw5ICs4Myw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBnZXRIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRIYW5kbGVX
aXRoVHlwZUNhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgdm9pZCBjcmVhdGVTeW5jQWNjZXNzSGFu
ZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEFjY2Vzc0hhbmRsZUNhbGxiYWNrJiYpIGZpbmFsOwot
ICAgIHZvaWQgZ2V0U2l6ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgV2Vi
Q29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkludGVnZXJDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2
b2lkIHRydW5jYXRlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIFdl
YkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYpIGZpbmFs
OwotICAgIHZvaWQgZmx1c2goV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdl
YkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6Rmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6Rmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxJUEM6
OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlZTRiZjhkYzU5Yjk4ODgxNTVkNzVj
M2IxOTI0NTM1Yzg1ZDcwM2NhLi4xMzE4NjQ4NjA3NjVkZDE1YzRjOGIwZmE5NWE3MGE3Mjc3NmZh
NDljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMDEgIFNpaHVpIExpdSAgPHNpaHVp
X2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgUGVyZm9ybSBGaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZSBvcGVyYXRpb25zIGluIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIxNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0
ODA5NDI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL2hhbmRsZS1tb3ZlLXdvcmtlci1leHBlY3RlZC50
eHQ6CisgICAgICAgICogc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL3Jlc291cmNlcy9oYW5kbGUt
bW92ZS5qczoKKyAgICAgICAgKGFzeW5jIHRlc3QpOgorCiAyMDIxLTExLTAxICBBeXVtaSBLb2pp
bWEgIDxheXVtaV9rb2ppbWFAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIERlYnVnIF0gaHR0
cC93cHQvcHVzaC1hcGkgdGVzdHMgYXJlIGZsYWt5IGZhaWxpbmcuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvaGFuZGxlLW1vdmUtd29ya2VyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9oYW5kbGUtbW92
ZS13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDJiYjg4YjQ4NzFmMTVhNzM1YTc4Y2Y5YzEyMGFm
YjJkOWIyOTg0OWQuLjY0NTliMDRjZTZkNGY1NWI0N2FkMmUzZjZmMDkwNmZkZTFjZWZlNzIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9oYW5kbGUtbW92
ZS13b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3Rl
bWFjY2Vzcy9oYW5kbGUtbW92ZS13b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xOCw3ICsxOCw3IEBA
IFBBU1MgW1dvcmtlcl0gbW92ZUZpbGVFcnJvci50b1N0cmluZygpIGlzICJVbmtub3duRXJyb3I6
IFRoZSBvcGVyYXRpb24gZmFpbGVkIGZvCiBQQVNTIFtXb3JrZXJdIG1vdmVGaWxlRXJyb3IudG9T
dHJpbmcoKSBpcyAiVW5rbm93bkVycm9yOiBOYW1lIGlzIGludmFsaWQiCiBQQVNTIFtXb3JrZXJd
IG1vdmVGaWxlRXJyb3IudG9TdHJpbmcoKSBpcyAiVW5rbm93bkVycm9yOiBOYW1lIGlzIGludmFs
aWQiCiBbV29ya2VyXSBUZXN0IG1vdmUgd2l0aCBvcGVuIGFjY2VzcyBoYW5kbGU6Ci1QQVNTIFtX
b3JrZXJdIG1vdmVGaWxlRXJyb3IudG9TdHJpbmcoKSBpcyAiSW52YWxpZFN0YXRlRXJyb3I6IFRo
ZSBvYmplY3QgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZS4iCitQQVNTIFtXb3JrZXJdIG1vdmVGaWxl
RXJyb3IudG9TdHJpbmcoKSBpcyAiSW52YWxpZFN0YXRlRXJyb3I6IFNvbWUgQWNjZXNzSGFuZGxl
IGlzIGFjdGl2ZSIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL3Jl
c291cmNlcy9oYW5kbGUtbW92ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFj
Y2Vzcy9yZXNvdXJjZXMvaGFuZGxlLW1vdmUuanMKaW5kZXggZDkxZDkxYmM1MzkyZmEwMDU4N2Vl
ZWQ1YTEzMGZhZmM4NTUyZjYxYS4uOWM4ZGNmMTUzZWJjYzAyNzVhM2NjMjE4ZDY4Njg0Y2IzZjU4
MGE5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL3Jl
c291cmNlcy9oYW5kbGUtbW92ZS5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0
ZW1hY2Nlc3MvcmVzb3VyY2VzL2hhbmRsZS1tb3ZlLmpzCkBAIC0xMDUsNyArMTA1LDcgQEAgYXN5
bmMgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICB0ZXN0RXJyb3IgPSAgIk1vdmVk
IGZpbGUgYmFjayB0byBkaXJIYW5kbGUxIHVuZXhwZWN0ZWRseSI7CiAgICAgICAgICAgICB9LCAo
ZXJyb3IpID0+IHsKICAgICAgICAgICAgICAgICBtb3ZlRmlsZUVycm9yID0gZXJyb3I7Ci0gICAg
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtb3ZlRmlsZUVycm9yLnRvU3RyaW5n
KCkiLCAiSW52YWxpZFN0YXRlRXJyb3I6IFRoZSBvYmplY3QgaXMgaW4gYW4gaW52YWxpZCBzdGF0
ZS4iKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm1vdmVGaWxlRXJy
b3IudG9TdHJpbmcoKSIsICJJbnZhbGlkU3RhdGVFcnJvcjogU29tZSBBY2Nlc3NIYW5kbGUgaXMg
YWN0aXZlIik7CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgaWYgKHRlc3RFcnJvcikg
ewo=
</data>
<flag name="commit-queue"
          id="467688"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443045</attachid>
            <date>2021-11-01 17:56:59 -0700</date>
            <delta_ts>2021-11-01 18:50:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232146-20211101175658.patch</filename>
            <type>text/plain</type>
            <size>52753</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjlmNWM4YmMzZjc2MTIw
ODI1ODI4NTZhN2EyNjJiNWIwMjVmODg5Yy4uY2U3ZTM5ODhmZjE5ZTJkNTNkMjBjNzFmNGE0MzEw
MGI1ZWFkYmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTExLTAxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFBlcmZvcm0gRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGUgb3BlcmF0aW9ucyBpbiB3ZWIgcHJvY2VzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMTQ2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84NDgwOTQyOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICB0cnVuY2F0ZSgpLCBnZXRTaXplKCkgYW5kIGZsdXNoKCkgb3BlcmF0aW9u
cyBhcmUgbm93IHBlcmZvcm1lZCBvbiBhIGdsb2JhbCBXb3JrUXVldWUgaW4gd2ViIHByb2Nlc3Mu
CisKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZpbGVIYW5kbGU6OmdldFNpemUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZpbGVIYW5kbGU6OnRydW5j
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1GaWxlSGFuZGxlOjpm
bHVzaCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVT
eXN0ZW1GaWxlSGFuZGxlLmg6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0Zp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3Rl
bWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6fkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjp0cnVuY2F0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Z2V0U2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Zmx1c2gp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3NlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjbG9zZUludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjbG9z
ZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6
OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6Ondy
aXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjb21w
bGV0ZVByb21pc2UpOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZS5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6Y29tcGxldGVJbnRlZ2VyQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRTaXplKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6dHJ1bmNh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpmbHVzaCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkRmls
ZVN5c3RlbVN0b3JhZ2VRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29w
ZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oOgorCiAyMDIxLTExLTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQWxpZ24gWFNMVFByb2Nlc3NvciB3aXRoIEJsaW5rIGFuZCBnZXQgY2xv
c2VyIHRvIEdlY2tvIGluIHRoZSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ2NGFhMWJjMjNhYTFmY2Uw
YTQxNWRmNWExN2JhZTg5NjM4YzM4MGMuLmFhNjEzNjQ5NmIzMzdhYjdkN2NlMzQzZGRhZGUwYjQ1
YzhiZjc1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTEtMDEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgUGVyZm9ybSBGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZSBvcGVyYXRpb25zIGluIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIxNDYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg0ODA5NDI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5ldHdvcmsgcHJvY2VzcyBubyBsb25nZXIgbmVlZHMgdG8gaG9sZCBvcGVuIGZp
bGUgaGFuZGxlIGZvciBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS4gTm93IGl0IGNyZWF0ZXMg
YW4gb3BlbiAKKyAgICAgICAgZmlsZSBoYW5kbGUsIHBhc3MgaXQgdG8gd2ViIHByb2Nlc3MgYW5k
IGNsb3NlIGl0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVt
U3RvcmFnZUVycm9yLmg6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb0V4Y2VwdGlvbik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpjcmVhdGVTeW5j
QWNjZXNzSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6
OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6Om1vdmUp
OgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6fkZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGU6OmdldFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZTo6dHJ1bmNhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpGaWxl
U3lzdGVtU3RvcmFnZUhhbmRsZTo6Zmx1c2gpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaDoKKyAgICAgICAgKCk6IERl
bGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmdldFNpemVGb3JBY2Nlc3NIYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnRydW5jYXRlRm9yQWNjZXNzSGFuZGxlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmbHVzaEZvckFjY2Vzc0hh
bmRsZSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkRmlsZUhhbmRsZS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEZpbGVIYW5kbGU6OmNsb3Nl
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpn
ZXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjp0cnVuY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Zmx1c2gpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmg6CisK
IDIwMjEtMTEtMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGEgdGVzdGluZyBwcmVmZXJlbmNlIHRvIHJlcGxheSBDRyBkaXNwbGF5IGxpc3Rz
IG1hbnVhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1h
Y2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmNwcAppbmRleCAyZGJiNGUzYTgw
MGZlMmY0NTg5NjE3ZGExN2MzYzUzMzA5MDFkYjFkLi4xNzUxMWYwYWUwOGJmNzJhOTQxMjMzM2Q1
YTg1N2QxYjIwZmZkMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKQEAgLTc1
LDMwICs3NSw2IEBAIHZvaWQgRmlsZVN5c3RlbUZpbGVIYW5kbGU6OmNyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUoRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjCiAgICAgfSk7CiB9CiAKLXZvaWQg
RmlsZVN5c3RlbUZpbGVIYW5kbGU6OmdldFNpemUoRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhjZXB0aW9uT3I8dWludDY0X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlm
IChpc0Nsb3NlZCgpKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJIYW5kbGUgaXMgY2xvc2VkIl9zIH0pOwotCi0gICAgY29u
bmVjdGlvbigpLmdldFNpemUoaWRlbnRpZmllcigpLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgRmlsZVN5c3RlbUZpbGVIYW5k
bGU6OnRydW5jYXRlKEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAg
ICBpZiAoaXNDbG9zZWQoKSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiSGFuZGxlIGlzIGNsb3NlZCJfcyB9KTsKLQotICAg
IGNvbm5lY3Rpb24oKS50cnVuY2F0ZShpZGVudGlmaWVyKCksIGFjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIsIHNpemUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQotdm9pZCBGaWxlU3lz
dGVtRmlsZUhhbmRsZTo6Zmx1c2goRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8dm9pZD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGlzQ2xvc2VkKCkp
Ci0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgIkhhbmRsZSBpcyBjbG9zZWQiX3MgfSk7Ci0KLSAgICBjb25uZWN0aW9uKCkuZmx1
c2goaWRlbnRpZmllcigpLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Ci19Ci0KIHZvaWQgRmlsZVN5c3RlbUZpbGVIYW5kbGU6OmNsb3NlKEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChpc0Nsb3NlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUu
aAppbmRleCBiYWE0MmY4ZDkyMzFhYWRkZTI1MjljZmVjMjAxYjM0ZWI1NWYyOTE1Li44Y2VlMTJj
YmRmYmY0MDA5MmY3YTA0MjBhZDkxYzcxYTgyYWMyOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVI
YW5kbGUuaApAQCAtNDEsOSArNDEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRGaWxlKERPTVBy
b21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RmlsZT4+JiYpOwogCiAgICAgdm9pZCBjcmVhdGVT
eW5jQWNjZXNzSGFuZGxlKERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGU+PiYmKTsKLSAgICB2b2lkIGdldFNpemUoRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9y
PHVpbnQ2NF90PiYmKT4mJik7Ci0gICAgdm9pZCB0cnVuY2F0ZShGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKTsKLSAgICB2b2lkIGZsdXNoKEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25Pcjx2b2lkPiYmKT4mJik7CiAgICAgdm9pZCBjbG9zZShGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8
dm9pZD4mJik+JiYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbi5oCmluZGV4IDczZWJmOTljNDVlNDE2MWRjZTQxMDY4M2VkMzg0MTU5NzQ4YWJhODcu
LjE2NjM2ODJiMzdhYjJkZTE2ZTQxZmQ0NzNjYjcyZDBjY2EyNzk0NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3Mv
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTQ2LDcgKzQ2LDYgQEAgcHVibGljOgog
ICAgIHVzaW5nIFJlc29sdmVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0
aW9uT3I8VmVjdG9yPFN0cmluZz4+JiYpPjsKICAgICB1c2luZyBHZXRBY2Nlc3NIYW5kbGVDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8c3RkOjpwYWlyPEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlPj4mJik+OwogICAgIHVzaW5nIFZvaWRDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+OwotICAgIHVzaW5nIEludGVnZXJDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8dWludDY0X3Q+JiYpPjsKICAgICB1
c2luZyBHZXRIYW5kbGVOYW1lc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNl
cHRpb25PcjxWZWN0b3I8U3RyaW5nPj4mJik+OwogICAgIHVzaW5nIEdldEhhbmRsZVdpdGhUeXBl
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxG
aWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4+JiYpPjsKIApAQCAtNTgsOSArNTcsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUVudHJ5KEZpbGVTeXN0ZW1IYW5kbGVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgZGVsZXRlUmVjdXJzaXZlbHksIFZv
aWRDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc29sdmUoRmlsZVN5c3RlbUhh
bmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBSZXNvbHZlQ2FsbGJh
Y2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKEZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBHZXRBY2Nlc3NIYW5kbGVDYWxsYmFjayYmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFNpemUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgSW50ZWdlckNhbGxiYWNrJiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgdHJ1bmNhdGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSwgVm9pZENh
bGxiYWNrJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2goRmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgVm9pZENhbGxi
YWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoRmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgVm9pZENhbGxiYWNr
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SGFuZGxlTmFtZXMoRmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIsIEdldEhhbmRsZU5hbWVzQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBnZXRIYW5kbGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmFtZSwgR2V0SGFuZGxlV2l0aFR5cGVDYWxsYmFjayYmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcAppbmRleCBhNDZlMGRjMzA2M2UzZWYyNjYyNmQwZDli
MjAxYTMwNWNlZGU5YTYxLi5mZjQ1ZTA3ZWZkZTEyNGNiNDFjMTg4NWVlZTAzNGUzZDljNDgzMzQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJCdWZmZXJTb3VyY2UuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVt
RmlsZUhhbmRsZS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVk
ZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNyArNTEsMTkgQEAgRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGMKIAogRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6On5GaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZSgpCiB7Ci0gICAgQVNTRVJUKG1fY2xvc2VSZXN1bHQpOworICAgIEFTU0VS
VChpc0Nsb3NpbmdPckNsb3NlZCgpKTsKKyAgICBpZiAobV9jbG9zZVJlc3VsdCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gVGFzayByZXBsaWVzIG1heSBiZSBzY2hlZHVsZWQgdG8gV29ya2Vy
UnVuTG9vcCBidXQgZG8gbm90IHJ1bi4KKyAgICBhdXRvIHBlbmRpbmdQcm9taXNlcyA9IHN0ZDo6
ZXhjaGFuZ2UobV9wZW5kaW5nUHJvbWlzZXMsIHsgfSk7CisgICAgZm9yIChhdXRvJiBwcm9taXNl
IDogcGVuZGluZ1Byb21pc2VzKSB7CisgICAgICAgIHN0ZDo6dmlzaXQoW10oYXV0byYgcHJvbWlz
ZSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVW5rbm93bkVycm9y
LCAiQWNjZXNzSGFuZGxlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZCJfcyB9KTsKKyAgICAgICAg
fSwgcHJvbWlzZSk7CisgICAgfQorCisgICAgY2xvc2VCYWNrZW5kKENsb3NlTW9kZTo6U3luYyk7
CiB9CiAKIGJvb2wgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmlzQ2xvc2luZ09yQ2xvc2Vk
KCkgY29uc3QKQEAgLTYzLDEyICs3NiwxNiBAQCB2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlOjp0cnVuY2F0ZSh1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgRE9NUHJvbWlzZURlZgogICAg
IGlmIChpc0Nsb3NpbmdPckNsb3NlZCgpKQogICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3Qo
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3NIYW5kbGUgaXMgY2xvc2luZyBv
ciBjbG9zZWQiX3MgfSk7CiAKLSAgICBtX3BlbmRpbmdPcGVyYXRpb25Db3VudCsrOwotICAgIG1f
c291cmNlLT50cnVuY2F0ZShtX2lkZW50aWZpZXIsIHNpemUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byByZXN1bHQpIG11dGFi
bGUgewotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9wZW5k
aW5nT3BlcmF0aW9uQ291bnQtLTsKKyAgICBhdXRvKiBzY29wZSA9IGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghc2NvcGUpCisg
ICAgICAgIHJldHVybiBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkNvbnRleHQgaXMgaW52YWxpZCJfcyB9KTsKIAotICAgICAgICBwcm9taXNlLnNldHRsZShX
VEZNb3ZlKHJlc3VsdCkpOworICAgIG1fcGVuZGluZ1Byb21pc2VzLmFwcGVuZChXVEZNb3ZlKHBy
b21pc2UpKTsKKyAgICBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFz
ayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZmlsZSA9IG1fZmlsZSwgc2l6ZSwgd29y
a2VyVGhyZWFkID0gUmVmIHsgc2NvcGUtPnRocmVhZCgpIH1dKCkgbXV0YWJsZSB7CisgICAgICAg
IHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vh
a1RoaXMpLCBzdWNjZXNzID0gRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGZpbGUsIHNpemUpXShh
dXRvJikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAg
ICAgd2Vha1RoaXMtPmNvbXBsZXRlUHJvbWlzZShzdWNjZXNzID8gRXhjZXB0aW9uT3I8dm9pZD4g
eyB9IDogRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yIH0pOworICAgICAgICB9KTsKICAgICB9KTsK
IH0KIApAQCAtNzcsMTIgKzk0LDE2IEBAIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6
OmdldFNpemUoRE9NUHJvbWlzZURlZmVycmVkPElETFVuc2lnbmVkTG9uZ0xvbmc+CiAgICAgaWYg
KGlzQ2xvc2luZ09yQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybiBwcm9taXNlLnJlamVjdChFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2Vzc0hhbmRsZSBpcyBjbG9zaW5nIG9yIGNs
b3NlZCJfcyB9KTsKIAotICAgIG1fcGVuZGluZ09wZXJhdGlvbkNvdW50Kys7Ci0gICAgbV9zb3Vy
Y2UtPmdldFNpemUobV9pZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAg
ICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPm1fcGVuZGluZ09wZXJhdGlv
bkNvdW50LS07CisgICAgYXV0byogc2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIXNjb3BlKQorICAgICAgICByZXR1
cm4gcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJDb250ZXh0
IGlzIGludmFsaWQiX3MgfSk7CiAKLSAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1
bHQpKTsKKyAgICBtX3BlbmRpbmdQcm9taXNlcy5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7Cisg
ICAgV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIGZpbGUgPSBtX2ZpbGUsIHdvcmtlclRocmVhZCA9IFJlZiB7
IHNjb3BlLT50aHJlYWQoKSB9XSgpIG11dGFibGUgeworICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1
bkxvb3AoKS5wb3N0VGFzayhbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc3VjY2VzcyA9
IEZpbGVTeXN0ZW06OmZpbGVTaXplKGZpbGUpXShhdXRvJikgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNvbXBsZXRlUHJvbWlz
ZShzdWNjZXNzID8gRXhjZXB0aW9uT3I8dWludDY0X3Q+IHsgc3VjY2Vzcy52YWx1ZSgpIH0gOiBF
eGNlcHRpb24geyBVbmtub3duRXJyb3IgfSk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCkBA
IC05MSwyMCArMTEyLDIyIEBAIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmZsdXNo
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAgICAgaWYgKGlzQ2xvc2luZ09y
Q2xvc2VkKCkpCiAgICAgICAgIHJldHVybiBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgIkFjY2Vzc0hhbmRsZSBpcyBjbG9zaW5nIG9yIGNsb3NlZCJfcyB9KTsK
IAotICAgIG1fcGVuZGluZ09wZXJhdGlvbkNvdW50Kys7Ci0gICAgbV9zb3VyY2UtPmZsdXNoKG1f
aWRlbnRpZmllciwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhp
cykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX3BlbmRpbmdPcGVyYXRpb25Db3VudC0tOworICAg
IGF1dG8qIHNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CisgICAgaWYgKCFzY29wZSkKKyAgICAgICAgcmV0dXJuIHByb21pc2UucmVq
ZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQ29udGV4dCBpcyBpbnZhbGlkIl9z
IH0pOwogCi0gICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CisgICAgbV9w
ZW5kaW5nUHJvbWlzZXMuYXBwZW5kKFdURk1vdmUocHJvbWlzZSkpOworICAgIFdvcmtlckdsb2Jh
bFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCBmaWxlID0gbV9maWxlLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBzY29wZS0+dGhyZWFk
KCkgfV0oKSBtdXRhYmxlIHsKKyAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2soW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHN1Y2Nlc3MgPSBGaWxlU3lzdGVtOjpm
bHVzaEZpbGUoZmlsZSldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhp
cykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y29tcGxldGVQcm9taXNlKHN1Y2Nlc3MgPyBF
eGNlcHRpb25Pcjx2b2lkPiB7IH0gOiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IgfSk7CisgICAg
ICAgIH0pOwogICAgIH0pOwogfQogCiB2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpj
bG9zZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewotICAgIG1fcGVuZGlu
Z09wZXJhdGlvbkNvdW50Kys7CiAgICAgY2xvc2VJbnRlcm5hbChbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8gcmVzdWx0KSBtdXRh
YmxlIHsKLSAgICAgICAgd2Vha1RoaXMtPm1fcGVuZGluZ09wZXJhdGlvbkNvdW50LS07CiAgICAg
ICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CiAgICAgfSk7CiB9CkBAIC0xMTks
MTIgKzE0MiwzMSBAQCB2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjbG9zZUludGVy
bmFsKENsb3NlQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICBpZiAoaXNDbG9zaW5nKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9maWxlKTsKLSAgICBtX3Nv
dXJjZS0+Y2xvc2UobV9pZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH1dKGF1dG8gcmVzdWx0KSB7Ci0gICAgICAgIGRpZENsb3NlKFdURk1vdmUocmVzdWx0KSk7
CisgICAgYXV0byogc2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoc2NvcGUpOworCisgICAgQVNTRVJUKG1fZmls
ZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBXb3JrZXJH
bG9iYWxTY29wZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgZmlsZSA9IHN0ZDo6ZXhjaGFuZ2UobV9maWxlLCBGaWxlU3lzdGVtOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKSwgd29ya2VyVGhyZWFkID0gUmVmIHsgc2NvcGUtPnRocmVh
ZCgpIH1dKCkgbXV0YWJsZSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsK
KyAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhp
cykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y2xvc2VCYWNrZW5kKENsb3NlTW9kZTo6QXN5
bmMpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAordm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZTo6Y2xvc2VCYWNrZW5kKENsb3NlTW9kZSBtb2RlKQoreworICAgIGlmIChtb2RlID09
IENsb3NlTW9kZTo6QXN5bmMpIHsKKyAgICAgICAgbV9zb3VyY2UtPmNsb3NlKG1faWRlbnRpZmll
ciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShhdXRvIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBkaWRDbG9zZShXVEZNb3ZlKHJlc3VsdCkpOworICAgICAgICB9
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3NvdXJjZS0+Y2xvc2UobV9pZGVudGlmaWVyLCBb
XShhdXRvKSB7IH0pOworICAgICAgICBkaWRDbG9zZSh7IH0pOworICAgIH0KK30KKwogdm9pZCBG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6ZGlkQ2xvc2UoRXhjZXB0aW9uT3I8dm9pZD4mJiBy
ZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFtX2Nsb3NlUmVzdWx0KTsKQEAgLTE0Miw3ICsxODQsNyBA
QCBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlOjpyZWFkKEJ1ZmZlclNvdXJjZSYmCiAgICAgaWYgKGlzQ2xvc2luZ09yQ2xvc2VkKCkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2Vzc0hhbmRs
ZSBpcyBjbG9zaW5nIG9yIGNsb3NlZCJfcyB9OwogCi0gICAgaWYgKG1fcGVuZGluZ09wZXJhdGlv
bkNvdW50KQorICAgIGlmICghbV9wZW5kaW5nUHJvbWlzZXMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3MgaGFuZGxlIGhhcyB1
bmZpbmlzaGVkIG9wZXJhdGlvbiJfcyB9OwogCiAgICAgaW50IHJlc3VsdCA9IEZpbGVTeXN0ZW06
OnNlZWtGaWxlKG1fZmlsZSwgb3B0aW9ucy5hdCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW46
OkJlZ2lubmluZyk7CkBAIC0xNjMsNyArMjA1LDcgQEAgRXhjZXB0aW9uT3I8dW5zaWduZWQgbG9u
ZyBsb25nPiBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6d3JpdGUoQnVmZmVyU291cmNlJiYK
ICAgICBpZiAoaXNDbG9zaW5nT3JDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzSGFuZGxlIGlzIGNsb3Npbmcgb3IgY2xvc2VkIl9z
IH07CiAKLSAgICBpZiAobV9wZW5kaW5nT3BlcmF0aW9uQ291bnQpCisgICAgaWYgKCFtX3BlbmRp
bmdQcm9taXNlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgIkFjY2VzcyBoYW5kbGUgaGFzIHVuZmluaXNoZWQgb3BlcmF0aW9uIl9zIH07
CiAKICAgICBpbnQgcmVzdWx0ID0gRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9maWxlLCBvcHRpb25z
LmF0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nKTsKQEAgLTE3Nyw2ICsy
MTksMjMgQEAgRXhjZXB0aW9uT3I8dW5zaWduZWQgbG9uZyBsb25nPiBGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZTo6d3JpdGUoQnVmZmVyU291cmNlJiYKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Cit2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjb21wbGV0ZVByb21pc2UoUmVzdWx0
JiYgcmVzdWx0KQoreworICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBtX3BlbmRpbmdQcm9taXNl
cy50YWtlRmlyc3QoKTsKKyAgICBXVEY6OnN3aXRjaE9uKFdURk1vdmUocmVzdWx0KSwgWyZwZW5k
aW5nUHJvbWlzZV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIHsKKyAgICAgICAgYXV0byog
cHJvbWlzZSA9IHN0ZDo6Z2V0X2lmPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4oJnBlbmRpbmdQ
cm9taXNlKTsKKyAgICAgICAgQVNTRVJUKHByb21pc2UpOworICAgICAgICBwcm9taXNlLT5zZXR0
bGUoV1RGTW92ZShyZXN1bHQpKTsKKyAgICB9LCBbJnBlbmRpbmdQcm9taXNlXShFeGNlcHRpb25P
cjx1aW50NjRfdD4mJiByZXN1bHQpIHsKKyAgICAgICAgYXV0byogcHJvbWlzZSA9IHN0ZDo6Z2V0
X2lmPERPTVByb21pc2VEZWZlcnJlZDxJRExVbnNpZ25lZExvbmdMb25nPj4oJnBlbmRpbmdQcm9t
aXNlKTsKKyAgICAgICAgQVNTRVJUKHByb21pc2UpOworICAgICAgICBwcm9taXNlLT5zZXR0bGUo
V1RGTW92ZShyZXN1bHQpKTsKKyAgICB9KTsKK30KKwogY29uc3QgY2hhciogRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGU6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogewogICAgIHJldHVy
biAiRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGUuaAppbmRleCA3MGFmZjMzOWEyMTA5MzA0ODBlNDQ3YzIwODU3OTFmNTIzMmJh
MTMwLi45MTVmZmQwMTNmOGNmZDIzNGVkNDgyMDg5ODExODU3NDViNTZkZDg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nl
c3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUu
aD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CiAKQEAgLTU0LDEyICs1NSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDbG9zZShFeGNlcHRp
b25Pcjx2b2lkPiYmKTsKICAgICBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+IHJlYWQo
QnVmZmVyU291cmNlJiYsIEZpbGVzeXN0ZW1SZWFkV3JpdGVPcHRpb25zKTsKICAgICBFeGNlcHRp
b25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+IHdyaXRlKEJ1ZmZlclNvdXJjZSYmLCBGaWxlc3lzdGVt
UmVhZFdyaXRlT3B0aW9ucyk7CisgICAgdXNpbmcgUmVzdWx0ID0gc3RkOjp2YXJpYW50PEV4Y2Vw
dGlvbk9yPHZvaWQ+LCBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+PjsKKyAgICB2b2lk
IGNvbXBsZXRlUHJvbWlzZShSZXN1bHQmJik7CiAKIHByaXZhdGU6CiAgICAgRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1GaWxlSGFu
ZGxlJiwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIGJvb2wgaXNDbG9zaW5nT3JDbG9zZWQoKSBjb25zdDsK
ICAgICB1c2luZyBDbG9zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRp
b25Pcjx2b2lkPiYmKT47CiAgICAgdm9pZCBjbG9zZUludGVybmFsKENsb3NlQ2FsbGJhY2smJik7
CisgICAgZW51bSBjbGFzcyBDbG9zZU1vZGUgOiBib29sIHsgQXN5bmMsIFN5bmMgfTsKKyAgICB2
b2lkIGNsb3NlQmFja2VuZChDbG9zZU1vZGUpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAg
ICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwpAQCAtNjcs
MTAgKzcyLDExIEBAIHByaXZhdGU6CiAKICAgICBSZWY8RmlsZVN5c3RlbUZpbGVIYW5kbGU+IG1f
c291cmNlOwogICAgIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7Ci0gICAgdWludDY0X3QgbV9wZW5kaW5nT3BlcmF0aW9uQ291bnQgeyAwIH07CiAgICAg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZTsKICAgICBzdGQ6Om9wdGlvbmFs
PEV4Y2VwdGlvbk9yPHZvaWQ+PiBtX2Nsb3NlUmVzdWx0OwogICAgIFZlY3RvcjxDbG9zZUNhbGxi
YWNrPiBtX2Nsb3NlQ2FsbGJhY2tzOworICAgIHVzaW5nIFByb21pc2UgPSBzdGQ6OnZhcmlhbnQ8
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMVW5zaWduZWRM
b25nTG9uZz4+OworICAgIERlcXVlPFByb21pc2U+IG1fcGVuZGluZ1Byb21pc2VzOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCBhZTI4ZjMwZjQ5NGFkMDMyYTdkNTIzZjI2ZDQ2
Y2MxOThkMzdjZTNjLi4xZGY3MGM0ODAzMTNjZGQ4YmJlYTYzYTIxOGJjYThhYTIxMjZmYjJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2Vy
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNw
cApAQCAtMjA4LDEyICsyMDgsNiBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6ZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShDYWxsYmFja0lkZW50aQogICAgICAgICBj
YWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbjo6Y29tcGxldGVJbnRlZ2VyQ2FsbGJhY2soQ2FsbGJhY2tJZGVudGlmaWVy
IGNhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9uT3I8dWludDY0X3Q+JiYgcmVzdWx0KQotewot
ICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9pbnRlZ2VyQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJ
ZGVudGlmaWVyKSkKLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKLX0KLQogdm9p
ZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNvbXBsZXRlVm9pZENhbGxiYWNr
KENhbGxiYWNrSWRlbnRpZmllciBjYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHZvaWQ+
JiYgcmVzdWx0KQogewogICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV92b2lkQ2FsbGJhY2tzLnRh
a2UoY2FsbGJhY2tJZGVudGlmaWVyKSkKQEAgLTI0Myw2NiArMjM3LDYgQEAgdm9pZCBXb3JrZXJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoRmlsZVN5
c3RlbUhhbmRsZUkKICAgICB9KTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb246OmdldFNpemUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6SW50ZWdlckNhbGxiYWNrJiYgY2FsbGJh
Y2spCi17Ci0gICAgaWYgKCFtX3Njb3BlKQotICAgICAgICByZXR1cm4gY2FsbGJhY2soRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7Ci0KLSAgICBhdXRvIGNhbGxiYWNrSWRlbnRpZmll
ciA9IENhbGxiYWNrSWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7Ci0gICAgbV9pbnRl
Z2VyQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsK
LQotICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFk
ID0gUmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21h
aW5UaHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyXSgp
IG11dGFibGUgewotICAgICAgICBhdXRvIG1haW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFja0lk
ZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byByZXN1
bHQpIG11dGFibGUgewotICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShy
ZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGlmIChhdXRv
IGNvbm5lY3Rpb24gPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbigpKQotICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5j
b21wbGV0ZUludGVnZXJDYWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0
KSk7Ci0gICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKLSAgICAg
ICAgfTsKLQotICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlvbi0+Z2V0U2l6ZShpZGVudGlmaWVy
LCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBXVEZNb3ZlKG1haW5UaHJlYWRDYWxsYmFjaykpOwot
ICAgIH0pOwotfQotCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6dHJ1
bmNhdGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90
IHNpemUsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYgY2FsbGJh
Y2spCi17Ci0gICAgaWYgKCFtX3Njb3BlKQotICAgICAgICByZXR1cm4gY2FsbGJhY2soRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7Ci0KLSAgICBhdXRvIGNhbGxiYWNrSWRlbnRpZmll
ciA9IENhbGxiYWNrSWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7Ci0gICAgbV92b2lk
Q2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKLQot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0g
UmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5U
aHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBzaXpl
XSgpIG11dGFibGUgewotICAgICAgICBhdXRvIG1haW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFj
a0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byBy
ZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29w
eShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGlmIChh
dXRvIGNvbm5lY3Rpb24gPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigpKQotICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9u
LT5jb21wbGV0ZVZvaWRDYWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0
KSk7Ci0gICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKLSAgICAg
ICAgfTsKLQotICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlvbi0+dHJ1bmNhdGUoaWRlbnRpZmll
ciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgc2l6ZSwgV1RGTW92ZShtYWluVGhyZWFkQ2FsbGJh
Y2spKTsKLSAgICB9KTsKLX0KLQotdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b246OmZsdXNoKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAg
IGlmICghbV9zY29wZSkKLSAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH0pOwotCi0gICAgYXV0byBjYWxsYmFja0lkZW50aWZpZXIgPSBDYWxsYmFj
a0lkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5h
ZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAgICBjYWxsT25N
YWluVGhyZWFkKFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFJlZiB7IG1fc2Nv
cGUtPnRocmVhZCgpIH0sIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVj
dGlvbiwgaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3Jr
ZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsK
LSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2Fs
bGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0KV0gKGF1dG8m
IHNjb3BlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Y29tcGxldGVWb2lkQ2Fs
bGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAg
fSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAg
bWFpblRocmVhZENvbm5lY3Rpb24tPmZsdXNoKGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50
aWZpZXIsIFdURk1vdmUobWFpblRocmVhZENhbGxiYWNrKSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQg
V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjbG9zZShGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpW
b2lkQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fc2NvcGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1h
Y2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggNWJjYmZjMmFi
Mjk2MzMzNmY0YzVlYmZkYjI3NDMwMTlhMjg1NmJjZC4uMTJmYTFjMTgzOGNlNjE3ODczYTE3OGYz
ZWJkMDBmMTA0MGIwYzUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb24uaApAQCAtNDksNyArNDksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRS
ZXNvbHZlKENhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9uT3I8VmVjdG9yPFN0cmluZz4+JiYp
OwogICAgIHZvaWQgZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShDYWxsYmFja0lkZW50aWZpZXIs
IEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZT4+JiYpOwogICAgIHZvaWQgY29tcGxl
dGVWb2lkQ2FsbGJhY2soQ2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25Pcjx2b2lkPiYmIHJl
c3VsdCk7Ci0gICAgdm9pZCBjb21wbGV0ZUludGVnZXJDYWxsYmFjayhDYWxsYmFja0lkZW50aWZp
ZXIsIEV4Y2VwdGlvbk9yPHVpbnQ2NF90PiYmIHJlc3VsdCk7CiAgICAgdm9pZCBkaWRHZXRIYW5k
bGVOYW1lcyhDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiYm
KTsKICAgICB2b2lkIGRpZEdldEhhbmRsZVdpdGhUeXBlKENhbGxiYWNrSWRlbnRpZmllciwgRXhj
ZXB0aW9uT3I8c3RkOjpwYWlyPEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBib29sPj4mJik7
CiAKQEAgLTY4LDkgKzY3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldEhhbmRsZShGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBHZXRIYW5kbGVXaXRoVHlw
ZUNhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgdm9pZCBjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKEZp
bGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Okdl
dEFjY2Vzc0hhbmRsZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0U2l6ZShGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
LCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkludGVnZXJDYWxsYmFjayYmKSBmaW5hbDsK
LSAgICB2b2lkIHRydW5jYXRlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIEZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgZmx1c2goRmls
ZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRp
ZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCBjbG9zZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZv
aWRDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIFdlYWtQdHI8V29ya2VyR2xvYmFsU2NvcGU+IG1f
c2NvcGU7CkBAIC04MCw3ICs3Niw2IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxDYWxsYmFja0lk
ZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6UmVzb2x2ZUNhbGxiYWNrPiBt
X3Jlc29sdmVDYWxsYmFja3M7CiAgICAgSGFzaE1hcDxDYWxsYmFja0lkZW50aWZpZXIsIEZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0QWNjZXNzSGFuZGxlQ2FsbGJhY2s+IG1fZ2V0QWNj
ZXNzSGFuZGxDYWxsYmFja3M7CiAgICAgSGFzaE1hcDxDYWxsYmFja0lkZW50aWZpZXIsIEZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrPiBtX3ZvaWRDYWxsYmFja3M7Ci0g
ICAgSGFzaE1hcDxDYWxsYmFja0lkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6SW50ZWdlckNhbGxiYWNrPiBtX2ludGVnZXJDYWxsYmFja3M7CiAgICAgSGFzaE1hcDxDYWxs
YmFja0lkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0SGFuZGxlTmFt
ZXNDYWxsYmFjaz4gbV9nZXRIYW5kbGVOYW1lc0NhbGxiYWNrczsKICAgICBIYXNoTWFwPENhbGxi
YWNrSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRIYW5kbGVXaXRo
VHlwZUNhbGxiYWNrPiBtX2dldEhhbmRsZVdpdGhUeXBlQ2FsbGJhY2tzOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNzVmYTQzODVkZDBh
ZTdlMDY1YjJmNjY0ZGRkYmNjMzdlODI5ZjY2NC4uMmM0NjJjMmUwY2Y2OGU3YzQwNWUzYzJlMDkz
NmVhMzMwZDVkMTc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5jcHAKQEAgLTc3LDYgKzc3LDEyIEBAIHN0YXRpYyBIYXNoU2V0PFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyPiYgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVyCiAgICAg
cmV0dXJuIGlkZW50aWZpZXJzOwogfQogCitzdGF0aWMgUmVmPFdvcmtRdWV1ZT4gc2hhcmVkRmls
ZVN5c3RlbVN0b3JhZ2VRdWV1ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxX
b3JrUXVldWU+PiBxdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiU2hhcmVkIEZpbGUgU3lzdGVtIFN0
b3JhZ2UgUXVldWUiLCAgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHkpKTsKKyAgICByZXR1cm4gcXVl
dWUuZ2V0KCkuY29weVJlZigpOworfQorCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV29y
a2VyR2xvYmFsU2NvcGUpOwogCiBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUo
V29ya2VyVGhyZWFkVHlwZSB0eXBlLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJl
ZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdvcmtlclRocmVhZCYgdGhyZWFkLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSog
Y29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCkBAIC0yMzIs
NiArMjM4LDExIEBAIFdvcmtlclN0b3JhZ2VDb25uZWN0aW9uJiBXb3JrZXJHbG9iYWxTY29wZTo6
c3RvcmFnZUNvbm5lY3Rpb24oKQogICAgIHJldHVybiAqbV9zdG9yYWdlQ29ubmVjdGlvbjsKIH0K
IAordm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhGdW5j
dGlvbjx2b2lkKCk+JiYgdGFzaykKK3sKKyAgICBzaGFyZWRGaWxlU3lzdGVtU3RvcmFnZVF1ZXVl
KCktPmRpc3BhdGNoKFdURk1vdmUodGFzaykpOworfQorCiBXb3JrZXJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb24mIFdvcmtlckdsb2JhbFNjb3BlOjpnZXRGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24oUmVmPEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbj4mJiBtYWluVGhyZWFkQ29ubmVj
dGlvbikKIHsKICAgICBpZiAoIW1fZmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGQ1ODgwZWYyNzA3N2Ez
NjQ1ZDhmMzM1MTFiZmQ0NGI1OWM1YjkxNDEuLmFlM2IyZGJkYWM3ZmE0NGNlN2UzZjMyMjIwMmMw
MDhiM2VjODc4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmgKQEAgLTg4LDYgKzg4LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBF
dmVudFRhcmdldDo6V2Vha1ZhbHVlVHlwZTsKICAgICB1c2luZyBFdmVudFRhcmdldDo6d2Vha1B0
ckZhY3Rvcnk7CiAgICAgV29ya2VyU3RvcmFnZUNvbm5lY3Rpb24mIHN0b3JhZ2VDb25uZWN0aW9u
KCk7CisgICAgc3RhdGljIHZvaWQgcG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhGdW5jdGlvbjx2
b2lkKCk+JiYpOwogICAgIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiYgZ2V0Rmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKFJlZjxGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24+
JiYpOwogICAgIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiogZmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uKCk7CiAgICAgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbiYgY2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUVycm9yLmgKaW5kZXggMDI3
NzM3YTJiNDBiMmMyNzBlYWE2NGI4YTVmOWU2NDMwMWVlODc5Ni4uYzM2Zjc1MzRjNmFiNWI2MmFh
NGE1ZGQzNDY5MzRmMzFlZGIwOGJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VFcnJvci5oCkBAIC0z
MSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBjbGFzcyBGaWxlU3lzdGVt
U3RvcmFnZUVycm9yIDogdWludDhfdCB7CisgICAgQWNjZXNzSGFuZGxlQWN0aXZlLAogICAgIEJh
Y2tlbmROb3RTdXBwb3J0ZWQsCiAgICAgRmlsZU5vdEZvdW5kLAogICAgIEludmFsaWRNb2RpZmlj
YXRpb24sCkBAIC00MywxNCArNDQsMTYgQEAgZW51bSBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yIDogdWludDhfdCB7CiBpbmxpbmUgV2ViQ29yZTo6RXhjZXB0aW9uIGNvbnZlcnRUb0V4Y2Vw
dGlvbihGaWxlU3lzdGVtU3RvcmFnZUVycm9yIGVycm9yKQogewogICAgIHN3aXRjaCAoZXJyb3Ip
IHsKKyAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkFjY2Vzc0hhbmRsZUFjdGl2ZToK
KyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OkludmFsaWRTdGF0
ZUVycm9yLCAiU29tZSBBY2Nlc3NIYW5kbGUgaXMgYWN0aXZlIl9zIH07CiAgICAgY2FzZSBGaWxl
U3lzdGVtU3RvcmFnZUVycm9yOjpCYWNrZW5kTm90U3VwcG9ydGVkOgotICAgICAgICByZXR1cm4g
V2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6Tm90U3VwcG9ydGVkRXJyb3IsICJCYWNrZW5k
IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24iIH07CisgICAgICAgIHJldHVybiBXZWJD
b3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpOb3RTdXBwb3J0ZWRFcnJvciwgIkJhY2tlbmQgZG9l
cyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbiJfcyB9OwogICAgIGNhc2UgRmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcjo6RmlsZU5vdEZvdW5kOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0
aW9uIHsgV2ViQ29yZTo6Tm90Rm91bmRFcnJvciB9OwogICAgIGNhc2UgRmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvcjo6SW52YWxpZE1vZGlmaWNhdGlvbjoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4
Y2VwdGlvbiB7IFdlYkNvcmU6OkludmFsaWRNb2RpZmljYXRpb25FcnJvciB9OwogICAgIGNhc2Ug
RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6SW52YWxpZE5hbWU6Ci0gICAgICAgIHJldHVybiBXZWJD
b3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJOYW1lIGlzIGludmFsaWQi
IH07CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3du
RXJyb3IsICJOYW1lIGlzIGludmFsaWQiX3MgfTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I6OkludmFsaWRTdGF0ZToKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7
IFdlYkNvcmU6OkludmFsaWRTdGF0ZUVycm9yIH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFn
ZUVycm9yOjpUeXBlTWlzbWF0Y2g6CkBAIC03Nyw2ICs4MCw3IEBAIG5hbWVzcGFjZSBXVEYgewog
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJLaXQ6OkZp
bGVTeXN0ZW1TdG9yYWdlRXJyb3IsCisgICAgICAgIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VF
cnJvcjo6QWNjZXNzSGFuZGxlQWN0aXZlLAogICAgICAgICBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9y
YWdlRXJyb3I6OkJhY2tlbmROb3RTdXBwb3J0ZWQsCiAgICAgICAgIFdlYktpdDo6RmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcjo6RmlsZU5vdEZvdW5kLAogICAgICAgICBXZWJLaXQ6OkZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3I6OkludmFsaWRNb2RpZmljYXRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFu
ZGxlLmNwcAppbmRleCA2MDcxY2JjNTAxYTBiNzc2NjUxY2I1ZTI0Y2ZiNzFlZGI2NDk1Y2U3Li40
ZjcyY2QwM2YzNjhmNDU3NmQ0MzVkNjdlNjJlM2ExMWI5MmNmZWE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZS5jcHAKQEAgLTYzLDEyICs2Myw2IEBAIEZpbGVTeXN0ZW1TdG9yYWdlSGFu
ZGxlOjpGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZShGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIG1h
bmFnCiAgICAgfQogfQogCi1GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6fkZpbGVTeXN0ZW1TdG9y
YWdlSGFuZGxlKCkKLXsKLSAgICBpZiAobV9oYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1faGFuZGxl
KTsKLX0KLQogdm9pZCBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6Y2xvc2UoKQogewogICAgIGlm
ICghbV9tYW5hZ2VyKQpAQCAtMTcyLDEzICsxNjYsMTMgQEAgRXhwZWN0ZWQ8RmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGU6OkFjY2Vzc0hhbmRsZUluZm8sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZp
bGUKICAgICBpZiAoIWFjcXVpcmVkKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRmls
ZVN5c3RlbVN0b3JhZ2VFcnJvcjo6SW52YWxpZFN0YXRlKTsKIAotICAgIG1faGFuZGxlID0gRmls
ZVN5c3RlbTo6b3BlbkZpbGUobV9wYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRX
cml0ZSk7Ci0gICAgaWYgKG1faGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpCisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX3BhdGgs
IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlKTsKKyAgICBpZiAoaGFuZGxlID09
IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duKTsKIAotICAgIGF1
dG8gaXBjSGFuZGxlID0gSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUobV9oYW5kbGUpOwor
ICAgIGF1dG8gaXBjSGFuZGxlID0gSVBDOjpTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUoaGFuZGxl
KTsKICAgICBpZiAoIWlwY0hhbmRsZSkgewotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
bV9oYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkJhY2tlbmRO
b3RTdXBwb3J0ZWQpOwogICAgIH0KIApAQCAtMTg3LDYxICsxODEsMTEgQEAgRXhwZWN0ZWQ8Rmls
ZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OkFjY2Vzc0hhbmRsZUluZm8sIEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I+IEZpbGUKICAgICByZXR1cm4gc3RkOjpwYWlyIHsgKm1fYWN0aXZlU3luY0FjY2Vzc0hh
bmRsZSwgV1RGTW92ZSgqaXBjSGFuZGxlKSB9OwogfQogCi1FeHBlY3RlZDx1aW50NjRfdCwgRmls
ZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmdldFNpemUoV2Vi
Q29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlk
ZW50aWZpZXIpCi17Ci0gICAgaWYgKCFtX21hbmFnZXIpCi0gICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duKTsKLQotICAgIGlmICghbV9h
Y3RpdmVTeW5jQWNjZXNzSGFuZGxlIHx8ICptX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgIT0gYWNj
ZXNzSGFuZGxlSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEZpbGVT
eXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd24pOwotCi0gICAgYXV0byBzaXplID0gRmlsZVN5c3Rl
bTo6ZmlsZVNpemUobV9wYXRoKTsKLSAgICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duKTsKLQotICAgIHJldHVy
biBzaXplLnZhbHVlKCk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OnRydW5jYXRlKFdlYkNvcmU6OkZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRf
dCBzaXplKQotewotICAgIGlmICghbV9tYW5hZ2VyKQotICAgICAgICByZXR1cm4gRmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsKLQotICAgIGlmICghbV9hY3RpdmVTeW5jQWNjZXNzSGFu
ZGxlIHx8ICptX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgIT0gYWNjZXNzSGFuZGxlSWRlbnRpZmll
cikKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247Ci0KLSAg
ICBBU1NFUlQobV9oYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSk7Ci0gICAgYXV0byByZXN1bHQgPSBGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUobV9oYW5kbGUs
IHNpemUpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvcjo6VW5rbm93bjsKLQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLXN0ZDo6
b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6
OmZsdXNoKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nl
c3NIYW5kbGVJZGVudGlmaWVyKQotewotICAgIGlmICghbV9tYW5hZ2VyKQotICAgICAgICByZXR1
cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsKLQotICAgIGlmICghbV9hY3RpdmVT
eW5jQWNjZXNzSGFuZGxlIHx8ICptX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgIT0gYWNjZXNzSGFu
ZGxlSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVu
a25vd247Ci0KLSAgICBBU1NFUlQobV9oYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSk7Ci0gICAgYXV0byByZXN1bHQgPSBGaWxlU3lzdGVtOjpmbHVzaEZpbGUo
bV9oYW5kbGUpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcjo6VW5rbm93bjsKLQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KIHN0
ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5k
bGU6OmNsb3NlKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBh
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyKQogewogICAgIGlmICghbV9hY3RpdmVTeW5jQWNjZXNzSGFu
ZGxlIHx8ICptX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgIT0gYWNjZXNzSGFuZGxlSWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247CiAKLSAg
ICBBU1NFUlQobV9oYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSk7Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1faGFuZGxlKTsKLQogICAgIGlmICghbV9t
YW5hZ2VyKQogICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsK
IApAQCAtMjc4LDcgKzIyMiw3IEBAIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6Om1vdmUoV2ViQ29yZTo6RmlsCiAKICAgICAvLyBE
byBub3QgbW92ZSBmaWxlIGlmIHRoZXJlIGlzIG9uZ29pbmcgb3BlcmF0aW9uLgogICAgIGlmICht
X2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUpCi0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFn
ZUVycm9yOjpJbnZhbGlkU3RhdGU7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yOjpBY2Nlc3NIYW5kbGVBY3RpdmU7CiAKICAgICBpZiAobV9tYW5hZ2VyLT5nZXRUeXBlKGRl
c3RpbmF0aW9uSWRlbnRpZmllcikgIT0gVHlwZTo6RGlyZWN0b3J5KQogICAgICAgICByZXR1cm4g
RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VHlwZU1pc21hdGNoOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VI
YW5kbGUuaAppbmRleCAzZGFmNDcyZjcxNmM1M2RiNWM0YzJiOGU5NThmNTc0ZjhlZWVhZGQ4Li5m
YjkyOTgxNDFiMGRiYzM4MWZhOGIzYjM4MTdlNjhjYTAxODk3OWRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGUuaApAQCAtNDQsNyArNDQsNiBAQCBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZUhh
bmRsZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZSwgVwog
cHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBGaWxlLCBEaXJlY3Rvcnks
IEFueSB9OwogICAgIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlKEZpbGVTeXN0ZW1TdG9yYWdlTWFu
YWdlciYsIFR5cGUsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIG5hbWUpOwotICAgIH5GaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZSgpOwogCiAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGNv
bnN0IFN0cmluZyYgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQpAQCAtNjIsOSArNjEs
NiBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBBY2Nlc3NIYW5kbGVJbmZvID0gc3RkOjpwYWlyPFdl
YkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgSVBDOjpTaGFyZWRG
aWxlSGFuZGxlPjsKICAgICBFeHBlY3RlZDxBY2Nlc3NIYW5kbGVJbmZvLCBGaWxlU3lzdGVtU3Rv
cmFnZUVycm9yPiBjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKCk7Ci0gICAgRXhwZWN0ZWQ8dWludDY0
X3QsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGdldFNpemUoV2ViQ29yZTo6RmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyKTsKLSAgICBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3I+IHRydW5jYXRlKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
SWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSk7Ci0gICAgc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVt
U3RvcmFnZUVycm9yPiBmbHVzaChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlk
ZW50aWZpZXIpOwogICAgIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gY2xv
c2UoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyKTsKIAogcHJp
dmF0ZToKQEAgLTc2LDcgKzcyLDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9wYXRoOwogICAg
IFN0cmluZyBtX25hbWU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXI+IG1fYWN0aXZlU3luY0FjY2Vzc0hhbmRsZTsKLSAgICBG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9oYW5kbGUgeyBGaWxlU3lzdGVtOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05l
dHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggY2U1ODExNDAzNGY5OGVlMzI2ZGFiNzdkYWZh
ZjU2MjNkZGQyMjAwOS4uNGU0YzA4NTgzMjFlMjUyYWFkODllMzQzZDdjYmE5ZjE4YjU5NTcyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtT
dG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI1Myw0MCArMjUzLDEyIEBAIHZvaWQg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZp
bGVTeXN0ZW1IYW5kbGVJZGVuCiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtu
b3duKSk7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGUtPmNyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUoKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRTaXplRm9yQWNj
ZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHVpbnQ2NF90LCBG
aWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBhdXRvIGhhbmRsZSA9IG1fZmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS0+Z2V0SGFuZGxlKGlkZW50aWZpZXIpOwotICAgIGlmICgh
aGFuZGxlKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQo
RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bikpOwotCi0gICAgY29tcGxldGlvbkhhbmRs
ZXIoaGFuZGxlLT5nZXRTaXplKGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpKTsKLX0KLQotdm9pZCBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnRydW5jYXRlRm9yQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZp
bGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRf
dCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwotCi0gICAgYXV0byBoYW5kbGUgPSBtX2ZpbGVTeXN0ZW1TdG9yYWdlSGFu
ZGxlUmVnaXN0cnktPmdldEhhbmRsZShpZGVudGlmaWVyKTsKLSAgICBpZiAoIWhhbmRsZSkKLSAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVu
a25vd24pOwotCi0gICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlLT50cnVuY2F0ZShhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCBzaXplKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpmbHVzaEZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsK
LSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGF1dG8gaGFuZGxlID0gbV9m
aWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LT5nZXRIYW5kbGUoaWRlbnRpZmllcik7Ci0g
ICAgaWYgKCFoYW5kbGUpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihGaWxlU3lz
dGVtU3RvcmFnZUVycm9yOjpVbmtub3duKTsKKyAgICBhdXRvIHJlc3VsdCA9IGhhbmRsZS0+Y3Jl
YXRlU3luY0FjY2Vzc0hhbmRsZSgpOworICAgIGF1dG8gZmlsZUhhbmRsZSA9IHJlc3VsdCA/IHJl
c3VsdC52YWx1ZSgpLnNlY29uZCA6IElQQzo6U2hhcmVkRmlsZUhhbmRsZSgpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlciho
YW5kbGUtPmZsdXNoKGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpKTsKKyAgICAvLyBDbG9zZSB0aGUg
ZmlsZSBoYW5kbGUgaW4gbmV0d29yayBwcm9jZXNzLgorICAgIGZpbGVIYW5kbGUuY2xvc2UoKTsK
IH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsb3NlQWNjZXNzSGFuZGxlKFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCmluZGV4IGUy
NTUwNDE4OTYwZmQ0ZjdlMzhjODQxYzQwOGYzZjQwNWFkNjYzNzguLmIxNmNjMjU4OGUzZmU2ZTFm
YzVkMWVmNGRlNGNhMmZjODM1YzU4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTc5
LDkgKzc5LDYgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEFjY2Vzc0hhbmRsZUluZm8gPSBzdGQ6
OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBJUEM6
OlNoYXJlZEZpbGVIYW5kbGU+OwogICAgIHZvaWQgY3JlYXRlU3luY0FjY2Vzc0hhbmRsZShXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxBY2Nlc3NIYW5kbGVJbmZvLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYpOwot
ICAgIHZvaWQgZ2V0U2l6ZUZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHVpbnQ2NF90LCBGaWxlU3lzdGVtU3Rv
cmFnZUVycm9yPik+JiYpOwotICAgIHZvaWQgdHJ1bmNhdGVGb3JBY2Nlc3NIYW5kbGUoV2ViQ29y
ZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBm
bHVzaEZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmKTsK
ICAgICB2b2lkIGNsb3NlQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9y
Pik+JiYpOwogICAgIHZvaWQgZ2V0SGFuZGxlTmFtZXMoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8VmVjdG9yPFN0cmlu
Zz4sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7CiAgICAgdm9pZCBnZXRIYW5kbGUoSVBD
OjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFN0cmlu
ZyYmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBib29sPiwgRmlsZVN5c3RlbVN0b3JhZ2VF
cnJvcj4pPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCmlu
ZGV4IDFmYmJmMzdiYWFkN2QwNDNjODc1Y2U4ZGYxYmFiOWExNTc2YTc5MDUuLmI0ZmFhZjdhY2U2
NzVkYmJlMDRkNjNkMWNiODMwNzEzNjI5NmNlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMzYsOSArMzYsNiBAQAogICAgIE1vdmUoV2ViQ29yZTo6
RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBTdHJpbmcgbmV3TmFtZSkg
LT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiByZXN1bHQp
IEFzeW5jCiAKICAgICBDcmVhdGVTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1I
YW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChFeHBlY3RlZDxzdGQ6OnBhaXI8V2ViQ29y
ZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEZpbGVI
YW5kbGU+LCBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKLSAg
ICBHZXRTaXplRm9yQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRp
ZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSAtPiAoRXhwZWN0ZWQ8dWludDY0X3QsIFdlYktp
dDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwotICAgIFRydW5jYXRlRm9y
QWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXplKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6
OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKLSAgICBGbHVzaEZvckFjY2Vz
c0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBX
ZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxl
SWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yPiByZXN1bHQpIEFzeW5jCiAgICAgQ2xvc2VBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5
c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpIC0+IChzdGQ6Om9w
dGlvbmFsPFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwogICAg
IEdldEhhbmRsZU5hbWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50
aWZpZXIpIC0+IChFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgV2ViS2l0OjpGaWxlU3lzdGVtU3Rv
cmFnZUVycm9yPiByZXN1bHQpIEFzeW5jCiAgICAgR2V0SGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0
ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyBuYW1lKSAtPiAoRXhwZWN0ZWQ8
c3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBib29sPiwgV2Vi
S2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jIFdhbnRzQ29ubmVjdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRs
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmNwcApp
bmRleCA4ZWJjZTk4MDA4N2MwNzViMDIzYjU4YWVhMmUxNTU4NjBkNzY5NDY0Li42NGU0MjE3ODAx
YTIxZjA1ZDg4YjRlNjE2OGQ3MGI4OWY5NWE3ZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmNwcApAQCAtMjgsNiArMjgsMTEgQEAKIAogbmFt
ZXNwYWNlIElQQyB7CiAKK3ZvaWQgU2hhcmVkRmlsZUhhbmRsZTo6Y2xvc2UoKQoreworICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShtX2hhbmRsZSk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0Ep
CiAKIHN0ZDo6b3B0aW9uYWw8U2hhcmVkRmlsZUhhbmRsZT4gU2hhcmVkRmlsZUhhbmRsZTo6Y3Jl
YXRlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuaAppbmRleCBhNDZhYzg5MDUwN2ViNjkzYTEwN2I0
OTllNTQzNjA2YTc5N2U0NDlhLi41ODVhZDk5MzcyNzJjMmQwYWE5ZDUzN2MyMzdjODNhNmI1NjA4
YjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFu
ZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5o
CkBAIC0zOSw5ICszOSw5IEBAIHB1YmxpYzoKIAogICAgIFNoYXJlZEZpbGVIYW5kbGUoKSA9IGRl
ZmF1bHQ7CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSgpIHsgcmV0
dXJuIG1faGFuZGxlOyB9CisgICAgdm9pZCBjbG9zZSgpOwogCiAgICAgdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwotCiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2hhcmVkRmlsZUhhbmRs
ZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IGQxZDc5ODVlNjVlZGQyNTllZjkz
MjVmMjk0ZjA0YzhlMDYxOGZiZDIuLmYwMWYyMWZmOGY2MTYzYWU1M2U0ODczMjQyY2ZlNWI3Zjk4
NmZkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24u
Y3BwCkBAIC0xMzQsMzkgKzEzNCw2IEBAIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1ICiAgICAgfSk7
CiB9CiAKLXZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRTaXplKFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBJ
bnRlZ2VyQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoIW1fY29ubmVj
dGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2VwdGlv
biB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7Ci0KLSAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpHZXRTaXplRm9yQWNjZXNzSGFuZGxlKGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oYXV0byByZXN1bHQpIG11dGFibGUgewotICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihjb252ZXJ0VG9FeGNlcHRpb24ocmVzdWx0
LmVycm9yKCkpKTsKLQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQudmFsdWUoKSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjp0cnVu
Y2F0ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJD
b3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRl
bnRpZmllciwgdWludDY0X3Qgc2l6ZSwgVm9pZENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIp
Ci17Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3duRXJyb3IsICJDb25uZWN0
aW9uIGlzIGxvc3QiIH0pOwotCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6VHJ1bmNhdGVGb3JBY2Nlc3NIYW5kbGUo
aWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgc2l6ZSksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGVycm9yKSBtdXRhYmxlIHsK
LSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udmVydFRvRXhjZXB0aW9uT3IoZXJyb3IpKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmZsdXNo
KFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6
OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlm
aWVyLCBWb2lkQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoIW1fY29u
bmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkV4Y2Vw
dGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9zdCIgfSk7Ci0K
LSAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpGbHVzaEZvckFjY2Vzc0hhbmRsZShpZGVudGlmaWVyLCBhY2Nlc3NIYW5k
bGVJZGVudGlmaWVyKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihj
b252ZXJ0VG9FeGNlcHRpb25PcihlcnJvcikpOwotICAgIH0pOwotfQotCiB2b2lkIFdlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y2xvc2UoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFZvaWRDYWxsYmFjayYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IGE3NmE3ZDEzYzMwZDU5ODFmZTcxYTc3
NGNkNGQwNWMyMTY0NzE0MTAuLmQ1NzEzZjhhZDIxYjEyZTYxY2E0YWVhNWFhODUxMWVkZTNhNjg2
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAg
LTgzLDkgKzgzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldEhhbmRsZShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb246OkdldEhhbmRsZVdpdGhUeXBlQ2FsbGJhY2smJikgZmluYWw7CiAKICAg
ICB2b2lkIGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0QWNjZXNz
SGFuZGxlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBnZXRTaXplKFdlYkNvcmU6OkZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6SW50ZWdl
ckNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdHJ1bmNhdGUoV2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRl
bnRpZmllciwgdWludDY0X3Qgc2l6ZSwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjpWb2lkQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBmbHVzaChXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRD
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYp
IGZpbmFsOwogCiAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGVlNGJmOGRjNTliOTg4ODE1NWQ3NWMzYjE5MjQ1MzVjODVkNzAzY2EuLjEzMTg2NDg2MDc2
NWRkMTVjNGM4YjBmYTk1YTcwYTcyNzc2ZmE0OWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAy
MS0xMS0wMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBQZXJm
b3JtIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlIG9wZXJhdGlvbnMgaW4gd2ViIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjE0Ngor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQ4MDk0Mjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvaGFu
ZGxlLW1vdmUtd29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2ZpbGVzeXN0
ZW1hY2Nlc3MvcmVzb3VyY2VzL2hhbmRsZS1tb3ZlLmpzOgorICAgICAgICAoYXN5bmMgdGVzdCk6
CisKIDIwMjEtMTEtMDEgIEF5dW1pIEtvamltYSAgPGF5dW1pX2tvamltYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgWyBpT1MgRGVidWcgXSBodHRwL3dwdC9wdXNoLWFwaSB0ZXN0cyBhcmUgZmxha3kg
ZmFpbGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vz
cy9oYW5kbGUtbW92ZS13b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9m
aWxlc3lzdGVtYWNjZXNzL2hhbmRsZS1tb3ZlLXdvcmtlci1leHBlY3RlZC50eHQKaW5kZXggMmJi
ODhiNDg3MWYxNWE3MzVhNzhjZjljMTIwYWZiMmQ5YjI5ODQ5ZC4uNjQ1OWIwNGNlNmQ0ZjU1YjQ3
YWQyZTNmNmYwOTA2ZmRlMWNlZmU3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9m
aWxlc3lzdGVtYWNjZXNzL2hhbmRsZS1tb3ZlLXdvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL2hhbmRsZS1tb3ZlLXdvcmtlci1leHBl
Y3RlZC50eHQKQEAgLTE4LDcgKzE4LDcgQEAgUEFTUyBbV29ya2VyXSBtb3ZlRmlsZUVycm9yLnRv
U3RyaW5nKCkgaXMgIlVua25vd25FcnJvcjogVGhlIG9wZXJhdGlvbiBmYWlsZWQgZm8KIFBBU1Mg
W1dvcmtlcl0gbW92ZUZpbGVFcnJvci50b1N0cmluZygpIGlzICJVbmtub3duRXJyb3I6IE5hbWUg
aXMgaW52YWxpZCIKIFBBU1MgW1dvcmtlcl0gbW92ZUZpbGVFcnJvci50b1N0cmluZygpIGlzICJV
bmtub3duRXJyb3I6IE5hbWUgaXMgaW52YWxpZCIKIFtXb3JrZXJdIFRlc3QgbW92ZSB3aXRoIG9w
ZW4gYWNjZXNzIGhhbmRsZToKLVBBU1MgW1dvcmtlcl0gbW92ZUZpbGVFcnJvci50b1N0cmluZygp
IGlzICJJbnZhbGlkU3RhdGVFcnJvcjogVGhlIG9iamVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRl
LiIKK1BBU1MgW1dvcmtlcl0gbW92ZUZpbGVFcnJvci50b1N0cmluZygpIGlzICJJbnZhbGlkU3Rh
dGVFcnJvcjogU29tZSBBY2Nlc3NIYW5kbGUgaXMgYWN0aXZlIgogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvcmVzb3VyY2VzL2hhbmRsZS1tb3ZlLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL3Jlc291cmNlcy9oYW5kbGUtbW92ZS5qcwpp
bmRleCBkOTFkOTFiYzUzOTJmYTAwNTg3ZWVlZDVhMTMwZmFmYzg1NTJmNjFhLi45YzhkY2YxNTNl
YmNjMDI3NWEzY2MyMThkNjg2ODRjYjNmNTgwYTkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvcmVzb3VyY2VzL2hhbmRsZS1tb3ZlLmpzCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9yZXNvdXJjZXMvaGFuZGxlLW1vdmUu
anMKQEAgLTEwNSw3ICsxMDUsNyBAQCBhc3luYyBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAg
ICAgICAgIHRlc3RFcnJvciA9ICAiTW92ZWQgZmlsZSBiYWNrIHRvIGRpckhhbmRsZTEgdW5leHBl
Y3RlZGx5IjsKICAgICAgICAgICAgIH0sIChlcnJvcikgPT4gewogICAgICAgICAgICAgICAgIG1v
dmVGaWxlRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoIm1vdmVGaWxlRXJyb3IudG9TdHJpbmcoKSIsICJJbnZhbGlkU3RhdGVFcnJvcjogVGhlIG9i
amVjdCBpcyBpbiBhbiBpbnZhbGlkIHN0YXRlLiIpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygibW92ZUZpbGVFcnJvci50b1N0cmluZygpIiwgIkludmFsaWRTdGF0ZUVy
cm9yOiBTb21lIEFjY2Vzc0hhbmRsZSBpcyBhY3RpdmUiKTsKICAgICAgICAgICAgIH0pOwogCiAg
ICAgICAgICAgICBpZiAodGVzdEVycm9yKSB7Cg==
</data>
<flag name="commit-queue"
          id="467692"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443050</attachid>
            <date>2021-11-01 18:44:16 -0700</date>
            <delta_ts>2021-11-09 23:21:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232146-20211101184415.patch</filename>
            <type>text/plain</type>
            <size>52743</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjlmNWM4YmMzZjc2MTIw
ODI1ODI4NTZhN2EyNjJiNWIwMjVmODg5Yy4uY2U3ZTM5ODhmZjE5ZTJkNTNkMjBjNzFmNGE0MzEw
MGI1ZWFkYmM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTExLTAxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFBlcmZvcm0gRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGUgb3BlcmF0aW9ucyBpbiB3ZWIgcHJvY2VzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMTQ2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84NDgwOTQyOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICB0cnVuY2F0ZSgpLCBnZXRTaXplKCkgYW5kIGZsdXNoKCkgb3BlcmF0aW9u
cyBhcmUgbm93IHBlcmZvcm1lZCBvbiBhIGdsb2JhbCBXb3JrUXVldWUgaW4gd2ViIHByb2Nlc3Mu
CisKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZpbGVIYW5kbGU6OmdldFNpemUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZpbGVIYW5kbGU6OnRydW5j
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1GaWxlSGFuZGxlOjpm
bHVzaCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVT
eXN0ZW1GaWxlSGFuZGxlLmg6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0Zp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3Rl
bWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6fkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjp0cnVuY2F0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Z2V0U2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Zmx1c2gp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3NlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjbG9zZUludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjbG9z
ZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6
OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6Ondy
aXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjb21w
bGV0ZVByb21pc2UpOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZS5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bjo6Y29tcGxldGVJbnRlZ2VyQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRTaXplKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6dHJ1bmNh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjpmbHVzaCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkRmls
ZVN5c3RlbVN0b3JhZ2VRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29w
ZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oOgorCiAyMDIxLTExLTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQWxpZ24gWFNMVFByb2Nlc3NvciB3aXRoIEJsaW5rIGFuZCBnZXQgY2xv
c2VyIHRvIEdlY2tvIGluIHRoZSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ2NGFhMWJjMjNhYTFmY2Uw
YTQxNWRmNWExN2JhZTg5NjM4YzM4MGMuLmFhNjEzNjQ5NmIzMzdhYjdkN2NlMzQzZGRhZGUwYjQ1
YzhiZjc1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMTEtMDEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgUGVyZm9ybSBGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZSBvcGVyYXRpb25zIGluIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIxNDYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg0ODA5NDI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5ldHdvcmsgcHJvY2VzcyBubyBsb25nZXIgbmVlZHMgdG8gaG9sZCBvcGVuIGZp
bGUgaGFuZGxlIGZvciBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS4gTm93IGl0IGNyZWF0ZXMg
YW4gb3BlbiAKKyAgICAgICAgZmlsZSBoYW5kbGUsIHBhc3MgaXQgdG8gd2ViIHByb2Nlc3MgYW5k
IGNsb3NlIGl0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVt
U3RvcmFnZUVycm9yLmg6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb0V4Y2VwdGlvbik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpjcmVhdGVTeW5j
QWNjZXNzSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6
OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6Om1vdmUp
OgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6fkZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGU6OmdldFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZTo6dHJ1bmNhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpGaWxl
U3lzdGVtU3RvcmFnZUhhbmRsZTo6Zmx1c2gpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaDoKKyAgICAgICAgKCk6IERl
bGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmdldFNpemVGb3JBY2Nlc3NIYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnRydW5jYXRlRm9yQWNjZXNzSGFuZGxlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmbHVzaEZvckFjY2Vzc0hh
bmRsZSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkRmlsZUhhbmRsZS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEZpbGVIYW5kbGU6OmNsb3Nl
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpn
ZXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uOjp0cnVuY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Zmx1c2gpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmg6CisK
IDIwMjEtMTEtMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGEgdGVzdGluZyBwcmVmZXJlbmNlIHRvIHJlcGxheSBDRyBkaXNwbGF5IGxpc3Rz
IG1hbnVhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1h
Y2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmNwcAppbmRleCAyZGJiNGUzYTgw
MGZlMmY0NTg5NjE3ZGExN2MzYzUzMzA5MDFkYjFkLi4xNzUxMWYwYWUwOGJmNzJhOTQxMjMzM2Q1
YTg1N2QxYjIwZmZkMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKQEAgLTc1
LDMwICs3NSw2IEBAIHZvaWQgRmlsZVN5c3RlbUZpbGVIYW5kbGU6OmNyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUoRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjCiAgICAgfSk7CiB9CiAKLXZvaWQg
RmlsZVN5c3RlbUZpbGVIYW5kbGU6OmdldFNpemUoRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhjZXB0aW9uT3I8dWludDY0X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlm
IChpc0Nsb3NlZCgpKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJIYW5kbGUgaXMgY2xvc2VkIl9zIH0pOwotCi0gICAgY29u
bmVjdGlvbigpLmdldFNpemUoaWRlbnRpZmllcigpLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgRmlsZVN5c3RlbUZpbGVIYW5k
bGU6OnRydW5jYXRlKEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAg
ICBpZiAoaXNDbG9zZWQoKSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiSGFuZGxlIGlzIGNsb3NlZCJfcyB9KTsKLQotICAg
IGNvbm5lY3Rpb24oKS50cnVuY2F0ZShpZGVudGlmaWVyKCksIGFjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIsIHNpemUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQotdm9pZCBGaWxlU3lz
dGVtRmlsZUhhbmRsZTo6Zmx1c2goRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8dm9pZD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGlzQ2xvc2VkKCkp
Ci0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgIkhhbmRsZSBpcyBjbG9zZWQiX3MgfSk7Ci0KLSAgICBjb25uZWN0aW9uKCkuZmx1
c2goaWRlbnRpZmllcigpLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Ci19Ci0KIHZvaWQgRmlsZVN5c3RlbUZpbGVIYW5kbGU6OmNsb3NlKEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChpc0Nsb3NlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUu
aAppbmRleCBiYWE0MmY4ZDkyMzFhYWRkZTI1MjljZmVjMjAxYjM0ZWI1NWYyOTE1Li44Y2VlMTJj
YmRmYmY0MDA5MmY3YTA0MjBhZDkxYzcxYTgyYWMyOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVI
YW5kbGUuaApAQCAtNDEsOSArNDEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRGaWxlKERPTVBy
b21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RmlsZT4+JiYpOwogCiAgICAgdm9pZCBjcmVhdGVT
eW5jQWNjZXNzSGFuZGxlKERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGU+PiYmKTsKLSAgICB2b2lkIGdldFNpemUoRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9y
PHVpbnQ2NF90PiYmKT4mJik7Ci0gICAgdm9pZCB0cnVuY2F0ZShGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKTsKLSAgICB2b2lkIGZsdXNoKEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25Pcjx2b2lkPiYmKT4mJik7CiAgICAgdm9pZCBjbG9zZShGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8
dm9pZD4mJik+JiYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbi5oCmluZGV4IDczZWJmOTljNDVlNDE2MWRjZTQxMDY4M2VkMzg0MTU5NzQ4YWJhODcu
LjE2NjM2ODJiMzdhYjJkZTE2ZTQxZmQ0NzNjYjcyZDBjY2EyNzk0NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3Mv
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTQ2LDcgKzQ2LDYgQEAgcHVibGljOgog
ICAgIHVzaW5nIFJlc29sdmVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0
aW9uT3I8VmVjdG9yPFN0cmluZz4+JiYpPjsKICAgICB1c2luZyBHZXRBY2Nlc3NIYW5kbGVDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8c3RkOjpwYWlyPEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlPj4mJik+OwogICAgIHVzaW5nIFZvaWRDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+OwotICAgIHVzaW5nIEludGVnZXJDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8dWludDY0X3Q+JiYpPjsKICAgICB1
c2luZyBHZXRIYW5kbGVOYW1lc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNl
cHRpb25PcjxWZWN0b3I8U3RyaW5nPj4mJik+OwogICAgIHVzaW5nIEdldEhhbmRsZVdpdGhUeXBl
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxG
aWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4+JiYpPjsKIApAQCAtNTgsOSArNTcsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUVudHJ5KEZpbGVTeXN0ZW1IYW5kbGVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgZGVsZXRlUmVjdXJzaXZlbHksIFZv
aWRDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc29sdmUoRmlsZVN5c3RlbUhh
bmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBSZXNvbHZlQ2FsbGJh
Y2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKEZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBHZXRBY2Nlc3NIYW5kbGVDYWxsYmFjayYmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldFNpemUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgSW50ZWdlckNhbGxiYWNrJiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgdHJ1bmNhdGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSwgVm9pZENh
bGxiYWNrJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2goRmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgVm9pZENhbGxi
YWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoRmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgVm9pZENhbGxiYWNr
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SGFuZGxlTmFtZXMoRmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIsIEdldEhhbmRsZU5hbWVzQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBnZXRIYW5kbGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bmFtZSwgR2V0SGFuZGxlV2l0aFR5cGVDYWxsYmFjayYmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcAppbmRleCBhNDZlMGRjMzA2M2UzZWYyNjYyNmQwZDli
MjAxYTMwNWNlZGU5YTYxLi5mZjQ1ZTA3ZWZkZTEyNGNiNDFjMTg4NWVlZTAzNGUzZDljNDgzMzQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJCdWZmZXJTb3VyY2UuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVt
RmlsZUhhbmRsZS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVk
ZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNyArNTEsMTkgQEAgRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGMKIAogRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6On5GaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZSgpCiB7Ci0gICAgQVNTRVJUKG1fY2xvc2VSZXN1bHQpOworICAgIEFTU0VS
VChpc0Nsb3NpbmdPckNsb3NlZCgpKTsKKyAgICBpZiAobV9jbG9zZVJlc3VsdCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gVGFzayByZXBsaWVzIG1heSBiZSBzY2hlZHVsZWQgdG8gV29ya2Vy
UnVuTG9vcCBidXQgZG8gbm90IHJ1bi4KKyAgICBhdXRvIHBlbmRpbmdQcm9taXNlcyA9IHN0ZDo6
ZXhjaGFuZ2UobV9wZW5kaW5nUHJvbWlzZXMsIHsgfSk7CisgICAgZm9yIChhdXRvJiBwcm9taXNl
IDogcGVuZGluZ1Byb21pc2VzKSB7CisgICAgICAgIHN0ZDo6dmlzaXQoW10oYXV0byYgcHJvbWlz
ZSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVW5rbm93bkVycm9y
LCAiQWNjZXNzSGFuZGxlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZCJfcyB9KTsKKyAgICAgICAg
fSwgcHJvbWlzZSk7CisgICAgfQorCisgICAgY2xvc2VCYWNrZW5kKENsb3NlTW9kZTo6U3luYyk7
CiB9CiAKIGJvb2wgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmlzQ2xvc2luZ09yQ2xvc2Vk
KCkgY29uc3QKQEAgLTYzLDEyICs3NiwxNiBAQCB2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlOjp0cnVuY2F0ZSh1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgRE9NUHJvbWlzZURlZgogICAg
IGlmIChpc0Nsb3NpbmdPckNsb3NlZCgpKQogICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3Qo
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3NIYW5kbGUgaXMgY2xvc2luZyBv
ciBjbG9zZWQiX3MgfSk7CiAKLSAgICBtX3BlbmRpbmdPcGVyYXRpb25Db3VudCsrOwotICAgIG1f
c291cmNlLT50cnVuY2F0ZShtX2lkZW50aWZpZXIsIHNpemUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byByZXN1bHQpIG11dGFi
bGUgewotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9wZW5k
aW5nT3BlcmF0aW9uQ291bnQtLTsKKyAgICBhdXRvKiBzY29wZSA9IGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghc2NvcGUpCisg
ICAgICAgIHJldHVybiBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkNvbnRleHQgaXMgaW52YWxpZCJfcyB9KTsKIAotICAgICAgICBwcm9taXNlLnNldHRsZShX
VEZNb3ZlKHJlc3VsdCkpOworICAgIG1fcGVuZGluZ1Byb21pc2VzLmFwcGVuZChXVEZNb3ZlKHBy
b21pc2UpKTsKKyAgICBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFz
ayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZmlsZSA9IG1fZmlsZSwgc2l6ZSwgd29y
a2VyVGhyZWFkID0gUmVmIHsgc2NvcGUtPnRocmVhZCgpIH1dKCkgbXV0YWJsZSB7CisgICAgICAg
IHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vh
a1RoaXMpLCBzdWNjZXNzID0gRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGZpbGUsIHNpemUpXShh
dXRvJikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAg
ICAgd2Vha1RoaXMtPmNvbXBsZXRlUHJvbWlzZShzdWNjZXNzID8gRXhjZXB0aW9uT3I8dm9pZD4g
eyB9IDogRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yIH0pOworICAgICAgICB9KTsKICAgICB9KTsK
IH0KIApAQCAtNzcsMTIgKzk0LDE2IEBAIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6
OmdldFNpemUoRE9NUHJvbWlzZURlZmVycmVkPElETFVuc2lnbmVkTG9uZ0xvbmc+CiAgICAgaWYg
KGlzQ2xvc2luZ09yQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybiBwcm9taXNlLnJlamVjdChFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2Vzc0hhbmRsZSBpcyBjbG9zaW5nIG9yIGNs
b3NlZCJfcyB9KTsKIAotICAgIG1fcGVuZGluZ09wZXJhdGlvbkNvdW50Kys7Ci0gICAgbV9zb3Vy
Y2UtPmdldFNpemUobV9pZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAg
ICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPm1fcGVuZGluZ09wZXJhdGlv
bkNvdW50LS07CisgICAgYXV0byogc2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIXNjb3BlKQorICAgICAgICByZXR1
cm4gcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJDb250ZXh0
IGlzIGludmFsaWQiX3MgfSk7CiAKLSAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1
bHQpKTsKKyAgICBtX3BlbmRpbmdQcm9taXNlcy5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7Cisg
ICAgV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIGZpbGUgPSBtX2ZpbGUsIHdvcmtlclRocmVhZCA9IFJlZiB7
IHNjb3BlLT50aHJlYWQoKSB9XSgpIG11dGFibGUgeworICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1
bkxvb3AoKS5wb3N0VGFzayhbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc3VjY2VzcyA9
IEZpbGVTeXN0ZW06OmZpbGVTaXplKGZpbGUpXShhdXRvJikgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPmNvbXBsZXRlUHJvbWlz
ZShzdWNjZXNzID8gRXhjZXB0aW9uT3I8dWludDY0X3Q+IHsgc3VjY2Vzcy52YWx1ZSgpIH0gOiBF
eGNlcHRpb24geyBVbmtub3duRXJyb3IgfSk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCkBA
IC05MSwyMCArMTEyLDIyIEBAIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmZsdXNo
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAgICAgaWYgKGlzQ2xvc2luZ09y
Q2xvc2VkKCkpCiAgICAgICAgIHJldHVybiBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgIkFjY2Vzc0hhbmRsZSBpcyBjbG9zaW5nIG9yIGNsb3NlZCJfcyB9KTsK
IAotICAgIG1fcGVuZGluZ09wZXJhdGlvbkNvdW50Kys7Ci0gICAgbV9zb3VyY2UtPmZsdXNoKG1f
aWRlbnRpZmllciwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhp
cykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX3BlbmRpbmdPcGVyYXRpb25Db3VudC0tOworICAg
IGF1dG8qIHNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CisgICAgaWYgKCFzY29wZSkKKyAgICAgICAgcmV0dXJuIHByb21pc2UucmVq
ZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQ29udGV4dCBpcyBpbnZhbGlkIl9z
IH0pOwogCi0gICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CisgICAgbV9w
ZW5kaW5nUHJvbWlzZXMuYXBwZW5kKFdURk1vdmUocHJvbWlzZSkpOworICAgIFdvcmtlckdsb2Jh
bFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCBmaWxlID0gbV9maWxlLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBzY29wZS0+dGhyZWFk
KCkgfV0oKSBtdXRhYmxlIHsKKyAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2soW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHN1Y2Nlc3MgPSBGaWxlU3lzdGVtOjpm
bHVzaEZpbGUoZmlsZSldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhp
cykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y29tcGxldGVQcm9taXNlKHN1Y2Nlc3MgPyBF
eGNlcHRpb25Pcjx2b2lkPiB7IH0gOiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IgfSk7CisgICAg
ICAgIH0pOwogICAgIH0pOwogfQogCiB2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpj
bG9zZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewotICAgIG1fcGVuZGlu
Z09wZXJhdGlvbkNvdW50Kys7CiAgICAgY2xvc2VJbnRlcm5hbChbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8gcmVzdWx0KSBtdXRh
YmxlIHsKLSAgICAgICAgd2Vha1RoaXMtPm1fcGVuZGluZ09wZXJhdGlvbkNvdW50LS07CiAgICAg
ICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CiAgICAgfSk7CiB9CkBAIC0xMTks
MTIgKzE0MiwzMSBAQCB2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjbG9zZUludGVy
bmFsKENsb3NlQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICBpZiAoaXNDbG9zaW5nKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9maWxlKTsKLSAgICBtX3Nv
dXJjZS0+Y2xvc2UobV9pZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH1dKGF1dG8gcmVzdWx0KSB7Ci0gICAgICAgIGRpZENsb3NlKFdURk1vdmUocmVzdWx0KSk7
CisgICAgYXV0byogc2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoc2NvcGUpOworCisgICAgQVNTRVJUKG1fZmls
ZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBXb3JrZXJH
bG9iYWxTY29wZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgZmlsZSA9IHN0ZDo6ZXhjaGFuZ2UobV9maWxlLCBGaWxlU3lzdGVtOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKSwgd29ya2VyVGhyZWFkID0gUmVmIHsgc2NvcGUtPnRocmVh
ZCgpIH1dKCkgbXV0YWJsZSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsK
KyAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhp
cykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y2xvc2VCYWNrZW5kKENsb3NlTW9kZTo6QXN5
bmMpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAordm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZTo6Y2xvc2VCYWNrZW5kKENsb3NlTW9kZSBtb2RlKQoreworICAgIGlmIChtb2RlID09
IENsb3NlTW9kZTo6QXN5bmMpIHsKKyAgICAgICAgbV9zb3VyY2UtPmNsb3NlKG1faWRlbnRpZmll
ciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShhdXRvIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBkaWRDbG9zZShXVEZNb3ZlKHJlc3VsdCkpOworICAgICAgICB9
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3NvdXJjZS0+Y2xvc2UobV9pZGVudGlmaWVyLCBb
XShhdXRvKSB7IH0pOworICAgICAgICBkaWRDbG9zZSh7IH0pOworICAgIH0KK30KKwogdm9pZCBG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6ZGlkQ2xvc2UoRXhjZXB0aW9uT3I8dm9pZD4mJiBy
ZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFtX2Nsb3NlUmVzdWx0KTsKQEAgLTE0Miw3ICsxODQsNyBA
QCBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlOjpyZWFkKEJ1ZmZlclNvdXJjZSYmCiAgICAgaWYgKGlzQ2xvc2luZ09yQ2xvc2VkKCkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2Vzc0hhbmRs
ZSBpcyBjbG9zaW5nIG9yIGNsb3NlZCJfcyB9OwogCi0gICAgaWYgKG1fcGVuZGluZ09wZXJhdGlv
bkNvdW50KQorICAgIGlmICghbV9wZW5kaW5nUHJvbWlzZXMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3MgaGFuZGxlIGhhcyB1
bmZpbmlzaGVkIG9wZXJhdGlvbiJfcyB9OwogCiAgICAgaW50IHJlc3VsdCA9IEZpbGVTeXN0ZW06
OnNlZWtGaWxlKG1fZmlsZSwgb3B0aW9ucy5hdCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW46
OkJlZ2lubmluZyk7CkBAIC0xNjMsNyArMjA1LDcgQEAgRXhjZXB0aW9uT3I8dW5zaWduZWQgbG9u
ZyBsb25nPiBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6d3JpdGUoQnVmZmVyU291cmNlJiYK
ICAgICBpZiAoaXNDbG9zaW5nT3JDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzSGFuZGxlIGlzIGNsb3Npbmcgb3IgY2xvc2VkIl9z
IH07CiAKLSAgICBpZiAobV9wZW5kaW5nT3BlcmF0aW9uQ291bnQpCisgICAgaWYgKCFtX3BlbmRp
bmdQcm9taXNlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgIkFjY2VzcyBoYW5kbGUgaGFzIHVuZmluaXNoZWQgb3BlcmF0aW9uIl9zIH07
CiAKICAgICBpbnQgcmVzdWx0ID0gRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9maWxlLCBvcHRpb25z
LmF0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nKTsKQEAgLTE3Nyw2ICsy
MTksMjMgQEAgRXhjZXB0aW9uT3I8dW5zaWduZWQgbG9uZyBsb25nPiBGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZTo6d3JpdGUoQnVmZmVyU291cmNlJiYKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Cit2b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpjb21wbGV0ZVByb21pc2UoUmVzdWx0
JiYgcmVzdWx0KQoreworICAgIGlmIChtX3BlbmRpbmdQcm9taXNlcy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBtX3BlbmRpbmdQcm9taXNl
cy50YWtlRmlyc3QoKTsKKyAgICBXVEY6OnN3aXRjaE9uKFdURk1vdmUocmVzdWx0KSwgWyZwZW5k
aW5nUHJvbWlzZV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIHsKKyAgICAgICAgYXV0byog
cHJvbWlzZSA9IHN0ZDo6Z2V0X2lmPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4oJnBlbmRpbmdQ
cm9taXNlKTsKKyAgICAgICAgQVNTRVJUKHByb21pc2UpOworICAgICAgICBwcm9taXNlLT5zZXR0
bGUoV1RGTW92ZShyZXN1bHQpKTsKKyAgICB9LCBbJnBlbmRpbmdQcm9taXNlXShFeGNlcHRpb25P
cjx1aW50NjRfdD4mJiByZXN1bHQpIHsKKyAgICAgICAgYXV0byogcHJvbWlzZSA9IHN0ZDo6Z2V0
X2lmPERPTVByb21pc2VEZWZlcnJlZDxJRExVbnNpZ25lZExvbmdMb25nPj4oJnBlbmRpbmdQcm9t
aXNlKTsKKyAgICAgICAgQVNTRVJUKHByb21pc2UpOworICAgICAgICBwcm9taXNlLT5zZXR0bGUo
V1RGTW92ZShyZXN1bHQpKTsKKyAgICB9KTsKK30KKwogY29uc3QgY2hhciogRmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGU6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogewogICAgIHJldHVy
biAiRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGUuaAppbmRleCA3MGFmZjMzOWEyMTA5MzA0ODBlNDQ3YzIwODU3OTFmNTIzMmJh
MTMwLi4xOGI0YWVkNWQ2ZTk3MTRkMDBkOTU2ODEzYWM3ZjI5NzFmOGE4M2RmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nl
c3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUu
aD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CiAKQEAgLTU0LDEyICs1NSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDbG9zZShFeGNlcHRp
b25Pcjx2b2lkPiYmKTsKICAgICBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+IHJlYWQo
QnVmZmVyU291cmNlJiYsIEZpbGVzeXN0ZW1SZWFkV3JpdGVPcHRpb25zKTsKICAgICBFeGNlcHRp
b25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+IHdyaXRlKEJ1ZmZlclNvdXJjZSYmLCBGaWxlc3lzdGVt
UmVhZFdyaXRlT3B0aW9ucyk7CisgICAgdXNpbmcgUmVzdWx0ID0gc3RkOjp2YXJpYW50PEV4Y2Vw
dGlvbk9yPHZvaWQ+LCBFeGNlcHRpb25Pcjx1aW50NjRfdD4+OworICAgIHZvaWQgY29tcGxldGVQ
cm9taXNlKFJlc3VsdCYmKTsKIAogcHJpdmF0ZToKICAgICBGaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbUZpbGVIYW5kbGUmLCBGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSk7CiAgICAgYm9vbCBpc0Nsb3NpbmdPckNsb3NlZCgpIGNvbnN0OwogICAgIHVzaW5n
IENsb3NlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+
JiYpPjsKICAgICB2b2lkIGNsb3NlSW50ZXJuYWwoQ2xvc2VDYWxsYmFjayYmKTsKKyAgICBlbnVt
IGNsYXNzIENsb3NlTW9kZSA6IGJvb2wgeyBBc3luYywgU3luYyB9OworICAgIHZvaWQgY2xvc2VC
YWNrZW5kKENsb3NlTW9kZSk7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICBjb25zdCBj
aGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CkBAIC02NywxMCArNzIsMTEg
QEAgcHJpdmF0ZToKIAogICAgIFJlZjxGaWxlU3lzdGVtRmlsZUhhbmRsZT4gbV9zb3VyY2U7CiAg
ICAgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAg
ICB1aW50NjRfdCBtX3BlbmRpbmdPcGVyYXRpb25Db3VudCB7IDAgfTsKICAgICBGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxlOwogICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9u
T3I8dm9pZD4+IG1fY2xvc2VSZXN1bHQ7CiAgICAgVmVjdG9yPENsb3NlQ2FsbGJhY2s+IG1fY2xv
c2VDYWxsYmFja3M7CisgICAgdXNpbmcgUHJvbWlzZSA9IHN0ZDo6dmFyaWFudDxET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4sIERPTVByb21pc2VEZWZlcnJlZDxJRExVbnNpZ25lZExvbmdMb25nPj47
CisgICAgRGVxdWU8UHJvbWlzZT4gbV9wZW5kaW5nUHJvbWlzZXM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCmluZGV4IGFlMjhmMzBmNDk0YWQwMzJhN2Q1MjNmMjZkNDZjYzE5OGQzN2Nl
M2MuLjFkZjcwYzQ4MDMxM2NkZDhiYmVhNjNhMjE4YmNhOGFhMjEyNmZiMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC0yMDgs
MTIgKzIwOCw2IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpkaWRD
cmVhdGVTeW5jQWNjZXNzSGFuZGxlKENhbGxiYWNrSWRlbnRpCiAgICAgICAgIGNhbGxiYWNrKFdU
Rk1vdmUocmVzdWx0KSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjpjb21wbGV0ZUludGVnZXJDYWxsYmFjayhDYWxsYmFja0lkZW50aWZpZXIgY2FsbGJhY2tJ
ZGVudGlmaWVyLCBFeGNlcHRpb25Pcjx1aW50NjRfdD4mJiByZXN1bHQpCi17Ci0gICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX2ludGVnZXJDYWxsYmFja3MudGFrZShjYWxsYmFja0lkZW50aWZpZXIp
KQotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwotfQotCiB2b2lkIFdvcmtlckZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y29tcGxldGVWb2lkQ2FsbGJhY2soQ2FsbGJhY2tJ
ZGVudGlmaWVyIGNhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQp
CiB7CiAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFj
a0lkZW50aWZpZXIpKQpAQCAtMjQzLDY2ICsyMzcsNiBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZShGaWxlU3lzdGVtSGFuZGxl
SQogICAgIH0pOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
Z2V0U2l6ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBGaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpJbnRlZ2VyQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAg
ICBpZiAoIW1fc2NvcGUpCi0gICAgICAgIHJldHVybiBjYWxsYmFjayhFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9KTsKLQotICAgIGF1dG8gY2FsbGJhY2tJZGVudGlmaWVyID0gQ2FsbGJh
Y2tJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBtX2ludGVnZXJDYWxsYmFj
a3MuYWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwotCi0gICAgY2Fs
bE9uTWFpblRocmVhZChbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBt
X3Njb3BlLT50aHJlYWQoKSB9LCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENv
bm5lY3Rpb24sIGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXJdKCkgbXV0YWJsZSB7
Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwg
d29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUo
W2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChh
dXRvJiBzY29wZSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gY29ubmVjdGlv
biA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuZmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmNvbXBsZXRlSW50
ZWdlckNhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKLSAgICAg
ICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwotICAgICAgICB9OwotCi0g
ICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5nZXRTaXplKGlkZW50aWZpZXIsIGFjY2Vzc0hh
bmRsZUlkZW50aWZpZXIsIFdURk1vdmUobWFpblRocmVhZENhbGxiYWNrKSk7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjp0cnVuY2F0ZShGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSwgRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAg
ICBpZiAoIW1fc2NvcGUpCi0gICAgICAgIHJldHVybiBjYWxsYmFjayhFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9KTsKLQotICAgIGF1dG8gY2FsbGJhY2tJZGVudGlmaWVyID0gQ2FsbGJh
Y2tJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBtX3ZvaWRDYWxsYmFja3Mu
YWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwotCi0gICAgY2FsbE9u
TWFpblRocmVhZChbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Nj
b3BlLT50aHJlYWQoKSB9LCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5l
Y3Rpb24sIGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHNpemVdKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmll
ciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0
YWJsZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1v
ZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCld
IChhdXRvJiBzY29wZSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gY29ubmVj
dGlvbiA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuZmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmNvbXBsZXRl
Vm9pZENhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKLSAgICAg
ICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwotICAgICAgICB9OwotCi0g
ICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT50cnVuY2F0ZShpZGVudGlmaWVyLCBhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCBzaXplLCBXVEZNb3ZlKG1haW5UaHJlYWRDYWxsYmFjaykpOwotICAg
IH0pOwotfQotCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Zmx1c2go
RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nl
c3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgaWYgKCFtX3Nj
b3BlKQotICAgICAgICByZXR1cm4gY2FsbGJhY2soRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IgfSk7Ci0KLSAgICBhdXRvIGNhbGxiYWNrSWRlbnRpZmllciA9IENhbGxiYWNrSWRlbnRpZmll
cjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7Ci0gICAgbV92b2lkQ2FsbGJhY2tzLmFkZChjYWxsYmFj
a0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQo
W2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhyZWFk
KCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBpZGVu
dGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyXSgpIG11dGFibGUgewotICAgICAgICBhdXRv
IG1haW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9
IFdURk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byByZXN1bHQpIG11dGFibGUgewotICAgICAgICAg
ICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50
aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11
dGFibGUgewotICAgICAgICAgICAgICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigpKQot
ICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb21wbGV0ZVZvaWRDYWxsYmFjayhjYWxs
YmFja0lkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgICAgICAgICB9LCBXb3JrZXJS
dW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKLSAgICAgICAgfTsKLQotICAgICAgICBtYWluVGhyZWFk
Q29ubmVjdGlvbi0+Zmx1c2goaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV1RG
TW92ZShtYWluVGhyZWFkQ2FsbGJhY2spKTsKLSAgICB9KTsKLX0KLQogdm9pZCBXb3JrZXJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNsb3NlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9zY29wZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3Jr
ZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA1YmNiZmMyYWIyOTYzMzM2ZjRj
NWViZmRiMjc0MzAxOWEyODU2YmNkLi4xMmZhMWMxODM4Y2U2MTc4NzNhMTc4ZjNlYmQwMGYxMDQw
YjBjNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nl
c3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbi5oCkBAIC00OSw3ICs0OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlc29sdmUoQ2Fs
bGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4mJik7CiAgICAgdm9p
ZCBkaWRDcmVhdGVTeW5jQWNjZXNzSGFuZGxlKENhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9u
T3I8c3RkOjpwYWlyPEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlPj4mJik7CiAgICAgdm9pZCBjb21wbGV0ZVZvaWRDYWxs
YmFjayhDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KTsKLSAg
ICB2b2lkIGNvbXBsZXRlSW50ZWdlckNhbGxiYWNrKENhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0
aW9uT3I8dWludDY0X3Q+JiYgcmVzdWx0KTsKICAgICB2b2lkIGRpZEdldEhhbmRsZU5hbWVzKENh
bGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9uT3I8VmVjdG9yPFN0cmluZz4+JiYpOwogICAgIHZv
aWQgZGlkR2V0SGFuZGxlV2l0aFR5cGUoQ2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25Pcjxz
dGQ6OnBhaXI8RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+PiYmKTsKIApAQCAtNjgs
OSArNjcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0SGFuZGxlKEZpbGVTeXN0ZW1IYW5kbGVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIEdldEhhbmRsZVdpdGhUeXBlQ2FsbGJhY2sm
JikgZmluYWw7CiAKICAgICB2b2lkIGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoRmlsZVN5c3RlbUhh
bmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0QWNjZXNzSGFu
ZGxlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBnZXRTaXplKEZpbGVTeXN0ZW1IYW5kbGVJ
ZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbjo6SW50ZWdlckNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQg
dHJ1bmNhdGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjpWb2lkQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBmbHVzaChGaWxlU3lzdGVtSGFu
ZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IGNsb3NlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNr
JiYpIGZpbmFsOwogCiAgICAgV2Vha1B0cjxXb3JrZXJHbG9iYWxTY29wZT4gbV9zY29wZTsKQEAg
LTgwLDcgKzc2LDYgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPENhbGxiYWNrSWRlbnRpZmllciwg
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNvbHZlQ2FsbGJhY2s+IG1fcmVzb2x2ZUNh
bGxiYWNrczsKICAgICBIYXNoTWFwPENhbGxiYWNrSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjpHZXRBY2Nlc3NIYW5kbGVDYWxsYmFjaz4gbV9nZXRBY2Nlc3NIYW5kbENh
bGxiYWNrczsKICAgICBIYXNoTWFwPENhbGxiYWNrSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2s+IG1fdm9pZENhbGxiYWNrczsKLSAgICBIYXNoTWFw
PENhbGxiYWNrSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpJbnRlZ2Vy
Q2FsbGJhY2s+IG1faW50ZWdlckNhbGxiYWNrczsKICAgICBIYXNoTWFwPENhbGxiYWNrSWRlbnRp
ZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRIYW5kbGVOYW1lc0NhbGxiYWNr
PiBtX2dldEhhbmRsZU5hbWVzQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8Q2FsbGJhY2tJZGVudGlm
aWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEhhbmRsZVdpdGhUeXBlQ2FsbGJh
Y2s+IG1fZ2V0SGFuZGxlV2l0aFR5cGVDYWxsYmFja3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA3NWZhNDM4NWRkMGFlN2UwNjViMmY2
NjRkZGRiY2MzN2U4MjlmNjY0Li4yYzQ2MmMyZTBjZjY4ZTdjNDA1ZTNjMmUwOTM2ZWEzMzBkNWQx
Nzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApA
QCAtNzcsNiArNzcsMTIgQEAgc3RhdGljIEhhc2hTZXQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXI+JiBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXIKICAgICByZXR1cm4gaWRl
bnRpZmllcnM7CiB9CiAKK3N0YXRpYyBSZWY8V29ya1F1ZXVlPiBzaGFyZWRGaWxlU3lzdGVtU3Rv
cmFnZVF1ZXVlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdvcmtRdWV1ZT4+
IHF1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJTaGFyZWQgRmlsZSBTeXN0ZW0gU3RvcmFnZSBRdWV1
ZSIsICBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkpOworICAgIHJldHVybiBxdWV1ZS5nZXQoKS5j
b3B5UmVmKCk7Cit9CisKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3JrZXJHbG9iYWxT
Y29wZSk7CiAKIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJUaHJl
YWRUeXBlIHR5cGUsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIG9yaWdpbiwgV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9u
UHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKQEAgLTIzMiw2ICsyMzgsMTEg
QEAgV29ya2VyU3RvcmFnZUNvbm5lY3Rpb24mIFdvcmtlckdsb2JhbFNjb3BlOjpzdG9yYWdlQ29u
bmVjdGlvbigpCiAgICAgcmV0dXJuICptX3N0b3JhZ2VDb25uZWN0aW9uOwogfQogCit2b2lkIFdv
cmtlckdsb2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKEZ1bmN0aW9uPHZvaWQo
KT4mJiB0YXNrKQoreworICAgIHNoYXJlZEZpbGVTeXN0ZW1TdG9yYWdlUXVldWUoKS0+ZGlzcGF0
Y2goV1RGTW92ZSh0YXNrKSk7Cit9CisKIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
biYgV29ya2VyR2xvYmFsU2NvcGU6OmdldEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbihSZWY8
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uPiYmIG1haW5UaHJlYWRDb25uZWN0aW9uKQogewog
ICAgIGlmICghbV9maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggZDU4ODBlZjI3MDc3YTM2NDVkOGYzMzUx
MWJmZDQ0YjU5YzViOTE0MS4uYWUzYjJkYmRhYzdmYTQ0Y2U3ZTNmMzIyMjAyYzAwOGIzZWM4Nzhm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtODgs
NiArODgsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IEV2ZW50VGFyZ2V0
OjpXZWFrVmFsdWVUeXBlOwogICAgIHVzaW5nIEV2ZW50VGFyZ2V0Ojp3ZWFrUHRyRmFjdG9yeTsK
ICAgICBXb3JrZXJTdG9yYWdlQ29ubmVjdGlvbiYgc3RvcmFnZUNvbm5lY3Rpb24oKTsKKyAgICBz
dGF0aWMgdm9pZCBwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7
CiAgICAgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uJiBnZXRGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb24oUmVmPEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbj4mJik7CiAgICAg
V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKiBmaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24oKTsKICAgICBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VD
b25uZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VFcnJvci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IuaAppbmRleCAwMjc3MzdhMmI0MGIy
YzI3MGVhYTY0YjhhNWY5ZTY0MzAxZWU4Nzk2Li5jMzZmNzUzNGM2YWI1YjYyYWE0YTVkZDM0Njkz
NGYzMWVkYjA4YmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUVycm9yLmgKQEAgLTMxLDYgKzMxLDcg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBlbnVtIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3IgOiB1aW50OF90IHsKKyAgICBBY2Nlc3NIYW5kbGVBY3RpdmUsCiAgICAgQmFja2VuZE5vdFN1
cHBvcnRlZCwKICAgICBGaWxlTm90Rm91bmQsCiAgICAgSW52YWxpZE1vZGlmaWNhdGlvbiwKQEAg
LTQzLDE0ICs0NCwxNiBAQCBlbnVtIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IgOiB1aW50
OF90IHsKIGlubGluZSBXZWJDb3JlOjpFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uKEZpbGVT
eXN0ZW1TdG9yYWdlRXJyb3IgZXJyb3IpCiB7CiAgICAgc3dpdGNoIChlcnJvcikgeworICAgIGNh
c2UgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6QWNjZXNzSGFuZGxlQWN0aXZlOgorICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6SW52YWxpZFN0YXRlRXJyb3IsICJT
b21lIEFjY2Vzc0hhbmRsZSBpcyBhY3RpdmUiX3MgfTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9y
YWdlRXJyb3I6OkJhY2tlbmROb3RTdXBwb3J0ZWQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpF
eGNlcHRpb24geyBXZWJDb3JlOjpOb3RTdXBwb3J0ZWRFcnJvciwgIkJhY2tlbmQgZG9lcyBub3Qg
c3VwcG9ydCB0aGlzIG9wZXJhdGlvbiIgfTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2Vw
dGlvbiB7IFdlYkNvcmU6Ok5vdFN1cHBvcnRlZEVycm9yLCAiQmFja2VuZCBkb2VzIG5vdCBzdXBw
b3J0IHRoaXMgb3BlcmF0aW9uIl9zIH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9y
OjpGaWxlTm90Rm91bmQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJD
b3JlOjpOb3RGb3VuZEVycm9yIH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpJ
bnZhbGlkTW9kaWZpY2F0aW9uOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsg
V2ViQ29yZTo6SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yIH07CiAgICAgY2FzZSBGaWxlU3lzdGVt
U3RvcmFnZUVycm9yOjpJbnZhbGlkTmFtZToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2Vw
dGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIk5hbWUgaXMgaW52YWxpZCIgfTsKKyAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIk5h
bWUgaXMgaW52YWxpZCJfcyB9OwogICAgIGNhc2UgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6SW52
YWxpZFN0YXRlOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6
SW52YWxpZFN0YXRlRXJyb3IgfTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlR5
cGVNaXNtYXRjaDoKQEAgLTc3LDYgKzgwLDcgQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gewogICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYktpdDo6RmlsZVN5c3RlbVN0
b3JhZ2VFcnJvciwKKyAgICAgICAgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpBY2Nl
c3NIYW5kbGVBY3RpdmUsCiAgICAgICAgIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6
QmFja2VuZE5vdFN1cHBvcnRlZCwKICAgICAgICAgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yOjpGaWxlTm90Rm91bmQsCiAgICAgICAgIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cjo6SW52YWxpZE1vZGlmaWNhdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCmlu
ZGV4IDYwNzFjYmM1MDFhMGI3NzY2NTFjYjVlMjRjZmI3MWVkYjY0OTVjZTcuLjRmNzJjZDAzZjM2
OGY0NTc2ZDQzNWQ2N2U2MmUzYTExYjkyY2ZlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFu
ZGxlLmNwcApAQCAtNjMsMTIgKzYzLDYgQEAgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OkZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlKEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYgbWFuYWcKICAgICB9
CiB9CiAKLUZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjp+RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUo
KQotewotICAgIGlmIChtX2hhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9oYW5kbGUpOwotfQotCiB2
b2lkIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpjbG9zZSgpCiB7CiAgICAgaWYgKCFtX21hbmFn
ZXIpCkBAIC0xNzIsMTMgKzE2NiwxMyBAQCBFeHBlY3RlZDxGaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZTo6QWNjZXNzSGFuZGxlSW5mbywgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZQogICAgIGlm
ICghYWNxdWlyZWQpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3Rv
cmFnZUVycm9yOjpJbnZhbGlkU3RhdGUpOwogCi0gICAgbV9oYW5kbGUgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShtX3BhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlKTsKLSAg
ICBpZiAobV9oYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkK
KyAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fcGF0aCwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUpOworICAgIGlmIChoYW5kbGUgPT0gRmlsZVN5c3Rl
bTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd24pOwogCi0gICAgYXV0byBpcGNIYW5k
bGUgPSBJUEM6OlNoYXJlZEZpbGVIYW5kbGU6OmNyZWF0ZShtX2hhbmRsZSk7CisgICAgYXV0byBp
cGNIYW5kbGUgPSBJUEM6OlNoYXJlZEZpbGVIYW5kbGU6OmNyZWF0ZShoYW5kbGUpOwogICAgIGlm
ICghaXBjSGFuZGxlKSB7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2hhbmRsZSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6QmFja2VuZE5vdFN1cHBvcnRl
ZCk7CiAgICAgfQogCkBAIC0xODcsNjEgKzE4MSwxMSBAQCBFeHBlY3RlZDxGaWxlU3lzdGVtU3Rv
cmFnZUhhbmRsZTo6QWNjZXNzSGFuZGxlSW5mbywgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmls
ZQogICAgIHJldHVybiBzdGQ6OnBhaXIgeyAqbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlLCBXVEZN
b3ZlKCppcGNIYW5kbGUpIH07CiB9CiAKLUV4cGVjdGVkPHVpbnQ2NF90LCBGaWxlU3lzdGVtU3Rv
cmFnZUVycm9yPiBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6Z2V0U2l6ZShXZWJDb3JlOjpGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllcikK
LXsKLSAgICBpZiAoIW1fbWFuYWdlcikKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEZp
bGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd24pOwotCi0gICAgaWYgKCFtX2FjdGl2ZVN5bmNB
Y2Nlc3NIYW5kbGUgfHwgKm1fYWN0aXZlU3luY0FjY2Vzc0hhbmRsZSAhPSBhY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvcjo6VW5rbm93bik7Ci0KLSAgICBhdXRvIHNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6
ZShtX3BhdGgpOwotICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd24pOwotCi0gICAgcmV0dXJuIHNpemUudmFs
dWUoKTsKLX0KLQotc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBGaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZTo6dHJ1bmNhdGUoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUpCi17
Ci0gICAgaWYgKCFtX21hbmFnZXIpCi0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yOjpVbmtub3duOwotCi0gICAgaWYgKCFtX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgfHwgKm1f
YWN0aXZlU3luY0FjY2Vzc0hhbmRsZSAhPSBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKQotICAgICAg
ICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsKLQotICAgIEFTU0VSVCht
X2hhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBh
dXRvIHJlc3VsdCA9IEZpbGVTeXN0ZW06OnRydW5jYXRlRmlsZShtX2hhbmRsZSwgc2l6ZSk7Ci0g
ICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpV
bmtub3duOwotCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotc3RkOjpvcHRpb25hbDxG
aWxlU3lzdGVtU3RvcmFnZUVycm9yPiBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6Zmx1c2goV2Vi
Q29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlk
ZW50aWZpZXIpCi17Ci0gICAgaWYgKCFtX21hbmFnZXIpCi0gICAgICAgIHJldHVybiBGaWxlU3lz
dGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwotCi0gICAgaWYgKCFtX2FjdGl2ZVN5bmNBY2Nlc3NI
YW5kbGUgfHwgKm1fYWN0aXZlU3luY0FjY2Vzc0hhbmRsZSAhPSBhY2Nlc3NIYW5kbGVJZGVudGlm
aWVyKQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsKLQot
ICAgIEFTU0VSVChtX2hhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKTsKLSAgICBhdXRvIHJlc3VsdCA9IEZpbGVTeXN0ZW06OmZsdXNoRmlsZShtX2hhbmRsZSk7
Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9y
OjpVbmtub3duOwotCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQogc3RkOjpvcHRpb25h
bDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6Y2xvc2Uo
V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFtX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgfHwgKm1f
YWN0aXZlU3luY0FjY2Vzc0hhbmRsZSAhPSBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bjsKIAotICAgIEFTU0VSVCht
X2hhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUobV9oYW5kbGUpOwotCiAgICAgaWYgKCFtX21hbmFnZXIpCiAg
ICAgICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwogCkBAIC0yNzgs
NyArMjIyLDcgQEAgc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBGaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZTo6bW92ZShXZWJDb3JlOjpGaWwKIAogICAgIC8vIERvIG5vdCBtb3Zl
IGZpbGUgaWYgdGhlcmUgaXMgb25nb2luZyBvcGVyYXRpb24uCiAgICAgaWYgKG1fYWN0aXZlU3lu
Y0FjY2Vzc0hhbmRsZSkKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6Oklu
dmFsaWRTdGF0ZTsKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkFjY2Vz
c0hhbmRsZUFjdGl2ZTsKIAogICAgIGlmIChtX21hbmFnZXItPmdldFR5cGUoZGVzdGluYXRpb25J
ZGVudGlmaWVyKSAhPSBUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBGaWxlU3lzdGVt
U3RvcmFnZUVycm9yOjpUeXBlTWlzbWF0Y2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCmlu
ZGV4IDNkYWY0NzJmNzE2YzUzZGI1YzRjMmI4ZTk1OGY1NzRmOGVlZWFkZDguLmZiOTI5ODE0MWIw
ZGJjMzgxZmE4YjNiMzgxN2U2OGNhMDE4OTc5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZS5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLCBXCiBwdWJsaWM6CiAg
ICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IEZpbGUsIERpcmVjdG9yeSwgQW55IH07CiAg
ICAgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUoRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiwgVHlw
ZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSk7Ci0gICAgfkZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlKCk7CiAKICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgY29uc3QgU3RyaW5n
JiBwYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoOyB9CkBAIC02Miw5ICs2MSw2IEBAIHB1Ymxp
YzoKIAogICAgIHVzaW5nIEFjY2Vzc0hhbmRsZUluZm8gPSBzdGQ6OnBhaXI8V2ViQ29yZTo6Rmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEZpbGVIYW5kbGU+
OwogICAgIEV4cGVjdGVkPEFjY2Vzc0hhbmRsZUluZm8sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+
IGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoKTsKLSAgICBFeHBlY3RlZDx1aW50NjRfdCwgRmlsZVN5
c3RlbVN0b3JhZ2VFcnJvcj4gZ2V0U2l6ZShXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZUlkZW50aWZpZXIpOwotICAgIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4gdHJ1bmNhdGUoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
LCB1aW50NjRfdCBzaXplKTsKLSAgICBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I+IGZsdXNoKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllcik7
CiAgICAgc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBjbG9zZShXZWJDb3Jl
OjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIpOwogCiBwcml2YXRlOgpAQCAt
NzYsNyArNzIsNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgU3RyaW5nIG1f
bmFtZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlSWRlbnRpZmllcj4gbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlOwotICAgIEZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRsZSB7IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLmNwcAppbmRleCBjZTU4MTE0MDM0Zjk4ZWUzMjZkYWI3N2RhZmFmNTYyM2RkZDIy
MDA5Li40ZTRjMDg1ODMyMWUyNTJhYWQ4OWUzNDNkN2NiYTlmMThiNTk1NzI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMjUzLDQwICsyNTMsMTIgQEAgdm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhh
bmRsZUlkZW4KICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd24pKTsKIAot
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZSgpKTsK
LX0KLQotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldFNpemVGb3JBY2Nlc3NIYW5kbGUo
V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8dWludDY0X3QsIEZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKLQotICAgIGF1dG8gaGFuZGxlID0gbV9maWxlU3lzdGVtU3RvcmFnZUhh
bmRsZVJlZ2lzdHJ5LT5nZXRIYW5kbGUoaWRlbnRpZmllcik7Ci0gICAgaWYgKCFoYW5kbGUpCi0g
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVt
U3RvcmFnZUVycm9yOjpVbmtub3duKSk7Ci0KLSAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGUt
PmdldFNpemUoYWNjZXNzSGFuZGxlSWRlbnRpZmllcikpOwotfQotCi12b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6dHJ1bmNhdGVGb3JBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhh
bmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNpemUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9y
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7Ci0KLSAgICBhdXRvIGhhbmRsZSA9IG1fZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3Ry
eS0+Z2V0SGFuZGxlKGlkZW50aWZpZXIpOwotICAgIGlmICghaGFuZGxlKQotICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bik7Ci0K
LSAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGUtPnRydW5jYXRlKGFjY2Vzc0hhbmRsZUlkZW50
aWZpZXIsIHNpemUpKTsKLX0KLQotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmZsdXNoRm9y
QWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Rmls
ZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgYXV0byBoYW5kbGUgPSBtX2ZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlUmVnaXN0cnktPmdldEhhbmRsZShpZGVudGlmaWVyKTsKLSAgICBpZiAoIWhh
bmRsZSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I6OlVua25vd24pOworICAgIGF1dG8gcmVzdWx0ID0gaGFuZGxlLT5jcmVhdGVTeW5jQWNj
ZXNzSGFuZGxlKCk7CisgICAgYXV0byBmaWxlSGFuZGxlID0gcmVzdWx0ID8gcmVzdWx0LnZhbHVl
KCkuc2Vjb25kIDogSVBDOjpTaGFyZWRGaWxlSGFuZGxlKCk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXN1bHQpKTsKIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+Zmx1
c2goYWNjZXNzSGFuZGxlSWRlbnRpZmllcikpOworICAgIC8vIENsb3NlIHRoZSBmaWxlIGhhbmRs
ZSBpbiBuZXR3b3JrIHByb2Nlc3MuCisgICAgZmlsZUhhbmRsZS5jbG9zZSgpOwogfQogCiB2b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xvc2VBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5
c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggZTI1NTA0MTg5NjBm
ZDRmN2UzOGM4NDFjNDA4ZjNmNDA1YWQ2NjM3OC4uYjE2Y2MyNTg4ZTNmZTZlMWZjNWQxZWY0ZGU0
Y2EyZmM4MzVjNTg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAtNzksOSArNzksNiBA
QCBwcml2YXRlOgogCiAgICAgdXNpbmcgQWNjZXNzSGFuZGxlSW5mbyA9IHN0ZDo6cGFpcjxXZWJD
b3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIElQQzo6U2hhcmVkRmls
ZUhhbmRsZT47CiAgICAgdm9pZCBjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPEFj
Y2Vzc0hhbmRsZUluZm8sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7Ci0gICAgdm9pZCBn
ZXRTaXplRm9yQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVy
LCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8dWludDY0X3QsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+
KT4mJik7Ci0gICAgdm9pZCB0cnVuY2F0ZUZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmKTsKLSAgICB2b2lkIGZsdXNoRm9yQWNj
ZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYpOwogICAgIHZvaWQg
Y2xvc2VBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdl
YkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7CiAg
ICAgdm9pZCBnZXRIYW5kbGVOYW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgRmlsZVN5
c3RlbVN0b3JhZ2VFcnJvcj4pPiYmKTsKICAgICB2b2lkIGdldEhhbmRsZShJUEM6OkNvbm5lY3Rp
b24mLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6OnBhaXI8V2ViQ29yZTo6RmlsZVN5
c3RlbUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+LCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMWZiYmYz
N2JhYWQ3ZDA0M2M4NzVjZThkZjFiYWI5YTE1NzZhNzkwNS4uYjRmYWFmN2FjZTY3NWRiYmUwNGQ2
M2QxY2I4MzA3MTM2Mjk2Y2UxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1l
c3NhZ2VzLmluCkBAIC0zNiw5ICszNiw2IEBACiAgICAgTW92ZShXZWJDb3JlOjpGaWxlU3lzdGVt
SGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRl
bnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFN0cmluZyBuZXdOYW1lKSAtPiAoc3RkOjpv
cHRpb25hbDxXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKIAog
ICAgIENyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIgaWRlbnRpZmllcikgLT4gKEV4cGVjdGVkPHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIElQQzo6U2hhcmVkRmlsZUhhbmRsZT4sIFdl
YktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwotICAgIEdldFNpemVG
b3JBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vz
c0hhbmRsZUlkZW50aWZpZXIpIC0+IChFeHBlY3RlZDx1aW50NjRfdCwgV2ViS2l0OjpGaWxlU3lz
dGVtU3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jCi0gICAgVHJ1bmNhdGVGb3JBY2Nlc3NIYW5k
bGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29y
ZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50
aWZpZXIsIHVpbnQ2NF90IHNpemUpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6RmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwotICAgIEZsdXNoRm9yQWNjZXNzSGFuZGxlKFdl
YkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZp
bGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVy
KSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3Vs
dCkgQXN5bmMKICAgICBDbG9zZUFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8V2Vi
S2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jCiAgICAgR2V0SGFuZGxl
TmFtZXMoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllcikgLT4g
KEV4cGVjdGVkPFZlY3RvcjxTdHJpbmc+LCBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+
IHJlc3VsdCkgQXN5bmMKICAgICBHZXRIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIG5hbWUpIC0+IChFeHBlY3RlZDxzdGQ6OnBhaXI8
V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+LCBXZWJLaXQ6OkZpbGVT
eXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMgV2FudHNDb25uZWN0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuY3BwCmluZGV4IDhlYmNl
OTgwMDg3YzA3NWIwMjNiNThhZWEyZTE1NTg2MGQ3Njk0NjQuLjY0ZTQyMTc4MDFhMjFmMDVkODhi
NGU2MTY4ZDcwYjg5Zjk1YTdlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEZpbGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEZpbGVIYW5kbGUuY3BwCkBAIC0yOCw2ICsyOCwxMSBAQAogCiBuYW1lc3BhY2UgSVBD
IHsKIAordm9pZCBTaGFyZWRGaWxlSGFuZGxlOjpjbG9zZSgpCit7CisgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKG1faGFuZGxlKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIAogc3RkOjpv
cHRpb25hbDxTaGFyZWRGaWxlSGFuZGxlPiBTaGFyZWRGaWxlSGFuZGxlOjpjcmVhdGUoRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkRmlsZUhhbmRsZS5oCmluZGV4IGE0NmFjODkwNTA3ZWI2OTNhMTA3YjQ5OWU1NDM2MDZh
Nzk3ZTQ0OWEuLjU4NWFkOTkzNzI3MmMyZDBhYTlkNTM3YzIzN2M4M2E2YjU2MDhiN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxlSGFuZGxlLmgKQEAgLTM5LDkg
KzM5LDkgQEAgcHVibGljOgogCiAgICAgU2hhcmVkRmlsZUhhbmRsZSgpID0gZGVmYXVsdDsKICAg
ICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKCkgeyByZXR1cm4gbV9oYW5k
bGU7IH0KKyAgICB2b2lkIGNsb3NlKCk7CiAKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7Ci0KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTaGFyZWRGaWxlSGFuZGxlPiBkZWNvZGUo
RGVjb2RlciYpOwogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggZDFkNzk4NWU2NWVkZDI1OWVmOTMyNWYyOTRmMDRj
OGUwNjE4ZmJkMi4uZjAxZjIxZmY4ZjYxNjNhZTUzZTQ4NzMyNDJjZmU1YjdmOTg2ZmRhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTEz
NCwzOSArMTM0LDYgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0
ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUgKICAgICB9KTsKIH0KIAotdm9p
ZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldFNpemUoV2ViQ29yZTo6RmlsZVN5
c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIEludGVnZXJDYWxs
YmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV9jb25uZWN0aW9uKQotICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29y
ZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKLQotICAgIG1fY29ubmVj
dGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkdldFNpemVGb3JBY2Nlc3NIYW5kbGUoaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmll
ciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRv
IHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKGNvbnZlcnRUb0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkp
OwotCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdC52YWx1ZSgpKTsKLSAgICB9KTsK
LX0KLQotdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OnRydW5jYXRlKFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1
aW50NjRfdCBzaXplLCBWb2lkQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBp
ZiAoIW1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNv
cmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6OlVua25vd25FcnJvciwgIkNvbm5lY3Rpb24gaXMgbG9z
dCIgfSk7Ci0KLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpUcnVuY2F0ZUZvckFjY2Vzc0hhbmRsZShpZGVudGlmaWVy
LCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBzaXplKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZXJyb3IpIG11dGFibGUgewotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihjb252ZXJ0VG9FeGNlcHRpb25PcihlcnJvcikpOwotICAgIH0pOwot
fQotCi12b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Zmx1c2goV2ViQ29yZTo6
RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFZvaWRD
YWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV9jb25uZWN0aW9uKQot
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2Vi
Q29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKLQotICAgIG1fY29u
bmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OkZsdXNoRm9yQWNjZXNzSGFuZGxlKGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0
byBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnZlcnRUb0V4
Y2VwdGlvbk9yKGVycm9yKSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uOjpjbG9zZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIg
YWNjZXNzSGFuZGxlSWRlbnRpZmllciwgVm9pZENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggYTc2YTdkMTNjMzBkNTk4MWZlNzFhNzc0Y2Q0ZDA1YzIx
NjQ3MTQxMC4uZDU3MTNmOGFkMjFiMTJlNjFjYTRhZWE1YWE4NTExZWRlM2E2ODZlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtODMsOSArODMs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0SGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6R2V0SGFuZGxlV2l0aFR5cGVDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgY3Jl
YXRlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
V2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRBY2Nlc3NIYW5kbGVDYWxs
YmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIGdldFNpemUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
ciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpJbnRlZ2VyQ2FsbGJhY2sm
JikgZmluYWw7Ci0gICAgdm9pZCB0cnVuY2F0ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRl
bnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1
aW50NjRfdCBzaXplLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRD
YWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIGZsdXNoKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgY2xvc2UoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV2ViQ29y
ZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJikgZmluYWw7CiAK
ICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWU0YmY4
ZGM1OWI5ODg4MTU1ZDc1YzNiMTkyNDUzNWM4NWQ3MDNjYS4uMTMxODY0ODYwNzY1ZGQxNWM0Yzhi
MGZhOTVhNzBhNzI3NzZmYTQ5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTExLTAxICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFBlcmZvcm0gRmlsZVN5
c3RlbVN5bmNBY2Nlc3NIYW5kbGUgb3BlcmF0aW9ucyBpbiB3ZWIgcHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMTQ2CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84NDgwOTQyOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9oYW5kbGUtbW92ZS13
b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9y
ZXNvdXJjZXMvaGFuZGxlLW1vdmUuanM6CisgICAgICAgIChhc3luYyB0ZXN0KToKKwogMjAyMS0x
MS0wMSAgQXl1bWkgS29qaW1hICA8YXl1bWlfa29qaW1hQGFwcGxlLmNvbT4KIAogICAgICAgICBb
IGlPUyBEZWJ1ZyBdIGh0dHAvd3B0L3B1c2gtYXBpIHRlc3RzIGFyZSBmbGFreSBmYWlsaW5nLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL2hhbmRsZS1t
b3ZlLXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1h
Y2Nlc3MvaGFuZGxlLW1vdmUtd29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCAyYmI4OGI0ODcxZjE1
YTczNWE3OGNmOWMxMjBhZmIyZDliMjk4NDlkLi42NDU5YjA0Y2U2ZDRmNTViNDdhZDJlM2Y2ZjA5
MDZmZGUxY2VmZTcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1h
Y2Nlc3MvaGFuZGxlLW1vdmUtd29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvaGFuZGxlLW1vdmUtd29ya2VyLWV4cGVjdGVkLnR4dApA
QCAtMTgsNyArMTgsNyBAQCBQQVNTIFtXb3JrZXJdIG1vdmVGaWxlRXJyb3IudG9TdHJpbmcoKSBp
cyAiVW5rbm93bkVycm9yOiBUaGUgb3BlcmF0aW9uIGZhaWxlZCBmbwogUEFTUyBbV29ya2VyXSBt
b3ZlRmlsZUVycm9yLnRvU3RyaW5nKCkgaXMgIlVua25vd25FcnJvcjogTmFtZSBpcyBpbnZhbGlk
IgogUEFTUyBbV29ya2VyXSBtb3ZlRmlsZUVycm9yLnRvU3RyaW5nKCkgaXMgIlVua25vd25FcnJv
cjogTmFtZSBpcyBpbnZhbGlkIgogW1dvcmtlcl0gVGVzdCBtb3ZlIHdpdGggb3BlbiBhY2Nlc3Mg
aGFuZGxlOgotUEFTUyBbV29ya2VyXSBtb3ZlRmlsZUVycm9yLnRvU3RyaW5nKCkgaXMgIkludmFs
aWRTdGF0ZUVycm9yOiBUaGUgb2JqZWN0IGlzIGluIGFuIGludmFsaWQgc3RhdGUuIgorUEFTUyBb
V29ya2VyXSBtb3ZlRmlsZUVycm9yLnRvU3RyaW5nKCkgaXMgIkludmFsaWRTdGF0ZUVycm9yOiBT
b21lIEFjY2Vzc0hhbmRsZSBpcyBhY3RpdmUiCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZmls
ZXN5c3RlbWFjY2Vzcy9yZXNvdXJjZXMvaGFuZGxlLW1vdmUuanMgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvcmVzb3VyY2VzL2hhbmRsZS1tb3ZlLmpzCmluZGV4IGQ5MWQ5
MWJjNTM5MmZhMDA1ODdlZWVkNWExMzBmYWZjODU1MmY2MWEuLjljOGRjZjE1M2ViY2MwMjc1YTNj
YzIxOGQ2ODY4NGNiM2Y1ODBhOTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZmls
ZXN5c3RlbWFjY2Vzcy9yZXNvdXJjZXMvaGFuZGxlLW1vdmUuanMKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9maWxlc3lzdGVtYWNjZXNzL3Jlc291cmNlcy9oYW5kbGUtbW92ZS5qcwpAQCAtMTA1
LDcgKzEwNSw3IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgdGVz
dEVycm9yID0gICJNb3ZlZCBmaWxlIGJhY2sgdG8gZGlySGFuZGxlMSB1bmV4cGVjdGVkbHkiOwog
ICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7CiAgICAgICAgICAgICAgICAgbW92ZUZpbGVFcnJv
ciA9IGVycm9yOwotICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibW92ZUZp
bGVFcnJvci50b1N0cmluZygpIiwgIkludmFsaWRTdGF0ZUVycm9yOiBUaGUgb2JqZWN0IGlzIGlu
IGFuIGludmFsaWQgc3RhdGUuIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJtb3ZlRmlsZUVycm9yLnRvU3RyaW5nKCkiLCAiSW52YWxpZFN0YXRlRXJyb3I6IFNvbWUg
QWNjZXNzSGFuZGxlIGlzIGFjdGl2ZSIpOwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAg
IGlmICh0ZXN0RXJyb3IpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443778</attachid>
            <date>2021-11-09 23:21:50 -0800</date>
            <delta_ts>2021-11-10 00:20:39 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-232146-20211109232149.patch</filename>
            <type>text/plain</type>
            <size>52730</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk4MDRkMTFkM2FlNDdh
N2M4ZGQ5YjdmNDVkZjIxYWZmN2M0NThiNS4uZWQ5N2E2MmY2ZmJhZmIyMThlN2NiNjFlZDM4MzA1
OWQ5YmRhNTcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTExLTA5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFBlcmZvcm0gRmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGUgb3BlcmF0aW9ucyBpbiB3ZWIgcHJvY2VzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMTQ2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84NDgwOTQyOD4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0
LgorCisgICAgICAgIHRydW5jYXRlKCksIGdldFNpemUoKSBhbmQgZmx1c2goKSBvcGVyYXRpb25z
IGFyZSBub3cgcGVyZm9ybWVkIG9uIGEgZ2xvYmFsIFdvcmtRdWV1ZSBpbiB3ZWIgcHJvY2Vzcy4K
KworICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRmlsZUhhbmRsZTo6Z2V0U2l6ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRmlsZUhhbmRsZTo6dHJ1bmNh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZpbGVIYW5kbGU6OmZs
dXNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5
c3RlbUZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
YWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjp+RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OnRydW5jYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpnZXRTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpmbHVzaCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6Y2xvc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3NlSW50ZXJu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNsb3Nl
QmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6d3Jp
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNvbXBs
ZXRlUHJvbWlzZSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
Ojpjb21wbGV0ZUludGVnZXJDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldFNpemUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjp0cnVuY2F0
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb246OmZsdXNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1h
Y2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRGaWxl
U3lzdGVtU3RvcmFnZVF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3Bl
Ojpwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmg6CisKIDIwMjEtMTEtMDkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IG1hY0NhdGFseXN0IGJ1aWxkIGFmdGVyIHIyODU1MDkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYzI2ODc4YzQ1ZmNlOWVjNGJlNzAzZTc1ZDE1ODY0N2RlNTliYzA5NS4uODAwNTVhNTc5
ODU4YzhjMGE0ZGVjZWVkYmQ4NDBjMDU4NDU5NjQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBA
QAorMjAyMS0xMS0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAg
ICBQZXJmb3JtIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlIG9wZXJhdGlvbnMgaW4gd2ViIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjE0NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQ4MDk0Mjg+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBOZXR3b3JrIHByb2Nlc3Mgbm8gbG9uZ2Vy
IG5lZWRzIHRvIGhvbGQgb3BlbiBmaWxlIGhhbmRsZSBmb3IgRmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGUuIE5vdyBpdCBjcmVhdGVzIGFuIG9wZW4gCisgICAgICAgIGZpbGUgaGFuZGxlLCBwYXNz
IGl0IHRvIHdlYiBwcm9jZXNzIGFuZCBjbG9zZSBpdC4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VFcnJvci5oOgorICAgICAgICAoV2ViS2l0Ojpj
b252ZXJ0VG9FeGNlcHRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmls
ZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVtU3Rv
cmFnZUhhbmRsZTo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OkZp
bGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0
ZW1TdG9yYWdlSGFuZGxlOjptb3ZlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGU6On5GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpnZXRTaXplKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OnRydW5jYXRlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmZsdXNoKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFu
ZGxlLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRTaXplRm9yQWNjZXNzSGFuZGxlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjp0cnVuY2F0ZUZvckFj
Y2Vzc0hhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Zmx1c2hGb3JBY2Nlc3NIYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuY3BwOgorICAgICAgICAoSVBDOjpT
aGFyZWRGaWxlSGFuZGxlOjpjbG9zZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEZp
bGVIYW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6dHJ1bmNhdGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmZsdXNoKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbi5oOgorCiAyMDIxLTExLTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgQnJvYWRjYXN0Q2hhbm5lbCBpcyBzdGlsbCBkaXNhYmxlZCBp
biBzZXJ2aWNlIHdvcmtlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUuY3BwCmluZGV4IDJk
YmI0ZTNhODAwZmUyZjQ1ODk2MTdkYTE3YzNjNTMzMDkwMWRiMWQuLjE3NTExZjBhZTA4YmY3MmE5
NDEyMzMzZDVhODU3ZDFiMjBmZmQwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1GaWxlSGFuZGxlLmNw
cApAQCAtNzUsMzAgKzc1LDYgQEAgdm9pZCBGaWxlU3lzdGVtRmlsZUhhbmRsZTo6Y3JlYXRlU3lu
Y0FjY2Vzc0hhbmRsZShET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWMKICAgICB9KTsKIH0K
IAotdm9pZCBGaWxlU3lzdGVtRmlsZUhhbmRsZTo6Z2V0U2l6ZShGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeGNlcHRpb25Pcjx1aW50NjRfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17
Ci0gICAgaWYgKGlzQ2xvc2VkKCkpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkhhbmRsZSBpcyBjbG9zZWQiX3MgfSk7Ci0K
LSAgICBjb25uZWN0aW9uKCkuZ2V0U2l6ZShpZGVudGlmaWVyKCksIGFjY2Vzc0hhbmRsZUlkZW50
aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQotdm9pZCBGaWxlU3lzdGVt
RmlsZUhhbmRsZTo6dHJ1bmNhdGUoRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQotewotICAgIGlmIChpc0Nsb3NlZCgpKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJIYW5kbGUgaXMgY2xvc2VkIl9zIH0p
OwotCi0gICAgY29ubmVjdGlvbigpLnRydW5jYXRlKGlkZW50aWZpZXIoKSwgYWNjZXNzSGFuZGxl
SWRlbnRpZmllciwgc2l6ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi12b2lk
IEZpbGVTeXN0ZW1GaWxlSGFuZGxlOjpmbHVzaChGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlk
ZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25Pcjx2b2lkPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoaXND
bG9zZWQoKSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiSGFuZGxlIGlzIGNsb3NlZCJfcyB9KTsKLQotICAgIGNvbm5lY3Rp
b24oKS5mbHVzaChpZGVudGlmaWVyKCksIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQogdm9pZCBGaWxlU3lzdGVtRmlsZUhhbmRsZTo6Y2xv
c2UoRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGlzQ2xvc2VkKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbUZpbGVIYW5kbGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmls
ZUhhbmRsZS5oCmluZGV4IGJhYTQyZjhkOTIzMWFhZGRlMjUyOWNmZWMyMDFiMzRlYjU1ZjI5MTUu
LjhjZWUxMmNiZGZiZjQwMDkyZjdhMDQyMGFkOTFjNzFhODJhYzI4YjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtRmlsZUhhbmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lz
dGVtRmlsZUhhbmRsZS5oCkBAIC00MSw5ICs0MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEZp
bGUoRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxGaWxlPj4mJik7CiAKICAgICB2b2lk
IGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoRE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZT4+JiYpOwotICAgIHZvaWQgZ2V0U2l6ZShGaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhj
ZXB0aW9uT3I8dWludDY0X3Q+JiYpPiYmKTsKLSAgICB2b2lkIHRydW5jYXRlKEZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpOwotICAgIHZvaWQgZmx1
c2goRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKTsKICAgICB2b2lkIGNsb3NlKEZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNl
cHRpb25Pcjx2b2lkPiYmKT4mJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggNzNlYmY5OWM0NWU0MTYxZGNlNDEwNjgzZWQzODQxNTk3
NDhhYmE4Ny4uMTY2MzY4MmIzN2FiMmRlMTZlNDFmZDQ3M2NiNzJkMGNjYTI3OTQ0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNDYsNyArNDYsNiBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgUmVzb2x2ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4mJik+OwogICAgIHVzaW5nIEdldEFjY2Vzc0hh
bmRsZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6OnBh
aXI8RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGU+PiYmKT47CiAgICAgdXNpbmcgVm9pZENhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT47Ci0gICAgdXNpbmcgSW50ZWdlckNh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx1aW50NjRfdD4mJik+
OwogICAgIHVzaW5nIEdldEhhbmRsZU5hbWVzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiYmKT47CiAgICAgdXNpbmcgR2V0SGFuZGxl
V2l0aFR5cGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8c3Rk
OjpwYWlyPEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBib29sPj4mJik+OwogCkBAIC01OCw5
ICs1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRW50cnkoRmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBkZWxldGVSZWN1cnNp
dmVseSwgVm9pZENhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFJlc29s
dmVDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVN5bmNBY2Nlc3NIYW5k
bGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEdldEFjY2Vzc0hhbmRsZUNhbGxiYWNrJiYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2l6ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmll
ciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBJbnRlZ2VyQ2FsbGJhY2sm
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0cnVuY2F0ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXpl
LCBWb2lkQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBmbHVzaChGaWxlU3lzdGVt
SGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBW
b2lkQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZShGaWxlU3lzdGVtSGFu
ZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBWb2lk
Q2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRIYW5kbGVOYW1lcyhGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciwgR2V0SGFuZGxlTmFtZXNDYWxsYmFjayYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGdldEhhbmRsZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBHZXRIYW5kbGVXaXRoVHlwZUNhbGxiYWNrJiYpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nl
c3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUuY3BwCmluZGV4IGE0NmUwZGMzMDYzZTNlZjI2
NjI2ZDBkOWIyMDFhMzA1Y2VkZTlhNjEuLjNjODhlOTc5NTQ5M2Q0YTQ3MTkwZjg1MDgyYmRhZGIz
ZjVkMjdkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFj
Y2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlLmNwcApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ1ZmZlclNvdXJjZS5oIgogI2luY2x1ZGUgIkZp
bGVTeXN0ZW1GaWxlSGFuZGxlLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIK
KyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw3ICs1MSwxOSBAQCBGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgYwogCiBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6fkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlKCkKIHsKLSAgICBBU1NFUlQobV9jbG9zZVJlc3VsdCk7Cisg
ICAgQVNTRVJUKGlzQ2xvc2luZ09yQ2xvc2VkKCkpOworICAgIGlmIChtX2Nsb3NlUmVzdWx0KQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBUYXNrIHJlcGxpZXMgbWF5IGJlIHNjaGVkdWxlZCB0
byBXb3JrZXJSdW5Mb29wIGJ1dCBkbyBub3QgcnVuLgorICAgIGF1dG8gcGVuZGluZ1Byb21pc2Vz
ID0gc3RkOjpleGNoYW5nZShtX3BlbmRpbmdQcm9taXNlcywgeyB9KTsKKyAgICBmb3IgKGF1dG8m
IHByb21pc2UgOiBwZW5kaW5nUHJvbWlzZXMpIHsKKyAgICAgICAgc3RkOjp2aXNpdChbXShhdXRv
JiBwcm9taXNlKSB7CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBVbmtu
b3duRXJyb3IsICJBY2Nlc3NIYW5kbGUgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkIl9zIH0pOwor
ICAgICAgICB9LCBwcm9taXNlKTsKKyAgICB9CisKKyAgICBjbG9zZUJhY2tlbmQoQ2xvc2VNb2Rl
OjpTeW5jKTsKIH0KIAogYm9vbCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZTo6aXNDbG9zaW5n
T3JDbG9zZWQoKSBjb25zdApAQCAtNjMsMTIgKzc2LDE2IEBAIHZvaWQgRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGU6OnRydW5jYXRlKHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplLCBET01Qcm9taXNl
RGVmCiAgICAgaWYgKGlzQ2xvc2luZ09yQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybiBwcm9taXNl
LnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2Vzc0hhbmRsZSBpcyBj
bG9zaW5nIG9yIGNsb3NlZCJfcyB9KTsKIAotICAgIG1fcGVuZGluZ09wZXJhdGlvbkNvdW50Kys7
Ci0gICAgbV9zb3VyY2UtPnRydW5jYXRlKG1faWRlbnRpZmllciwgc2l6ZSwgW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShhdXRvIHJlc3Vs
dCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlz
LT5tX3BlbmRpbmdPcGVyYXRpb25Db3VudC0tOworICAgIGF1dG8qIHNjb3BlID0gZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKCFz
Y29wZSkKKyAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAiQ29udGV4dCBpcyBpbnZhbGlkIl9zIH0pOwogCi0gICAgICAgIHByb21pc2Uu
c2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CisgICAgbV9wZW5kaW5nUHJvbWlzZXMuYXBwZW5kKFdU
Rk1vdmUocHJvbWlzZSkpOworICAgIFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0
b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBmaWxlID0gbV9maWxlLCBz
aXplLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBzY29wZS0+dGhyZWFkKCkgfV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIHN1Y2Nlc3MgPSBGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUoZmlsZSwg
c2l6ZSldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAg
ICAgICAgICAgICB3ZWFrVGhpcy0+Y29tcGxldGVQcm9taXNlKHN1Y2Nlc3MgPyBFeGNlcHRpb25P
cjx2b2lkPiB7IH0gOiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IgfSk7CisgICAgICAgIH0pOwog
ICAgIH0pOwogfQogCkBAIC03NywxMiArOTQsMTYgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZTo6Z2V0U2l6ZShET01Qcm9taXNlRGVmZXJyZWQ8SURMVW5zaWduZWRMb25nTG9uZz4K
ICAgICBpZiAoaXNDbG9zaW5nT3JDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuIHByb21pc2UucmVq
ZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzSGFuZGxlIGlzIGNsb3Np
bmcgb3IgY2xvc2VkIl9zIH0pOwogCi0gICAgbV9wZW5kaW5nT3BlcmF0aW9uQ291bnQrKzsKLSAg
ICBtX3NvdXJjZS0+Z2V0U2l6ZShtX2lkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byByZXN1bHQpIG11dGFibGUg
ewotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9wZW5kaW5n
T3BlcmF0aW9uQ291bnQtLTsKKyAgICBhdXRvKiBzY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghc2NvcGUpCisgICAg
ICAgIHJldHVybiBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
IkNvbnRleHQgaXMgaW52YWxpZCJfcyB9KTsKIAotICAgICAgICBwcm9taXNlLnNldHRsZShXVEZN
b3ZlKHJlc3VsdCkpOworICAgIG1fcGVuZGluZ1Byb21pc2VzLmFwcGVuZChXVEZNb3ZlKHByb21p
c2UpKTsKKyAgICBXb3JrZXJHbG9iYWxTY29wZTo6cG9zdEZpbGVTeXN0ZW1TdG9yYWdlVGFzayhb
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZmlsZSA9IG1fZmlsZSwgd29ya2VyVGhyZWFk
ID0gUmVmIHsgc2NvcGUtPnRocmVhZCgpIH1dKCkgbXV0YWJsZSB7CisgICAgICAgIHdvcmtlclRo
cmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBz
dWNjZXNzID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUoZmlsZSldKGF1dG8mKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y29tcGxl
dGVQcm9taXNlKHN1Y2Nlc3MgPyBFeGNlcHRpb25Pcjx1aW50NjRfdD4geyBzdWNjZXNzLnZhbHVl
KCkgfSA6IEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciB9KTsKKyAgICAgICAgfSk7CiAgICAgfSk7
CiB9CiAKQEAgLTkxLDIwICsxMTIsMjIgQEAgdm9pZCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZTo6Zmx1c2goRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKICAgICBpZiAoaXND
bG9zaW5nT3JDbG9zZWQoKSkKICAgICAgICAgcmV0dXJuIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzSGFuZGxlIGlzIGNsb3Npbmcgb3IgY2xvc2Vk
Il9zIH0pOwogCi0gICAgbV9wZW5kaW5nT3BlcmF0aW9uQ291bnQrKzsKLSAgICBtX3NvdXJjZS0+
Zmx1c2gobV9pZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPm1fcGVuZGluZ09wZXJhdGlvbkNvdW50
LS07CisgICAgYXV0byogc2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIXNjb3BlKQorICAgICAgICByZXR1cm4gcHJv
bWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJDb250ZXh0IGlzIGlu
dmFsaWQiX3MgfSk7CiAKLSAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsK
KyAgICBtX3BlbmRpbmdQcm9taXNlcy5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7CisgICAgV29y
a2VyR2xvYmFsU2NvcGU6OnBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soW3dlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sIGZpbGUgPSBtX2ZpbGUsIHdvcmtlclRocmVhZCA9IFJlZiB7IHNjb3Bl
LT50aHJlYWQoKSB9XSgpIG11dGFibGUgeworICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3Ao
KS5wb3N0VGFzayhbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc3VjY2VzcyA9IEZpbGVT
eXN0ZW06OmZsdXNoRmlsZShmaWxlKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICAgICAgaWYg
KHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jb21wbGV0ZVByb21pc2Uoc3Vj
Y2VzcyA/IEV4Y2VwdGlvbk9yPHZvaWQ+IHsgfSA6IEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciB9
KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGU6OmNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7Ci0gICAg
bV9wZW5kaW5nT3BlcmF0aW9uQ291bnQrKzsKICAgICBjbG9zZUludGVybmFsKFt3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byByZXN1
bHQpIG11dGFibGUgewotICAgICAgICB3ZWFrVGhpcy0+bV9wZW5kaW5nT3BlcmF0aW9uQ291bnQt
LTsKICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKICAgICB9KTsKIH0K
QEAgLTExOSwxMiArMTQyLDMyIEBAIHZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNs
b3NlSW50ZXJuYWwoQ2xvc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIGlmIChpc0Nsb3Npbmcp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGUpOwot
ICAgIG1fc291cmNlLT5jbG9zZShtX2lkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfV0oYXV0byByZXN1bHQpIHsKLSAgICAgICAgZGlkQ2xvc2UoV1RGTW92ZShy
ZXN1bHQpKTsKKyAgICBhdXRvKiBzY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIEFTU0VSVChzY29wZSk7CisKKyAgICBBU1NF
UlQobV9maWxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAg
IFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKFt3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCBmaWxlID0gc3RkOjpleGNoYW5nZShtX2ZpbGUsIEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBzY29w
ZS0+dGhyZWFkKCkgfV0oKSBtdXRhYmxlIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGZpbGUpOworICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhbd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICAgICAgaWYg
KHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jbG9zZUJhY2tlbmQoQ2xvc2VN
b2RlOjpBc3luYyk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCit2b2lkIEZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlOjpjbG9zZUJhY2tlbmQoQ2xvc2VNb2RlIG1vZGUpCit7CisgICAgaWYg
KG1vZGUgPT0gQ2xvc2VNb2RlOjpBc3luYykgeworICAgICAgICBtX3NvdXJjZS0+Y2xvc2UobV9p
ZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGF1dG8gcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGRpZENsb3NlKFdURk1vdmUocmVzdWx0KSk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zb3VyY2UtPmNsb3Nl
KG1faWRlbnRpZmllciwgW10oYXV0bykgeyB9KTsKKyAgICBkaWRDbG9zZSh7IH0pOworfQorCiB2
b2lkIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjpkaWRDbG9zZShFeGNlcHRpb25Pcjx2b2lk
PiYmIHJlc3VsdCkKIHsKICAgICBBU1NFUlQoIW1fY2xvc2VSZXN1bHQpOwpAQCAtMTQyLDcgKzE4
NSw3IEBAIEV4Y2VwdGlvbk9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gRmlsZVN5c3RlbVN5bmNBY2Nl
c3NIYW5kbGU6OnJlYWQoQnVmZmVyU291cmNlJiYKICAgICBpZiAoaXNDbG9zaW5nT3JDbG9zZWQo
KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNz
SGFuZGxlIGlzIGNsb3Npbmcgb3IgY2xvc2VkIl9zIH07CiAKLSAgICBpZiAobV9wZW5kaW5nT3Bl
cmF0aW9uQ291bnQpCisgICAgaWYgKCFtX3BlbmRpbmdQcm9taXNlcy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkFjY2VzcyBoYW5kbGUg
aGFzIHVuZmluaXNoZWQgb3BlcmF0aW9uIl9zIH07CiAKICAgICBpbnQgcmVzdWx0ID0gRmlsZVN5
c3RlbTo6c2Vla0ZpbGUobV9maWxlLCBvcHRpb25zLmF0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09y
aWdpbjo6QmVnaW5uaW5nKTsKQEAgLTE2Myw3ICsyMDYsNyBAQCBFeGNlcHRpb25Pcjx1bnNpZ25l
ZCBsb25nIGxvbmc+IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlOjp3cml0ZShCdWZmZXJTb3Vy
Y2UmJgogICAgIGlmIChpc0Nsb3NpbmdPckNsb3NlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJBY2Nlc3NIYW5kbGUgaXMgY2xvc2luZyBvciBjbG9z
ZWQiX3MgfTsKIAotICAgIGlmIChtX3BlbmRpbmdPcGVyYXRpb25Db3VudCkKKyAgICBpZiAoIW1f
cGVuZGluZ1Byb21pc2VzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiQWNjZXNzIGhhbmRsZSBoYXMgdW5maW5pc2hlZCBvcGVyYXRpb24i
X3MgfTsKIAogICAgIGludCByZXN1bHQgPSBGaWxlU3lzdGVtOjpzZWVrRmlsZShtX2ZpbGUsIG9w
dGlvbnMuYXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmcpOwpAQCAtMTc3
LDYgKzIyMCwyMyBAQCBFeGNlcHRpb25Pcjx1bnNpZ25lZCBsb25nIGxvbmc+IEZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlOjp3cml0ZShCdWZmZXJTb3VyY2UmJgogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKK3ZvaWQgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGU6OmNvbXBsZXRlUHJvbWlzZShS
ZXN1bHQmJiByZXN1bHQpCit7CisgICAgaWYgKG1fcGVuZGluZ1Byb21pc2VzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IG1fcGVuZGluZ1By
b21pc2VzLnRha2VGaXJzdCgpOworICAgIFdURjo6c3dpdGNoT24oV1RGTW92ZShyZXN1bHQpLCBb
JnBlbmRpbmdQcm9taXNlXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgeworICAgICAgICBh
dXRvKiBwcm9taXNlID0gc3RkOjpnZXRfaWY8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+PigmcGVu
ZGluZ1Byb21pc2UpOworICAgICAgICBBU1NFUlQocHJvbWlzZSk7CisgICAgICAgIHByb21pc2Ut
PnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOworICAgIH0sIFsmcGVuZGluZ1Byb21pc2VdKEV4Y2Vw
dGlvbk9yPHVpbnQ2NF90PiYmIHJlc3VsdCkgeworICAgICAgICBhdXRvKiBwcm9taXNlID0gc3Rk
OjpnZXRfaWY8RE9NUHJvbWlzZURlZmVycmVkPElETFVuc2lnbmVkTG9uZ0xvbmc+PigmcGVuZGlu
Z1Byb21pc2UpOworICAgICAgICBBU1NFUlQocHJvbWlzZSk7CisgICAgICAgIHByb21pc2UtPnNl
dHRsZShXVEZNb3ZlKHJlc3VsdCkpOworICAgIH0pOworfQorCiBjb25zdCBjaGFyKiBGaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuICJGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZS5oCmluZGV4IDcwYWZmMzM5YTIxMDkzMDQ4MGU0NDdjMjA4NTc5MWY1
MjMyYmExMzAuLjE4YjRhZWQ1ZDZlOTcxNGQwMGQ5NTY4MTNhYzdmMjk3MWY4YTgzZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bWFjY2Vzcy9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZS5oCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3luY0FjY2Vzc0hh
bmRsZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJRExUeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIApAQCAtNTQsMTIgKzU1LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENsb3NlKEV4
Y2VwdGlvbk9yPHZvaWQ+JiYpOwogICAgIEV4Y2VwdGlvbk9yPHVuc2lnbmVkIGxvbmcgbG9uZz4g
cmVhZChCdWZmZXJTb3VyY2UmJiwgRmlsZXN5c3RlbVJlYWRXcml0ZU9wdGlvbnMpOwogICAgIEV4
Y2VwdGlvbk9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gd3JpdGUoQnVmZmVyU291cmNlJiYsIEZpbGVz
eXN0ZW1SZWFkV3JpdGVPcHRpb25zKTsKKyAgICB1c2luZyBSZXN1bHQgPSBzdGQ6OnZhcmlhbnQ8
RXhjZXB0aW9uT3I8dm9pZD4sIEV4Y2VwdGlvbk9yPHVpbnQ2NF90Pj47CisgICAgdm9pZCBjb21w
bGV0ZVByb21pc2UoUmVzdWx0JiYpOwogCiBwcml2YXRlOgogICAgIEZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lzdGVtRmlsZUhhbmRsZSYs
IEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlKTsKICAgICBib29sIGlzQ2xvc2luZ09yQ2xvc2VkKCkgY29uc3Q7CiAgICAg
dXNpbmcgQ2xvc2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8
dm9pZD4mJik+OwogICAgIHZvaWQgY2xvc2VJbnRlcm5hbChDbG9zZUNhbGxiYWNrJiYpOworICAg
IGVudW0gY2xhc3MgQ2xvc2VNb2RlIDogYm9vbCB7IEFzeW5jLCBTeW5jIH07CisgICAgdm9pZCBj
bG9zZUJhY2tlbmQoQ2xvc2VNb2RlKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKQEAgLTY3LDEwICs3
MiwxMSBAQCBwcml2YXRlOgogCiAgICAgUmVmPEZpbGVTeXN0ZW1GaWxlSGFuZGxlPiBtX3NvdXJj
ZTsKICAgICBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwotICAgIHVpbnQ2NF90IG1fcGVuZGluZ09wZXJhdGlvbkNvdW50IHsgMCB9OwogICAgIEZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGU7CiAgICAgc3RkOjpvcHRpb25hbDxFeGNl
cHRpb25Pcjx2b2lkPj4gbV9jbG9zZVJlc3VsdDsKICAgICBWZWN0b3I8Q2xvc2VDYWxsYmFjaz4g
bV9jbG9zZUNhbGxiYWNrczsKKyAgICB1c2luZyBQcm9taXNlID0gc3RkOjp2YXJpYW50PERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiwgRE9NUHJvbWlzZURlZmVycmVkPElETFVuc2lnbmVkTG9uZ0xv
bmc+PjsKKyAgICBEZXF1ZTxQcm9taXNlPiBtX3BlbmRpbmdQcm9taXNlczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggYWUyOGYzMGY0OTRhZDAzMmE3ZDUyM2YyNmQ0NmNjMTk4
ZDM3Y2UzYy4uMWRmNzBjNDgwMzEzY2RkOGJiZWE2M2EyMThiY2E4YWEyMTI2ZmIyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAg
LTIwOCwxMiArMjA4LDYgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
OmRpZENyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoQ2FsbGJhY2tJZGVudGkKICAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb246OmNvbXBsZXRlSW50ZWdlckNhbGxiYWNrKENhbGxiYWNrSWRlbnRpZmllciBjYWxs
YmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHVpbnQ2NF90PiYmIHJlc3VsdCkKLXsKLSAgICBp
ZiAoYXV0byBjYWxsYmFjayA9IG1faW50ZWdlckNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSWRlbnRp
ZmllcikpCi0gICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7Ci19Ci0KIHZvaWQgV29y
a2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wbGV0ZVZvaWRDYWxsYmFjayhDYWxs
YmFja0lkZW50aWZpZXIgY2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25Pcjx2b2lkPiYmIHJl
c3VsdCkKIHsKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fdm9pZENhbGxiYWNrcy50YWtlKGNh
bGxiYWNrSWRlbnRpZmllcikpCkBAIC0yNDMsNjYgKzIzNyw2IEBAIHZvaWQgV29ya2VyRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKEZpbGVTeXN0ZW1I
YW5kbGVJCiAgICAgfSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjpnZXRTaXplKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkludGVnZXJDYWxsYmFjayYmIGNhbGxiYWNrKQot
ewotICAgIGlmICghbV9zY29wZSkKLSAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH0pOwotCi0gICAgYXV0byBjYWxsYmFja0lkZW50aWZpZXIgPSBD
YWxsYmFja0lkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOwotICAgIG1faW50ZWdlckNh
bGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAg
ICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFJl
ZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhy
ZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllcl0oKSBtdXRh
YmxlIHsKLSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBbY2FsbGJhY2tJZGVudGlm
aWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gcmVzdWx0KSBt
dXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9y
TW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0
KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBjb25u
ZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Y29tcGxl
dGVJbnRlZ2VyQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwot
ICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPmdldFNpemUoaWRlbnRpZmllciwgYWNj
ZXNzSGFuZGxlSWRlbnRpZmllciwgV1RGTW92ZShtYWluVGhyZWFkQ2FsbGJhY2spKTsKLSAgICB9
KTsKLX0KLQotdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OnRydW5jYXRl
KEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXpl
LCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmIGNhbGxiYWNrKQot
ewotICAgIGlmICghbV9zY29wZSkKLSAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH0pOwotCi0gICAgYXV0byBjYWxsYmFja0lkZW50aWZpZXIgPSBD
YWxsYmFja0lkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOwotICAgIG1fdm9pZENhbGxi
YWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAgICBj
YWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFJlZiB7
IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFk
Q29ubmVjdGlvbiwgaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgc2l6ZV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBbY2FsbGJhY2tJZGVu
dGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gcmVzdWx0
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
Rm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVz
dWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBj
b25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Y29t
cGxldGVWb2lkQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwot
ICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPnRydW5jYXRlKGlkZW50aWZpZXIsIGFj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIHNpemUsIFdURk1vdmUobWFpblRocmVhZENhbGxiYWNrKSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpm
bHVzaChGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICBpZiAo
IW1fc2NvcGUpCi0gICAgICAgIHJldHVybiBjYWxsYmFjayhFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9KTsKLQotICAgIGF1dG8gY2FsbGJhY2tJZGVudGlmaWVyID0gQ2FsbGJhY2tJZGVu
dGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBtX3ZvaWRDYWxsYmFja3MuYWRkKGNh
bGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwotCi0gICAgY2FsbE9uTWFpblRo
cmVhZChbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50
aHJlYWQoKSB9LCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24s
IGlkZW50aWZpZXIsIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXJdKCkgbXV0YWJsZSB7Ci0gICAgICAg
IGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhy
ZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW2NhbGxiYWNr
SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChhdXRvJiBzY29w
ZSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuZmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmNvbXBsZXRlVm9pZENhbGxiYWNr
KGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAgICAgIH0sIFdv
cmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwotICAgICAgICB9OwotCi0gICAgICAgIG1haW5U
aHJlYWRDb25uZWN0aW9uLT5mbHVzaChpZGVudGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVy
LCBXVEZNb3ZlKG1haW5UaHJlYWRDYWxsYmFjaykpOwotICAgIH0pOwotfQotCiB2b2lkIFdvcmtl
ckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y2xvc2UoRmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX3Njb3BlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNz
L1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDViY2JmYzJhYjI5NjMz
MzZmNGM1ZWJmZGIyNzQzMDE5YTI4NTZiY2QuLjEyZmExYzE4MzhjZTYxNzg3M2ExNzhmM2ViZDAw
ZjEwNDBiMGM1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uLmgKQEAgLTQ5LDcgKzQ5LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVzb2x2
ZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPFZlY3RvcjxTdHJpbmc+PiYmKTsKICAg
ICB2b2lkIGRpZENyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoQ2FsbGJhY2tJZGVudGlmaWVyLCBFeGNl
cHRpb25PcjxzdGQ6OnBhaXI8RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGU+PiYmKTsKICAgICB2b2lkIGNvbXBsZXRlVm9p
ZENhbGxiYWNrKENhbGxiYWNrSWRlbnRpZmllciwgRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQp
OwotICAgIHZvaWQgY29tcGxldGVJbnRlZ2VyQ2FsbGJhY2soQ2FsbGJhY2tJZGVudGlmaWVyLCBF
eGNlcHRpb25Pcjx1aW50NjRfdD4mJiByZXN1bHQpOwogICAgIHZvaWQgZGlkR2V0SGFuZGxlTmFt
ZXMoQ2FsbGJhY2tJZGVudGlmaWVyLCBFeGNlcHRpb25PcjxWZWN0b3I8U3RyaW5nPj4mJik7CiAg
ICAgdm9pZCBkaWRHZXRIYW5kbGVXaXRoVHlwZShDYWxsYmFja0lkZW50aWZpZXIsIEV4Y2VwdGlv
bk9yPHN0ZDo6cGFpcjxGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4+JiYpOwogCkBA
IC02OCw5ICs2Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRIYW5kbGUoRmlsZVN5c3RlbUhh
bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgR2V0SGFuZGxlV2l0aFR5cGVDYWxs
YmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgY3JlYXRlU3luY0FjY2Vzc0hhbmRsZShGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRBY2Nl
c3NIYW5kbGVDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIGdldFNpemUoRmlsZVN5c3RlbUhh
bmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpJbnRlZ2VyQ2FsbGJhY2smJikgZmluYWw7Ci0gICAg
dm9pZCB0cnVuY2F0ZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyLCB1aW50NjRfdCBzaXplLCBGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb246OlZvaWRDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIGZsdXNoKEZpbGVTeXN0
ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIs
IEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgY2xvc2UoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2Fs
bGJhY2smJikgZmluYWw7CiAKICAgICBXZWFrUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBtX3Njb3Bl
OwpAQCAtODAsNyArNzYsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8Q2FsbGJhY2tJZGVudGlm
aWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlJlc29sdmVDYWxsYmFjaz4gbV9yZXNv
bHZlQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8Q2FsbGJhY2tJZGVudGlmaWVyLCBGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb246OkdldEFjY2Vzc0hhbmRsZUNhbGxiYWNrPiBtX2dldEFjY2Vzc0hh
bmRsQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8Q2FsbGJhY2tJZGVudGlmaWVyLCBGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjaz4gbV92b2lkQ2FsbGJhY2tzOwotICAgIEhh
c2hNYXA8Q2FsbGJhY2tJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Oklu
dGVnZXJDYWxsYmFjaz4gbV9pbnRlZ2VyQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8Q2FsbGJhY2tJ
ZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEhhbmRsZU5hbWVzQ2Fs
bGJhY2s+IG1fZ2V0SGFuZGxlTmFtZXNDYWxsYmFja3M7CiAgICAgSGFzaE1hcDxDYWxsYmFja0lk
ZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0SGFuZGxlV2l0aFR5cGVD
YWxsYmFjaz4gbV9nZXRIYW5kbGVXaXRoVHlwZUNhbGxiYWNrczsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDc1ZmE0Mzg1ZGQwYWU3ZTA2
NWIyZjY2NGRkZGJjYzM3ZTgyOWY2NjQuLjBiZTE3MDBiNzMxYzA0NTM1ZDc5ZjFiNjEyMjcwN2Ni
NTk0YjI3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCkBAIC03Nyw2ICs3NywxMiBAQCBzdGF0aWMgSGFzaFNldDxTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcj4mIGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcgogICAgIHJldHVy
biBpZGVudGlmaWVyczsKIH0KIAorc3RhdGljIFdvcmtRdWV1ZSYgc2hhcmVkRmlsZVN5c3RlbVN0
b3JhZ2VRdWV1ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxXb3JrUXVldWU+
PiBxdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiU2hhcmVkIEZpbGUgU3lzdGVtIFN0b3JhZ2UgUXVl
dWUiLCAgV29ya1F1ZXVlOjpRT1M6OkRlZmF1bHQpKTsKKyAgICByZXR1cm4gcXVldWUuZ2V0KCk7
Cit9CisKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3JrZXJHbG9iYWxTY29wZSk7CiAK
IFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlIHR5
cGUsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5T3JpZ2luPiYm
IG9yaWdpbiwgV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BP
cmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNv
Y2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKQEAgLTIzMiw2ICsyMzgsMTEgQEAgV29ya2Vy
U3RvcmFnZUNvbm5lY3Rpb24mIFdvcmtlckdsb2JhbFNjb3BlOjpzdG9yYWdlQ29ubmVjdGlvbigp
CiAgICAgcmV0dXJuICptX3N0b3JhZ2VDb25uZWN0aW9uOwogfQogCit2b2lkIFdvcmtlckdsb2Jh
bFNjb3BlOjpwb3N0RmlsZVN5c3RlbVN0b3JhZ2VUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNr
KQoreworICAgIHNoYXJlZEZpbGVTeXN0ZW1TdG9yYWdlUXVldWUoKS5kaXNwYXRjaChXVEZNb3Zl
KHRhc2spKTsKK30KKwogV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uJiBXb3JrZXJH
bG9iYWxTY29wZTo6Z2V0RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKFJlZjxGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb24+JiYgbWFpblRocmVhZENvbm5lY3Rpb24pCiB7CiAgICAgaWYgKCFt
X2ZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuaAppbmRleCBkNTg4MGVmMjcwNzdhMzY0NWQ4ZjMzNTExYmZkNDRiNTlj
NWI5MTQxLi5hZTNiMmRiZGFjN2ZhNDRjZTdlM2YzMjIyMDJjMDA4YjNlYzg3OGZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC04OCw2ICs4OCw3IEBA
IHB1YmxpYzoKICAgICB1c2luZyBXZWFrVmFsdWVUeXBlID0gRXZlbnRUYXJnZXQ6OldlYWtWYWx1
ZVR5cGU7CiAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OndlYWtQdHJGYWN0b3J5OwogICAgIFdvcmtl
clN0b3JhZ2VDb25uZWN0aW9uJiBzdG9yYWdlQ29ubmVjdGlvbigpOworICAgIHN0YXRpYyB2b2lk
IHBvc3RGaWxlU3lzdGVtU3RvcmFnZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICBXb3Jr
ZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24mIGdldEZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbihSZWY8RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uPiYmKTsKICAgICBXb3JrZXJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24qIGZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigpOwog
ICAgIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24mIGNhY2hlU3RvcmFnZUNvbm5lY3Rpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxl
U3lzdGVtU3RvcmFnZUVycm9yLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvRmlsZVN5c3RlbVN0b3JhZ2VFcnJvci5oCmluZGV4IDAyNzczN2EyYjQwYjJjMjcwZWFhNjRi
OGE1ZjllNjQzMDFlZTg3OTYuLmMzNmY3NTM0YzZhYjViNjJhYTRhNWRkMzQ2OTM0ZjMxZWRiMDhi
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxl
U3lzdGVtU3RvcmFnZUVycm9yLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGVudW0gY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvciA6IHVpbnQ4
X3QgeworICAgIEFjY2Vzc0hhbmRsZUFjdGl2ZSwKICAgICBCYWNrZW5kTm90U3VwcG9ydGVkLAog
ICAgIEZpbGVOb3RGb3VuZCwKICAgICBJbnZhbGlkTW9kaWZpY2F0aW9uLApAQCAtNDMsMTQgKzQ0
LDE2IEBAIGVudW0gY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvciA6IHVpbnQ4X3QgewogaW5s
aW5lIFdlYkNvcmU6OkV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb24oRmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvciBlcnJvcikKIHsKICAgICBzd2l0Y2ggKGVycm9yKSB7CisgICAgY2FzZSBGaWxlU3lz
dGVtU3RvcmFnZUVycm9yOjpBY2Nlc3NIYW5kbGVBY3RpdmU6CisgICAgICAgIHJldHVybiBXZWJD
b3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpJbnZhbGlkU3RhdGVFcnJvciwgIlNvbWUgQWNjZXNz
SGFuZGxlIGlzIGFjdGl2ZSJfcyB9OwogICAgIGNhc2UgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6
QmFja2VuZE5vdFN1cHBvcnRlZDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7
IFdlYkNvcmU6Ok5vdFN1cHBvcnRlZEVycm9yLCAiQmFja2VuZCBkb2VzIG5vdCBzdXBwb3J0IHRo
aXMgb3BlcmF0aW9uIiB9OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2Vi
Q29yZTo6Tm90U3VwcG9ydGVkRXJyb3IsICJCYWNrZW5kIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBv
cGVyYXRpb24iX3MgfTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkZpbGVOb3RG
b3VuZDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkV4Y2VwdGlvbiB7IFdlYkNvcmU6Ok5vdEZv
dW5kRXJyb3IgfTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkludmFsaWRNb2Rp
ZmljYXRpb246CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpJ
bnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IgfTsKICAgICBjYXNlIEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I6OkludmFsaWROYW1lOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RXhjZXB0aW9uIHsgV2Vi
Q29yZTo6VW5rbm93bkVycm9yLCAiTmFtZSBpcyBpbnZhbGlkIiB9OworICAgICAgICByZXR1cm4g
V2ViQ29yZTo6RXhjZXB0aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiTmFtZSBpcyBpbnZh
bGlkIl9zIH07CiAgICAgY2FzZSBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpJbnZhbGlkU3RhdGU6
CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpJbnZhbGlkU3Rh
dGVFcnJvciB9OwogICAgIGNhc2UgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VHlwZU1pc21hdGNo
OgpAQCAtNzcsNiArODAsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiB7CiAgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9y
LAorICAgICAgICBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkFjY2Vzc0hhbmRsZUFj
dGl2ZSwKICAgICAgICAgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpCYWNrZW5kTm90
U3VwcG9ydGVkLAogICAgICAgICBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OkZpbGVO
b3RGb3VuZCwKICAgICAgICAgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpJbnZhbGlk
TW9kaWZpY2F0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKaW5kZXggNjA3MWNi
YzUwMWEwYjc3NjY1MWNiNWUyNGNmYjcxZWRiNjQ5NWNlNy4uNGY3MmNkMDNmMzY4ZjQ1NzZkNDM1
ZDY3ZTYyZTNhMTFiOTJjZmVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCkBA
IC02MywxMiArNjMsNiBAQCBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6RmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGUoRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBtYW5hZwogICAgIH0KIH0KIAotRmls
ZVN5c3RlbVN0b3JhZ2VIYW5kbGU6On5GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZSgpCi17Ci0gICAg
aWYgKG1faGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0g
ICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2hhbmRsZSk7Ci19Ci0KIHZvaWQgRmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGU6OmNsb3NlKCkKIHsKICAgICBpZiAoIW1fbWFuYWdlcikKQEAgLTE3
MiwxMyArMTY2LDEzIEBAIEV4cGVjdGVkPEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpBY2Nlc3NI
YW5kbGVJbmZvLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBGaWxlCiAgICAgaWYgKCFhY3F1aXJl
ZCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6
OkludmFsaWRTdGF0ZSk7CiAKLSAgICBtX2hhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1f
cGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUpOwotICAgIGlmIChtX2hh
bmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgIGF1dG8g
aGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9wYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGU6OlJlYWRXcml0ZSk7CisgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRmlsZVN5
c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bik7CiAKLSAgICBhdXRvIGlwY0hhbmRsZSA9IElQQzo6
U2hhcmVkRmlsZUhhbmRsZTo6Y3JlYXRlKG1faGFuZGxlKTsKKyAgICBhdXRvIGlwY0hhbmRsZSA9
IElQQzo6U2hhcmVkRmlsZUhhbmRsZTo6Y3JlYXRlKGhhbmRsZSk7CiAgICAgaWYgKCFpcGNIYW5k
bGUpIHsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1faGFuZGxlKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpCYWNrZW5kTm90U3VwcG9ydGVkKTsKICAgICB9
CiAKQEAgLTE4Nyw2MSArMTgxLDExIEBAIEV4cGVjdGVkPEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxl
OjpBY2Nlc3NIYW5kbGVJbmZvLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBGaWxlCiAgICAgcmV0
dXJuIHN0ZDo6cGFpciB7ICptX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUsIFdURk1vdmUoKmlwY0hh
bmRsZSkgfTsKIH0KIAotRXhwZWN0ZWQ8dWludDY0X3QsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+
IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpnZXRTaXplKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKQotewotICAgIGlm
ICghbV9tYW5hZ2VyKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcjo6VW5rbm93bik7Ci0KLSAgICBpZiAoIW1fYWN0aXZlU3luY0FjY2Vzc0hhbmRs
ZSB8fCAqbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlICE9IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIp
Ci0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpV
bmtub3duKTsKLQotICAgIGF1dG8gc2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKG1fcGF0aCk7
Ci0gICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcjo6VW5rbm93bik7Ci0KLSAgICByZXR1cm4gc2l6ZS52YWx1ZSgpOwotfQot
Ci1zdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlOjp0cnVuY2F0ZShXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50
aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSkKLXsKLSAgICBpZiAo
IW1fbWFuYWdlcikKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25v
d247Ci0KLSAgICBpZiAoIW1fYWN0aXZlU3luY0FjY2Vzc0hhbmRsZSB8fCAqbV9hY3RpdmVTeW5j
QWNjZXNzSGFuZGxlICE9IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBG
aWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwotCi0gICAgQVNTRVJUKG1faGFuZGxlICE9
IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIGF1dG8gcmVzdWx0
ID0gRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKG1faGFuZGxlLCBzaXplKTsKLSAgICBpZiAoIXJl
c3VsdCkKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247Ci0K
LSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi1zdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpmbHVzaChXZWJDb3JlOjpGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllcikK
LXsKLSAgICBpZiAoIW1fbWFuYWdlcikKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I6OlVua25vd247Ci0KLSAgICBpZiAoIW1fYWN0aXZlU3luY0FjY2Vzc0hhbmRsZSB8fCAq
bV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlICE9IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpCi0gICAg
ICAgIHJldHVybiBGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwotCi0gICAgQVNTRVJU
KG1faGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAg
IGF1dG8gcmVzdWx0ID0gRmlsZVN5c3RlbTo6Zmx1c2hGaWxlKG1faGFuZGxlKTsKLSAgICBpZiAo
IXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247
Ci0KLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCiBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0
ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpjbG9zZShXZWJDb3JlOjpG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmll
cikKIHsKICAgICBpZiAoIW1fYWN0aXZlU3luY0FjY2Vzc0hhbmRsZSB8fCAqbV9hY3RpdmVTeW5j
QWNjZXNzSGFuZGxlICE9IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBG
aWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duOwogCi0gICAgQVNTRVJUKG1faGFuZGxlICE9
IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShtX2hhbmRsZSk7Ci0KICAgICBpZiAoIW1fbWFuYWdlcikKICAgICAgICAgcmV0
dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd247CiAKQEAgLTI3OCw3ICsyMjIsNyBA
QCBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlOjptb3ZlKFdlYkNvcmU6OkZpbAogCiAgICAgLy8gRG8gbm90IG1vdmUgZmlsZSBpZiB0
aGVyZSBpcyBvbmdvaW5nIG9wZXJhdGlvbi4KICAgICBpZiAobV9hY3RpdmVTeW5jQWNjZXNzSGFu
ZGxlKQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6SW52YWxpZFN0YXRl
OworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6QWNjZXNzSGFuZGxlQWN0
aXZlOwogCiAgICAgaWYgKG1fbWFuYWdlci0+Z2V0VHlwZShkZXN0aW5hdGlvbklkZW50aWZpZXIp
ICE9IFR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I6OlR5cGVNaXNtYXRjaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmgKaW5kZXggM2RhZjQ3
MmY3MTZjNTNkYjVjNGMyYjhlOTU4ZjU3NGY4ZWVlYWRkOC4uZmI5Mjk4MTQxYjBkYmMzODFmYThi
M2IzODE3ZTY4Y2EwMTg5NzlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmgKQEAgLTQ0
LDcgKzQ0LDYgQEAgY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUsIFcKIHB1YmxpYzoKICAgICBlbnVtIGNs
YXNzIFR5cGUgOiB1aW50OF90IHsgRmlsZSwgRGlyZWN0b3J5LCBBbnkgfTsKICAgICBGaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZShGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImLCBUeXBlLCBTdHJpbmcm
JiBwYXRoLCBTdHJpbmcmJiBuYW1lKTsKLSAgICB+RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUoKTsK
IAogICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIHBhdGgoKSBj
b25zdCB7IHJldHVybiBtX3BhdGg7IH0KQEAgLTYyLDkgKzYxLDYgQEAgcHVibGljOgogCiAgICAg
dXNpbmcgQWNjZXNzSGFuZGxlSW5mbyA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIElQQzo6U2hhcmVkRmlsZUhhbmRsZT47CiAgICAgRXhw
ZWN0ZWQ8QWNjZXNzSGFuZGxlSW5mbywgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gY3JlYXRlU3lu
Y0FjY2Vzc0hhbmRsZSgpOwotICAgIEV4cGVjdGVkPHVpbnQ2NF90LCBGaWxlU3lzdGVtU3RvcmFn
ZUVycm9yPiBnZXRTaXplKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRp
Zmllcik7Ci0gICAgc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiB0cnVuY2F0
ZShXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90
IHNpemUpOwotICAgIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gZmx1c2go
V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyKTsKICAgICBzdGQ6
Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGNsb3NlKFdlYkNvcmU6OkZpbGVTeXN0
ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CkBAIC03Niw3ICs3Miw2
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcGF0aDsKICAgICBTdHJpbmcgbV9uYW1lOwogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlm
aWVyPiBtX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGU7Ci0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIG1faGFuZGxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIu
Y3BwCmluZGV4IGNlNTgxMTQwMzRmOThlZTMyNmRhYjc3ZGFmYWY1NjIzZGRkMjIwMDkuLjRlNGMw
ODU4MzIxZTI1MmFhZDg5ZTM0M2Q3Y2JhOWYxOGI1OTU3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuY3BwCkBAIC0yNTMsNDAgKzI1MywxMiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbgog
ICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobWFrZVVu
ZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5rbm93bikpOwogCi0gICAgY29tcGxl
dGlvbkhhbmRsZXIoaGFuZGxlLT5jcmVhdGVTeW5jQWNjZXNzSGFuZGxlKCkpOwotfQotCi12b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0U2l6ZUZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpG
aWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDx1aW50NjRfdCwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwotCi0gICAgYXV0byBoYW5kbGUgPSBtX2ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0
cnktPmdldEhhbmRsZShpZGVudGlmaWVyKTsKLSAgICBpZiAoIWhhbmRsZSkKLSAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I6OlVua25vd24pKTsKLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+Z2V0U2l6ZShh
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
Ojp0cnVuY2F0ZUZvckFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50
aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAg
IGF1dG8gaGFuZGxlID0gbV9maWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LT5nZXRIYW5k
bGUoaWRlbnRpZmllcik7Ci0gICAgaWYgKCFoYW5kbGUpCi0gICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihGaWxlU3lzdGVtU3RvcmFnZUVycm9yOjpVbmtub3duKTsKLQotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGhhbmRsZS0+dHJ1bmNhdGUoYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgc2l6
ZSkpOwotfQotCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Zmx1c2hGb3JBY2Nlc3NIYW5k
bGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29y
ZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3Rv
cmFnZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7Ci0KLSAgICBhdXRvIGhhbmRsZSA9IG1fZmlsZVN5c3RlbVN0b3JhZ2VIYW5k
bGVSZWdpc3RyeS0+Z2V0SGFuZGxlKGlkZW50aWZpZXIpOwotICAgIGlmICghaGFuZGxlKQotICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6VW5r
bm93bik7CisgICAgYXV0byByZXN1bHQgPSBoYW5kbGUtPmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUo
KTsKKyAgICBhdXRvIGZpbGVIYW5kbGUgPSByZXN1bHQgPyByZXN1bHQudmFsdWUoKS5zZWNvbmQg
OiBJUEM6OlNoYXJlZEZpbGVIYW5kbGUoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlc3VsdCkpOwogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlLT5mbHVzaChhY2Nlc3NI
YW5kbGVJZGVudGlmaWVyKSk7CisgICAgLy8gQ2xvc2UgdGhlIGZpbGUgaGFuZGxlIGluIG5ldHdv
cmsgcHJvY2Vzcy4KKyAgICBmaWxlSGFuZGxlLmNsb3NlKCk7CiB9CiAKIHZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpjbG9zZUFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAppbmRleCBlMjU1MDQxODk2MGZkNGY3ZTM4Yzg0
MWM0MDhmM2Y0MDVhZDY2Mzc4Li5iMTZjYzI1ODhlM2ZlNmUxZmM1ZDFlZjRkZTRjYTJmYzgzNWM1
ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCkBAIC03OSw5ICs3OSw2IEBAIHByaXZhdGU6
CiAKICAgICB1c2luZyBBY2Nlc3NIYW5kbGVJbmZvID0gc3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgSVBDOjpTaGFyZWRGaWxlSGFuZGxlPjsK
ICAgICB2b2lkIGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8QWNjZXNzSGFuZGxl
SW5mbywgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmKTsKLSAgICB2b2lkIGdldFNpemVGb3JB
Y2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6
OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDx1aW50NjRfdCwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmKTsKLSAg
ICB2b2lkIHRydW5jYXRlRm9yQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIs
IHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxGaWxl
U3lzdGVtU3RvcmFnZUVycm9yPik+JiYpOwotICAgIHZvaWQgZmx1c2hGb3JBY2Nlc3NIYW5kbGUo
V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7CiAgICAgdm9pZCBjbG9zZUFjY2Vz
c0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6Rmls
ZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmKTsKICAgICB2b2lkIGdl
dEhhbmRsZU5hbWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFZlY3RvcjxTdHJpbmc+LCBGaWxlU3lzdGVtU3RvcmFn
ZUVycm9yPik+JiYpOwogICAgIHZvaWQgZ2V0SGFuZGxlKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciwgYm9vbD4sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAxZmJiZjM3YmFhZDdkMDQz
Yzg3NWNlOGRmMWJhYjlhMTU3NmE3OTA1Li5iNGZhYWY3YWNlNjc1ZGJiZTA0ZDYzZDFjYjgzMDcx
MzYyOTZjZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4K
QEAgLTM2LDkgKzM2LDYgQEAKICAgICBNb3ZlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGRl
c3RpbmF0aW9uSWRlbnRpZmllciwgU3RyaW5nIG5ld05hbWUpIC0+IChzdGQ6Om9wdGlvbmFsPFdl
YktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwogCiAgICAgQ3JlYXRl
U3luY0FjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVu
dGlmaWVyKSAtPiAoRXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlSWRlbnRpZmllciwgSVBDOjpTaGFyZWRGaWxlSGFuZGxlPiwgV2ViS2l0OjpGaWxl
U3lzdGVtU3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jCi0gICAgR2V0U2l6ZUZvckFjY2Vzc0hh
bmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJD
b3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRl
bnRpZmllcikgLT4gKEV4cGVjdGVkPHVpbnQ2NF90LCBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I+IHJlc3VsdCkgQXN5bmMKLSAgICBUcnVuY2F0ZUZvckFjY2Vzc0hhbmRsZShXZWJDb3Jl
OjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lz
dGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgdWlu
dDY0X3Qgc2l6ZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yPiByZXN1bHQpIEFzeW5jCi0gICAgRmx1c2hGb3JBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6Rmls
ZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5
bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIpIC0+IChzdGQ6
Om9wdGlvbmFsPFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwog
ICAgIENsb3NlQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
ciBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkZpbGVT
eXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKICAgICBHZXRIYW5kbGVOYW1lcyhXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoRXhwZWN0ZWQ8
VmVjdG9yPFN0cmluZz4sIFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBB
c3luYwogICAgIEdldEhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBTdHJpbmcgbmFtZSkgLT4gKEV4cGVjdGVkPHN0ZDo6cGFpcjxXZWJDb3JlOjpG
aWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4sIFdlYktpdDo6RmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvcj4gcmVzdWx0KSBBc3luYyBXYW50c0Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5jcHAKaW5kZXggOGViY2U5ODAwODdjMDc1
YjAyM2I1OGFlYTJlMTU1ODYwZDc2OTQ2NC4uNjRlNDIxNzgwMWEyMWYwNWQ4OGI0ZTYxNjhkNzBi
ODlmOTVhN2UwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
RmlsZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmls
ZUhhbmRsZS5jcHAKQEAgLTI4LDYgKzI4LDExIEBACiAKIG5hbWVzcGFjZSBJUEMgewogCit2b2lk
IFNoYXJlZEZpbGVIYW5kbGU6OmNsb3NlKCkKK3sKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
bV9oYW5kbGUpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCiBzdGQ6Om9wdGlvbmFsPFNo
YXJlZEZpbGVIYW5kbGU+IFNoYXJlZEZpbGVIYW5kbGU6OmNyZWF0ZShGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRGaWxlSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRGaWxl
SGFuZGxlLmgKaW5kZXggYTQ2YWM4OTA1MDdlYjY5M2ExMDdiNDk5ZTU0MzYwNmE3OTdlNDQ5YS4u
NTg1YWQ5OTM3MjcyYzJkMGFhOWQ1MzdjMjM3YzgzYTZiNTYwOGI3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkRmlsZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEZpbGVIYW5kbGUuaApAQCAtMzksOSArMzksOSBAQCBw
dWJsaWM6CiAKICAgICBTaGFyZWRGaWxlSGFuZGxlKCkgPSBkZWZhdWx0OwogICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUoKSB7IHJldHVybiBtX2hhbmRsZTsgfQorICAg
IHZvaWQgY2xvc2UoKTsKIAogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLQogICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNoYXJlZEZpbGVIYW5kbGU+IGRlY29kZShEZWNvZGVyJik7
CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcAppbmRleCBkMWQ3OTg1ZTY1ZWRkMjU5ZWY5MzI1ZjI5NGYwNGM4ZTA2MThmYmQy
Li5mMDFmMjFmZjhmNjE2M2FlNTNlNDg3MzI0MmNmZTViN2Y5ODZmZGE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMTM0LDM5ICsxMzQs
NiBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlU3luY0FjY2Vz
c0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtSAogICAgIH0pOwogfQogCi12b2lkIFdlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0U2l6ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgSW50ZWdlckNhbGxiYWNrJiYgY29t
cGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtub3du
RXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOwotCi0gICAgbV9jb25uZWN0aW9uLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0U2l6ZUZv
ckFjY2Vzc0hhbmRsZShpZGVudGlmaWVyLCBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSwgW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gcmVzdWx0KSBt
dXRhYmxlIHsKLSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoY29udmVydFRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7Ci0KLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0LnZhbHVlKCkpOwotICAgIH0pOwotfQotCi12b2lk
IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6dHJ1bmNhdGUoV2ViQ29yZTo6RmlsZVN5
c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNp
emUsIFZvaWRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghbV9jb25u
ZWN0aW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RXhjZXB0
aW9uIHsgV2ViQ29yZTo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBsb3N0IiB9KTsKLQot
ICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OlRydW5jYXRlRm9yQWNjZXNzSGFuZGxlKGlkZW50aWZpZXIsIGFjY2Vzc0hh
bmRsZUlkZW50aWZpZXIsIHNpemUpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oYXV0byBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvbnZlcnRUb0V4Y2VwdGlvbk9yKGVycm9yKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQg
V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpmbHVzaChXZWJDb3JlOjpGaWxlU3lzdGVt
SGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIgYWNjZXNzSGFuZGxlSWRlbnRpZmllciwgVm9pZENhbGxiYWNrJiYg
Y29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpFeGNlcHRpb24geyBXZWJDb3JlOjpVbmtu
b3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGxvc3QiIH0pOwotCi0gICAgbV9jb25uZWN0aW9uLT5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Rmx1c2hG
b3JBY2Nlc3NIYW5kbGUoaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllciksIFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGVycm9yKSBt
dXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udmVydFRvRXhjZXB0aW9uT3Io
ZXJyb3IpKTsKLSAgICB9KTsKLX0KLQogdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b246OmNsb3NlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciBhY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLCBWb2lkQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoIW1fY29ubmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24uaAppbmRleCBhNzZhN2QxM2MzMGQ1OTgxZmU3MWE3NzRjZDRkMDVjMjE2NDcxNDEwLi5k
NTcxM2Y4YWQyMWIxMmU2MWNhNGFlYTVhYTg1MTFlZGUzYTY4NmVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC04Myw5ICs4Myw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBnZXRIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpHZXRI
YW5kbGVXaXRoVHlwZUNhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgdm9pZCBjcmVhdGVTeW5jQWNj
ZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEFjY2Vzc0hhbmRsZUNhbGxiYWNrJiYpIGZp
bmFsOwotICAgIHZvaWQgZ2V0U2l6ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmll
ciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkludGVnZXJDYWxsYmFjayYmKSBmaW5hbDsK
LSAgICB2b2lkIHRydW5jYXRlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIHVpbnQ2NF90IHNp
emUsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Vm9pZENhbGxiYWNrJiYp
IGZpbmFsOwotICAgIHZvaWQgZmx1c2goV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV2ViQ29y
ZTo6RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBjbG9zZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgV2ViQ29y
ZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIFJlZlB0
cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZDRmNjNhYThhMDE1OTQ4
YjRmNTA3M2ZhNDBjNzVjYWI3YzYwZWE5Li43ZmI0MDk1OWYzMTBmYjYwNGFhNzg3NGVhZDk3OGMw
NGFlZmFmMjc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMDkgIFNpaHVpIExpdSAg
PHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgUGVyZm9ybSBGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZSBvcGVyYXRpb25zIGluIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIxNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzg0ODA5NDI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAg
ICAgICAgKiBzdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvaGFuZGxlLW1vdmUtd29ya2VyLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvcmVzb3VyY2VzL2hh
bmRsZS1tb3ZlLmpzOgorICAgICAgICAoYXN5bmMgdGVzdCk6CisKIDIwMjEtMTEtMDkgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcy
MjAxKTogU2FmYXJpIHNob3dlZCByZWQgZGlzdG9ydGlvbiBvbiB3ZWJ2aWV3IGFmdGVyIHVzaW5n
IFdlYiBJbnNwZWN0b3IsIHJldHVybmluZyBmcm9tIGFub3RoZXIgYXBwCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVzeXN0ZW1hY2Nlc3MvaGFuZGxlLW1vdmUtd29ya2VyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9oYW5kbGUt
bW92ZS13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDJiYjg4YjQ4NzFmMTVhNzM1YTc4Y2Y5YzEy
MGFmYjJkOWIyOTg0OWQuLjY0NTliMDRjZTZkNGY1NWI0N2FkMmUzZjZmMDkwNmZkZTFjZWZlNzIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3RlbWFjY2Vzcy9oYW5kbGUt
bW92ZS13b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5
c3RlbWFjY2Vzcy9oYW5kbGUtbW92ZS13b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0xOCw3ICsxOCw3
IEBAIFBBU1MgW1dvcmtlcl0gbW92ZUZpbGVFcnJvci50b1N0cmluZygpIGlzICJVbmtub3duRXJy
b3I6IFRoZSBvcGVyYXRpb24gZmFpbGVkIGZvCiBQQVNTIFtXb3JrZXJdIG1vdmVGaWxlRXJyb3Iu
dG9TdHJpbmcoKSBpcyAiVW5rbm93bkVycm9yOiBOYW1lIGlzIGludmFsaWQiCiBQQVNTIFtXb3Jr
ZXJdIG1vdmVGaWxlRXJyb3IudG9TdHJpbmcoKSBpcyAiVW5rbm93bkVycm9yOiBOYW1lIGlzIGlu
dmFsaWQiCiBbV29ya2VyXSBUZXN0IG1vdmUgd2l0aCBvcGVuIGFjY2VzcyBoYW5kbGU6Ci1QQVNT
IFtXb3JrZXJdIG1vdmVGaWxlRXJyb3IudG9TdHJpbmcoKSBpcyAiSW52YWxpZFN0YXRlRXJyb3I6
IFRoZSBvYmplY3QgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZS4iCitQQVNTIFtXb3JrZXJdIG1vdmVG
aWxlRXJyb3IudG9TdHJpbmcoKSBpcyAiSW52YWxpZFN0YXRlRXJyb3I6IFNvbWUgQWNjZXNzSGFu
ZGxlIGlzIGFjdGl2ZSIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNz
L3Jlc291cmNlcy9oYW5kbGUtbW92ZS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZmlsZXN5c3Rl
bWFjY2Vzcy9yZXNvdXJjZXMvaGFuZGxlLW1vdmUuanMKaW5kZXggZDkxZDkxYmM1MzkyZmEwMDU4
N2VlZWQ1YTEzMGZhZmM4NTUyZjYxYS4uOWM4ZGNmMTUzZWJjYzAyNzVhM2NjMjE4ZDY4Njg0Y2Iz
ZjU4MGE5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9maWxlc3lzdGVtYWNjZXNz
L3Jlc291cmNlcy9oYW5kbGUtbW92ZS5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2ZpbGVz
eXN0ZW1hY2Nlc3MvcmVzb3VyY2VzL2hhbmRsZS1tb3ZlLmpzCkBAIC0xMDUsNyArMTA1LDcgQEAg
YXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICB0ZXN0RXJyb3IgPSAgIk1v
dmVkIGZpbGUgYmFjayB0byBkaXJIYW5kbGUxIHVuZXhwZWN0ZWRseSI7CiAgICAgICAgICAgICB9
LCAoZXJyb3IpID0+IHsKICAgICAgICAgICAgICAgICBtb3ZlRmlsZUVycm9yID0gZXJyb3I7Ci0g
ICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtb3ZlRmlsZUVycm9yLnRvU3Ry
aW5nKCkiLCAiSW52YWxpZFN0YXRlRXJyb3I6IFRoZSBvYmplY3QgaXMgaW4gYW4gaW52YWxpZCBz
dGF0ZS4iKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm1vdmVGaWxl
RXJyb3IudG9TdHJpbmcoKSIsICJJbnZhbGlkU3RhdGVFcnJvcjogU29tZSBBY2Nlc3NIYW5kbGUg
aXMgYWN0aXZlIik7CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgaWYgKHRlc3RFcnJv
cikgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>