<?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>233600</bug_id>
          
          <creation_ts>2021-11-29 14:59:06 -0800</creation_ts>
          <short_desc>[WebGPU] Hook up StreamServerConnection to Remote*** classes</short_desc>
          <delta_ts>2021-11-30 13:15:27 -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>WebGPU</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>233619</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>annulen</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>mkwst</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1818497</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-29 14:59:06 -0800</bug_when>
    <thetext>[WebGPU] Hook up StreamServerConnection to Remote*** classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818503</commentid>
    <comment_count>1</comment_count>
      <attachid>445354</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-29 15:23:18 -0800</bug_when>
    <thetext>Created attachment 445354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818589</commentid>
    <comment_count>2</comment_count>
      <attachid>445354</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-29 20:41:57 -0800</bug_when>
    <thetext>Comment on attachment 445354
Patch

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

&gt; Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteGPUProxy.cpp:51
&gt; +    m_gpuProcessConnection-&gt;messageReceiverMap().addMessageReceiver(Messages::RemoteGPUProxy::messageReceiverName(), identifier.toUInt64(), *this);

The connection().send(Messages::GPUConnectionToWebProcess::CreateRemoteGPU()) call is coming in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818612</commentid>
    <comment_count>3</comment_count>
      <attachid>445354</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-29 23:13:53 -0800</bug_when>
    <thetext>Comment on attachment 445354
Patch

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

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteGPUProxy.cpp:51
&gt;&gt; +    m_gpuProcessConnection-&gt;messageReceiverMap().addMessageReceiver(Messages::RemoteGPUProxy::messageReceiverName(), identifier.toUInt64(), *this);
&gt; 
&gt; The connection().send(Messages::GPUConnectionToWebProcess::CreateRemoteGPU()) call is coming in the next patch.

(The next patch is https://bugs.webkit.org/show_bug.cgi?id=233619 which depends on this one.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818632</commentid>
    <comment_count>4</comment_count>
      <attachid>445354</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-30 00:28:38 -0800</bug_when>
    <thetext>Comment on attachment 445354
Patch

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

Looks good with the comments addressed

&gt; Source/WebKit/GPUProcess/graphics/WebGPU/RemoteGPU.cpp:56
&gt; +    initialize();

here the virtual function table is not initialised yet, so move this to RemoteGPU::create()..

&gt; Source/WebKit/GPUProcess/graphics/WebGPU/RemoteGPU.cpp:67
&gt; +    m_streamConnection-&gt;startReceivingMessages(*this, Messages::RemoteGPU::messageReceiverName(), m_identifier.toUInt64());

This will induce message dispatches from IPC dispatch thread to the work queue thread. The work queue thread will call virtual functions through `this`.. If the virtual function table is not constructed, those end up in wrong places.

&gt; Source/WebKit/GPUProcess/graphics/WebGPU/RemoteGPU.cpp:76
&gt; +    });

it&apos;s not obvious that it&apos;s guaranteed that the protectedThis is the only ref to RemoteGPU.
It would be simpler to just not require that, so maybe empty the object heap in workQueueUninitialize()

&gt; Source/WebKit/GPUProcess/graphics/WebGPU/RemoteGPU.cpp:98
&gt; +    m_streamConnection = nullptr;

the object heap should probably be emptied from this?
It appears that RemoteGPU can live in main thread and work queue thread, but the subobjects seem to be designed to live in the work thread only. 
Alternatively you&apos;d need to assert in the destructor that it runs in the work queue thread. (which is a bit confusing as it will actually destroy the work queue itself, but it does work, at least on Cocoa/Darwin)

&gt; Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteGPUProxy.cpp:98
&gt; +    if (!sendResult || !response) {

probably useful to mark it lost here too, to establish a pattern for marking lost for all the future messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818811</commentid>
    <comment_count>5</comment_count>
      <attachid>445354</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-30 10:20:21 -0800</bug_when>
    <thetext>Comment on attachment 445354
Patch

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

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteGPUProxy.cpp:98
&gt;&gt; +    if (!sendResult || !response) {
&gt; 
&gt; probably useful to mark it lost here too, to establish a pattern for marking lost for all the future messages.

requestAdapter() can be called with different arguments, though, and those different arguments might cause it to succeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818851</commentid>
    <comment_count>6</comment_count>
      <attachid>445354</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-30 11:31:28 -0800</bug_when>
    <thetext>Comment on attachment 445354
Patch

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

&gt;&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteGPUProxy.cpp:98
&gt;&gt;&gt; +    if (!sendResult || !response) {
&gt;&gt; 
&gt;&gt; probably useful to mark it lost here too, to establish a pattern for marking lost for all the future messages.
&gt; 
&gt; requestAdapter() can be called with different arguments, though, and those different arguments might cause it to succeed.

Sure, but at least !sendResult part means that the GPU Process did not respond. After this, the process is in undefined state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818886</commentid>
    <comment_count>7</comment_count>
      <attachid>445354</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-30 12:47:27 -0800</bug_when>
    <thetext>Comment on attachment 445354
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteGPUProxy.cpp:98
&gt;&gt;&gt;&gt; +    if (!sendResult || !response) {
&gt;&gt;&gt; 
&gt;&gt;&gt; probably useful to mark it lost here too, to establish a pattern for marking lost for all the future messages.
&gt;&gt; 
&gt;&gt; requestAdapter() can be called with different arguments, though, and those different arguments might cause it to succeed.
&gt; 
&gt; Sure, but at least !sendResult part means that the GPU Process did not respond. After this, the process is in undefined state.

Right, good. 👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818901</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-30 13:14:16 -0800</bug_when>
    <thetext>Committed r286320 (244679@main): &lt;https://commits.webkit.org/244679@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818903</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-30 13:15:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/85884713&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445354</attachid>
            <date>2021-11-29 15:23:18 -0800</date>
            <delta_ts>2021-11-30 00:28:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233600-20211129152317.patch</filename>
            <type>text/plain</type>
            <size>154488</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhmYTU0YWU3MDlhNDgyMzNl
ZWRiNGNiM2JiMzhlMzJjM2M2NTJhMTUuLjA2NmI5NWEyZWRhYjEwMmEzOGM0MzZjOGZmOGVmZWFm
ZDBjNGEzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjE3IEBACisyMDIxLTExLTI5ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSG9v
ayB1cCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHRvIFJlbW90ZSoqKiBjbGFzc2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBvcmRlciBmb3IgYWxs
IHRoZSB2YXJpb3VzIFJlbW90ZSoqKiBjbGFzc2VzIGluIHRoZSBHUFUgcHJvY2VzcyB0byBiZSBh
YmxlIHRvIHJlY2VpdmUgbWVzc2FnZXMsCisgICAgICAgIHRoZXkgaGF2ZSB0byBiZSBhYmxlIHRv
IGNhbGwgc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhpcyksIGFu
ZCB3aGVuIHRoZXkncmUgZG9uZQorICAgICAgICByZWNlaXZpbmcgbWVzc2FnZXMsIHRoZXkgbmVl
ZCB0byBjYWxsIHN0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcygpLiBUaGlz
IG1lYW5zIHRoYXQKKyAgICAgICAgYWxsIHRoZSBSZW1vdGUqKiogb2JqZWN0cyBoYXZlIHRvIGhh
dmUgYSBSZWYgdG8gdGhlIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gc28gdGhleSBjYW4gY2FsbCBp
bnRvIGl0CisgICAgICAgIHdoZW4gdGhleSdyZSBkb25lIHJlY2VpdmluZyBtZXNzYWdlcy4KKwor
ICAgICAgICBUaGUgb2JqZWN0IG1vZGVsIGZvciB0aGlzIG1hdGNoZXMgdGhlIG9iamVjdCBtb2Rl
bCBmb3IgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDoKKyAgICAgICAgLSBSZW1vdGVHUFUgaXMgdGhl
IFdlYkdQVSBhbmFsb2d1ZSBvZiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLgorICAgICAgICAtIFdl
YkdQVTo6T2JqZWN0SGVhcCBpcyB0aGUgV2ViR1BVIGFuYWxvZ3VlIG9mIFJlbW90ZVJlc291cmNl
Q2FjaGUuCisgICAgICAgIC0gVGhlIFdlYkdQVTo6UmVtb3RlKioqIG9iamVjdHMgYXJlIHRoZSBX
ZWJHUFUgYW5hbG9ndWVzIG9mIHRoZSBJbWFnZUJ1ZmZlcnMsIE5hdGl2ZUltYWdlcywgYW5kCisg
ICAgICAgICAgICAgIEZvbnRzIHJldGFpbmVkIGJ5IHRoZSBSZW1vdGVSZXNvdXJjZUNhY2hlLgor
CisgICAgICAgIFNvLCBoZXJlJ3MgYW4gQVNDSUktYXJ0IGRpYWdyYW0gb2YgdGhlIG9iamVjdCBt
b2RlbDoKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0t
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZW1vdGVHUFUgfAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvICAgICB8CisgICAgICAgICAgICAgICAgICAtLS0t
LS0tLS0tLS0tLS0tICAgICAgIHwKKyAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAg
ICAgICAgfCAKKyAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tLSsKKyAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgIHwgV2ViR1BVOjpPYmplY3RIZWFw
IHwKKyAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLSsK
KyAgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAvICAgICAgICB8ICAgICAgICBcIAorICAg
ICAgICAgICAvICAgICAgICAgICAgICAgICAgLyAgICAgICAgIHwgICAgICAgICBcIAorICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgICAvICAgICAgICAgIHwgICAgICAgICAgXCAKKyAgICAgICAg
ICB8ICArLS0tLS0tLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0tLS0r
CisgICAgICAgICAgfCAgfCBSZW1vdGVUZXh0dXJlIHwgIHwgUmVtb3RlRGV2aWNlIHwgIHwgUmVt
b3RlUXVldWUgfCAuLi4gZXRjLgorICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0tLS0rICArLS0t
LS0tLS0tLS0tLS0rICArLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgXCAgICAgICAgICAgICAg
ICAgXCAgICAgICAgICB8ICAgICAgICAgIC8KKyAgICAgICAgICAgIFwgICAgICAgICAgICAgICAg
IFwgICAgICAgICB8ICAgICAgICAgLworICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLSAgIFwg
ICAgICAgIHwgICAgICAgIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCAgXCAgICAg
ICB8ICAgICAgIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb24gfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKKworICAgICAgICBOb3cgdGhhdCB0aGUgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiBpcyBi
ZWluZyBob29rZWQgdXAsIHRoaXMgcGF0Y2ggbWlycm9ycyB0aGUgZGVzaWduIG9mCisgICAgICAg
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLiBJbiB0aGlzIGRlc2lnbiwgdGhlIHdlYiBwcm9jZXNz
IHNlbmRzIGEgY3JlYXRlKCkgbWVzc2FnZSB3aXRoIHRoZQorICAgICAgICBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyIHRvIHRoZSBncHUgcHJvY2Vzcywgd2hpY2ggY3JlYXRlcyBhIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLiBUaGUKKyAgICAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgb3ducyBh
IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUsIGFuZCB1cG9uIGJlaW5nIGNyZWF0ZWQsIGl0IHN0
YXJ0cyB1cCB0aGUKKyAgICAgICAgd29yayBxdWV1ZSBhbmQgZW5xdWV1ZXMgYW4gaW5pdGlhbGl6
YXRpb24gdGFzayB0byB0aGUgd29yayBxdWV1ZSwgd2hpY2ggdGhlbiBzZW5kcyBhIHJlcGx5IHRv
IHRoZSB3ZWIKKyAgICAgICAgcHJvY2VzcyBpbmNsdWRpbmcgdGhlIHdha2VVcFNlbWFwaG9yZSBm
cm9tIHRoZSB3b3JrIHF1ZXVlLiBXaGlsZSB0aGUgR1BVIHByb2Nlc3MgaXMgYnVzeSBkb2luZyB0
aGlzLAorICAgICAgICB0aGUgd2ViIHByb2Nlc3MgaXMgYmxvY2tlZCwgYmVjYXVzZSBpdCBjYW4n
dCBzZW5kIGFueSBtZXNzYWdlcyB0aHJvdWdoIHRoZSBzdHJlYW0gdW50aWwgaXQgaGFzCisgICAg
ICAgIHJlY2VpdmVkIHRoZSBzZW1hcGhvcmUuIE9uY2UgaXQgaGFzIHJlY2VpdmVkIHRoZSBzZW1h
cGhvcmUsIHRoZSBjb25uZWN0aW9uIGhhcyBiZWVuIGVzdGFibGlzaGVkLAorICAgICAgICBhbmQg
bWVzc2FnZXMgY2FuIHN0YXJ0IGZsb3dpbmcuIFRoaXMgcGF0Y2ggZm9sbG93cyB0aGlzIG1vZGVs
LCBleGNlcHQgaW5zdGVhZCBvZgorICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
IGNvbW11bmljYXRpbmcgd2l0aCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgUmVtb3RlR1BVUHJv
eHkgaXMKKyAgICAgICAgY29tbXVuaWNhdGluZyB3aXRoIFJlbW90ZUdQVS4KKworICAgICAgICBU
aGVyZSBpcyBvbmUgbW9yZSBwYXRjaCB0byB3aXJlIHVwIGFsbCB0aGUgcGllY2VzIHRvZ2V0aGVy
IGJlZm9yZSB3ZSBjYW4gYWN0dWFsbHkgY2FsbCBvdXIgZmlyc3QKKyAgICAgICAgV2ViR1BVIGNv
bW1hbmQgaW4gSmF2YXNjcmlwdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQWRhcHRlcjo6UmVtb3RlQWRhcHRlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUFkYXB0ZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBZGFwdGVyOjpyZXF1ZXN0RGV2aWNlKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQmluZEdyb3VwOjpSZW1vdGVCaW5kR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVCaW5kR3JvdXA6OnN0b3BMaXN0ZW5pbmdGb3JJUEMpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUJpbmRHcm91cExheW91dDo6UmVtb3RlQmluZEdyb3VwTGF5b3V0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlQmluZEdyb3VwTGF5b3V0OjpzdG9wTGlzdGVuaW5nRm9ySVBDKToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlv
dXQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVCdWZmZXI6OlJlbW90ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUJ1ZmZlcjo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRCdWZmZXI6OlJlbW90ZUNvbW1hbmRCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kQnVmZmVyOjpzdG9wTGlzdGVuaW5nRm9ySVBD
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVm
ZmVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFu
ZEVuY29kZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6UmVt
b3RlQ29tbWFuZEVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5kRW5jb2Rl
cjo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1hbmRF
bmNvZGVyOjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDb21tYW5k
RW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbW1h
bmRFbmNvZGVyOjpmaW5pc2gpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUNvbW1hbmRFbmNvZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNz
RW5jb2Rlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bXB1dGVQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNvbXB1dGVQaXBlbGlu
ZTo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ29tcHV0
ZVBpcGVsaW5lOjpzdG9wTGlzdGVuaW5nRm9ySVBDKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZURldmljZTo6UmVtb3RlRGV2aWNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
RGV2aWNlOjpzdG9wTGlzdGVuaW5nRm9ySVBDKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2
aWNlOjpjcmVhdGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0
ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZVNhbXBsZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEZXZpY2U6OmltcG9ydEV4dGVybmFsVGV4dHVyZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVQaXBlbGluZUxheW91dCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlQmluZEdyb3VwKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlRGV2aWNlOjpjcmVhdGVDb21tYW5kRW5jb2Rlcik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZURldmljZTo6Y3JlYXRlUXVlcnlTZXQpOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUV4dGVybmFsVGV4dHVyZTo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpzdG9wTGlzdGVuaW5nRm9ySVBD
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRl
eHR1cmUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OlJlbW90ZUdQVSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdQVTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQ
VTo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6d29y
a1F1ZXVlSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6d29ya1F1ZXVl
VW5pbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BVOjpyZXF1ZXN0QWRhcHRl
cik6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5
b3V0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUGlwZWxpbmVMYXlvdXQ6OlJlbW90ZVBp
cGVsaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUGlwZWxpbmVMYXlvdXQ6OnN0
b3BMaXN0ZW5pbmdGb3JJUEMpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVBpcGVsaW5lTGF5b3V0Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVRdWVyeVNl
dDo6UmVtb3RlUXVlcnlTZXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVRdWVyeVNldDo6c3Rv
cExpc3RlbmluZ0ZvcklQQyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUXVlcnlTZXQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVRdWV1ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVF1ZXVlOjpSZW1vdGVRdWV1
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDKToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlckJ1bmRsZTo6UmVtb3RlUmVuZGVyQnVuZGxl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyQnVuZGxlOjpzdG9wTGlzdGVuaW5nRm9y
SVBDKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJC
dW5kbGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2Rlcjo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpmaW5pc2gpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpSZW1vdGVS
ZW5kZXJQYXNzRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyOjpzdG9wTGlzdGVuaW5nRm9ySVBDKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyUGlwZWxpbmU6OlJlbW90ZVJlbmRlclBpcGVsaW5lKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyUGlwZWxpbmU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJQaXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGlu
ZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTYW1wbGVyOjpSZW1vdGVTYW1wbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlcjo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVNoYWRlck1vZHVsZTo6UmVtb3RlU2hhZGVyTW9kdWxlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2hhZGVyTW9kdWxlOjpzdG9wTGlzdGVuaW5nRm9ySVBD
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1
bGUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dHVyZTo6UmVtb3RlVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHR1cmU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVUZXh0dXJlVmlldzo6UmVtb3RlVGV4dHVyZVZpZXcpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVUZXh0dXJlVmlldzo6c3RvcExpc3RlbmluZ0ZvcklQQyk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjphZGRPYmplY3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRBZGFwdGVyRnJvbUJhY2tpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRCaW5kR3JvdXBGcm9tQmFj
a2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydEJpbmRH
cm91cExheW91dEZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RI
ZWFwOjpjb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
Ok9iamVjdEhlYXA6OmNvbnZlcnRDb21tYW5kQnVmZmVyRnJvbUJhY2tpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRDb21tYW5kRW5jb2RlckZyb21CYWNr
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0Q29tcHV0
ZVBhc3NFbmNvZGVyRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVj
dEhlYXA6OmNvbnZlcnRDb21wdXRlUGlwZWxpbmVGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydERldmljZUZyb21CYWNraW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0RXh0ZXJuYWxUZXh0dXJlRnJv
bUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRQ
aXBlbGluZUxheW91dEZyb21CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmpl
Y3RIZWFwOjpjb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6T2JqZWN0SGVhcDo6Y29udmVydFF1ZXVlRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRSZW5kZXJCdW5kbGVFbmNvZGVyRnJvbUJh
Y2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRSZW5k
ZXJCdW5kbGVGcm9tQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6T2JqZWN0SGVh
cDo6Y29udmVydFJlbmRlclBhc3NFbmNvZGVyRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6Ok9iamVjdEhlYXA6OmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKToK
KyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0U2FtcGxlckZyb21C
YWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpPYmplY3RIZWFwOjpjb252ZXJ0U2hh
ZGVyTW9kdWxlRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6Ok9iamVjdEhl
YXA6OmNvbnZlcnRUZXh0dXJlRnJvbUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
Ok9iamVjdEhlYXA6OmNvbnZlcnRUZXh0dXJlVmlld0Zyb21CYWNraW5nKToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmg6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR1BVUHJveHk6OlJlbW90ZUdQVVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R1BVUHJveHk6OmFiYW5kb25HUFVQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR1BV
UHJveHk6Ondhc0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFVQcm94eTo6d2Fp
dFVudGlsSW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFVQcm94eTo6cmVx
dWVzdEFkYXB0ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFVQcm94eTo6flJlbW90ZUdQ
VVByb3h5KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlR1BVUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlR1BVUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorCiAyMDIxLTExLTI5ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04o
Mjg2MjE5KTogQnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggYzMyOTc0YTg0YjJhNjY5
NDA3MzhmMGQ0ZjNjMmJmOWU2MTBiYzAyYi4uODJhYTVmMjJkZDcyMGMxOTE4NDZhOTQyYTM5MTRj
YmZlYWM4NmM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC05Miw2ICs5Miw3IEBAIHNldChXZWJL
aXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvR2Vv
bG9jYXRpb24iCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9HUFUiCiAgICAgIiR7V0VC
S0lUX0RJUn0vV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MiCisgICAgIiR7V0VCS0lUX0RJUn0vV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nl
c3MvR1BVL21lZGlhIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvR1BVL3dlYnJ0YyIK
ICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZSIKQEAgLTI2MSw2ICsy
NjIsOCBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eQogICAgIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQogCisgICAgV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5CisKICAgICBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXIKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUKICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVNvdXJjZVByaXZhdGVSZW1vdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAppbmRleCA3OTlhZDc1YjJhMWFiMjEwZDA4MWQ1OWZkNWI0YjAyZDhiNmRh
ZWI0Li5hNzg5N2I5NjFhMzlkYWY5MjdjNTRkMTJlZmEzYzg5NzE0OTdiMDJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNzQsNiArMTc0
LDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlR1BVUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0hhcmR3YXJlTGlzdGVuZXIubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGE2NWZjMzYxODRjZmY4Zjc3NTJkNjg1Mjc5
ODYxNTRiNmFmODAxYzQuLjkzYTYxNDZkNmIxMzljYjhhMTZhMTcxYmI3N2Q0NGJkM2I1OGI2NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApA
QCAtMjQyLDYgKzI0Miw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUV4dGVybmFsVGV4dHVyZU1lc3NhZ2VzUmVwbGllCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHUFVNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVH
UFVNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVHUFVNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlR1BVUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHUFVQcm94eU1l
c3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUdQVVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZVJlY2VpdmVy
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzUmVwbGllcy5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZGRlNWM2M2ZlM2Y0YjMxNTI5N2RiNGI2
ODQ4OWMyOWRlNWJiYTQ1Yy4uNDU3NDM4NjVhNGFjODMyZDNlNWRiZDRhZmQ0MzhiZDc1MzJjZDky
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTg2LDYgKzE4Niw3IEBAIE1FU1NB
R0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uIFwK
IAlXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgXAog
CVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgXAor
CVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eSBcCiAJV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcyBcCiAJV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBcCiAJV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXIuY3BwCmluZGV4IDlhNTE4MDVkZDA3
YjA1MzEzYjhjMGFmOTQwOTBhMTQ2OTAxYmJhNjAuLmJlOGExMzlkYzgyY2NhYzUzMDEyNGNkYzk0
MmVhYTZhOTY2NWFkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmNwcApAQCAtMjgsNyArMjgsOSBAQAog
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQWRhcHRlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlRGV2aWNlLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkdQVURldmljZURlc2NyaXB0b3IuaCIKICNpbmNs
dWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiV2ViR1BVU3VwcG9ydGVkRmVhdHVy
ZXMuaCIKQEAgLTM4LDE1ICs0MCwyMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3Rl
QWRhcHRlcjo6UmVtb3RlQWRhcHRlcihQQUw6OldlYkdQVTo6QWRhcHRlciYgYWRhcHRlciwgV2Vi
R1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CitSZW1vdGVBZGFwdGVyOjpSZW1vdGVBZGFwdGVyKFBBTDo6V2ViR1BVOjpBZGFwdGVyJiBhZGFw
dGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIDogbV9iYWNraW5nKGFkYXB0ZXIpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0
SGVhcCkKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24p
KQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9zdHJlYW1Db25uZWN0
aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlQWRhcHRl
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAK
IFJlbW90ZUFkYXB0ZXI6On5SZW1vdGVBZGFwdGVyKCkgPSBkZWZhdWx0OwogCit2b2lkIFJlbW90
ZUFkYXB0ZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQoreworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVBZGFwdGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKwogdm9pZCBSZW1v
dGVBZGFwdGVyOjpyZXF1ZXN0RGV2aWNlKGNvbnN0IFdlYkdQVTo6RGV2aWNlRGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRl
ZExpbWl0cyYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3Ig
PSBtX29iamVjdEhlYXAuY29udmVydEZyb21CYWNraW5nKGRlc2NyaXB0b3IpOwpAQCAtNTYsOCAr
NjUsOCBAQCB2b2lkIFJlbW90ZUFkYXB0ZXI6OnJlcXVlc3REZXZpY2UoY29uc3QgV2ViR1BVOjpE
ZXZpY2VEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9iYWNraW5nLT5yZXF1ZXN0RGV2aWNlKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgb2JqZWN0SGVhcCA9IFJlZiB7IG1fb2JqZWN0SGVh
cCB9LCBpZGVudGlmaWVyXSAoUmVmPFBBTDo6V2ViR1BVOjpEZXZpY2U+JiYgZGV2aWNlKSBtdXRh
YmxlIHsKLSAgICAgICAgYXV0byByZW1vdGVEZXZpY2UgPSBSZW1vdGVEZXZpY2U6OmNyZWF0ZShk
ZXZpY2UsIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fYmFja2luZy0+cmVxdWVzdERl
dmljZSgqY29udmVydGVkRGVzY3JpcHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IG9iamVjdEhlYXAgPSBSZWYgeyBtX29iamVjdEhlYXAgfSwgc3RyZWFtQ29ubmVjdGlvbiA9IG1f
c3RyZWFtQ29ubmVjdGlvbi5jb3B5UmVmKCksIGlkZW50aWZpZXJdIChSZWY8UEFMOjpXZWJHUFU6
OkRldmljZT4mJiBkZXZpY2UpIG11dGFibGUgeworICAgICAgICBhdXRvIHJlbW90ZURldmljZSA9
IFJlbW90ZURldmljZTo6Y3JlYXRlKGRldmljZSwgb2JqZWN0SGVhcCwgV1RGTW92ZShzdHJlYW1D
b25uZWN0aW9uKSwgaWRlbnRpZmllcik7CiAgICAgICAgIG9iamVjdEhlYXAtPmFkZE9iamVjdChp
ZGVudGlmaWVyLCByZW1vdGVEZXZpY2UpOwogICAgICAgICBjb25zdCBhdXRvJiBmZWF0dXJlcyA9
IGRldmljZS0+ZmVhdHVyZXMoKTsKICAgICAgICAgY29uc3QgYXV0byYgbGltaXRzID0gZGV2aWNl
LT5saW1pdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQWRhcHRlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyLmgKaW5kZXggZDNiMWY4OTM4ODk5MTNjOWU4MzkxMjc0
MDdlOWJhZDk4NTYwZTU4Yy4uNWI1MWZmNzhmMGRmZWNhOTVkZmNiNmY5NDhiOTlhOGJkN2M0MzM4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVBZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVBZGFwdGVyLmgKQEAgLTM2LDYgKzM2LDEwIEBAIG5hbWVzcGFjZSBQQUw6Oldl
YkdQVSB7CiBjbGFzcyBBZGFwdGVyOwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2Ug
V2ViR1BVIHsKQEAgLTQ4LDE3ICs1MiwxOSBAQCBzdHJ1Y3QgU3VwcG9ydGVkTGltaXRzOwogY2xh
c3MgUmVtb3RlQWRhcHRlciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxSZW1vdGVBZGFwdGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkFkYXB0ZXImIGFkYXB0ZXIsIFdl
YkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQWRhcHRlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpBZGFw
dGVyJiBhZGFwdGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0
cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3Rl
QWRhcHRlcihhZGFwdGVyLCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZUFkYXB0ZXIoYWRhcHRlciwgb2JqZWN0SGVhcCwgV1RGTW92
ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
flJlbW90ZUFkYXB0ZXIoKTsKIAorICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOworCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHUFU6Ok9iamVjdEhlYXA7CiAKLSAgICBSZW1v
dGVBZGFwdGVyKFBBTDo6V2ViR1BVOjpBZGFwdGVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2Vi
R1BVSWRlbnRpZmllcik7CisgICAgUmVtb3RlQWRhcHRlcihQQUw6OldlYkdQVTo6QWRhcHRlciYs
IFdlYkdQVTo6T2JqZWN0SGVhcCYsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYs
IFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQWRhcHRlcihjb25zdCBSZW1vdGVBZGFw
dGVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQWRhcHRlcihSZW1vdGVBZGFwdGVyJiYpID0gZGVs
ZXRlOwpAQCAtNzMsNiArNzksNyBAQCBwcml2YXRlOgogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpB
ZGFwdGVyPiBtX2JhY2tpbmc7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7
CisgICAgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9u
OwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5k
R3JvdXAuY3BwCmluZGV4IDg0OTU1MmQ0OWM2NGViMzMwNDY0ZGUzODQ5MjlkMmMwMDI3Yzc0NTYu
LmMzYmJkNGFhNmZhMGY2ZDA4ZTE3NDExNzBjNGY3ZDVjMzM5ODExMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJp
bmRHcm91cC5jcHAKQEAgLTI4LDIwICsyOCwyOSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCisjaW5jbHVkZSAiUmVtb3RlQmluZEdyb3VwTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1SZW1vdGVCaW5kR3JvdXA6OlJlbW90ZUJpbmRHcm91cChQQUw6OldlYkdQ
VTo6QmluZEdyb3VwJiBiaW5kR3JvdXAsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwg
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlQmluZEdyb3VwOjpSZW1vdGVCaW5k
R3JvdXAoUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3VwLCBXZWJHUFU6Ok9iamVjdEhl
YXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFt
Q29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5n
KGJpbmRHcm91cCkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9zdHJl
YW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5n
TWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVCaW5kR3JvdXA6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiBSZW1vdGVCaW5kR3JvdXA6
On5SZW1vdGVCaW5kR3JvdXAoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgUmVtb3RlQmluZEdyb3VwOjpz
dG9wTGlzdGVuaW5nRm9ySVBDKCkKK3sKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNl
aXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlQmluZEdyb3VwOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKwogdm9pZCBSZW1vdGVCaW5kR3Jv
dXA6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewogICAgIG1fYmFja2luZy0+c2V0TGFiZWwo
V1RGTW92ZShsYWJlbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwLmgKaW5kZXggODJiYjMyMTQ0YzBiNDZh
ZTRlZjE0NzJhYTNkZTkzNTNkZjgzNjFjZi4uOGIyYmI4ZTc1ZmFiMjViMzI2MzE0NGNhNzFjNTJh
YWU4ZTQ0ZDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVCaW5kR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5oCkBAIC0zNiw2ICszNiwxMCBAQCBuYW1l
c3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQmluZEdyb3VwOwogfQogCituYW1lc3BhY2UgSVBD
IHsKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKQEAgLTQ1LDE3ICs0OSwxOSBAQCBjbGFzcyBPYmplY3RI
ZWFwOwogY2xhc3MgUmVtb3RlQmluZEdyb3VwIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVz
c2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFJlbW90ZUJpbmRHcm91cD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpCaW5kR3Jv
dXAmIGJpbmRHcm91cCwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXA+IGNyZWF0
ZShQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAsIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25u
ZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXAoYmluZEdyb3VwLCBvYmplY3RIZWFwLCBp
ZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJpbmRHcm91
cChiaW5kR3JvdXAsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlkZW50
aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVCaW5kR3JvdXAoKTsKIAorICAg
IHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBXZWJHUFU6Ok9iamVjdEhlYXA7CiAKLSAgICBSZW1vdGVCaW5kR3JvdXAoUEFMOjpXZWJHUFU6
OkJpbmRHcm91cCYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAg
IFJlbW90ZUJpbmRHcm91cChQQUw6OldlYkdQVTo6QmluZEdyb3VwJiwgV2ViR1BVOjpPYmplY3RI
ZWFwJiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmll
cik7CiAKICAgICBSZW1vdGVCaW5kR3JvdXAoY29uc3QgUmVtb3RlQmluZEdyb3VwJikgPSBkZWxl
dGU7CiAgICAgUmVtb3RlQmluZEdyb3VwKFJlbW90ZUJpbmRHcm91cCYmKSA9IGRlbGV0ZTsKQEAg
LTcwLDYgKzc2LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3Vw
PiBtX2JhY2tpbmc7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAg
UmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAg
IFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5k
R3JvdXBMYXlvdXQuY3BwCmluZGV4IGE5YTg4YTI2OGZhNWE5YmNhZWMxMTcwOGYyMTE3MDY5NzVi
Nzk1MDYuLjJjMmUxYTQ1Yjk5YjljMWMwNWVkMDQ1MDM1ZTEyOTUyYmMyOGFkNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdy
b3VwTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5jcHAKQEAgLTI4LDIwICsyOCwyOSBAQAogCiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQmluZEdyb3VwTGF5b3V0TWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViR1BVT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
QmluZEdyb3VwTGF5b3V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVCaW5kR3Jv
dXBMYXlvdXQ6OlJlbW90ZUJpbmRHcm91cExheW91dChQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5
b3V0JiBiaW5kR3JvdXBMYXlvdXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlQmluZEdyb3VwTGF5b3V0OjpSZW1vdGVC
aW5kR3JvdXBMYXlvdXQoUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYgYmluZEdyb3VwTGF5
b3V0LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIDogbV9iYWNraW5nKGJpbmRHcm91cExheW91dCkKICAgICAsIG1fb2JqZWN0SGVh
cChvYmplY3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29u
bmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX3N0cmVh
bUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1v
dGVCaW5kR3JvdXBMYXlvdXQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCkpOwogfQogCiBSZW1vdGVCaW5kR3JvdXBMYXlvdXQ6On5SZW1vdGVCaW5kR3JvdXBM
YXlvdXQoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgUmVtb3RlQmluZEdyb3VwTGF5b3V0OjpzdG9wTGlz
dGVuaW5nRm9ySVBDKCkKK3sKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdN
ZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlQmluZEdyb3VwTGF5b3V0OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKwogdm9pZCBSZW1vdGVCaW5kR3Jv
dXBMYXlvdXQ6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewogICAgIG1fYmFja2luZy0+c2V0
TGFiZWwoV1RGTW92ZShsYWJlbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0LmgKaW5k
ZXggNDg0ZjhmY2M5NDc4OTM4MWE3ZGIxMmU2YWQ3YWRlMzg2YzAyYWM2Mi4uMGQxZjRjYjY5NWI5
MDY1ZjAzN2Y3MTFjYTg4N2E5NmY5YjgyOTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExh
eW91dC5oCkBAIC0zNiw2ICszNiwxMCBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3Mg
QmluZEdyb3VwTGF5b3V0OwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BV
IHsKQEAgLTQ1LDE3ICs0OSwxOSBAQCBjbGFzcyBPYmplY3RIZWFwOwogY2xhc3MgUmVtb3RlQmlu
ZEdyb3VwTGF5b3V0IGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJl
bW90ZUJpbmRHcm91cExheW91dD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQm
IGJpbmRHcm91cExheW91dCwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlv
dXQ+IGNyZWF0ZShQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JiBiaW5kR3JvdXBMYXlvdXQs
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXBMYXlv
dXQoYmluZEdyb3VwTGF5b3V0LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXQs
IG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlkZW50aWZpZXIpKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVCaW5kR3JvdXBMYXlvdXQoKTsKIAorICAgIHZvaWQg
c3RvcExpc3RlbmluZ0ZvcklQQygpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJH
UFU6Ok9iamVjdEhlYXA7CiAKLSAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXQoUEFMOjpXZWJHUFU6
OkJpbmRHcm91cExheW91dCYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIp
OworICAgIFJlbW90ZUJpbmRHcm91cExheW91dChQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0
JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4m
JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXQoY29uc3Qg
UmVtb3RlQmluZEdyb3VwTGF5b3V0JikgPSBkZWxldGU7CiAgICAgUmVtb3RlQmluZEdyb3VwTGF5
b3V0KFJlbW90ZUJpbmRHcm91cExheW91dCYmKSA9IGRlbGV0ZTsKQEAgLTcwLDYgKzc2LDcgQEAg
cHJpdmF0ZToKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0PiBtX2JhY2tp
bmc7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuY3BwCmluZGV4IDE4OTNi
YWRiZTRkNTA1ZTY5ZDllYzVjZjllYzM1M2E3N2E4NzU2OTYuLjI2NTA5MzRjM2M5ZTUyZjA3ZjQ1
YjBhOGFkYzJkNDdjNGM0ZDNkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlci5jcHAKQEAgLTI4LDE5ICsyOCwy
OCBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQnVmZmVy
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQnVm
ZmVyOjpSZW1vdGVCdWZmZXIoUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYnVmZmVyLCBXZWJHUFU6Ok9i
amVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90
ZUJ1ZmZlcjo6UmVtb3RlQnVmZmVyKFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwgV2ViR1BV
OjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
PiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6
IG1fYmFja2luZyhidWZmZXIpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAs
IG1fc3RyZWFtQ29ubmVjdGlvbihXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pKQogICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJl
Y2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlQnVmZmVyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogUmVtb3RlQnVmZmVy
Ojp+UmVtb3RlQnVmZmVyKCkgPSBkZWZhdWx0OwogCit2b2lkIFJlbW90ZUJ1ZmZlcjo6c3RvcExp
c3RlbmluZ0ZvcklQQygpCit7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5n
TWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUJ1ZmZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X2lkZW50aWZpZXIudG9VSW50NjQoKSk7Cit9CisKIHZvaWQgUmVtb3RlQnVmZmVyOjptYXBBc3lu
YyhQQUw6OldlYkdQVTo6TWFwTW9kZUZsYWdzIG1hcE1vZGVGbGFncywgc3RkOjpvcHRpb25hbDxQ
QUw6OldlYkdQVTo6U2l6ZTY0PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNp
emU2ND4gc2l6ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAobV9pc01hcHBlZCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQnVmZmVyLmgKaW5kZXggZmMyMDIyMDQ0NjU1OWJmZjBhNTdkMTdiNDYwZmU1Mzg5ZjQxNzVi
Ni4uYjM3NTBmY2RiNGYzYjA5NGM1ZDY5MjU0ZDNiMTQwZDVhOWViODY3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZl
ci5oCkBAIC00MSw2ICs0MSwxMCBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQnVm
ZmVyOwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb247
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKQEAgLTUwLDE3
ICs1NCwxOSBAQCBjbGFzcyBPYmplY3RIZWFwOwogY2xhc3MgUmVtb3RlQnVmZmVyIGZpbmFsIDog
cHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUJ1ZmZlcj4gY3JlYXRlKFBB
TDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFw
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVCdWZm
ZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6QnVmZmVyJiBidWZmZXIsIFdlYkdQVTo6T2JqZWN0SGVh
cCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1D
b25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCdWZmZXIoYnVmZmVyLCBvYmplY3RIZWFwLCBpZGVu
dGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJ1ZmZlcihidWZm
ZXIsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlkZW50aWZpZXIpKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVCdWZmZXIoKTsKIAorICAgIHZvaWQgc3RvcExp
c3RlbmluZ0ZvcklQQygpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHUFU6Ok9i
amVjdEhlYXA7CiAKLSAgICBSZW1vdGVCdWZmZXIoUEFMOjpXZWJHUFU6OkJ1ZmZlciYsIFdlYkdQ
VTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAgIFJlbW90ZUJ1ZmZlcihQQUw6
OldlYkdQVTo6QnVmZmVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVCdWZmZXIo
Y29uc3QgUmVtb3RlQnVmZmVyJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQnVmZmVyKFJlbW90ZUJ1
ZmZlciYmKSA9IGRlbGV0ZTsKQEAgLTgwLDYgKzg2LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxQ
QUw6OldlYkdQVTo6QnVmZmVyPiBtX2JhY2tpbmc7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBt
X29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJl
YW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIGJv
b2wgbV9pc01hcHBlZCB7IGZhbHNlIH07CiAgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6
QnVmZmVyOjpNYXBwZWRSYW5nZT4gbV9tYXBwZWRSYW5nZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRC
dWZmZXIuY3BwCmluZGV4IDdjMmE4N2NkMTRjOWJkY2MwNzAyZWViN2Q3Yzk1NmUyNGUyNTgxOGMu
LmZlZmVjMjE3YTA2ZGM5ZDc5NDBkM2M0YjY5ZThiYTdhODVmZWIyZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVDb21tYW5kQnVmZmVyLmNwcApAQCAtMjgsMjAgKzI4LDI5IEBACiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVDb21tYW5kQnVmZmVyTWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0
SGVhcC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEJ1ZmZl
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQ29tbWFuZEJ1ZmZlcjo6UmVtb3Rl
Q29tbWFuZEJ1ZmZlcihQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlciwg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCitSZW1vdGVDb21tYW5kQnVmZmVyOjpSZW1vdGVDb21tYW5kQnVmZmVyKFBBTDo6V2ViR1BV
OjpDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVj
dEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlv
biwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGNvbW1hbmRC
dWZmZXIpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1fc3RyZWFtQ29u
bmVjdGlvbihXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCiB7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3Nh
Z2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEJ1ZmZlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIFJlbW90ZUNvbW1hbmRCdWZm
ZXI6On5SZW1vdGVDb21tYW5kQnVmZmVyKCkgPSBkZWZhdWx0OwogCit2b2lkIFJlbW90ZUNvbW1h
bmRCdWZmZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQoreworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kQnVmZmVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKwogdm9p
ZCBSZW1vdGVDb21tYW5kQnVmZmVyOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKICAgICBt
X2JhY2tpbmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlci5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVm
ZmVyLmgKaW5kZXggZTgwODkwODhmOGE1NGNlNTA1YzVkZGNmYTVjZWE3MTBmN2I2Nzk4NS4uN2Mx
MDQyNmQxNmUwZjk4ZWJiNjIyZDE3MGVkZmUyYThlOGQyMWQxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21t
YW5kQnVmZmVyLmgKQEAgLTM2LDYgKzM2LDEwIEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBj
bGFzcyBDb21tYW5kQnVmZmVyOwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2Vi
R1BVIHsKQEAgLTQ1LDE3ICs0OSwxOSBAQCBjbGFzcyBPYmplY3RIZWFwOwogY2xhc3MgUmVtb3Rl
Q29tbWFuZEJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxS
ZW1vdGVDb21tYW5kQnVmZmVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXImIGNv
bW1hbmRCdWZmZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlcj4gY3Jl
YXRlKFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyLCBXZWJHUFU6Ok9i
amVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYg
c3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tbWFuZEJ1ZmZlcihjb21tYW5kQnVm
ZmVyLCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbW90ZUNvbW1hbmRCdWZmZXIoY29tbWFuZEJ1ZmZlciwgb2JqZWN0SGVhcCwgV1RGTW92
ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
flJlbW90ZUNvbW1hbmRCdWZmZXIoKTsKIAorICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygp
OworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHUFU6Ok9iamVjdEhlYXA7CiAKLSAg
ICBSZW1vdGVDb21tYW5kQnVmZmVyKFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyJiwgV2ViR1BV
OjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAgUmVtb3RlQ29tbWFuZEJ1ZmZl
cihQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFJlZjxJ
UEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAg
UmVtb3RlQ29tbWFuZEJ1ZmZlcihjb25zdCBSZW1vdGVDb21tYW5kQnVmZmVyJikgPSBkZWxldGU7
CiAgICAgUmVtb3RlQ29tbWFuZEJ1ZmZlcihSZW1vdGVDb21tYW5kQnVmZmVyJiYpID0gZGVsZXRl
OwpAQCAtNzAsNiArNzYsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpDb21t
YW5kQnVmZmVyPiBtX2JhY2tpbmc7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhl
YXA7CisgICAgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0
aW9uOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5k
RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbW1hbmRFbmNvZGVyLmNwcAppbmRleCBmYzQ1NDkxNjZiMGI4MTM5ZTQ1NWY0ZmU5ZGE0
OTY1M2NjYzQ5ZDE3Li5kOWViNzkzZGFkNDQ1Nzc3MmFiMDNkZDBmYjU0MjQyMWMyOGNhMDkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbW1hbmRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyLmNwcApAQCAtMjksMjMgKzI5LDMyIEBACiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiUmVtb3RlQ29tbWFuZEJ1ZmZlci5o
IgorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRFbmNvZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlci5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJX
ZWJHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFw
LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2Rlci5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlQ29tbWFuZEVuY29kZXI6OlJlbW90ZUNv
bW1hbmRFbmNvZGVyKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYgY29tbWFuZEVuY29kZXIs
IFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQorUmVtb3RlQ29tbWFuZEVuY29kZXI6OlJlbW90ZUNvbW1hbmRFbmNvZGVyKFBBTDo6V2Vi
R1BVOjpDb21tYW5kRW5jb2RlciYgY29tbWFuZEVuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYg
b2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25u
ZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoY29t
bWFuZEVuY29kZXIpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1fc3Ry
ZWFtQ29ubmVjdGlvbihXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlm
aWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2Vpdmlu
Z01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEVuY29kZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiBSZW1vdGVDb21t
YW5kRW5jb2Rlcjo6flJlbW90ZUNvbW1hbmRFbmNvZGVyKCkgPSBkZWZhdWx0OwogCit2b2lkIFJl
bW90ZUNvbW1hbmRFbmNvZGVyOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKK3sKKyAgICBtX3N0cmVh
bUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlQ29tbWFu
ZEVuY29kZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkp
OworfQorCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBhc3MoY29uc3Qg
V2ViR1BVOjpSZW5kZXJQYXNzRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogewogICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fb2JqZWN0
SGVhcC5jb252ZXJ0RnJvbUJhY2tpbmcoZGVzY3JpcHRvcik7CkBAIC01NCw3ICs2Myw3IEBAIHZv
aWQgUmVtb3RlQ29tbWFuZEVuY29kZXI6OmJlZ2luUmVuZGVyUGFzcyhjb25zdCBXZWJHUFU6OlJl
bmRlclBhc3NEZXNjcmlwdG9yJiBkCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcmVuZGVy
UGFzc0VuY29kZXIgPSBtX2JhY2tpbmctPmJlZ2luUmVuZGVyUGFzcygqY29udmVydGVkRGVzY3Jp
cHRvcik7Ci0gICAgYXV0byByZW1vdGVSZW5kZXJQYXNzRW5jb2RlciA9IFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyOjpjcmVhdGUocmVuZGVyUGFzc0VuY29kZXIsIG1fb2JqZWN0SGVhcCwgaWRlbnRp
Zmllcik7CisgICAgYXV0byByZW1vdGVSZW5kZXJQYXNzRW5jb2RlciA9IFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyOjpjcmVhdGUocmVuZGVyUGFzc0VuY29kZXIsIG1fb2JqZWN0SGVhcCwgbV9zdHJl
YW1Db25uZWN0aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllcik7CiAgICAgbV9vYmplY3RIZWFwLmFk
ZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcik7CiB9CiAKQEAgLTcw
LDcgKzc5LDcgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcyhj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6Q29tcHV0ZVAKICAgICB9CiAKICAgICBhdXRvIGNv
bXB1dGVQYXNzRW5jb2RlciA9IG1fYmFja2luZy0+YmVnaW5Db21wdXRlUGFzcygqY29udmVydGVk
RGVzY3JpcHRvcik7Ci0gICAgYXV0byBjb21wdXRlUmVuZGVyUGFzc0VuY29kZXIgPSBSZW1vdGVD
b21wdXRlUGFzc0VuY29kZXI6OmNyZWF0ZShjb21wdXRlUGFzc0VuY29kZXIsIG1fb2JqZWN0SGVh
cCwgaWRlbnRpZmllcik7CisgICAgYXV0byBjb21wdXRlUmVuZGVyUGFzc0VuY29kZXIgPSBSZW1v
dGVDb21wdXRlUGFzc0VuY29kZXI6OmNyZWF0ZShjb21wdXRlUGFzc0VuY29kZXIsIG1fb2JqZWN0
SGVhcCwgbV9zdHJlYW1Db25uZWN0aW9uLmNvcHlSZWYoKSwgaWRlbnRpZmllcik7CiAgICAgbV9v
YmplY3RIZWFwLmFkZE9iamVjdChpZGVudGlmaWVyLCBjb21wdXRlUmVuZGVyUGFzc0VuY29kZXIp
OwogfQogCkBAIC0yMDUsNyArMjE0LDcgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Zmlu
aXNoKGNvbnN0IFdlYkdQVTo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXAKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byBjb21tYW5kQnVmZmVyID0gbV9iYWNraW5nLT5maW5pc2go
KmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8gcmVtb3RlQ29tbWFuZEJ1ZmZlciA9IFJl
bW90ZUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShjb21tYW5kQnVmZmVyLCBtX29iamVjdEhlYXAsIGlk
ZW50aWZpZXIpOworICAgIGF1dG8gcmVtb3RlQ29tbWFuZEJ1ZmZlciA9IFJlbW90ZUNvbW1hbmRC
dWZmZXI6OmNyZWF0ZShjb21tYW5kQnVmZmVyLCBtX29iamVjdEhlYXAsIG1fc3RyZWFtQ29ubmVj
dGlvbi5jb3B5UmVmKCksIGlkZW50aWZpZXIpOwogICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3Qo
aWRlbnRpZmllciwgcmVtb3RlQ29tbWFuZEJ1ZmZlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXIu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFu
ZEVuY29kZXIuaAppbmRleCBlNGEwYzNjMWI1NmUzNmMwMGM1MGZmODE4NWZjNzMzN2RkMzgxYzIy
Li5hNWI0MmM5MWUwMWRhNjgzYWFmMmQyNGU2MmQ4MGE2OTk3ZjEzOTcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVDb21tYW5kRW5jb2Rlci5oCkBAIC0zOCw2ICszOCwxMCBAQCBuYW1lc3BhY2UgUEFMOjpXZWJH
UFUgewogY2xhc3MgQ29tbWFuZEVuY29kZXI7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3Mg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVz
cGFjZSBXZWJHUFUgewpAQCAtNTIsMTcgKzU2LDE5IEBAIHN0cnVjdCBSZW5kZXJQYXNzRGVzY3Jp
cHRvcjsKIGNsYXNzIFJlbW90ZUNvbW1hbmRFbmNvZGVyIGZpbmFsIDogcHVibGljIElQQzo6U3Ry
ZWFtTWVzc2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbW1hbmRFbmNvZGVyPiBjcmVhdGUoUEFMOjpXZWJH
UFU6OkNvbW1hbmRFbmNvZGVyJiBjb21tYW5kRW5jb2RlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBv
YmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxS
ZW1vdGVDb21tYW5kRW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciYg
Y29tbWFuZEVuY29kZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVDb21tYW5kRW5jb2Rlcihjb21tYW5kRW5jb2Rlciwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21tYW5kRW5jb2Rlcihjb21t
YW5kRW5jb2Rlciwgb2JqZWN0SGVhcCwgV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRp
ZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUNvbW1hbmRFbmNvZGVyKCk7CiAK
KyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgV2ViR1BVOjpPYmplY3RIZWFwOwogCi0gICAgUmVtb3RlQ29tbWFuZEVuY29kZXIoUEFM
OjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRl
bnRpZmllcik7CisgICAgUmVtb3RlQ29tbWFuZEVuY29kZXIoUEFMOjpXZWJHUFU6OkNvbW1hbmRF
bmNvZGVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVj
dGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVDb21tYW5kRW5jb2Rlcihj
b25zdCBSZW1vdGVDb21tYW5kRW5jb2RlciYpID0gZGVsZXRlOwogICAgIFJlbW90ZUNvbW1hbmRF
bmNvZGVyKFJlbW90ZUNvbW1hbmRFbmNvZGVyJiYpID0gZGVsZXRlOwpAQCAtMTIyLDYgKzEyOCw3
IEBAIHByaXZhdGU6CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyPiBtX2Jh
Y2tpbmc7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQ
VUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRl
UGFzc0VuY29kZXIuY3BwCmluZGV4IDA2ZTZhZDgwOGE1NzVkOWNhODM2NjBjNGUxMDIzYjBmOTQ0
M2JmMDAuLjhlMDczZWQxZGZjYmE0YWQ2ZGQ2NDc2OWVjNDgwNzM1ZmQ4OWViOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0
ZVBhc3NFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAKQEAgLTI4LDIwICsyOCwyOSBAQAog
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1S
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlcihQQUw6Oldl
YkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29kZXIsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoUEFMOjpXZWJHUFU6
OkNvbXB1dGVQYXNzRW5jb2RlciYgY29tcHV0ZVBhc3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdEhl
YXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFt
Q29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5n
KGNvbXB1dGVQYXNzRW5jb2RlcikKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAg
ICwgbV9zdHJlYW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAgLCBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0
UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQog
CiBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6On5SZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoKSA9
IGRlZmF1bHQ7CiAKK3ZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpzdG9wTGlzdGVuaW5n
Rm9ySVBDKCkKK3sKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdl
cyhNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKwogdm9pZCBSZW1vdGVDb21wdXRlUGFz
c0VuY29kZXI6OnNldFBpcGVsaW5lKFdlYkdQVUlkZW50aWZpZXIgY29tcHV0ZVBpcGVsaW5lKQog
ewogICAgIGF1dG8gY29udmVydGVkQ29tcHV0ZVBpcGVsaW5lID0gbV9vYmplY3RIZWFwLmNvbnZl
cnRDb21wdXRlUGlwZWxpbmVGcm9tQmFja2luZyhjb21wdXRlUGlwZWxpbmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRl
UGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyLmgKaW5kZXggOTk1MTEwMjE5ZTk0MjRhZThkN2IyZTlh
NzBhZDA2OTMxOWRkYWIxOC4uMzU4ZTA1ZDllMTZkOTgyMDUzZDIxODM4ZWZmODkxZGZlM2IyZDdl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlci5oCkBAIC0zNyw2ICszNywx
MCBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29tcHV0ZVBhc3NFbmNvZGVyOwog
fQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb247Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKQEAgLTQ2LDE3ICs1MCwx
OSBAQCBjbGFzcyBPYmplY3RIZWFwOwogY2xhc3MgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyIGZp
bmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbXB1dGVQYXNz
RW5jb2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXImIGNvbXB1dGVQ
YXNzRW5jb2RlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+
IGNyZWF0ZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiBjb21wdXRlUGFzc0VuY29k
ZXIsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVy
Q29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGFz
c0VuY29kZXIoY29tcHV0ZVBhc3NFbmNvZGVyLCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcihjb21w
dXRlUGFzc0VuY29kZXIsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlk
ZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXIoKTsKIAorICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOworCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBXZWJHUFU6Ok9iamVjdEhlYXA7CiAKLSAgICBSZW1vdGVDb21wdXRlUGFz
c0VuY29kZXIoUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciYsIFdlYkdQVTo6T2JqZWN0
SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAgIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlcihQ
QUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVm
PElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAg
ICBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXIoY29uc3QgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVy
JikgPSBkZWxldGU7CiAgICAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyKFJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2RlciYmKSA9IGRlbGV0ZTsKQEAgLTg3LDYgKzkzLDcgQEAgcHJpdmF0ZToKIAogICAg
IFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyPiBtX2JhY2tpbmc7CiAgICAgV2Vi
R1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6U3RyZWFtU2VydmVy
Q29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuY3BwCmluZGV4
IDQxNDQxNWEzOWMyNzQ5NTIxNmUzZGJjNDBiZGEyZWI1N2Y4ODc1OTYuLmNmYzMyYjgxOGRiM2Mz
YzM3MGRhZTEzODI1MjMxNDRhNjMwNjZiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBl
bGluZS5jcHAKQEAgLTI5LDI1ICsyOSwzNCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAog
I2luY2x1ZGUgIlJlbW90ZUJpbmRHcm91cExheW91dC5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbXB1
dGVQaXBlbGluZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dC5oPgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1S
ZW1vdGVDb21wdXRlUGlwZWxpbmU6OlJlbW90ZUNvbXB1dGVQaXBlbGluZShQQUw6OldlYkdQVTo6
Q29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2Jq
ZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lOjpSZW1vdGVDb21wdXRlUGlwZWxpbmUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYg
Y29tcHV0ZVBpcGVsaW5lLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6
OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKGNvbXB1dGVQaXBlbGluZSkKICAgICAs
IG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKFdURk1v
dmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsK
KyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1l
c3NhZ2VzOjpSZW1vdGVDb21wdXRlUGlwZWxpbmU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9p
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiBSZW1vdGVDb21wdXRlUGlwZWxpbmU6On5SZW1v
dGVDb21wdXRlUGlwZWxpbmUoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKK3sKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0
b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKwogdm9pZCBS
ZW1vdGVDb21wdXRlUGlwZWxpbmU6OmdldEJpbmRHcm91cExheW91dCh1aW50MzJfdCBpbmRleCwg
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8gYmluZEdyb3VwTGF5b3V0
ID0gbV9iYWNraW5nLT5nZXRCaW5kR3JvdXBMYXlvdXQoaW5kZXgpOwotICAgIGF1dG8gcmVtb3Rl
QmluZEdyb3VwTGF5b3V0ID0gUmVtb3RlQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoYmluZEdyb3Vw
TGF5b3V0LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVtb3RlQmluZEdy
b3VwTGF5b3V0ID0gUmVtb3RlQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoYmluZEdyb3VwTGF5b3V0
LCBtX29iamVjdEhlYXAsIG1fc3RyZWFtQ29ubmVjdGlvbi5jb3B5UmVmKCksIGlkZW50aWZpZXIp
OwogICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlQmluZEdyb3Vw
TGF5b3V0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lLmgKaW5kZXggYmI5NzZk
MmYzMGU3MWVkYjRlZjA1MDE1OTI0NWJjNGI4NTFhNjgxMC4uODllOTgyOTAxMzE5YWI0ZWQwNjQ4
ZjJhOThiMmYxZWI3YTllNzc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZS5oCkBA
IC0zNiw2ICszNiwxMCBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xhc3MgQ29tcHV0ZVBp
cGVsaW5lOwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKQEAgLTQ1
LDE3ICs0OSwxOSBAQCBjbGFzcyBPYmplY3RIZWFwOwogY2xhc3MgUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbXB1
dGVQaXBlbGluZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQ
aXBlbGluZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGlwZWxpbmU+IGNyZWF0
ZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUsIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4m
JiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGlwZWxpbmUoY29tcHV0
ZVBpcGVsaW5lLCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZUNvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmUsIG9iamVjdEhl
YXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIH5SZW1vdGVDb21wdXRlUGlwZWxpbmUoKTsKIAorICAgIHZvaWQgc3RvcExpc3Rl
bmluZ0ZvcklQQygpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHUFU6Ok9iamVj
dEhlYXA7CiAKLSAgICBSZW1vdGVDb21wdXRlUGlwZWxpbmUoUEFMOjpXZWJHUFU6OkNvbXB1dGVQ
aXBlbGluZSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAgIFJl
bW90ZUNvbXB1dGVQaXBlbGluZShQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJiwgV2ViR1BV
OjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BV
SWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgUmVtb3RlQ29t
cHV0ZVBpcGVsaW5lJikgPSBkZWxldGU7CiAgICAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lKFJlbW90
ZUNvbXB1dGVQaXBlbGluZSYmKSA9IGRlbGV0ZTsKQEAgLTcyLDYgKzc4LDcgQEAgcHJpdmF0ZToK
IAogICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiBtX2JhY2tpbmc7CiAgICAg
V2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuY3BwCmluZGV4IDlkZjg5NzA0NjI0NTNl
MjljZTc4ZDZjNTU0NWYyZTkwYzhlMmVhNjcuLjU4MjQwYjE3OGRlYjdkNTM0ZGZjN2M3OTk3ZDUw
NjUxNzlmYmU3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJSZW1vdGVCdWZmZXIuaCIKICNpbmNsdWRlICJSZW1vdGVDb21tYW5kRW5jb2Rlci5oIgog
I2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQaXBlbGluZS5oIgorI2luY2x1ZGUgIlJlbW90ZURldmlj
ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlUGlwZWxpbmVMYXlvdXQuaCIKICNpbmNsdWRlICJSZW1vdGVRdWVyeVNldC5oIgpA
QCAtNDEsNiArNDIsNyBAQAogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZXIuaCIKICNpbmNsdWRlICJS
ZW1vdGVTaGFkZXJNb2R1bGUuaCIKICNpbmNsdWRlICJSZW1vdGVUZXh0dXJlLmgiCisjaW5jbHVk
ZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRFbmNv
ZGVyRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKICNpbmNsdWRl
ICJXZWJHUFVPdXRPZk1lbW9yeUVycm9yLmgiCkBAIC03NiwxNSArNzgsMjIgQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVJlbW90ZURldmljZTo6UmVtb3RlRGV2aWNlKFBBTDo6V2ViR1BVOjpE
ZXZpY2UmIGRldmljZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVEZXZpY2U6OlJlbW90ZURldmljZShQQUw6OldlYkdQ
VTo6RGV2aWNlJiBkZXZpY2UsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcoZGV2aWNlKQogICAgICwgbV9vYmpl
Y3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oV1RGTW92ZShzdHJl
YW1Db25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1f
c3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6
OlJlbW90ZURldmljZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50
NjQoKSk7CiB9CiAKIFJlbW90ZURldmljZTo6flJlbW90ZURldmljZSgpID0gZGVmYXVsdDsKIAor
dm9pZCBSZW1vdGVEZXZpY2U6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQoreworICAgIG1fc3RyZWFt
Q29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworfQorCiB2
b2lkIFJlbW90ZURldmljZTo6ZGVzdHJveSgpCiB7CiAgICAgbV9iYWNraW5nLT5kZXN0cm95KCk7
CkBAIC05OCw3ICsxMDcsNyBAQCB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlQnVmZmVyKGNvbnN0
IFdlYkdQVTo6QnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViRwogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvIGJ1ZmZlciA9IG1fYmFja2luZy0+Y3JlYXRlQnVmZmVyKCpjb252ZXJ0
ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZUJ1ZmZlciA9IFJlbW90ZUJ1ZmZlcjo6Y3Jl
YXRlKGJ1ZmZlciwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBhdXRvIHJlbW90ZUJ1
ZmZlciA9IFJlbW90ZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlciwgbV9vYmplY3RIZWFwLCBtX3N0cmVh
bUNvbm5lY3Rpb24uY29weVJlZigpLCBpZGVudGlmaWVyKTsKICAgICBtX29iamVjdEhlYXAuYWRk
T2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZUJ1ZmZlcik7CiB9CiAKQEAgLTExMCw3ICsxMTksNyBA
QCB2b2lkIFJlbW90ZURldmljZTo6Y3JlYXRlVGV4dHVyZShjb25zdCBXZWJHUFU6OlRleHR1cmVE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHRl
eHR1cmUgPSBtX2JhY2tpbmctPmNyZWF0ZVRleHR1cmUoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwot
ICAgIGF1dG8gcmVtb3RlVGV4dHVyZSA9IFJlbW90ZVRleHR1cmU6OmNyZWF0ZSh0ZXh0dXJlLCBt
X29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVtb3RlVGV4dHVyZSA9IFJlbW90
ZVRleHR1cmU6OmNyZWF0ZSh0ZXh0dXJlLCBtX29iamVjdEhlYXAsIG1fc3RyZWFtQ29ubmVjdGlv
bi5jb3B5UmVmKCksIGlkZW50aWZpZXIpOwogICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRl
bnRpZmllciwgcmVtb3RlVGV4dHVyZSk7CiB9CiAKQEAgLTEyMiw3ICsxMzEsNyBAQCB2b2lkIFJl
bW90ZURldmljZTo6Y3JlYXRlU2FtcGxlcihjb25zdCBXZWJHUFU6OlNhbXBsZXJEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBXZQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHNhbXBsZXIgPSBt
X2JhY2tpbmctPmNyZWF0ZVNhbXBsZXIoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1dG8g
cmVtb3RlU2FtcGxlciA9IFJlbW90ZVNhbXBsZXI6OmNyZWF0ZShzYW1wbGVyLCBtX29iamVjdEhl
YXAsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVtb3RlU2FtcGxlciA9IFJlbW90ZVNhbXBsZXI6
OmNyZWF0ZShzYW1wbGVyLCBtX29iamVjdEhlYXAsIG1fc3RyZWFtQ29ubmVjdGlvbi5jb3B5UmVm
KCksIGlkZW50aWZpZXIpOwogICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwg
cmVtb3RlU2FtcGxlcik7CiB9CiAKQEAgLTEzNCw3ICsxNDMsNyBAQCB2b2lkIFJlbW90ZURldmlj
ZTo6aW1wb3J0RXh0ZXJuYWxUZXh0dXJlKGNvbnN0IFdlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlRGVz
Y3JpcHRvcgogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGV4dGVybmFsVGV4dHVyZSA9IG1f
YmFja2luZy0+aW1wb3J0RXh0ZXJuYWxUZXh0dXJlKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAg
ICBhdXRvIHJlbW90ZUV4dGVybmFsVGV4dHVyZSA9IFJlbW90ZUV4dGVybmFsVGV4dHVyZTo6Y3Jl
YXRlKGV4dGVybmFsVGV4dHVyZSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBhdXRv
IHJlbW90ZUV4dGVybmFsVGV4dHVyZSA9IFJlbW90ZUV4dGVybmFsVGV4dHVyZTo6Y3JlYXRlKGV4
dGVybmFsVGV4dHVyZSwgbV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJlZigp
LCBpZGVudGlmaWVyKTsKICAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJl
bW90ZUV4dGVybmFsVGV4dHVyZSk7CiB9CiAKQEAgLTE0Niw3ICsxNTUsNyBAQCB2b2lkIFJlbW90
ZURldmljZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFdlYkdQVTo6QmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvcgogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGJpbmRHcm91cExheW91
dCA9IG1fYmFja2luZy0+Y3JlYXRlQmluZEdyb3VwTGF5b3V0KCpjb252ZXJ0ZWREZXNjcmlwdG9y
KTsKLSAgICBhdXRvIHJlbW90ZUJpbmRHcm91cExheW91dCA9IFJlbW90ZUJpbmRHcm91cExheW91
dDo6Y3JlYXRlKGJpbmRHcm91cExheW91dCwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAg
ICBhdXRvIHJlbW90ZUJpbmRHcm91cExheW91dCA9IFJlbW90ZUJpbmRHcm91cExheW91dDo6Y3Jl
YXRlKGJpbmRHcm91cExheW91dCwgbV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29w
eVJlZigpLCBpZGVudGlmaWVyKTsKICAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZp
ZXIsIHJlbW90ZUJpbmRHcm91cExheW91dCk7CiB9CiAKQEAgLTE1OCw3ICsxNjcsNyBAQCB2b2lk
IFJlbW90ZURldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgV2ViR1BVOjpQaXBlbGlu
ZUxheW91dERlc2NyaXB0b3ImCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcGlwZWxpbmVM
YXlvdXQgPSBtX2JhY2tpbmctPmNyZWF0ZVBpcGVsaW5lTGF5b3V0KCpjb252ZXJ0ZWREZXNjcmlw
dG9yKTsKLSAgICBhdXRvIHJlbW90ZVBpcGVsaW5lTGF5b3V0ID0gUmVtb3RlUGlwZWxpbmVMYXlv
dXQ6OmNyZWF0ZShwaXBlbGluZUxheW91dCwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAg
ICBhdXRvIHJlbW90ZVBpcGVsaW5lTGF5b3V0ID0gUmVtb3RlUGlwZWxpbmVMYXlvdXQ6OmNyZWF0
ZShwaXBlbGluZUxheW91dCwgbV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJl
ZigpLCBpZGVudGlmaWVyKTsKICAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIs
IHJlbW90ZVBpcGVsaW5lTGF5b3V0KTsKIH0KIApAQCAtMTcwLDcgKzE3OSw3IEBAIHZvaWQgUmVt
b3RlRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgV2ViR1BVOjpCaW5kR3JvdXBEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gYmluZEdyb3VwID0g
bV9iYWNraW5nLT5jcmVhdGVCaW5kR3JvdXAoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1
dG8gcmVtb3RlQmluZEdyb3VwID0gUmVtb3RlQmluZEdyb3VwOjpjcmVhdGUoYmluZEdyb3VwLCBt
X29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVtb3RlQmluZEdyb3VwID0gUmVt
b3RlQmluZEdyb3VwOjpjcmVhdGUoYmluZEdyb3VwLCBtX29iamVjdEhlYXAsIG1fc3RyZWFtQ29u
bmVjdGlvbi5jb3B5UmVmKCksIGlkZW50aWZpZXIpOwogICAgIG1fb2JqZWN0SGVhcC5hZGRPYmpl
Y3QoaWRlbnRpZmllciwgcmVtb3RlQmluZEdyb3VwKTsKIH0KIApAQCAtMTgyLDcgKzE5MSw3IEBA
IHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgV2ViR1BVOjpTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yJiBkZXNjCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gc2hh
ZGVyTW9kdWxlID0gbV9iYWNraW5nLT5jcmVhdGVTaGFkZXJNb2R1bGUoKmNvbnZlcnRlZERlc2Ny
aXB0b3IpOwotICAgIGF1dG8gcmVtb3RlU2hhZGVyTW9kdWxlID0gUmVtb3RlU2hhZGVyTW9kdWxl
OjpjcmVhdGUoc2hhZGVyTW9kdWxlLCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIGF1
dG8gcmVtb3RlU2hhZGVyTW9kdWxlID0gUmVtb3RlU2hhZGVyTW9kdWxlOjpjcmVhdGUoc2hhZGVy
TW9kdWxlLCBtX29iamVjdEhlYXAsIG1fc3RyZWFtQ29ubmVjdGlvbi5jb3B5UmVmKCksIGlkZW50
aWZpZXIpOwogICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlU2hh
ZGVyTW9kdWxlKTsKIH0KIApAQCAtMTk0LDcgKzIwMyw3IEBAIHZvaWQgUmVtb3RlRGV2aWNlOjpj
cmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgV2ViR1BVOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gY29tcHV0ZVBpcGVsaW5lID0gbV9iYWNr
aW5nLT5jcmVhdGVDb21wdXRlUGlwZWxpbmUoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAgIGF1
dG8gcmVtb3RlQ29tcHV0ZVBpcGVsaW5lID0gUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpjcmVhdGUo
Y29tcHV0ZVBpcGVsaW5lLCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVt
b3RlQ29tcHV0ZVBpcGVsaW5lID0gUmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpjcmVhdGUoY29tcHV0
ZVBpcGVsaW5lLCBtX29iamVjdEhlYXAsIG1fc3RyZWFtQ29ubmVjdGlvbi5jb3B5UmVmKCksIGlk
ZW50aWZpZXIpOwogICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lKTsKIH0KIApAQCAtMjA2LDcgKzIxNSw3IEBAIHZvaWQgUmVtb3RlRGV2
aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBXZWJHUFU6OlJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciYKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byByZW5kZXJQaXBlbGluZSA9IG1f
YmFja2luZy0+Y3JlYXRlUmVuZGVyUGlwZWxpbmUoKmNvbnZlcnRlZERlc2NyaXB0b3IpOwotICAg
IGF1dG8gcmVtb3RlUmVuZGVyUGlwZWxpbmUgPSBSZW1vdGVSZW5kZXJQaXBlbGluZTo6Y3JlYXRl
KHJlbmRlclBpcGVsaW5lLCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVt
b3RlUmVuZGVyUGlwZWxpbmUgPSBSZW1vdGVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKHJlbmRlclBp
cGVsaW5lLCBtX29iamVjdEhlYXAsIG1fc3RyZWFtQ29ubmVjdGlvbi5jb3B5UmVmKCksIGlkZW50
aWZpZXIpOwogICAgIG1fb2JqZWN0SGVhcC5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVtb3RlUmVu
ZGVyUGlwZWxpbmUpOwogfQogCkBAIC0yMTksOCArMjI4LDggQEAgdm9pZCBSZW1vdGVEZXZpY2U6
OmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKGNvbnN0IFdlYkdQVTo6Q29tcHV0ZVBpcGVsaW5l
RGVzY3IKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fYmFja2luZy0+Y3JlYXRlQ29t
cHV0ZVBpcGVsaW5lQXN5bmMoKmNvbnZlcnRlZERlc2NyaXB0b3IsIFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBvYmplY3RIZWFwID0gUmVmIHsgbV9vYmplY3RIZWFwIH0sIGlkZW50aWZp
ZXJdIChSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4mJiBjb21wdXRlUGlwZWxpbmUp
IG11dGFibGUgewotICAgICAgICBhdXRvIHJlbW90ZUNvbXB1dGVQaXBlbGluZSA9IFJlbW90ZUNv
bXB1dGVQaXBlbGluZTo6Y3JlYXRlKGNvbXB1dGVQaXBlbGluZSwgb2JqZWN0SGVhcCwgaWRlbnRp
Zmllcik7CisgICAgbV9iYWNraW5nLT5jcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYygqY29udmVy
dGVkRGVzY3JpcHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIG9iamVjdEhlYXAg
PSBSZWYgeyBtX29iamVjdEhlYXAgfSwgc3RyZWFtQ29ubmVjdGlvbiA9IG1fc3RyZWFtQ29ubmVj
dGlvbi5jb3B5UmVmKCksIGlkZW50aWZpZXJdIChSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBl
bGluZT4mJiBjb21wdXRlUGlwZWxpbmUpIG11dGFibGUgeworICAgICAgICBhdXRvIHJlbW90ZUNv
bXB1dGVQaXBlbGluZSA9IFJlbW90ZUNvbXB1dGVQaXBlbGluZTo6Y3JlYXRlKGNvbXB1dGVQaXBl
bGluZSwgb2JqZWN0SGVhcCwgV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmllcik7
CiAgICAgICAgIG9iamVjdEhlYXAtPmFkZE9iamVjdChpZGVudGlmaWVyLCByZW1vdGVDb21wdXRl
UGlwZWxpbmUpOwogICAgICAgICBjYWxsYmFjaygpOwogICAgIH0pOwpAQCAtMjM1LDggKzI0NCw4
IEBAIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKGNvbnN0IFdl
YkdQVTo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX2JhY2tpbmctPmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoKmNvbnZlcnRlZERlc2NyaXB0
b3IsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBvYmplY3RIZWFwID0gUmVmIHsgbV9v
YmplY3RIZWFwIH0sIGlkZW50aWZpZXJdIChSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5l
PiYmIHJlbmRlclBpcGVsaW5lKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byByZW1vdGVSZW5kZXJQ
aXBlbGluZSA9IFJlbW90ZVJlbmRlclBpcGVsaW5lOjpjcmVhdGUocmVuZGVyUGlwZWxpbmUsIG9i
amVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIG1fYmFja2luZy0+Y3JlYXRlUmVuZGVyUGlwZWxp
bmVBc3luYygqY29udmVydGVkRGVzY3JpcHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIG9iamVjdEhlYXAgPSBSZWYgeyBtX29iamVjdEhlYXAgfSwgc3RyZWFtQ29ubmVjdGlvbiA9
IG1fc3RyZWFtQ29ubmVjdGlvbi5jb3B5UmVmKCksIGlkZW50aWZpZXJdIChSZWY8UEFMOjpXZWJH
UFU6OlJlbmRlclBpcGVsaW5lPiYmIHJlbmRlclBpcGVsaW5lKSBtdXRhYmxlIHsKKyAgICAgICAg
YXV0byByZW1vdGVSZW5kZXJQaXBlbGluZSA9IFJlbW90ZVJlbmRlclBpcGVsaW5lOjpjcmVhdGUo
cmVuZGVyUGlwZWxpbmUsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlk
ZW50aWZpZXIpOwogICAgICAgICBvYmplY3RIZWFwLT5hZGRPYmplY3QoaWRlbnRpZmllciwgcmVt
b3RlUmVuZGVyUGlwZWxpbmUpOwogICAgICAgICBjYWxsYmFjaygpOwogICAgIH0pOwpAQCAtMjUz
LDcgKzI2Miw3IEBAIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVDb21tYW5kRW5jb2Rlcihjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6Q29tbWFuZEVuY29kCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGF1dG8gY29tbWFuZEVuY29kZXIgPSBtX2JhY2tpbmctPmNyZWF0ZUNvbW1h
bmRFbmNvZGVyKCpjb252ZXJ0ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZUNvbW1hbmRF
bmNvZGVyID0gUmVtb3RlQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShjb21tYW5kRW5jb2RlciwgbV9v
YmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAgICBhdXRvIHJlbW90ZUNvbW1hbmRFbmNvZGVyID0g
UmVtb3RlQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShjb21tYW5kRW5jb2RlciwgbV9vYmplY3RIZWFw
LCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJlZigpLCBpZGVudGlmaWVyKTsKICAgICBtX29iamVj
dEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZUNvbW1hbmRFbmNvZGVyKTsKIH0KIApA
QCAtMjY1LDcgKzI3NCw3IEBAIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVSZW5kZXJCdW5kbGVF
bmNvZGVyKGNvbnN0IFdlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlckRlCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gcmVuZGVyQnVuZGxlRW5jb2RlciA9IG1fYmFja2luZy0+Y3JlYXRlUmVu
ZGVyQnVuZGxlRW5jb2RlcigqY29udmVydGVkRGVzY3JpcHRvcik7Ci0gICAgYXV0byByZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyID0gUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6Y3JlYXRlKHJl
bmRlckJ1bmRsZUVuY29kZXIsIG1fb2JqZWN0SGVhcCwgaWRlbnRpZmllcik7CisgICAgYXV0byBy
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyID0gUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6Y3Jl
YXRlKHJlbmRlckJ1bmRsZUVuY29kZXIsIG1fb2JqZWN0SGVhcCwgbV9zdHJlYW1Db25uZWN0aW9u
LmNvcHlSZWYoKSwgaWRlbnRpZmllcik7CiAgICAgbV9vYmplY3RIZWFwLmFkZE9iamVjdChpZGVu
dGlmaWVyLCByZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKTsKIH0KIApAQCAtMjc3LDcgKzI4Niw3
IEBAIHZvaWQgUmVtb3RlRGV2aWNlOjpjcmVhdGVRdWVyeVNldChjb25zdCBXZWJHUFU6OlF1ZXJ5
U2V0RGVzY3JpcHRvciYgZGVzY3JpcHRvciwKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBx
dWVyeVNldCA9IG1fYmFja2luZy0+Y3JlYXRlUXVlcnlTZXQoKmNvbnZlcnRlZERlc2NyaXB0b3Ip
OwotICAgIGF1dG8gcmVtb3RlUXVlcnlTZXQgPSBSZW1vdGVRdWVyeVNldDo6Y3JlYXRlKHF1ZXJ5
U2V0LCBtX29iamVjdEhlYXAsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVtb3RlUXVlcnlTZXQg
PSBSZW1vdGVRdWVyeVNldDo6Y3JlYXRlKHF1ZXJ5U2V0LCBtX29iamVjdEhlYXAsIG1fc3RyZWFt
Q29ubmVjdGlvbi5jb3B5UmVmKCksIGlkZW50aWZpZXIpOwogICAgIG1fb2JqZWN0SGVhcC5hZGRP
YmplY3QoaWRlbnRpZmllciwgcmVtb3RlUXVlcnlTZXQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2UuaAppbmRl
eCA4MTAwM2IwZWRiYzc1YjFhNWExMDdmMzU0OWY4MDZjZDhlZmJlN2MxLi5lNzExMDVmODE2ZDlh
NzllNmExNDZhZmE4ZTk3ZGZlNjRjOTIxMTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlLmgKQEAgLTM5LDYgKzM5
LDEwIEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBEZXZpY2U7CiB9CiAKK25hbWVz
cGFjZSBJUEMgeworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewpAQCAtNjEsMTcgKzY1LDE5IEBAIHN0cnVj
dCBUZXh0dXJlRGVzY3JpcHRvcjsKIGNsYXNzIFJlbW90ZURldmljZSBmaW5hbCA6IHB1YmxpYyBJ
UEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVEZXZpY2U+IGNyZWF0ZShQQUw6OldlYkdQ
VTo6RGV2aWNlJiBkZXZpY2UsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlRGV2aWNlPiBjcmVh
dGUoUEFMOjpXZWJHUFU6OkRldmljZSYgZGV2aWNlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVj
dEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlv
biwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlRGV2aWNlKGRldmljZSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVEZXZpY2UoZGV2aWNlLCBvYmpl
Y3RIZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQog
CiAgICAgflJlbW90ZURldmljZSgpOwogCisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7
CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdQVTo6T2JqZWN0SGVhcDsKIAotICAg
IFJlbW90ZURldmljZShQQUw6OldlYkdQVTo6RGV2aWNlJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwg
V2ViR1BVSWRlbnRpZmllcik7CisgICAgUmVtb3RlRGV2aWNlKFBBTDo6V2ViR1BVOjpEZXZpY2Um
LCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYm
LCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZURldmljZShjb25zdCBSZW1vdGVEZXZp
Y2UmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVEZXZpY2UoUmVtb3RlRGV2aWNlJiYpID0gZGVsZXRl
OwpAQCAtMTExLDYgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkRl
dmljZT4gbV9iYWNraW5nOwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOwor
ICAgIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IG1fc3RyZWFtQ29ubmVjdGlvbjsK
ICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0
dXJlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
RXh0ZXJuYWxUZXh0dXJlLmNwcAppbmRleCAxOGEwZjE1NmYyNjBjYzA4YWQzMTE3ZWM5ZGQxNTAy
ODVmOGEwYzVjLi5lN2Y4YzEyYzQ0NWZhMWI2MTI3NjFkZTRlY2VmYWIyZWI1NWRkNzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4
dGVybmFsVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmUuY3BwCkBAIC0yOCwyMCArMjgsMjkgQEAKIAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUV4dGVybmFsVGV4dHVy
ZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVUV4dGVybmFsVGV4dHVyZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlRXh0
ZXJuYWxUZXh0dXJlOjpSZW1vdGVFeHRlcm5hbFRleHR1cmUoUEFMOjpXZWJHUFU6OkV4dGVybmFs
VGV4dHVyZSYgZXh0ZXJuYWxUZXh0dXJlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZUV4dGVybmFsVGV4dHVyZTo6UmVt
b3RlRXh0ZXJuYWxUZXh0dXJlKFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFs
VGV4dHVyZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICA6IG1fYmFja2luZyhleHRlcm5hbFRleHR1cmUpCiAgICAgLCBtX29iamVj
dEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihXVEZNb3ZlKHN0cmVh
bUNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9z
dHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6
UmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKIH0KIAogUmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjp+UmVtb3RlRXh0ZXJu
YWxUZXh0dXJlKCkgPSBkZWZhdWx0OwogCit2b2lkIFJlbW90ZUV4dGVybmFsVGV4dHVyZTo6c3Rv
cExpc3RlbmluZ0ZvcklQQygpCit7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2
aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUV4dGVybmFsVGV4dHVyZTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7Cit9CisKIHZvaWQgUmVtb3RlRXh0
ZXJuYWxUZXh0dXJlOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKICAgICBtX2JhY2tpbmct
PnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZS5o
CmluZGV4IGRmMGZlM2Y5NGZkNGVlY2I5OThjNWMxMmNmNjg1NzFlMGFmYTY3ZDkuLjdiZGNlN2Jm
YWYzNmJmMzg5MzBlOWFiN2I1YjgyNzUwMWJmMjZiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5h
bFRleHR1cmUuaApAQCAtMzYsNiArMzYsMTAgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNs
YXNzIEV4dGVybmFsVGV4dHVyZTsKIH0KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdl
YkdQVSB7CkBAIC00NSwxNyArNDksMTkgQEAgY2xhc3MgT2JqZWN0SGVhcDsKIGNsYXNzIFJlbW90
ZUV4dGVybmFsVGV4dHVyZSBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxSZW1vdGVFeHRlcm5hbFRleHR1cmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0
dXJlJiBleHRlcm5hbFRleHR1cmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0
dXJlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlKGV4dGVybmFsVGV4dHVyZSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVFeHRlcm5hbFRleHR1cmUoZXh0ZXJuYWxUZXh0
dXJlLCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlRXh0ZXJuYWxUZXh0dXJlKCk7CiAKKyAgICB2
b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
V2ViR1BVOjpPYmplY3RIZWFwOwogCi0gICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlKFBBTDo6V2Vi
R1BVOjpFeHRlcm5hbFRleHR1cmUmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlm
aWVyKTsKKyAgICBSZW1vdGVFeHRlcm5hbFRleHR1cmUoUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4
dHVyZSYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b24+JiYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlKGNv
bnN0IFJlbW90ZUV4dGVybmFsVGV4dHVyZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUV4dGVybmFs
VGV4dHVyZShSZW1vdGVFeHRlcm5hbFRleHR1cmUmJikgPSBkZWxldGU7CkBAIC03MCw2ICs3Niw3
IEBAIHByaXZhdGU6CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZT4gbV9i
YWNraW5nOwogICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFJlZjxJ
UEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IG1fc3RyZWFtQ29ubmVjdGlvbjsKICAgICBXZWJH
UFVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcAppbmRleCBiZjBmMmVl
ZTE3ZjJhMDcyODhkY2QwZTM5NTgxZmE0OTcxYTY4ZGI1Li5hNThjZWIxNzNkN2I4ZWJhZDIwZDNl
MTQ3Y2IyNWRmYWI0MThlMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCkBAIC0yOCw0MiArMjgsMTAxIEBACiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQWRhcHRlci5oIgorI2luY2x1ZGUgIlJlbW90ZUdQ
VU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlR1BVUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVLmg+CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVBZGFwdGVyLmg+CiAKKyNpZiBIQVZFKFdFQkdQVV9JTVBMRU1FTlRBVElPTikKKyNpbXBv
cnQgPHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmg+CisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZUdQVTo6UmVtb3RlR1BVKFBBTDo6V2ViR1BVOjpHUFUm
IGdwdSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCi0gICAgOiBtX2JhY2tpbmcoZ3B1KQotICAgICwgbV9vYmplY3RIZWFwKG9iamVj
dEhlYXApCitSZW1vdGVHUFU6OlJlbW90ZUdQVShXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbmRlcmluZ0JhY2tlbmQsIElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICwgbV93b3JrUXVldWUoSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjpjcmVhdGUoIldlYkdQVSB3b3JrIHF1ZXVlIikpCisgICAgLCBt
X3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGUoZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3RyZWFtKSwgbV93
b3JrUXVldWUpKQorICAgICwgbV9vYmplY3RIZWFwKFdlYkdQVTo6T2JqZWN0SGVhcDo6Y3JlYXRl
KCkpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fcmVuZGVyaW5nQmFj
a2VuZChyZW5kZXJpbmdCYWNrZW5kKQorICAgICwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcihncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLndlYlByb2Nlc3NJZGVudGlmaWVyKCkpCiB7CisgICAgaW5p
dGlhbGl6ZSgpOwogfQogCiBSZW1vdGVHUFU6On5SZW1vdGVHUFUoKSA9IGRlZmF1bHQ7CiAKLXZv
aWQgUmVtb3RlR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVy
T3B0aW9ucyYgb3B0aW9ucywgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYsIFdlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmJiwg
V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmJiwgYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIFJlbW90
ZUdQVTo6aW5pdGlhbGl6ZSgpCit7CisgICAgYXNzZXJ0SXNNYWluUnVuTG9vcCgpOworICAgIG1f
d29ya1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKCkgbXV0
YWJsZSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPndvcmtRdWV1ZUluaXRpYWxpemUoKTsKKyAg
ICB9KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRo
aXMsIE1lc3NhZ2VzOjpSZW1vdGVHUFU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlm
aWVyLnRvVUludDY0KCkpOworfQorCit2b2lkIFJlbW90ZUdQVTo6c3RvcExpc3RlbmluZ0ZvcklQ
QyhSZWY8UmVtb3RlR1BVPiYmIHJlZkZyb21Db25uZWN0aW9uKQoreworICAgIGFzc2VydElzTWFp
blJ1bkxvb3AoKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdl
cyhNZXNzYWdlczo6UmVtb3RlR1BVOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHJlZkZyb21Db25uZWN0aW9uKV0oKSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMt
PndvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUdQVTo6
d29ya1F1ZXVlSW5pdGlhbGl6ZSgpCiB7CisgICAgbV9zdHJlYW1UaHJlYWQucmVzZXQoKTsKKyAg
ICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOworI2lmIEhBVkUoV0VCR1BVX0lNUExF
TUVOVEFUSU9OKQorICAgIGF1dG8gYmFja2luZyA9IFBBTDo6V2ViR1BVOjpHUFVJbXBsOjpjcmVh
dGUoKTsKKyNlbHNlCisgICAgUmVmUHRyPFBBTDo6V2ViR1BVOjpHUFU+IGJhY2tpbmc7CisjZW5k
aWYKKyAgICBpZiAoYmFja2luZykgeworICAgICAgICBtX2JhY2tpbmcgPSBiYWNraW5nLnJlbGVh
c2VOb25OdWxsKCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdQVVByb3h5OjpXYXND
cmVhdGVkKHRydWUsIG1fd29ya1F1ZXVlLT53YWtlVXBTZW1hcGhvcmUoKSkpOworICAgIH0gZWxz
ZQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHUFVQcm94eTo6V2FzQ3JlYXRlZChmYWxz
ZSwgbV93b3JrUXVldWUtPndha2VVcFNlbWFwaG9yZSgpKSk7Cit9CisKK3ZvaWQgUmVtb3RlR1BV
Ojp3b3JrUXVldWVVbmluaXRpYWxpemUoKQoreworICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVh
bVRocmVhZCk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gbnVsbHB0cjsKK30KKwordm9pZCBS
ZW1vdGVHUFU6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRp
b25zJiBvcHRpb25zLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFJlcXVlc3RBZGFwdGVyUmVzcG9uc2U+JiYpPiYm
IGNhbGxiYWNrKQoreworICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CisgICAg
QVNTRVJUKG1fYmFja2luZyk7CisKICAgICBhdXRvIGNvbnZlcnRlZE9wdGlvbnMgPSBtX29iamVj
dEhlYXAtPmNvbnZlcnRGcm9tQmFja2luZyhvcHRpb25zKTsKICAgICBBU1NFUlQoY29udmVydGVk
T3B0aW9ucyk7CiAgICAgaWYgKCFjb252ZXJ0ZWRPcHRpb25zKSB7Ci0gICAgICAgIGNhbGxiYWNr
KFN0cmluZ0ltcGw6OmVtcHR5KCksIHsgeyB9IH0sIHsgfSwgZmFsc2UpOworICAgICAgICBjYWxs
YmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9iYWNr
aW5nLT5yZXF1ZXN0QWRhcHRlcigqY29udmVydGVkT3B0aW9ucywgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIG9iamVjdEhlYXAgPSBtX29iamVjdEhlYXAuY29weVJlZigpLCBpZGVudGlm
aWVyXSAoUmVmUHRyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiYmIGFkYXB0ZXIpIG11dGFibGUgewor
ICAgIG1fYmFja2luZy0+cmVxdWVzdEFkYXB0ZXIoKmNvbnZlcnRlZE9wdGlvbnMsIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBvYmplY3RIZWFwID0gbV9vYmplY3RIZWFwLmNvcHlSZWYo
KSwgc3RyZWFtQ29ubmVjdGlvbiA9IFJlZiB7ICptX3N0cmVhbUNvbm5lY3Rpb24gfSwgaWRlbnRp
Zmllcl0gKFJlZlB0cjxQQUw6OldlYkdQVTo6QWRhcHRlcj4mJiBhZGFwdGVyKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKCFhZGFwdGVyKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhTdHJpbmdJbXBs
OjplbXB0eSgpLCB7IHsgfSB9LCB7IH0sIGZhbHNlKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0
ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgYXV0
byByZW1vdGVBZGFwdGVyID0gUmVtb3RlQWRhcHRlcjo6Y3JlYXRlKCphZGFwdGVyLCBvYmplY3RI
ZWFwLCBpZGVudGlmaWVyKTsKKworICAgICAgICBhdXRvIHJlbW90ZUFkYXB0ZXIgPSBSZW1vdGVB
ZGFwdGVyOjpjcmVhdGUoKmFkYXB0ZXIsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVj
dGlvbiksIGlkZW50aWZpZXIpOwogICAgICAgICBvYmplY3RIZWFwLT5hZGRPYmplY3QoaWRlbnRp
ZmllciwgcmVtb3RlQWRhcHRlcik7CisKICAgICAgICAgYXV0byBuYW1lID0gYWRhcHRlci0+bmFt
ZSgpOwogICAgICAgICBjb25zdCBhdXRvJiBmZWF0dXJlcyA9IGFkYXB0ZXItPmZlYXR1cmVzKCk7
CiAgICAgICAgIGNvbnN0IGF1dG8mIGxpbWl0cyA9IGFkYXB0ZXItPmxpbWl0cygpOwotICAgICAg
ICBjYWxsYmFjayhXVEZNb3ZlKG5hbWUpLCBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzIHsgZmVh
dHVyZXMuZmVhdHVyZXMoKSB9LCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyB7CisgICAgICAgIGNh
bGxiYWNrKHsgeyBXVEZNb3ZlKG5hbWUpLCBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzIHsgZmVh
dHVyZXMuZmVhdHVyZXMoKSB9LCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyB7CiAgICAgICAgICAg
ICBsaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjFEKCksCiAgICAgICAgICAgICBsaW1pdHMubWF4
VGV4dHVyZURpbWVuc2lvbjJEKCksCiAgICAgICAgICAgICBsaW1pdHMubWF4VGV4dHVyZURpbWVu
c2lvbjNEKCksCkBAIC05MCw3ICsxNDksNyBAQCB2b2lkIFJlbW90ZUdQVTo6cmVxdWVzdEFkYXB0
ZXIoY29uc3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIFdlYgogICAg
ICAgICAgICAgbGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWSgpLAogICAgICAgICAgICAg
bGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWigpLAogICAgICAgICAgICAgbGltaXRzLm1h
eENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uKCksCi0gICAgICAgIH0sIGFkYXB0ZXItPmlz
RmFsbGJhY2tBZGFwdGVyKCkpOworICAgICAgICB9LCBhZGFwdGVyLT5pc0ZhbGxiYWNrQWRhcHRl
cigpIH0gfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oCmluZGV4IDMzMTYwYzQ5OWJmNThjMmVjMDA4
YTRiODhmODBlNjc1NzkyZjQ5M2EuLjJlM2JiNjExMmEyMDZjYzljMzc1ZTdiMDJiY2VlNDU5M2Uw
OTY4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlR1BVLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVHUFUuaApAQCAtMjcsMTkgKzI3LDMxIEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCiAjaW5jbHVk
ZSAiU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVP
YmplY3RIZWFwLmgiCiAjaW5jbHVkZSAiV2ViR1BVU3VwcG9ydGVkRmVhdHVyZXMuaCIKICNpbmNs
dWRlICJXZWJHUFVTdXBwb3J0ZWRMaW1pdHMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRBc3NlcnRpb25zLmg+CiAKIG5hbWVz
cGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBHUFU7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xh
c3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2Ns
YXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOworCiBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIE9iamVjdEhlYXA7CiBzdHJ1Y3QgUmVx
dWVzdEFkYXB0ZXJPcHRpb25zOwpAQCAtNDgsMzAgKzYwLDg4IEBAIHN0cnVjdCBSZXF1ZXN0QWRh
cHRlck9wdGlvbnM7CiBjbGFzcyBSZW1vdGVHUFUgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UmVtb3RlR1BVPiBjcmVhdGUoUEFMOjpXZWJHUFU6OkdQVSYgZ3B1LCBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdQVT4gY3JlYXRlKFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllciwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVuZGVyaW5nQmFja2VuZCwgSVBDOjpTdHJl
YW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVtb3RlR1BVKGdwdSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVHUFUoaWRlbnRpZmllciwgZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcywgcmVuZGVyaW5nQmFja2VuZCwgV1RGTW92ZShzdHJlYW0pKSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB+UmVtb3RlR1BVKCk7CiAKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdG
b3JJUEMoUmVmPFJlbW90ZUdQVT4mJiByZWZGcm9tQ29ubmVjdGlvbik7CisKKyAgICBzdHJ1Y3Qg
UmVxdWVzdEFkYXB0ZXJSZXNwb25zZSB7CisgICAgICAgIFN0cmluZyBuYW1lOworICAgICAgICBX
ZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzIGZlYXR1cmVzOworICAgICAgICBXZWJHUFU6OlN1cHBv
cnRlZExpbWl0cyBsaW1pdHM7CisgICAgICAgIGJvb2wgaXNGYWxsYmFja0FkYXB0ZXI7CisKKyAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgZW5jb2RlciA8PCBuYW1lOworICAgICAg
ICAgICAgZW5jb2RlciA8PCBmZWF0dXJlczsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgbGltaXRz
OworICAgICAgICAgICAgZW5jb2RlciA8PCBpc0ZhbGxiYWNrQWRhcHRlcjsKKyAgICAgICAgfQor
CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJl
cXVlc3RBZGFwdGVyUmVzcG9uc2U+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgICAgICB7
CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmFtZTsKKyAgICAgICAgICAgIGRl
Y29kZXIgPj4gbmFtZTsKKyAgICAgICAgICAgIGlmICghbmFtZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6
U3VwcG9ydGVkRmVhdHVyZXM+IGZlYXR1cmVzOworICAgICAgICAgICAgZGVjb2RlciA+PiBmZWF0
dXJlczsKKyAgICAgICAgICAgIGlmICghZmVhdHVyZXMpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJHUFU6OlN1cHBv
cnRlZExpbWl0cz4gbGltaXRzOworICAgICAgICAgICAgZGVjb2RlciA+PiBsaW1pdHM7CisgICAg
ICAgICAgICBpZiAoIWxpbWl0cykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzRmFsbGJhY2tBZGFwdGVyOwor
ICAgICAgICAgICAgZGVjb2RlciA+PiBpc0ZhbGxiYWNrQWRhcHRlcjsKKyAgICAgICAgICAgIGlm
ICghaXNGYWxsYmFja0FkYXB0ZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgICAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpuYW1lKSwgV1RGTW92ZSgqZmVh
dHVyZXMpLCBXVEZNb3ZlKCpsaW1pdHMpLCAqaXNGYWxsYmFja0FkYXB0ZXIgfSB9OworICAgICAg
ICB9CisgICAgfTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViR1BVOjpPYmplY3RI
ZWFwOwogCi0gICAgUmVtb3RlR1BVKFBBTDo6V2ViR1BVOjpHUFUmLCBXZWJHUFU6Ok9iamVjdEhl
YXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVHUFUoV2ViR1BVSWRlbnRpZmllciwg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmLCBJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAKICAgICBSZW1vdGVHUFUoY29uc3QgUmVtb3Rl
R1BVJikgPSBkZWxldGU7CiAgICAgUmVtb3RlR1BVKFJlbW90ZUdQVSYmKSA9IGRlbGV0ZTsKICAg
ICBSZW1vdGVHUFUmIG9wZXJhdG9yPShjb25zdCBSZW1vdGVHUFUmKSA9IGRlbGV0ZTsKICAgICBS
ZW1vdGVHUFUmIG9wZXJhdG9yPShSZW1vdGVHUFUmJikgPSBkZWxldGU7CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKyAgICB2b2lkIHdv
cmtRdWV1ZUluaXRpYWxpemUoKTsKKyAgICB2b2lkIHdvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpOwog
Ci0gICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0
aW9ucyYsIFdlYkdQVUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcmJiwgV2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0
cyYmLCBib29sKT4mJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBib29sIHNlbmQo
VCYmIG1lc3NhZ2UpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zdHJlYW1Db25uZWN0
aW9uLT5jb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBtX2lkZW50aWZpZXIpOwor
ICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0gICAgUmVmPFBBTDo6
V2ViR1BVOjpHUFU+IG1fYmFja2luZzsKLSAgICBSZWY8V2ViR1BVOjpPYmplY3RIZWFwPiBtX29i
amVjdEhlYXA7Ci0gICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgdm9pZCBy
ZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYsIFdlYkdQ
VUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFJl
cXVlc3RBZGFwdGVyUmVzcG9uc2U+JiYpPiYmKTsKKworICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIFJlZjxJUEM6
OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU+IG1fd29ya1F1ZXVlOworICAgIFJlZlB0cjxJUEM6
OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IG1fc3RyZWFtQ29ubmVjdGlvbjsKKyAgICBSZWZQdHI8
UEFMOjpXZWJHUFU6OkdQVT4gbV9iYWNraW5nIFdURl9HVUFSREVEX0JZX0xPQ0sobV9zdHJlYW1U
aHJlYWQpOworICAgIFJlZjxXZWJHUFU6Ok9iamVjdEhlYXA+IG1fb2JqZWN0SGVhcCBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fc3RyZWFtVGhyZWFkKTsKKyAgICBjb25zdCBXZWJHUFVJZGVudGlmaWVy
IG1faWRlbnRpZmllcjsKKyAgICBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gbV9yZW5kZXJp
bmdCYWNrZW5kOworICAgIE5PX1VOSVFVRV9BRERSRVNTIFRocmVhZEFzc2VydGlvbiBtX3N0cmVh
bVRocmVhZDsKKyAgICBjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nl
c3NJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BV
Lm1lc3NhZ2VzLmluCmluZGV4IGU0ZDk1MjY1YWE1ZDAwMzg5NGFjODA2MjkxNDAwMGEyNGNiNTNl
MjkuLmY5Yzg1YmI4ODk3ZDhiOTFiODIxMGMyYjNiMDgwOWZmMjkzNzg1NWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlR1BVLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVHUFUgTm90UmVmQ291bnRlZCBTdHJlYW0gewotICAg
IHZvaWQgUmVxdWVzdEFkYXB0ZXIoV2ViS2l0OjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9u
cyBvcHRpb25zLCBXZWJLaXQ6OldlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKFN0cmlu
ZyBuYW1lLCBXZWJLaXQ6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMgc3VwcG9ydGVkRmVhdHVy
ZXMsIFdlYktpdDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMgc3VwcG9ydGVkTGltaXRzLCBib29s
IGlzRmFsbGJhY2tBZGFwdGVyKSBTeW5jaHJvbm91cworICAgIHZvaWQgUmVxdWVzdEFkYXB0ZXIo
V2ViS2l0OjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyBvcHRpb25zLCBXZWJLaXQ6Oldl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1v
dGVHUFU6OlJlcXVlc3RBZGFwdGVyUmVzcG9uc2U+IHJlc3BvbnNlKSBTeW5jaHJvbm91cwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5jcHAKaW5kZXggZjA2NDI3Y2Q2
ZDRmOTlmY2M4OTZiMzNlYzM5MWY4YjhmZDI0N2M0Yi4uYjcyNWVkMmY2ZjQ4OGVmZWZmNGYwZGNh
MTdiMGU2OTJkN2QyYzUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dC5jcHAKQEAg
LTI4LDIwICsyOCwyOSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAi
UmVtb3RlUGlwZWxpbmVMYXlvdXRNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSA8cGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotUmVtb3RlUGlwZWxpbmVMYXlvdXQ6OlJlbW90ZVBpcGVsaW5lTGF5b3V0KFBBTDo6
V2ViR1BVOjpQaXBlbGluZUxheW91dCYgcGlwZWxpbmVMYXlvdXQsIFdlYkdQVTo6T2JqZWN0SGVh
cCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlUGlwZWxp
bmVMYXlvdXQ6OlJlbW90ZVBpcGVsaW5lTGF5b3V0KFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91
dCYgcGlwZWxpbmVMYXlvdXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcocGlwZWxpbmVMYXlvdXQpCiAgICAg
LCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihXVEZN
b3ZlKHN0cmVhbUNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7
CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBN
ZXNzYWdlczo6UmVtb3RlUGlwZWxpbmVMYXlvdXQ6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9p
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiBSZW1vdGVQaXBlbGluZUxheW91dDo6flJlbW90
ZVBpcGVsaW5lTGF5b3V0KCkgPSBkZWZhdWx0OwogCit2b2lkIFJlbW90ZVBpcGVsaW5lTGF5b3V0
OjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKK3sKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BS
ZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlUGlwZWxpbmVMYXlvdXQ6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworfQorCiB2b2lkIFJlbW90
ZVBpcGVsaW5lTGF5b3V0OjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKICAgICBtX2JhY2tp
bmctPnNldExhYmVsKFdURk1vdmUobGFiZWwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXQu
aAppbmRleCBkY2NlMWI5NWEwZjAzNjg1MmQwOTVlNWM0NzI4NzY2ZTgyYzM3YjI5Li40YzUwYjU2
OGIxODdjNzIyYTM2NzA3M2QxOWJmYWVhMzY0NDQ0M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGlu
ZUxheW91dC5oCkBAIC0zNiw2ICszNiwxMCBAQCBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogY2xh
c3MgUGlwZWxpbmVMYXlvdXQ7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJH
UFUgewpAQCAtNDUsMTcgKzQ5LDE5IEBAIGNsYXNzIE9iamVjdEhlYXA7CiBjbGFzcyBSZW1vdGVQ
aXBlbGluZUxheW91dCBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxS
ZW1vdGVQaXBlbGluZUxheW91dD4gY3JlYXRlKFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYg
cGlwZWxpbmVMYXlvdXQsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUGlwZWxpbmVMYXlvdXQ+
IGNyZWF0ZShQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0LCBXZWJH
UFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUGlwZWxpbmVMYXlvdXQocGlw
ZWxpbmVMYXlvdXQsIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlUGlwZWxpbmVMYXlvdXQocGlwZWxpbmVMYXlvdXQsIG9iamVjdEhl
YXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbiksIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIH5SZW1vdGVQaXBlbGluZUxheW91dCgpOwogCisgICAgdm9pZCBzdG9wTGlzdGVu
aW5nRm9ySVBDKCk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdQVTo6T2JqZWN0
SGVhcDsKIAotICAgIFJlbW90ZVBpcGVsaW5lTGF5b3V0KFBBTDo6V2ViR1BVOjpQaXBlbGluZUxh
eW91dCYsIFdlYkdQVTo6T2JqZWN0SGVhcCYsIFdlYkdQVUlkZW50aWZpZXIpOworICAgIFJlbW90
ZVBpcGVsaW5lTGF5b3V0KFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYsIFdlYkdQVTo6T2Jq
ZWN0SGVhcCYsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYsIFdlYkdQVUlkZW50
aWZpZXIpOwogCiAgICAgUmVtb3RlUGlwZWxpbmVMYXlvdXQoY29uc3QgUmVtb3RlUGlwZWxpbmVM
YXlvdXQmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVQaXBlbGluZUxheW91dChSZW1vdGVQaXBlbGlu
ZUxheW91dCYmKSA9IGRlbGV0ZTsKQEAgLTcwLDYgKzc2LDcgQEAgcHJpdmF0ZToKIAogICAgIFJl
ZjxQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQ+IG1fYmFja2luZzsKICAgICBXZWJHUFU6Ok9i
amVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVF1ZXJ5U2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3BwCmluZGV4IDBmNjA2NTAwMDA4Yjk4N2Y4NmY1
YTZhYjVkZWMzMWU2ZDliNWNmYTkuLjg4MjA3MGNmNmQzNjkyMmFkYTEyMWQ3ZmMyYzg0ZTYyYTJh
MzIxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUXVlcnlTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQuY3BwCkBAIC0yOCwyMCArMjgsMjkgQEAKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZVF1ZXJ5U2V0TWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BV
T2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlT
ZXQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVF1ZXJ5U2V0OjpSZW1vdGVRdWVy
eVNldChQQUw6OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5U2V0LCBXZWJHUFU6Ok9iamVjdEhlYXAm
IG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZVF1ZXJ5U2V0
OjpSZW1vdGVRdWVyeVNldChQQUw6OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5U2V0LCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+
JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDog
bV9iYWNraW5nKHF1ZXJ5U2V0KQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAg
LCBtX3N0cmVhbUNvbm5lY3Rpb24oV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSkKICAgICAsIG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRS
ZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZVF1ZXJ5U2V0OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogUmVtb3RlUXVl
cnlTZXQ6On5SZW1vdGVRdWVyeVNldCgpID0gZGVmYXVsdDsKIAordm9pZCBSZW1vdGVRdWVyeVNl
dDo6c3RvcExpc3RlbmluZ0ZvcklQQygpCit7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9w
UmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZVF1ZXJ5U2V0OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKwogdm9pZCBSZW1vdGVRdWVy
eVNldDo6ZGVzdHJveSgpCiB7CiAgICAgbV9iYWNraW5nLT5kZXN0cm95KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5
U2V0LmgKaW5kZXggZTMwN2ZkYzdmMGRlYjZjYTU2OTEyNjRmNWUxMDUzZjUzODRhOTNlZC4uNGZi
Zjk4Zjk2YjVmMGE0MWQzNjZlNzViNTJjZjcyZmZkZWM5YmE0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXQu
aApAQCAtMzYsNiArMzYsMTAgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIFF1ZXJ5
U2V0OwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb247
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKQEAgLTQ1LDE3
ICs0OSwxOSBAQCBjbGFzcyBPYmplY3RIZWFwOwogY2xhc3MgUmVtb3RlUXVlcnlTZXQgZmluYWwg
OiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUXVlcnlTZXQ+IGNyZWF0
ZShQQUw6OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5U2V0LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9i
amVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJl
bW90ZVF1ZXJ5U2V0PiBjcmVhdGUoUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JiBxdWVyeVNldCwgV2Vi
R1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXJ5U2V0KHF1ZXJ5U2V0
LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW90ZVF1ZXJ5U2V0KHF1ZXJ5U2V0LCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5l
Y3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlUXVlcnlT
ZXQoKTsKIAorICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOworCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBXZWJHUFU6Ok9iamVjdEhlYXA7CiAKLSAgICBSZW1vdGVRdWVyeVNldChQ
QUw6OldlYkdQVTo6UXVlcnlTZXQmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlm
aWVyKTsKKyAgICBSZW1vdGVRdWVyeVNldChQQUw6OldlYkdQVTo6UXVlcnlTZXQmLCBXZWJHUFU6
Ok9iamVjdEhlYXAmLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmLCBXZWJHUFVJ
ZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVF1ZXJ5U2V0KGNvbnN0IFJlbW90ZVF1ZXJ5U2V0Jikg
PSBkZWxldGU7CiAgICAgUmVtb3RlUXVlcnlTZXQoUmVtb3RlUXVlcnlTZXQmJikgPSBkZWxldGU7
CkBAIC03Miw2ICs3OCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlF1ZXJ5
U2V0PiBtX2JhY2tpbmc7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7Cisg
ICAgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwog
ICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmNwcApp
bmRleCBmZmFhNjZkNmIwM2QzYjcyMjQzMjFhN2Q1YzcxMDE1Yzc2MTE5NDQwLi42ZmVmMDNjODdh
NjIyZDBhYTc1MGFkNjlhM2E3ODY5ZDc1ZmFjN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlLmNwcApAQCAtMjgs
MjAgKzI4LDI5IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1v
dGVRdWV1ZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVVF1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVRdWV1ZTo6
UmVtb3RlUXVldWUoUEFMOjpXZWJHUFU6OlF1ZXVlJiBxdWV1ZSwgV2ViR1BVOjpPYmplY3RIZWFw
JiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVRdWV1ZTo6
UmVtb3RlUXVldWUoUEFMOjpXZWJHUFU6OlF1ZXVlJiBxdWV1ZSwgV2ViR1BVOjpPYmplY3RIZWFw
JiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmIHN0cmVhbUNv
bm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhx
dWV1ZSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25u
ZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKIHsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2Fn
ZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVRdWV1ZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIFJlbW90ZVF1ZXVlOjp+UmVtb3RlUXVldWUo
KSA9IGRlZmF1bHQ7CiAKK3ZvaWQgUmVtb3RlUXVldWU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQor
eworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2Vz
OjpSZW1vdGVRdWV1ZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50
NjQoKSk7Cit9CisKIHZvaWQgUmVtb3RlUXVldWU6OnN1Ym1pdChWZWN0b3I8V2ViR1BVSWRlbnRp
Zmllcj4mJiBjb21tYW5kQnVmZmVycykKIHsKICAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4+IGNvbnZlcnRlZENvbW1hbmRCdWZmZXJz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVRdWV1ZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVRdWV1ZS5oCmluZGV4IDhmNDE3NmE2YTQzYWI4YzczZWQ0ZjdkZjhkMjhmM2M1MWY1NmRl
YTYuLmMzY2JmYzk2MzM0NTEwZGI4MjBhNjg1NDNmOTJjOTZlMjAyZjEzMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVl
LmgKQEAgLTQxLDYgKzQxLDEwIEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBRdWV1
ZTsKIH0KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOwor
fQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CkBAIC01NCwxNyAr
NTgsMTkgQEAgY2xhc3MgT2JqZWN0SGVhcDsKIGNsYXNzIFJlbW90ZVF1ZXVlIGZpbmFsIDogcHVi
bGljIElQQzo6U3RyZWFtTWVzc2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVF1ZXVlPiBjcmVhdGUoUEFMOjpX
ZWJHUFU6OlF1ZXVlJiBxdWV1ZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVRdWV1ZT4gY3Jl
YXRlKFBBTDo6V2ViR1BVOjpRdWV1ZSYgcXVldWUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0
SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9u
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW1vdGVRdWV1ZShxdWV1ZSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVRdWV1ZShxdWV1ZSwgb2JqZWN0SGVh
cCwgV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgflJlbW90ZVF1ZXVlKCk7CiAKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMo
KTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViR1BVOjpPYmplY3RIZWFwOwogCi0g
ICAgUmVtb3RlUXVldWUoUEFMOjpXZWJHUFU6OlF1ZXVlJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwg
V2ViR1BVSWRlbnRpZmllcik7CisgICAgUmVtb3RlUXVldWUoUEFMOjpXZWJHUFU6OlF1ZXVlJiwg
V2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwg
V2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVRdWV1ZShjb25zdCBSZW1vdGVRdWV1ZSYp
ID0gZGVsZXRlOwogICAgIFJlbW90ZVF1ZXVlKFJlbW90ZVF1ZXVlJiYpID0gZGVsZXRlOwpAQCAt
OTksNiArMTA1LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UXVldWU+IG1f
YmFja2luZzsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1fb2JqZWN0SGVhcDsKKyAgICBSZWY8
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVhbUNvbm5lY3Rpb247CiAgICAgV2Vi
R1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRs
ZS5jcHAKaW5kZXggNWFkNWRjN2FmMDAzYWIxZmIzNzg5ZjlmNjNmYWU5NjQyY2UxNjk5Yy4uZTVk
NmQyNWVlZTNlODVhNGY3ZGE3YzZjOGEyM2IwZGNkOWI4ZWU5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyQnVuZGxlLmNwcApAQCAtMjgsMjAgKzI4LDI5IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJCdW5kbGVNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgi
CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGUuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVJlbmRlckJ1bmRsZTo6UmVtb3RlUmVuZGVyQnVu
ZGxlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmIHJlbmRlckJ1bmRsZSwgV2ViR1BVOjpPYmpl
Y3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVS
ZW5kZXJCdW5kbGU6OlJlbW90ZVJlbmRlckJ1bmRsZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxl
JiByZW5kZXJCdW5kbGUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcocmVuZGVyQnVuZGxlKQogICAgICwgbV9v
YmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oV1RGTW92ZShz
dHJlYW1Db25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAg
IG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlckJ1bmRsZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKSk7CiB9CiAKIFJlbW90ZVJlbmRlckJ1bmRsZTo6flJlbW90ZVJlbmRlckJ1
bmRsZSgpID0gZGVmYXVsdDsKIAordm9pZCBSZW1vdGVSZW5kZXJCdW5kbGU6OnN0b3BMaXN0ZW5p
bmdGb3JJUEMoKQoreworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3Nh
Z2VzKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworfQorCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZTo6
c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7CiAgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZN
b3ZlKGxhYmVsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGUuaAppbmRleCAyMDJjODIyZjM1MWY4
ZmE4NWY2MDBhOGQ0MjU5NGM0ZmE4MjVlZjQzLi5kNThhY2QwZTk4ZDhlNDZkNTAyMmY3YjBlNWFk
NjE2Mzc0Y2UxODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlLmgKQEAgLTM2LDYgKzM2LDEw
IEBAIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiBjbGFzcyBSZW5kZXJCdW5kbGU7CiB9CiAKK25h
bWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewpAQCAtNDUsMTcgKzQ5LDE5IEBAIGNs
YXNzIE9iamVjdEhlYXA7CiBjbGFzcyBSZW1vdGVSZW5kZXJCdW5kbGUgZmluYWwgOiBwdWJsaWMg
SVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlPiBjcmVhdGUoUEFM
OjpXZWJHUFU6OlJlbmRlckJ1bmRsZSYgcmVuZGVyQnVuZGxlLCBXZWJHUFU6Ok9iamVjdEhlYXAm
IG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVm
PFJlbW90ZVJlbmRlckJ1bmRsZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmIHJl
bmRlckJ1bmRsZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJl
bmRlckJ1bmRsZShyZW5kZXJCdW5kbGUsIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyQnVuZGxlKHJlbmRlckJ1bmRsZSwg
b2JqZWN0SGVhcCwgV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmllcikpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlckJ1bmRsZSgpOwogCisgICAgdm9pZCBzdG9w
TGlzdGVuaW5nRm9ySVBDKCk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdQVTo6
T2JqZWN0SGVhcDsKIAotICAgIFJlbW90ZVJlbmRlckJ1bmRsZShQQUw6OldlYkdQVTo6UmVuZGVy
QnVuZGxlJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAgUmVt
b3RlUmVuZGVyQnVuZGxlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUmLCBXZWJHUFU6Ok9iamVj
dEhlYXAmLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmLCBXZWJHUFVJZGVudGlm
aWVyKTsKIAogICAgIFJlbW90ZVJlbmRlckJ1bmRsZShjb25zdCBSZW1vdGVSZW5kZXJCdW5kbGUm
KSA9IGRlbGV0ZTsKICAgICBSZW1vdGVSZW5kZXJCdW5kbGUoUmVtb3RlUmVuZGVyQnVuZGxlJiYp
ID0gZGVsZXRlOwpAQCAtNzAsNiArNzYsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmPFBBTDo6V2Vi
R1BVOjpSZW5kZXJCdW5kbGU+IG1fYmFja2luZzsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1f
b2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVh
bUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyLmNwcAppbmRleCA3MzM3Njk5NDUw
MWNjZjhiYzhiYzVhOWQ4YmQ1MDgwNmJiZGI1ZTVmLi4wZGMyZTk2OGNiYTEyNjljMzUxYmRiMWFk
N2M0OWExYmM5Yzc0MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rl
ci5jcHAKQEAgLTI5LDIxICsyOSwzMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlckJ1bmRsZS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJXZWJHUFVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVSZW5kZXJCdW5kbGUuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIoUEFMOjpX
ZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlcihQQUw6Oldl
YkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYgcmVuZGVyQnVuZGxlRW5jb2RlciwgV2ViR1BVOjpP
YmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYm
IHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1f
YmFja2luZyhyZW5kZXJCdW5kbGVFbmNvZGVyKQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhl
YXApCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSkK
ICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0
KCkpOwogfQogCiBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjp+UmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2RlcigpID0gZGVmYXVsdDsKIAordm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpz
dG9wTGlzdGVuaW5nRm9ySVBDKCkKK3sKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNl
aXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7Cit9CisKIHZvaWQgUmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0UGlwZWxpbmUoV2ViR1BVSWRlbnRpZmllciByZW5k
ZXJQaXBlbGluZSkKIHsKICAgICBhdXRvIGNvbnZlcnRlZFJlbmRlclBpcGVsaW5lID0gbV9vYmpl
Y3RIZWFwLmNvbnZlcnRSZW5kZXJQaXBlbGluZUZyb21CYWNraW5nKHJlbmRlclBpcGVsaW5lKTsK
QEAgLTE0Miw3ICsxNTEsNyBAQCB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OmZpbmlz
aChjb25zdCBXZWJHUFU6OlJlbmRlckJ1bmRsZURlc2NyaXB0b3ImIGRlcwogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvIHJlbmRlckJ1bmRsZSA9IG1fYmFja2luZy0+ZmluaXNoKCpjb252ZXJ0
ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZVJlbmRlckJ1bmRsZSA9IFJlbW90ZVJlbmRl
ckJ1bmRsZTo6Y3JlYXRlKHJlbmRlckJ1bmRsZSwgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsK
KyAgICBhdXRvIHJlbW90ZVJlbmRlckJ1bmRsZSA9IFJlbW90ZVJlbmRlckJ1bmRsZTo6Y3JlYXRl
KHJlbmRlckJ1bmRsZSwgbV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJlZigp
LCBpZGVudGlmaWVyKTsKICAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJl
bW90ZVJlbmRlckJ1bmRsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlci5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyLmgKaW5kZXggMWQ0MTI0M2E1NTJjYzA1ZGUwOWE5YTNhZWM1OTRkMTYyZTVjOWRiMi4uZGFl
MDcwNWE0NDQyZjA3MzEyMTM3NjA5MWVlYjUyNjA1Y2I2NWI1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVSZW5kZXJCdW5kbGVFbmNvZGVyLmgKQEAgLTM4LDYgKzM4LDEwIEBAIG5hbWVzcGFjZSBQQUw6
OldlYkdQVSB7CiBjbGFzcyBSZW5kZXJCdW5kbGVFbmNvZGVyOwogfQogCituYW1lc3BhY2UgSVBD
IHsKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKQEAgLTQ4LDE3ICs1MiwxOSBAQCBzdHJ1Y3QgUmVuZGVy
QnVuZGxlRGVzY3JpcHRvcjsKIGNsYXNzIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXIgZmluYWwg
OiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2Rlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiByZW5kZXJCdW5k
bGVFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI+
IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciYgcmVuZGVyQnVuZGxlRW5j
b2RlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXIocmVuZGVyQnVuZGxlRW5jb2Rlciwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVy
KHJlbmRlckJ1bmRsZUVuY29kZXIsIG9iamVjdEhlYXAsIFdURk1vdmUoc3RyZWFtQ29ubmVjdGlv
biksIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB+UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rl
cigpOwogCisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIFdlYkdQVTo6T2JqZWN0SGVhcDsKIAotICAgIFJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXImLCBXZWJHUFU6Ok9iamVj
dEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVy
KFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwg
UmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7CiAK
ICAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKGNvbnN0IFJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXImKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyKFJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXImJikgPSBkZWxldGU7CkBAIC05Nyw2ICsxMDMsNyBAQCBwcml2YXRl
OgogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyPiBtX2JhY2tpbmc7
CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyLmNwcAppbmRleCBmYzVlYzAwNjljNTEyNTNiZmQ4YmEzNWY1YmEzNmM3ZGI0Mzg4OGRmLi42
MmQwY2E3NWVhMmI2ODAyNzljNTY1MmE5YmYzYzgyYzIzYmExZjIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVJlbmRlclBhc3NFbmNvZGVyLmNwcApAQCAtMjgsMjAgKzI4LDI5IEBACiAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlck1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldl
YkdQVU9iamVjdEhlYXAuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJl
bmRlclBhc3NFbmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVSZW5kZXJQ
YXNzRW5jb2Rlcjo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlclBh
c3NFbmNvZGVyJiByZW5kZXJQYXNzRW5jb2RlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RI
ZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
cjo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVy
JiByZW5kZXJQYXNzRW5jb2RlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1fYmFja2luZyhyZW5kZXJQYXNzRW5jb2RlcikK
ICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9u
KFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKIHsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRo
aXMsIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIFJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyOjp+UmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgUmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXI6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQoreworICAgIG1fc3RyZWFt
Q29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQ
YXNzRW5jb2Rlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQo
KSk7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKFdlYkdQ
VUlkZW50aWZpZXIgcmVuZGVyUGlwZWxpbmUpCiB7CiAgICAgYXV0byBjb252ZXJ0ZWRSZW5kZXJQ
aXBlbGluZSA9IG1fb2JqZWN0SGVhcC5jb252ZXJ0UmVuZGVyUGlwZWxpbmVGcm9tQmFja2luZyhy
ZW5kZXJQaXBlbGluZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyLmgKaW5kZXgg
Y2UwYTRjOTRlODFiN2I2NGQ4YmFiODU5NWJlYzQ5ZjAyMjE5N2NlOS4uZjJmNTQ1MWNlZmRkNWQz
YWI4NzgwNmZjNjI1NDYxMjA3OTJkY2Q3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXIuaApAQCAtMzksNiArMzksMTAgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNz
IFJlbmRlclBhc3NFbmNvZGVyOwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgV2Vi
R1BVIHsKQEAgLTQ4LDE3ICs1MiwxOSBAQCBjbGFzcyBPYmplY3RIZWFwOwogY2xhc3MgUmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0ZShQQUw6OldlYkdQVTo6UmVuZGVyUGFz
c0VuY29kZXImIHJlbmRlclBhc3NFbmNvZGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhl
YXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiBy
ZW5kZXJQYXNzRW5jb2RlciwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyKHJlbmRlclBhc3NFbmNvZGVyLCBvYmplY3RIZWFwLCBpZGVu
dGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyKHJlbmRlclBhc3NFbmNvZGVyLCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5l
Y3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgflJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyKCk7CiAKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKKwogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgV2ViR1BVOjpPYmplY3RIZWFwOwogCi0gICAgUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXIoUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RI
ZWFwJiwgV2ViR1BVSWRlbnRpZmllcik7CisgICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXIoUEFM
OjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBS
ZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcihjb25zdCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlciYpID0g
ZGVsZXRlOwogICAgIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyKFJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyJiYpID0gZGVsZXRlOwpAQCAtMTE0LDYgKzEyMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8
UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPiBtX2JhY2tpbmc7CiAgICAgV2ViR1BVOjpP
YmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVj
dGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlm
aWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmNwcAppbmRleCBjYjAwMTlj
NGJmOTk3OWU3Zjc5M2I0ODQxNzk4ZGUyMmZlYWRiMThlLi4yY2U2ODA1MDE5NTIwYzY4ZjQ0OWUz
YjRlZjFlMjg0ZGE5YTNhN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lLmNwcApA
QCAtMjksMjUgKzI5LDM0IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAi
UmVtb3RlQmluZEdyb3VwTGF5b3V0LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyUGlwZWxpbmVN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJXZWJHUFVPYmplY3RIZWFwLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVCaW5kR3JvdXBMYXlvdXQuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVSZW5kZXJQ
aXBlbGluZTo6UmVtb3RlUmVuZGVyUGlwZWxpbmUoUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5l
JiByZW5kZXJQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVSZW5kZXJQaXBlbGluZTo6UmVtb3RlUmVuZGVy
UGlwZWxpbmUoUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSwgV2Vi
R1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICA6IG1fYmFja2luZyhyZW5kZXJQaXBlbGluZSkKICAgICAsIG1fb2JqZWN0SGVhcChvYmplY3RI
ZWFwKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFtQ29ubmVjdGlvbikp
CiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX3N0cmVhbUNvbm5lY3Rp
b24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQ
aXBlbGluZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7
CiB9CiAKIFJlbW90ZVJlbmRlclBpcGVsaW5lOjp+UmVtb3RlUmVuZGVyUGlwZWxpbmUoKSA9IGRl
ZmF1bHQ7CiAKK3ZvaWQgUmVtb3RlUmVuZGVyUGlwZWxpbmU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMo
KQoreworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJQaXBlbGluZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50
aWZpZXIudG9VSW50NjQoKSk7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyUGlwZWxpbmU6OmdldEJp
bmRHcm91cExheW91dCh1aW50MzJfdCBpbmRleCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogewogICAgIGF1dG8gYmluZEdyb3VwTGF5b3V0ID0gbV9iYWNraW5nLT5nZXRCaW5kR3JvdXBM
YXlvdXQoaW5kZXgpOwotICAgIGF1dG8gcmVtb3RlQmluZEdyb3VwTGF5b3V0ID0gUmVtb3RlQmlu
ZEdyb3VwTGF5b3V0OjpjcmVhdGUoYmluZEdyb3VwTGF5b3V0LCBtX29iamVjdEhlYXAsIGlkZW50
aWZpZXIpOworICAgIGF1dG8gcmVtb3RlQmluZEdyb3VwTGF5b3V0ID0gUmVtb3RlQmluZEdyb3Vw
TGF5b3V0OjpjcmVhdGUoYmluZEdyb3VwTGF5b3V0LCBtX29iamVjdEhlYXAsIG1fc3RyZWFtQ29u
bmVjdGlvbi5jb3B5UmVmKCksIGlkZW50aWZpZXIpOwogICAgIG1fb2JqZWN0SGVhcC5hZGRPYmpl
Y3QoaWRlbnRpZmllciwgcmVtb3RlQmluZEdyb3VwTGF5b3V0KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBl
bGluZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVS
ZW5kZXJQaXBlbGluZS5oCmluZGV4IGY4ODljODlhMWZhYWQzZGYyMWU4YTkzN2FjNjIwMGY1MmNl
YWNjNGMuLjViNzBlMGJmZGZlMmY1MWMyMWU1MzI3MmJkNzFiOWMzZDA3NjBmYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
UGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVJlbmRlclBpcGVsaW5lLmgKQEAgLTM2LDYgKzM2LDEwIEBAIG5hbWVzcGFjZSBQQUw6
OldlYkdQVSB7CiBjbGFzcyBSZW5kZXJQaXBlbGluZTsKIH0KIAorbmFtZXNwYWNlIElQQyB7Citj
bGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
bmFtZXNwYWNlIFdlYkdQVSB7CkBAIC00NSwxNyArNDksMTkgQEAgY2xhc3MgT2JqZWN0SGVhcDsK
IGNsYXNzIFJlbW90ZVJlbmRlclBpcGVsaW5lIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVz
c2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlJl
bmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RI
ZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVS
ZW5kZXJQaXBlbGluZT4gY3JlYXRlKFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVy
UGlwZWxpbmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFt
U2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5k
ZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZSwgb2JqZWN0SGVhcCwgaWRlbnRpZmllcikpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBl
bGluZSwgb2JqZWN0SGVhcCwgV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSwgaWRlbnRpZmllcikp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlclBpcGVsaW5lKCk7CiAKKyAgICB2
b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
V2ViR1BVOjpPYmplY3RIZWFwOwogCi0gICAgUmVtb3RlUmVuZGVyUGlwZWxpbmUoUEFMOjpXZWJH
UFU6OlJlbmRlclBpcGVsaW5lJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRlbnRpZmll
cik7CisgICAgUmVtb3RlUmVuZGVyUGlwZWxpbmUoUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5l
JiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4m
JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJQaXBlbGluZShjb25zdCBS
ZW1vdGVSZW5kZXJQaXBlbGluZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZVJlbmRlclBpcGVsaW5l
KFJlbW90ZVJlbmRlclBpcGVsaW5lJiYpID0gZGVsZXRlOwpAQCAtNzIsNiArNzgsNyBAQCBwcml2
YXRlOgogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4gbV9iYWNraW5nOwog
ICAgIFdlYkdQVTo6T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFJlZjxJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb24+IG1fc3RyZWFtQ29ubmVjdGlvbjsKICAgICBXZWJHUFVJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXIuY3BwCmluZGV4IDZmYzMyMTEz
MTdiNjVjY2I1Yjg3N2QxMTgxMDQ1YWE4YWQ2ZDExY2UuLjJjMDBiZDUzMGRkOTFkNmEwZTAyODAw
MTI5YTU3OGQxNTY3OWQ0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmNwcApAQCAtMjgsMjAgKzI4LDI5
IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVTYW1wbGVy
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVU2FtcGxlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlU2FtcGxlcjo6UmVt
b3RlU2FtcGxlcihQQUw6OldlYkdQVTo6U2FtcGxlciYgc2FtcGxlciwgV2ViR1BVOjpPYmplY3RI
ZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVTYW1w
bGVyOjpSZW1vdGVTYW1wbGVyKFBBTDo6V2ViR1BVOjpTYW1wbGVyJiBzYW1wbGVyLCBXZWJHUFU6
Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+
JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDog
bV9iYWNraW5nKHNhbXBsZXIpCiAgICAgLCBtX29iamVjdEhlYXAob2JqZWN0SGVhcCkKKyAgICAs
IG1fc3RyZWFtQ29ubmVjdGlvbihXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pKQogICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJl
Y2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlU2FtcGxlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIFJlbW90ZVNhbXBs
ZXI6On5SZW1vdGVTYW1wbGVyKCkgPSBkZWZhdWx0OwogCit2b2lkIFJlbW90ZVNhbXBsZXI6OnN0
b3BMaXN0ZW5pbmdGb3JJUEMoKQoreworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2Vp
dmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKwogdm9pZCBSZW1vdGVTYW1wbGVyOjpz
ZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKICAgICBtX2JhY2tpbmctPnNldExhYmVsKFdURk1v
dmUobGFiZWwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlU2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyLmgKaW5kZXggZTc2OWE2NDNkOGZmMDhjM2ZhN2ExOTZk
NTY4NjFjMjAzNDZiNjBhMC4uNDQyM2Q5NzA3ZmQ2YmNmZmRkMDBiMjEyMWEzY2VjNjdlNGJmZjNl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVTYW1wbGVyLmgKQEAgLTM2LDYgKzM2LDEwIEBAIG5hbWVzcGFjZSBQQUw6Oldl
YkdQVSB7CiBjbGFzcyBTYW1wbGVyOwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2Ug
V2ViR1BVIHsKQEAgLTQ1LDE3ICs0OSwxOSBAQCBjbGFzcyBPYmplY3RIZWFwOwogY2xhc3MgUmVt
b3RlU2FtcGxlciBmaW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1v
dGVTYW1wbGVyPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlNhbXBsZXImIHNhbXBsZXIsIFdlYkdQVTo6
T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAg
IHN0YXRpYyBSZWY8UmVtb3RlU2FtcGxlcj4gY3JlYXRlKFBBTDo6V2ViR1BVOjpTYW1wbGVyJiBz
YW1wbGVyLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJlZjxJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlU2FtcGxl
cihzYW1wbGVyLCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZVNhbXBsZXIoc2FtcGxlciwgb2JqZWN0SGVhcCwgV1RGTW92ZShzdHJl
YW1Db25uZWN0aW9uKSwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90
ZVNhbXBsZXIoKTsKIAorICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOworCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBXZWJHUFU6Ok9iamVjdEhlYXA7CiAKLSAgICBSZW1vdGVTYW1w
bGVyKFBBTDo6V2ViR1BVOjpTYW1wbGVyJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgV2ViR1BVSWRl
bnRpZmllcik7CisgICAgUmVtb3RlU2FtcGxlcihQQUw6OldlYkdQVTo6U2FtcGxlciYsIFdlYkdQ
VTo6T2JqZWN0SGVhcCYsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYsIFdlYkdQ
VUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlU2FtcGxlcihjb25zdCBSZW1vdGVTYW1wbGVyJikg
PSBkZWxldGU7CiAgICAgUmVtb3RlU2FtcGxlcihSZW1vdGVTYW1wbGVyJiYpID0gZGVsZXRlOwpA
QCAtNzAsNiArNzYsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpTYW1wbGVy
PiBtX2JhY2tpbmc7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAg
UmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAg
IFdlYkdQVUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJN
b2R1bGUuY3BwCmluZGV4IDgxYjQwNTA2NWYzMDBkMTAzNmMwMzYzNzgwYjNjNjE1NGZkYzc5ZDMu
LjE0NmQzZDQzOTAwNGM0ZTYxMGY5NWMyOGEzMzA3YzNlMDlkN2VjODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVNoYWRlck1vZHVsZS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZVNoYWRlck1vZHVsZU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkdQVU9iamVjdEhlYXAu
aCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXBpbGF0aW9uSW5mby5o
PgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcGlsYXRpb25NZXNzYWdl
Lmg+CkBAIC0zNSwxNSArMzcsMjIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVNo
YWRlck1vZHVsZTo6UmVtb3RlU2hhZGVyTW9kdWxlKFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUm
IHNoYWRlck1vZHVsZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVTaGFkZXJNb2R1bGU6OlJlbW90ZVNoYWRlck1vZHVs
ZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUsIFdlYkdQVTo6T2JqZWN0
SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJl
YW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tp
bmcoc2hhZGVyTW9kdWxlKQogICAgICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBt
X3N0cmVhbUNvbm5lY3Rpb24oV1RGTW92ZShzdHJlYW1Db25uZWN0aW9uKSkKICAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQogeworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNl
aXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZVNoYWRlck1vZHVsZTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIFJlbW90ZVNo
YWRlck1vZHVsZTo6flJlbW90ZVNoYWRlck1vZHVsZSgpID0gZGVmYXVsdDsKIAordm9pZCBSZW1v
dGVTaGFkZXJNb2R1bGU6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoKQoreworICAgIG1fc3RyZWFtQ29u
bmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVTaGFkZXJNb2R1
bGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworfQor
CiB2b2lkIFJlbW90ZVNoYWRlck1vZHVsZTo6Y29tcGlsYXRpb25JbmZvKFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViR1BVOjpDb21waWxhdGlvbk1lc3NhZ2U+JiYpPiYmIGNh
bGxiYWNrKQogewogICAgIG1fYmFja2luZy0+Y29tcGlsYXRpb25JbmZvKFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSAoUmVmPFBBTDo6V2ViR1BVOjpDb21waWxhdGlvbkluZm8+JiYgY29t
cGlsYXRpb25NZXNzYWdlKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZS5oCmluZGV4
IGYyNDcxNmM1NzA0MjNkMThhZjVlYjIzYTYyYjEwY2IyMGQxZTdjZGUuLjViNjU2ZGIxM2Y4OWJl
MTMxMDMyYWZmNDMzMGMyMTQ2YWJkNmZhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGUuaApA
QCAtMzksNiArMzksMTAgQEAgbmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIFNoYWRlck1v
ZHVsZTsKIH0KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFdlYkdQVSB7CkBAIC00OCwx
NyArNTIsMTkgQEAgY2xhc3MgT2JqZWN0SGVhcDsKIGNsYXNzIFJlbW90ZVNoYWRlck1vZHVsZSBm
aW5hbCA6IHB1YmxpYyBJUEM6OlN0cmVhbU1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVTaGFkZXJNb2R1
bGU+IGNyZWF0ZShQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUsIFdlYkdQ
VTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQor
ICAgIHN0YXRpYyBSZWY8UmVtb3RlU2hhZGVyTW9kdWxlPiBjcmVhdGUoUEFMOjpXZWJHUFU6OlNo
YWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAs
IFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlU2hhZGVyTW9kdWxlKHNoYWRlck1vZHVsZSwgb2JqZWN0SGVhcCwgaWRlbnRp
ZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVTaGFkZXJNb2R1bGUo
c2hhZGVyTW9kdWxlLCBvYmplY3RIZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVu
dGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlU2hhZGVyTW9kdWxlKCk7CiAK
KyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgV2ViR1BVOjpPYmplY3RIZWFwOwogCi0gICAgUmVtb3RlU2hhZGVyTW9kdWxlKFBBTDo6
V2ViR1BVOjpTaGFkZXJNb2R1bGUmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBXZWJHUFVJZGVudGlm
aWVyKTsKKyAgICBSZW1vdGVTaGFkZXJNb2R1bGUoUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSYs
IFdlYkdQVTo6T2JqZWN0SGVhcCYsIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYs
IFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlU2hhZGVyTW9kdWxlKGNvbnN0IFJlbW90
ZVNoYWRlck1vZHVsZSYpID0gZGVsZXRlOwogICAgIFJlbW90ZVNoYWRlck1vZHVsZShSZW1vdGVT
aGFkZXJNb2R1bGUmJikgPSBkZWxldGU7CkBAIC03NSw2ICs4MSw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZWY8UEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZT4gbV9iYWNraW5nOwogICAgIFdlYkdQVTo6
T2JqZWN0SGVhcCYgbV9vYmplY3RIZWFwOworICAgIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb24+IG1fc3RyZWFtQ29ubmVjdGlvbjsKICAgICBXZWJHUFVJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuY3BwCmluZGV4IDY1Nzk2YzljNjJjZGFmZjBkYzAz
MzkxOTU2ZTcxODQ5ODhhYTU1OTUuLmZmOTc1YjVlYmMzNTIxMzBhNTk4MmI5YmVhNzQ5NTI2OGY2
YzExMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmNwcApAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlVGV4dHVyZU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlVGV4dHVyZVZpZXcuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BVT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgIldlYkdQ
VVRleHR1cmVWaWV3RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVVGV4dHVyZS5oPgpAQCAtMzcsMTUgKzM5LDIyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1SZW1vdGVUZXh0dXJlOjpSZW1vdGVUZXh0dXJlKFBBTDo6V2ViR1BVOjpUZXh0dXJlJiB0
ZXh0dXJlLCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKK1JlbW90ZVRleHR1cmU6OlJlbW90ZVRleHR1cmUoUEFMOjpXZWJHUFU6OlRl
eHR1cmUmIHRleHR1cmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwgUmVmPElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmcodGV4dHVyZSkKICAgICAsIG1fb2JqZWN0
SGVhcChvYmplY3RIZWFwKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKFdURk1vdmUoc3RyZWFt
Q29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKKyAgICBtX3N0
cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpS
ZW1vdGVUZXh0dXJlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKIH0KIAogUmVtb3RlVGV4dHVyZTo6flJlbW90ZVRleHR1cmUoKSA9IGRlZmF1bHQ7CiAK
K3ZvaWQgUmVtb3RlVGV4dHVyZTo6c3RvcExpc3RlbmluZ0ZvcklQQygpCit7CisgICAgbV9zdHJl
YW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZVRleHR1
cmU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworfQor
CiB2b2lkIFJlbW90ZVRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJH
UFU6OlRleHR1cmVWaWV3RGVzY3JpcHRvcj4mIGRlc2NyaXB0b3IsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpUZXh0dXJlVmll
d0Rlc2NyaXB0b3I+IGNvbnZlcnRlZERlc2NyaXB0b3I7CkBAIC01OCw3ICs2Nyw3IEBAIHZvaWQg
UmVtb3RlVGV4dHVyZTo6Y3JlYXRlVmlldyhjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkdQVTo6VGV4
dHVyZVZpZXdEZXNjcmlwdG9yCiAgICAgfQogICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9y
KTsKICAgICBhdXRvIHRleHR1cmVWaWV3ID0gbV9iYWNraW5nLT5jcmVhdGVWaWV3KCpjb252ZXJ0
ZWREZXNjcmlwdG9yKTsKLSAgICBhdXRvIHJlbW90ZVRleHR1cmVWaWV3ID0gUmVtb3RlVGV4dHVy
ZVZpZXc6OmNyZWF0ZSh0ZXh0dXJlVmlldywgbV9vYmplY3RIZWFwLCBpZGVudGlmaWVyKTsKKyAg
ICBhdXRvIHJlbW90ZVRleHR1cmVWaWV3ID0gUmVtb3RlVGV4dHVyZVZpZXc6OmNyZWF0ZSh0ZXh0
dXJlVmlldywgbV9vYmplY3RIZWFwLCBtX3N0cmVhbUNvbm5lY3Rpb24uY29weVJlZigpLCBpZGVu
dGlmaWVyKTsKICAgICBtX29iamVjdEhlYXAuYWRkT2JqZWN0KGlkZW50aWZpZXIsIHJlbW90ZVRl
eHR1cmVWaWV3KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuaAppbmRleCAwNGI4NTBmM2Q4NWM0OWRlYzI0
MjhiZDhiNjJhMzg1Mjc4YWNlNGRkLi43OGVmZDcwNWJlYTI0OGEyNGU2OTAwNWViYzBkMTQxMTdk
N2IzZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVRleHR1cmUuaApAQCAtMzYsNiArMzYsMTAgQEAgbmFtZXNwYWNlIFBB
TDo6V2ViR1BVIHsKIGNsYXNzIFRleHR1cmU7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3Mg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVz
cGFjZSBXZWJHUFUgewpAQCAtNDYsMTcgKzUwLDE5IEBAIHN0cnVjdCBUZXh0dXJlVmlld0Rlc2Ny
aXB0b3I7CiBjbGFzcyBSZW1vdGVUZXh0dXJlIGZpbmFsIDogcHVibGljIElQQzo6U3RyZWFtTWVz
c2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFJlbW90ZVRleHR1cmU+IGNyZWF0ZShQQUw6OldlYkdQVTo6VGV4dHVyZSYg
dGV4dHVyZSwgV2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0dXJlPiBjcmVhdGUoUEFMOjpX
ZWJHUFU6OlRleHR1cmUmIHRleHR1cmUsIFdlYkdQVTo6T2JqZWN0SGVhcCYgb2JqZWN0SGVhcCwg
UmVmPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4mJiBzdHJlYW1Db25uZWN0aW9uLCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVUZXh0dXJlKHRleHR1cmUsIG9iamVjdEhlYXAsIGlkZW50aWZpZXIpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZSh0ZXh0dXJlLCBvYmplY3RI
ZWFwLCBXVEZNb3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+UmVtb3RlVGV4dHVyZSgpOwogCisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9y
SVBDKCk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdQVTo6T2JqZWN0SGVhcDsK
IAotICAgIFJlbW90ZVRleHR1cmUoUEFMOjpXZWJHUFU6OlRleHR1cmUmLCBXZWJHUFU6Ok9iamVj
dEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVUZXh0dXJlKFBBTDo6V2ViR1BV
OjpUZXh0dXJlJiwgV2ViR1BVOjpPYmplY3RIZWFwJiwgUmVmPElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbj4mJiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVUZXh0dXJlKGNvbnN0
IFJlbW90ZVRleHR1cmUmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVUZXh0dXJlKFJlbW90ZVRleHR1
cmUmJikgPSBkZWxldGU7CkBAIC03NSw2ICs4MSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8UEFM
OjpXZWJHUFU6OlRleHR1cmU+IG1fYmFja2luZzsKICAgICBXZWJHUFU6Ok9iamVjdEhlYXAmIG1f
b2JqZWN0SGVhcDsKKyAgICBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBtX3N0cmVh
bUNvbm5lY3Rpb247CiAgICAgV2ViR1BVSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVRleHR1cmVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwCmluZGV4IDdmYzhhYjY1MzQ3YWY4NjM4MzExOTA2ZDhi
NzI0YmIxMDE0Yjk1OTUuLjJjNzllOThmOTY2MmZlYTdlNjQ2OWYzOTBlMWExNjM1NWY3MTZjYWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlVGV4dHVyZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuY3BwCkBAIC0yOCwyMCArMjgsMjkgQEAKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZVRleHR1cmVWaWV3TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2Vi
R1BVT2JqZWN0SGVhcC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4
dHVyZVZpZXcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVRleHR1cmVWaWV3OjpS
ZW1vdGVUZXh0dXJlVmlldyhQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3LCBX
ZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKK1JlbW90ZVRleHR1cmVWaWV3OjpSZW1vdGVUZXh0dXJlVmlldyhQQUw6OldlYkdQVTo6VGV4
dHVyZVZpZXcmIHRleHR1cmVWaWV3LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhlYXAsIFJl
ZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+JiYgc3RyZWFtQ29ubmVjdGlvbiwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nKHRleHR1cmVWaWV3KQogICAg
ICwgbV9vYmplY3RIZWFwKG9iamVjdEhlYXApCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oV1RG
TW92ZShzdHJlYW1Db25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQog
eworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhpcywg
TWVzc2FnZXM6OlJlbW90ZVRleHR1cmVWaWV3OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogUmVtb3RlVGV4dHVyZVZpZXc6On5SZW1vdGVUZXh0
dXJlVmlldygpID0gZGVmYXVsdDsKIAordm9pZCBSZW1vdGVUZXh0dXJlVmlldzo6c3RvcExpc3Rl
bmluZ0ZvcklQQygpCit7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVz
c2FnZXMoTWVzc2FnZXM6OlJlbW90ZVRleHR1cmVWaWV3OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKwogdm9pZCBSZW1vdGVUZXh0dXJlVmlldzo6
c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7CiAgICAgbV9iYWNraW5nLT5zZXRMYWJlbChXVEZN
b3ZlKGxhYmVsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3LmgKaW5kZXggMzZlM2JlNGRkOTc5NmI0
NzZjYjRiOGJiMTM4ZDg5ZGEwMmQxNDQ1ZS4uNWJmYTUxZDJhMmYxYjJiODA2OTEwNGJkZDE2NTQ4
NDJjNTkxZjM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXcuaApAQCAtMzYsNiArMzYsMTAgQEAg
bmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIGNsYXNzIFRleHR1cmVWaWV3OwogfQogCituYW1lc3Bh
Y2UgSVBDIHsKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKQEAgLTQ1LDE3ICs0OSwxOSBAQCBjbGFzcyBP
YmplY3RIZWFwOwogY2xhc3MgUmVtb3RlVGV4dHVyZVZpZXcgZmluYWwgOiBwdWJsaWMgSVBDOjpT
dHJlYW1NZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZVZpZXc+IGNyZWF0ZShQQUw6OldlYkdQ
VTo6VGV4dHVyZVZpZXcmIHRleHR1cmVWaWV3LCBXZWJHUFU6Ok9iamVjdEhlYXAmIG9iamVjdEhl
YXAsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVRl
eHR1cmVWaWV3PiBjcmVhdGUoUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3JiB0ZXh0dXJlVmlldywg
V2ViR1BVOjpPYmplY3RIZWFwJiBvYmplY3RIZWFwLCBSZWY8SVBDOjpTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPiYmIHN0cmVhbUNvbm5lY3Rpb24sIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRleHR1cmVWaWV3KHRl
eHR1cmVWaWV3LCBvYmplY3RIZWFwLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZVRleHR1cmVWaWV3KHRleHR1cmVWaWV3LCBvYmplY3RIZWFwLCBXVEZN
b3ZlKHN0cmVhbUNvbm5lY3Rpb24pLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVh
bCB+UmVtb3RlVGV4dHVyZVZpZXcoKTsKIAorICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygp
OworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHUFU6Ok9iamVjdEhlYXA7CiAKLSAg
ICBSZW1vdGVUZXh0dXJlVmlldyhQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcmLCBXZWJHUFU6Ok9i
amVjdEhlYXAmLCBXZWJHUFVJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVUZXh0dXJlVmlldyhQQUw6
OldlYkdQVTo6VGV4dHVyZVZpZXcmLCBXZWJHUFU6Ok9iamVjdEhlYXAmLCBSZWY8SVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uPiYmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVRl
eHR1cmVWaWV3KGNvbnN0IFJlbW90ZVRleHR1cmVWaWV3JikgPSBkZWxldGU7CiAgICAgUmVtb3Rl
VGV4dHVyZVZpZXcoUmVtb3RlVGV4dHVyZVZpZXcmJikgPSBkZWxldGU7CkBAIC03MCw2ICs3Niw3
IEBAIHByaXZhdGU6CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3PiBtX2JhY2tp
bmc7CiAgICAgV2ViR1BVOjpPYmplY3RIZWFwJiBtX29iamVjdEhlYXA7CisgICAgUmVmPElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gbV9zdHJlYW1Db25uZWN0aW9uOwogICAgIFdlYkdQVUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT2JqZWN0SGVhcC5jcHAKaW5k
ZXggZWUwNmIwMDE3ZDU1OTViMmIzNjIzYTFkODIwY2UwZjAyN2UxM2Y5ZS4uZjFjNmNiNjlhZDcy
YTFhYTEzMWU1YTRlYWI3MjNjM2ExN2VjODAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3RIZWFwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdEhlYXAuY3Bw
CkBAIC02MywxMjcgKzYzLDEyNyBAQCBPYmplY3RIZWFwOjp+T2JqZWN0SGVhcCgpCiAKIHZvaWQg
T2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3Rl
QWRhcHRlciYgYWRhcHRlcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRl
bnRpZmllciwgYWRhcHRlcik7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50
aWZpZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1v
dGVBZGFwdGVyPiB7IFJlZiB7IGFkYXB0ZXIgfSB9IH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKIHZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0
KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQmluZEdyb3VwJiBiaW5kR3JvdXAp
CiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGJpbmRHcm91
cCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7
IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVCaW5kR3JvdXA+IHsg
UmVmIHsgYmluZEdyb3VwIH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
LmlzTmV3RW50cnkpOwogfQogCiB2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZUJpbmRHcm91cExheW91dCYgYmluZEdyb3VwTGF5b3V0
KQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBiaW5kR3Jv
dXBMYXlvdXQpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBP
YmplY3QgeyBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlQmluZEdy
b3VwTGF5b3V0PiB7IFJlZiB7IGJpbmRHcm91cExheW91dCB9IH0gfSk7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAogdm9pZCBPYmplY3RIZWFwOjph
ZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVCdWZmZXImIGJ1ZmZl
cikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgYnVmZmVy
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgT2JqZWN0IHsg
SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUJ1ZmZlcj4geyBSZWYg
eyBidWZmZXIgfSB9IH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7CiB9CiAKIHZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllciwgUmVtb3RlQ29tbWFuZEJ1ZmZlciYgY29tbWFuZEJ1ZmZlcikKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgY29tbWFuZEJ1ZmZlcik7Cisg
ICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6
U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21tYW5kQnVmZmVyPiB7IFJl
ZiB7IGNvbW1hbmRCdWZmZXIgfSB9IH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CiAKIHZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlQ29tbWFuZEVuY29kZXImIGNvbW1hbmRFbmNvZGVy
KQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBjb21tYW5k
RW5jb2Rlcik7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9i
amVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21tYW5k
RW5jb2Rlcj4geyBSZWYgeyBjb21tYW5kRW5jb2RlciB9IH0gfSk7CiAgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAogdm9pZCBPYmplY3RIZWFwOjphZGRP
YmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXImIGNvbXB1dGVQYXNzRW5jb2RlcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5h
ZGQoaWRlbnRpZmllciwgY29tcHV0ZVBhc3NFbmNvZGVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5hZGQoaWRlbnRpZmllciwgT2JqZWN0IHsgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlPFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcj4geyBSZWYgeyBjb21wdXRlUGFz
c0VuY29kZXIgfSB9IH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdF
bnRyeSk7CiB9CiAKIHZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllciwgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUpCiB7Ci0g
ICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIGNvbXB1dGVQaXBlbGlu
ZSk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7
IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21wdXRlUGlwZWxp
bmU+IHsgUmVmIHsgY29tcHV0ZVBpcGVsaW5lIH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCiB2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVj
dChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZURldmljZSYgZGV2aWNlKQogewot
ICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBkZXZpY2UpOworICAg
IGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBPYmplY3QgeyBJUEM6OlNj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlRGV2aWNlPiB7IFJlZiB7IGRldmlj
ZSB9IH0gfSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
IH0KIAogdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyLCBSZW1vdGVFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSkKIHsKLSAgICBhdXRv
IHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgZXh0ZXJuYWxUZXh0dXJlKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgT2JqZWN0IHsgSVBDOjpT
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUV4dGVybmFsVGV4dHVyZT4geyBS
ZWYgeyBleHRlcm5hbFRleHR1cmUgfSB9IH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKIHZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlUGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5
b3V0KQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBwaXBl
bGluZUxheW91dCk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIs
IE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVQaXBl
bGluZUxheW91dD4geyBSZWYgeyBwaXBlbGluZUxheW91dCB9IH0gfSk7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAogdm9pZCBPYmplY3RIZWFwOjph
ZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVRdWVyeVNldCYgcXVl
cnlTZXQpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHF1
ZXJ5U2V0KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgT2Jq
ZWN0IHsgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVF1ZXJ5U2V0
PiB7IFJlZiB7IHF1ZXJ5U2V0IH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0LmlzTmV3RW50cnkpOwogfQogCiB2b2lkIE9iamVjdEhlYXA6OmFkZE9iamVjdChXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZVF1ZXVlJiBxdWV1ZSkKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgcXVldWUpOworICAgIGF1dG8gcmVzdWx0
ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBPYmplY3QgeyBJUEM6OlNjb3BlZEFjdGl2ZU1l
c3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlUXVldWU+IHsgUmVmIHsgcXVldWUgfSB9IH0pOwogICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKIHZvaWQgT2Jq
ZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2RlciYgcmVuZGVyQnVuZGxlRW5jb2RlcikKIHsKLSAgICBhdXRvIHJlc3Vs
dCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgcmVuZGVyQnVuZGxlRW5jb2Rlcik7CisgICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyPiB7
IFJlZiB7IHJlbmRlckJ1bmRsZUVuY29kZXIgfSB9IH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKIHZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0
KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlUmVuZGVyQnVuZGxlJiByZW5kZXJC
dW5kbGUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIHJl
bmRlckJ1bmRsZSk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIs
IE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5k
ZXJCdW5kbGU+IHsgUmVmIHsgcmVuZGVyQnVuZGxlIH0gfSB9KTsKICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCiB2b2lkIE9iamVjdEhlYXA6OmFkZE9i
amVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVy
JiByZW5kZXJQYXNzRW5jb2RlcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0cy5hZGQo
aWRlbnRpZmllciwgcmVuZGVyUGFzc0VuY29kZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbV9vYmpl
Y3RzLmFkZChpZGVudGlmaWVyLCBPYmplY3QgeyBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNl
aXZlUXVldWU8UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI+IHsgUmVmIHsgcmVuZGVyUGFzc0VuY29k
ZXIgfSB9IH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7
CiB9CiAKIHZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUmVtb3RlUmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lKQogewotICAgIGF1dG8g
cmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCByZW5kZXJQaXBlbGluZSk7CisgICAg
YXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJQaXBlbGluZT4geyBSZWYg
eyByZW5kZXJQaXBlbGluZSB9IH0gfSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dC5pc05ld0VudHJ5KTsKIH0KIAogdm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyLCBSZW1vdGVTYW1wbGVyJiBzYW1wbGVyKQogewotICAgIGF1dG8g
cmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlmaWVyLCBzYW1wbGVyKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgT2JqZWN0IHsgSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVNhbXBsZXI+IHsgUmVmIHsgc2FtcGxlciB9IH0g
fSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAog
dm9pZCBPYmplY3RIZWFwOjphZGRPYmplY3QoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBS
ZW1vdGVTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVsZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1f
b2JqZWN0cy5hZGQoaWRlbnRpZmllciwgc2hhZGVyTW9kdWxlKTsKKyAgICBhdXRvIHJlc3VsdCA9
IG1fb2JqZWN0cy5hZGQoaWRlbnRpZmllciwgT2JqZWN0IHsgSVBDOjpTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVNoYWRlck1vZHVsZT4geyBSZWYgeyBzaGFkZXJNb2R1bGUg
fSB9IH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9
CiAKIHZvaWQgT2JqZWN0SGVhcDo6YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgUmVtb3RlVGV4dHVyZSYgdGV4dHVyZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fb2JqZWN0
cy5hZGQoaWRlbnRpZmllciwgdGV4dHVyZSk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMu
YWRkKGlkZW50aWZpZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZTxSZW1vdGVUZXh0dXJlPiB7IFJlZiB7IHRleHR1cmUgfSB9IH0pOwogICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKIHZvaWQgT2JqZWN0SGVhcDo6
YWRkT2JqZWN0KFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlVGV4dHVyZVZpZXcm
IHRleHR1cmVWaWV3KQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9vYmplY3RzLmFkZChpZGVudGlm
aWVyLCB0ZXh0dXJlVmlldyk7CisgICAgYXV0byByZXN1bHQgPSBtX29iamVjdHMuYWRkKGlkZW50
aWZpZXIsIE9iamVjdCB7IElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1v
dGVUZXh0dXJlVmlldz4geyBSZWYgeyB0ZXh0dXJlVmlldyB9IH0gfSk7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIApAQCAtMTk2LDE2OSArMTk2LDE2
OSBAQCB2b2lkIE9iamVjdEhlYXA6OnJlbW92ZU9iamVjdChXZWJHUFVJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiBQQUw6OldlYkdQVTo6QWRhcHRlciogT2JqZWN0SGVhcDo6Y29udmVydEFkYXB0ZXJG
cm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBpdGVy
YXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBt
X29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZUFkYXB0
ZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5k
KCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlPFJlbW90ZUFkYXB0ZXI+PihpdGVyYXRvci0+dmFsdWUpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PFJlZjxSZW1vdGVBZGFwdGVyPj4oaXRl
cmF0b3ItPnZhbHVlKS0+YmFja2luZygpOworICAgIHJldHVybiAmc3RkOjpnZXQ8SVBDOjpTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUFkYXB0ZXI+PihpdGVyYXRvci0+dmFs
dWUpLT5iYWNraW5nKCk7CiB9CiAKIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAqIE9iamVjdEhlYXA6
OmNvbnZlcnRCaW5kR3JvdXBGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAg
IGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFJlbW90ZUJpbmRHcm91cD4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgaWYgKGl0ZXJh
dG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxJUEM6OlNj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlQmluZEdyb3VwPj4oaXRlcmF0b3It
PnZhbHVlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxS
ZWY8UmVtb3RlQmluZEdyb3VwPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOworICAgIHJl
dHVybiAmc3RkOjpnZXQ8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90
ZUJpbmRHcm91cD4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAogUEFMOjpXZWJH
UFU6OkJpbmRHcm91cExheW91dCogT2JqZWN0SGVhcDo6Y29udmVydEJpbmRHcm91cExheW91dEZy
b21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBhdXRvIGl0ZXJh
dG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1f
b2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlQmluZEdy
b3VwTGF5b3V0Pj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmpl
Y3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPElQQzo6U2NvcGVkQWN0aXZlTWVz
c2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVCaW5kR3JvdXBMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PFJlZjxSZW1v
dGVCaW5kR3JvdXBMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CisgICAgcmV0
dXJuICZzdGQ6OmdldDxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3Rl
QmluZEdyb3VwTGF5b3V0Pj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCiBQQUw6
OldlYkdQVTo6QnVmZmVyKiBPYmplY3RIZWFwOjpjb252ZXJ0QnVmZmVyRnJvbUJhY2tpbmcoV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVj
dHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgp
IHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVCdWZmZXI+PihpdGVyYXRvci0+
dmFsdWUpKQorICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90
ZUJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiAmc3RkOjpnZXQ8UmVmPFJlbW90ZUJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJh
Y2tpbmcoKTsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZTxSZW1vdGVCdWZmZXI+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9
CiAKIFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyKiBPYmplY3RIZWFwOjpjb252ZXJ0Q29tbWFu
ZEJ1ZmZlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBh
dXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJh
dG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVt
b3RlQ29tbWFuZEJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgaWYgKGl0ZXJhdG9yID09
IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxJUEM6OlNjb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlQ29tbWFuZEJ1ZmZlcj4+KGl0ZXJhdG9yLT52
YWx1ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8UmVm
PFJlbW90ZUNvbW1hbmRCdWZmZXI+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CisgICAg
cmV0dXJuICZzdGQ6OmdldDxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVt
b3RlQ29tbWFuZEJ1ZmZlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAogUEFM
OjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyKiBPYmplY3RIZWFwOjpjb252ZXJ0Q29tbWFuZEVuY29k
ZXJGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBp
dGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9
PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZUNv
bW1hbmRFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9v
YmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPElQQzo6U2NvcGVkQWN0aXZl
TWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21tYW5kRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1
ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8UmVmPFJl
bW90ZUNvbW1hbmRFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOworICAgIHJl
dHVybiAmc3RkOjpnZXQ8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90
ZUNvbW1hbmRFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCiBQQUw6
OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyKiBPYmplY3RIZWFwOjpjb252ZXJ0Q29tcHV0ZVBh
c3NFbmNvZGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAg
IGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRl
cmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUpKQorICAgIGlmIChpdGVy
YXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SVBDOjpT
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcj4+
KGl0ZXJhdG9yLT52YWx1ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAm
c3RkOjpnZXQ8UmVmPFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkt
PmJhY2tpbmcoKTsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZTxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI+PihpdGVyYXRvci0+dmFsdWUp
LT5iYWNraW5nKCk7CiB9CiAKIFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUqIE9iamVjdEhl
YXA6OmNvbnZlcnRDb21wdXRlUGlwZWxpbmVGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50aWZp
ZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPFJlbW90ZUNvbXB1dGVQaXBlbGluZT4+KGl0ZXJhdG9yLT52YWx1ZSkp
CisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlQ29tcHV0
ZVBpcGVsaW5lPj4oaXRlcmF0b3ItPnZhbHVlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuICZzdGQ6OmdldDxSZWY8UmVtb3RlQ29tcHV0ZVBpcGVsaW5lPj4oaXRlcmF0b3It
PnZhbHVlKS0+YmFja2luZygpOworICAgIHJldHVybiAmc3RkOjpnZXQ8SVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUNvbXB1dGVQaXBlbGluZT4+KGl0ZXJhdG9yLT52
YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAogUEFMOjpXZWJHUFU6OkRldmljZSogT2JqZWN0SGVhcDo6
Y29udmVydERldmljZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
ICAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYg
KGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8UmVtb3RlRGV2aWNlPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICBpZiAoaXRlcmF0b3IgPT0g
bV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPElQQzo6U2NvcGVkQWN0
aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVEZXZpY2U+PihpdGVyYXRvci0+dmFsdWUpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PFJlZjxSZW1vdGVE
ZXZpY2U+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CisgICAgcmV0dXJuICZzdGQ6Omdl
dDxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlRGV2aWNlPj4oaXRl
cmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCiBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0
dXJlKiBPYmplY3RIZWFwOjpjb252ZXJ0RXh0ZXJuYWxUZXh0dXJlRnJvbUJhY2tpbmcoV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMu
ZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8
ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVFeHRlcm5hbFRleHR1cmU+PihpdGVy
YXRvci0+dmFsdWUpKQorICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVl
PFJlbW90ZUV4dGVybmFsVGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8UmVmPFJlbW90ZUV4dGVybmFsVGV4dHVy
ZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQ
Qzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVFeHRlcm5hbFRleHR1cmU+
PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAKIFBBTDo6V2ViR1BVOjpQaXBlbGlu
ZUxheW91dCogT2JqZWN0SGVhcDo6Y29udmVydFBpcGVsaW5lTGF5b3V0RnJvbUJhY2tpbmcoV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVj
dHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgp
IHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVQaXBlbGluZUxheW91dD4+KGl0
ZXJhdG9yLT52YWx1ZSkpCisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAh
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWU8UmVtb3RlUGlwZWxpbmVMYXlvdXQ+PihpdGVyYXRvci0+dmFsdWUpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PFJlZjxSZW1vdGVQaXBlbGluZUxheW91
dD4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQ
Qzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVQaXBlbGluZUxheW91dD4+
KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAogUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0
KiBPYmplY3RIZWFwOjpjb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fb2JqZWN0cy5maW5kKGlkZW50
aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZVF1ZXJ5U2V0Pj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAg
ICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVRdWVyeVNldD4+
KGl0ZXJhdG9yLT52YWx1ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAm
c3RkOjpnZXQ8UmVmPFJlbW90ZVF1ZXJ5U2V0Pj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygp
OworICAgIHJldHVybiAmc3RkOjpnZXQ8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1
ZXVlPFJlbW90ZVF1ZXJ5U2V0Pj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCiBQ
QUw6OldlYkdQVTo6UXVldWUqIE9iamVjdEhlYXA6OmNvbnZlcnRRdWV1ZUZyb21CYWNraW5nKFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmpl
Y3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQo
KSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlUXVldWU+PihpdGVyYXRvci0+
dmFsdWUpKQorICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90
ZVF1ZXVlPj4oaXRlcmF0b3ItPnZhbHVlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuICZzdGQ6OmdldDxSZWY8UmVtb3RlUXVldWU+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNr
aW5nKCk7CisgICAgcmV0dXJuICZzdGQ6OmdldDxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNl
aXZlUXVldWU8UmVtb3RlUXVldWU+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAK
IFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyKiBPYmplY3RIZWFwOjpjb252ZXJ0UmVu
ZGVyQnVuZGxlRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmllcik7Ci0gICAg
aWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAg
aWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2Rlcj4+KGl0ZXJhdG9yLT52YWx1ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiAmc3RkOjpnZXQ8UmVmPFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI+PihpdGVyYXRv
ci0+dmFsdWUpLT5iYWNraW5nKCk7CisgICAgcmV0dXJuICZzdGQ6OmdldDxJUEM6OlNjb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcj4+KGl0ZXJh
dG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAogUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSog
T2JqZWN0SGVhcDo6Y29udmVydFJlbmRlckJ1bmRsZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRl
bnRpZmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlUmVuZGVyQnVuZGxlPj4oaXRlcmF0b3ItPnZhbHVl
KSkKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5k
ZXJCdW5kbGU+PihpdGVyYXRvci0+dmFsdWUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gJnN0ZDo6Z2V0PFJlZjxSZW1vdGVSZW5kZXJCdW5kbGU+PihpdGVyYXRvci0+dmFs
dWUpLT5iYWNraW5nKCk7CisgICAgcmV0dXJuICZzdGQ6OmdldDxJUEM6OlNjb3BlZEFjdGl2ZU1l
c3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlUmVuZGVyQnVuZGxlPj4oaXRlcmF0b3ItPnZhbHVlKS0+
YmFja2luZygpOwogfQogCiBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXIqIE9iamVjdEhl
YXA6OmNvbnZlcnRSZW5kZXJQYXNzRW5jb2RlckZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRp
Zmllcik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI+PihpdGVyYXRvci0+dmFs
dWUpKQorICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkgfHwgIXN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuICZzdGQ6OmdldDxSZWY8UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI+Pihp
dGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CisgICAgcmV0dXJuICZzdGQ6OmdldDxJUEM6OlNj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI+Pihp
dGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAKIFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBl
bGluZSogT2JqZWN0SGVhcDo6Y29udmVydFJlbmRlclBpcGVsaW5lRnJvbUJhY2tpbmcoV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMu
ZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8
ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVSZW5kZXJQaXBlbGluZT4+KGl0ZXJh
dG9yLT52YWx1ZSkpCisgICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8
UmVtb3RlUmVuZGVyUGlwZWxpbmU+PihpdGVyYXRvci0+dmFsdWUpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gJnN0ZDo6Z2V0PFJlZjxSZW1vdGVSZW5kZXJQaXBlbGluZT4+
KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQQzo6
U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJQaXBlbGluZT4+KGl0
ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAogUEFMOjpXZWJHUFU6OlNhbXBsZXIqIE9i
amVjdEhlYXA6OmNvbnZlcnRTYW1wbGVyRnJvbUJhY2tpbmcoV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX29iamVjdHMuZmluZChpZGVudGlmaWVy
KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxSZW1vdGVTYW1wbGVyPj4oaXRlcmF0b3ItPnZhbHVlKSkKKyAgICBpZiAo
aXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPElQ
Qzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVTYW1wbGVyPj4oaXRlcmF0
b3ItPnZhbHVlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZzdGQ6Omdl
dDxSZWY8UmVtb3RlU2FtcGxlcj4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKKyAgICBy
ZXR1cm4gJnN0ZDo6Z2V0PElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1v
dGVTYW1wbGVyPj4oaXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCiBQQUw6OldlYkdQ
VTo6U2hhZGVyTW9kdWxlKiBPYmplY3RIZWFwOjpjb252ZXJ0U2hhZGVyTW9kdWxlRnJvbUJhY2tp
bmcoV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBt
X29iamVjdHMuZmluZChpZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3Rz
LmVuZCgpIHx8ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxSZW1vdGVTaGFkZXJNb2R1bGU+
PihpdGVyYXRvci0+dmFsdWUpKQorICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMuZW5kKCkg
fHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlPFJlbW90ZVNoYWRlck1vZHVsZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8UmVmPFJlbW90ZVNoYWRlck1vZHVs
ZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PElQ
Qzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVTaGFkZXJNb2R1bGU+Pihp
dGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CiB9CiAKIFBBTDo6V2ViR1BVOjpUZXh0dXJlKiBP
YmplY3RIZWFwOjpjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9vYmplY3RzLmZpbmQoaWRlbnRpZmll
cik7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8UmVtb3RlVGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSkpCisgICAgaWYg
KGl0ZXJhdG9yID09IG1fb2JqZWN0cy5lbmQoKSB8fCAhc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxJ
UEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlVGV4dHVyZT4+KGl0ZXJh
dG9yLT52YWx1ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpn
ZXQ8UmVmPFJlbW90ZVRleHR1cmU+PihpdGVyYXRvci0+dmFsdWUpLT5iYWNraW5nKCk7CisgICAg
cmV0dXJuICZzdGQ6OmdldDxJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVt
b3RlVGV4dHVyZT4+KGl0ZXJhdG9yLT52YWx1ZSktPmJhY2tpbmcoKTsKIH0KIAogUEFMOjpXZWJH
UFU6OlRleHR1cmVWaWV3KiBPYmplY3RIZWFwOjpjb252ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2lu
ZyhXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1f
b2JqZWN0cy5maW5kKGlkZW50aWZpZXIpOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29iamVjdHMu
ZW5kKCkgfHwgIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFJlbW90ZVRleHR1cmVWaWV3Pj4o
aXRlcmF0b3ItPnZhbHVlKSkKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9vYmplY3RzLmVuZCgpIHx8
ICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZTxSZW1vdGVUZXh0dXJlVmlldz4+KGl0ZXJhdG9yLT52YWx1ZSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiAmc3RkOjpnZXQ8UmVmPFJlbW90ZVRleHR1cmVWaWV3Pj4o
aXRlcmF0b3ItPnZhbHVlKS0+YmFja2luZygpOworICAgIHJldHVybiAmc3RkOjpnZXQ8SVBDOjpT
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVRleHR1cmVWaWV3Pj4oaXRlcmF0
b3ItPnZhbHVlKS0+YmFja2luZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQ
VQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVU9iamVjdEhlYXAuaAppbmRleCA5MDY0MTgwNTg3OTY5OTgyYzAwYTY3ZjQ0NTJk
ODM1ZjJmYTQ3MmJiLi4zZTMzMzgwOTI1ZmNlZjlmZjM1MDM4Njc5ZThjMzM0MTBlNTA3YjMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VU9iamVjdEhlYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVU9iamVjdEhlYXAuaApAQCAtMTQ3LDI3ICsxNDcsMjcgQEAgcHJpdmF0ZToKIAog
ICAgIHVzaW5nIE9iamVjdCA9IHN0ZDo6dmFyaWFudDwKICAgICAgICAgc3RkOjptb25vc3RhdGUs
Ci0gICAgICAgIFJlZjxSZW1vdGVBZGFwdGVyPiwKLSAgICAgICAgUmVmPFJlbW90ZUJpbmRHcm91
cD4sCi0gICAgICAgIFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXQ+LAotICAgICAgICBSZWY8UmVt
b3RlQnVmZmVyPiwKLSAgICAgICAgUmVmPFJlbW90ZUNvbW1hbmRCdWZmZXI+LAotICAgICAgICBS
ZWY8UmVtb3RlQ29tbWFuZEVuY29kZXI+LAotICAgICAgICBSZWY8UmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyPiwKLSAgICAgICAgUmVmPFJlbW90ZUNvbXB1dGVQaXBlbGluZT4sCi0gICAgICAgIFJl
ZjxSZW1vdGVEZXZpY2U+LAotICAgICAgICBSZWY8UmVtb3RlRXh0ZXJuYWxUZXh0dXJlPiwKLSAg
ICAgICAgUmVmPFJlbW90ZVBpcGVsaW5lTGF5b3V0PiwKLSAgICAgICAgUmVmPFJlbW90ZVF1ZXJ5
U2V0PiwKLSAgICAgICAgUmVmPFJlbW90ZVF1ZXVlPiwKLSAgICAgICAgUmVmPFJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXI+LAotICAgICAgICBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlPiwKLSAgICAg
ICAgUmVmPFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyPiwKLSAgICAgICAgUmVmPFJlbW90ZVJlbmRl
clBpcGVsaW5lPiwKLSAgICAgICAgUmVmPFJlbW90ZVNhbXBsZXI+LAotICAgICAgICBSZWY8UmVt
b3RlU2hhZGVyTW9kdWxlPiwKLSAgICAgICAgUmVmPFJlbW90ZVRleHR1cmU+LAotICAgICAgICBS
ZWY8UmVtb3RlVGV4dHVyZVZpZXc+CisgICAgICAgIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZTxSZW1vdGVBZGFwdGVyPiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUJpbmRHcm91cD4sCisgICAgICAgIElQQzo6U2NvcGVkQWN0
aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVCaW5kR3JvdXBMYXlvdXQ+LAorICAgICAgICBJ
UEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlQnVmZmVyPiwKKyAgICAg
ICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUNvbW1hbmRCdWZm
ZXI+LAorICAgICAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3Rl
Q29tbWFuZEVuY29kZXI+LAorICAgICAgICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZl
UXVldWU8UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyPiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUNvbXB1dGVQaXBlbGluZT4sCisgICAgICAgIElQ
Qzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVEZXZpY2U+LAorICAgICAg
ICBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlRXh0ZXJuYWxUZXh0
dXJlPiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90
ZVBpcGVsaW5lTGF5b3V0PiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlPFJlbW90ZVF1ZXJ5U2V0PiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlPFJlbW90ZVF1ZXVlPiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI+LAorICAgICAgICBJUEM6
OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlUmVuZGVyQnVuZGxlPiwKKyAg
ICAgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyPiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVl
PFJlbW90ZVJlbmRlclBpcGVsaW5lPiwKKyAgICAgICAgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlPFJlbW90ZVNhbXBsZXI+LAorICAgICAgICBJUEM6OlNjb3BlZEFjdGl2ZU1l
c3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlU2hhZGVyTW9kdWxlPiwKKyAgICAgICAgSVBDOjpTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVRleHR1cmU+LAorICAgICAgICBJUEM6
OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8UmVtb3RlVGV4dHVyZVZpZXc+CiAgICAg
PjsKICAgICBIYXNoTWFwPFdlYkdQVUlkZW50aWZpZXIsIE9iamVjdD4gbV9vYmplY3RzOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGU2ZDcyMGIyOTI5NjIzMzY0MGNiOGQwZjU0MTI1MjA1YzIyZTMwYmUuLmRhYTVmOGI4ZTAwNjBj
NTM2ZGVhNTA4OTdhYjA3ZGQ5MTA5MDM5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzI4MSw2ICszMjgxLDEwIEBACiAJCTFDQkQ3
NTNEMjc0N0FBMzEwMDRGQTBGRiAvKiBXZWJHUFVPYmplY3RIZWFwLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkdQVU9iamVjdEhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCRjkw
MTIyNzEwMThCNTAwMEM0NTdEIC8qIFF1YWxpZmllZFJlc291cmNlSGVhcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBRdWFsaWZpZWRSZXNvdXJjZUhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUNDNTRBRkQyNzBGOTY1NDAwNUJGOEJFIC8qIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNEREZDN0IyNzU1ODYw
MDAwQzkzQzYyIC8qIFJlbW90ZUdQVVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdQVVBy
b3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0RERkM3QzI3
NTU4NjZEMDBDOTNDNjIgLyogUmVtb3RlR1BVUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlR1BVUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUNEREZDN0QyNzU1ODY2RDAwQzkzQzYyIC8qIFJlbW90ZUdQVVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdQVVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNEREZDN0Uy
NzU1ODY2RDAwQzkzQzYyIC8qIFJlbW90ZUdQVVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlR1BVUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQ0YxOEYzRTI2QkI1RDkwMDA0QjE3MjIgLyogTG9nSW5pdGlhbGl6YXRpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTG9nSW5pdGlhbGl6YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxRDA1MzBDOTI1OEVBQjQ0MDBFNDM2RjcgLyogY29tYmluZS1mZWF0dXJlLWZs
YWdzLXBsaXN0LnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImNvbWJpbmUtZmVhdHVyZS1mbGFncy1w
bGlzdC5weSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMDUzMEQxMjU5MTYyQzgw
MEU0MzZGNyAvKiBXZWJLaXQtaW9zLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IHBhdGggPSAiV2ViS2l0LWlvcy5w
bGlzdCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTY4LDYgKzc1NzIsNyBAQAog
CQkJCTFDQjc0NjI1Mjc0MzZFRTYwMEYxOTg3NCAvKiBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94
eS5oICovLAogCQkJCTFDQjc0NjYyMjc0MzlBMUEwMEYxOTg3NCAvKiBSZW1vdGVHUFVQcm94eS5j
cHAgKi8sCiAJCQkJMUNCNzQ2NjMyNzQzOUExQTAwRjE5ODc0IC8qIFJlbW90ZUdQVVByb3h5Lmgg
Ki8sCisJCQkJMUNEREZDN0IyNzU1ODYwMDAwQzkzQzYyIC8qIFJlbW90ZUdQVVByb3h5Lm1lc3Nh
Z2VzLmluICovLAogCQkJCTFDQjc0NjI3Mjc0MzZFRTYwMEYxOTg3NCAvKiBSZW1vdGVQaXBlbGlu
ZUxheW91dFByb3h5LmNwcCAqLywKIAkJCQkxQ0I3NDYyRjI3NDM2RUU4MDBGMTk4NzQgLyogUmVt
b3RlUGlwZWxpbmVMYXlvdXRQcm94eS5oICovLAogCQkJCTFDQjc0NjM3Mjc0MzZFRTkwMEYxOTg3
NCAvKiBSZW1vdGVRdWVyeVNldFByb3h5LmNwcCAqLywKQEAgLTExODQxLDYgKzExODQ2LDkgQEAK
IAkJCQkxQzU1QTU5RDI3NTQ1N0NBMDBFQjdFOTUgLyogUmVtb3RlR1BVTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKIAkJCQkxQzU1QTU4RjI3NTQ1N0M4MDBFQjdFOTUgLyogUmVtb3RlR1BVTWVzc2Fn
ZXMuaCAqLywKIAkJCQkxQzU1QTVBRjI3NTQ1N0NEMDBFQjdFOTUgLyogUmVtb3RlR1BVTWVzc2Fn
ZXNSZXBsaWVzLmggKi8sCisJCQkJMUNEREZDN0QyNzU1ODY2RDAwQzkzQzYyIC8qIFJlbW90ZUdQ
VVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkxQ0RERkM3RTI3NTU4NjZEMDBDOTND
NjIgLyogUmVtb3RlR1BVUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTFDRERGQzdDMjc1NTg2NkQw
MEM5M0M2MiAvKiBSZW1vdGVHUFVQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCTFENDc2
NTlCMjVDRTc0QUQwMDdBRjMxMiAvKiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxRDQ3NjU5OTI1Q0U3NEFDMDA3QUYzMTIgLyogUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJCQkJMUQ0NzY1OUEyNUNFNzRB
QzAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlc1JlcGxpZXMu
aCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcAppbmRleCA0YjBhYjBjMTJiMjg2OTUy
MjgyNzQ4YTBiODY3MjFlNzdmNWMyNDExLi5iNmJkNGUzMjI2OTFkNzJhYjQzMTA5MTZiYjk2NTEz
MTI5NjJhZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3BwCkBAIC0yOCw5ICsyOCwx
MiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJSZW1vdGVBZGFwdGVyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVHUFUu
aCIKICNpbmNsdWRlICJSZW1vdGVHUFVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUdQVVBy
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkRmVhdHVyZXMu
aD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZExpbWl0cy5o
PgpAQCAtMzksMTkgKzQyLDQ5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBkZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwgMjE7CiAKLVJlbW90ZUdQVVByb3h5
OjpSZW1vdGVHUFVQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24sIFdlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCitSZW1vdGVHUFVQcm94eTo6UmVtb3Rl
R1BVUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBXZWJH
UFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kKQogICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCiAgICAgLCBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgLCBtX3N0cmVhbUNv
bm5lY3Rpb24oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBkZWZhdWx0U3RyZWFt
U2l6ZSkKIHsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAo
KS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdQVVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwogfQogCi1SZW1vdGVH
UFVQcm94eTo6flJlbW90ZUdQVVByb3h5KCkKK1JlbW90ZUdQVVByb3h5Ojp+UmVtb3RlR1BVUHJv
eHkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlR1BVUHJveHk6OmFiYW5kb25HUFVQcm9jZXNz
KCkKK3sKKyAgICBhdXRvIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gc3RkOjpleGNoYW5nZShtX2dw
dVByb2Nlc3NDb25uZWN0aW9uLCBudWxscHRyKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+
bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVHUFVQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2JhY2tpbmcudG9VSW50NjQoKSk7
CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9IG51bGxwdHI7CisgICAgbV9sb3N0ID0gdHJ1
ZTsKK30KKwordm9pZCBSZW1vdGVHUFVQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQs
IElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQogeworICAgIEFTU0VSVCghbV9kaWRJbml0aWFs
aXplKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24uc2V0V2FrZVVwU2VtYXBob3JlKFdURk1vdmUo
c2VtYXBob3JlKSk7CisgICAgbV9kaWRJbml0aWFsaXplID0gdHJ1ZTsKKyAgICBtX2xvc3QgPSAh
ZGlkU3VjY2VlZDsKK30KKwordm9pZCBSZW1vdGVHUFVQcm94eTo6d2FpdFVudGlsSW5pdGlhbGl6
ZWQoKQoreworICAgIGlmIChtX2RpZEluaXRpYWxpemUpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoY29ubmVjdGlvbigpLndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpS
ZW1vdGVHUFVQcm94eTo6V2FzQ3JlYXRlZD4obV9iYWNraW5nLCBkZWZhdWx0U2VuZFRpbWVvdXQp
KQorICAgICAgICByZXR1cm47CisgICAgbV9sb3N0ID0gdHJ1ZTsKIH0KIAogdm9pZCBSZW1vdGVH
UFVQcm94eTo6cmVxdWVzdEFkYXB0ZXIoY29uc3QgUEFMOjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVy
T3B0aW9ucyYgb3B0aW9ucywgV1RGOjpGdW5jdGlvbjx2b2lkKFJlZlB0cjxQQUw6OldlYkdQVTo6
QWRhcHRlcj4mJik+JiYgY2FsbGJhY2spCiB7CisgICAgaWYgKG1fbG9zdCkgeworICAgICAgICBj
YWxsYmFjayhudWxscHRyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGF1dG8gY29u
dmVydGVkT3B0aW9ucyA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tp
bmcob3B0aW9ucyk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZE9wdGlvbnMpOwogICAgIGlmICghY29u
dmVydGVkT3B0aW9ucykgewpAQCAtNjAsNDYgKzkzLDQzIEBAIHZvaWQgUmVtb3RlR1BVUHJveHk6
OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFBBTDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMm
IG9wCiAgICAgfQogCiAgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKTsKLSAgICBTdHJpbmcgbmFtZTsKLSAgICBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVz
IHN1cHBvcnRlZEZlYXR1cmVzOwotICAgIFdlYkdQVTo6U3VwcG9ydGVkTGltaXRzIHN1cHBvcnRl
ZExpbWl0czsKLSAgICBib29sIGlzRmFsbGJhY2tBZGFwdGVyOwotICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHUFU6OlJlcXVlc3RBZGFwdGVyKCpjb252ZXJ0
ZWRPcHRpb25zLCBpZGVudGlmaWVyKSwgeyBuYW1lLCBzdXBwb3J0ZWRGZWF0dXJlcywgc3VwcG9y
dGVkTGltaXRzLCBpc0ZhbGxiYWNrQWRhcHRlciB9KTsKLSAgICBpZiAoIXNlbmRSZXN1bHQpIHsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZUdQVTo6UmVxdWVzdEFkYXB0ZXJSZXNwb25zZT4gcmVz
cG9uc2U7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdQ
VTo6UmVxdWVzdEFkYXB0ZXIoKmNvbnZlcnRlZE9wdGlvbnMsIGlkZW50aWZpZXIpLCB7IHJlc3Bv
bnNlIH0pOworICAgIGlmICghc2VuZFJlc3VsdCB8fCAhcmVzcG9uc2UpIHsKICAgICAgICAgY2Fs
bGJhY2sobnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlc3Vs
dFN1cHBvcnRlZEZlYXR1cmVzID0gUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzOjpjcmVh
dGUoV1RGTW92ZShzdXBwb3J0ZWRGZWF0dXJlcy5mZWF0dXJlcykpOworICAgIGF1dG8gcmVzdWx0
U3VwcG9ydGVkRmVhdHVyZXMgPSBQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXM6OmNyZWF0
ZShXVEZNb3ZlKHJlc3BvbnNlLT5mZWF0dXJlcy5mZWF0dXJlcykpOwogICAgIGF1dG8gcmVzdWx0
U3VwcG9ydGVkTGltaXRzID0gUEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0czo6Y3JlYXRlKAot
ICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjFELAotICAgICAgICBz
dXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjJELAotICAgICAgICBzdXBwb3J0ZWRM
aW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNELAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4
VGV4dHVyZUFycmF5TGF5ZXJzLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4QmluZEdyb3Vw
cywKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBp
cGVsaW5lTGF5b3V0LAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4RHluYW1pY1N0b3JhZ2VC
dWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTYW1w
bGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSwKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFNh
bXBsZXJzUGVyU2hhZGVyU3RhZ2UsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTdG9yYWdl
QnVmZmVyc1BlclNoYWRlclN0YWdlLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4U3RvcmFn
ZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhVbmlm
b3JtQnVmZmVyc1BlclNoYWRlclN0YWdlLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VW5p
Zm9ybUJ1ZmZlckJpbmRpbmdTaXplLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4U3RvcmFn
ZUJ1ZmZlckJpbmRpbmdTaXplLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWluVW5pZm9ybUJ1
ZmZlck9mZnNldEFsaWdubWVudCwKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1pblN0b3JhZ2VC
dWZmZXJPZmZzZXRBbGlnbm1lbnQsCi0gICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhWZXJ0ZXhC
dWZmZXJzLAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VmVydGV4QXR0cmlidXRlcywKLSAg
ICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlLAotICAgICAg
ICBzdXBwb3J0ZWRMaW1pdHMubWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMsCi0gICAgICAg
IHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUsCi0gICAgICAg
IHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXAsCi0gICAg
ICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgsCi0gICAgICAgIHN1
cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVksCi0gICAgICAgIHN1cHBvcnRl
ZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVosCi0gICAgICAgIHN1cHBvcnRlZExpbWl0
cy5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbgorICAgICAgICByZXNwb25zZS0+bGlt
aXRzLm1heFRleHR1cmVEaW1lbnNpb24xRCwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhU
ZXh0dXJlRGltZW5zaW9uMkQsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4VGV4dHVyZURp
bWVuc2lvbjNELAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFRleHR1cmVBcnJheUxheWVy
cywKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhCaW5kR3JvdXBzLAorICAgICAgICByZXNw
b25zZS0+bGltaXRzLm1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0LAor
ICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVs
aW5lTGF5b3V0LAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFNhbXBsZWRUZXh0dXJlc1Bl
clNoYWRlclN0YWdlLAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFNhbXBsZXJzUGVyU2hh
ZGVyU3RhZ2UsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4U3RvcmFnZUJ1ZmZlcnNQZXJT
aGFkZXJTdGFnZSwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhTdG9yYWdlVGV4dHVyZXNQ
ZXJTaGFkZXJTdGFnZSwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhVbmlmb3JtQnVmZmVy
c1BlclNoYWRlclN0YWdlLAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFVuaWZvcm1CdWZm
ZXJCaW5kaW5nU2l6ZSwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhTdG9yYWdlQnVmZmVy
QmluZGluZ1NpemUsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWluVW5pZm9ybUJ1ZmZlck9m
ZnNldEFsaWdubWVudCwKKyAgICAgICAgcmVzcG9uc2UtPmxpbWl0cy5taW5TdG9yYWdlQnVmZmVy
T2Zmc2V0QWxpZ25tZW50LAorICAgICAgICByZXNwb25zZS0+bGltaXRzLm1heFZlcnRleEJ1ZmZl
cnMsCisgICAgICAgIHJlc3BvbnNlLT5saW1pdHMubWF4VmVydGV4QXR0cmlidXRlcywKKyAgICAg
ICAgcmVzcG9uc2UtPmxpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSwKKyAgICAgICAg
cmVzcG9uc2UtPmxpbWl0cy5tYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cywKKyAgICAgICAg
cmVzcG9uc2UtPmxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUsCisgICAgICAg
IHJlc3BvbnNlLT5saW1pdHMubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwLAorICAg
ICAgICByZXNwb25zZS0+bGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCwKKyAgICAgICAg
cmVzcG9uc2UtPmxpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVksCisgICAgICAgIHJlc3Bv
bnNlLT5saW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaLAorICAgICAgICByZXNwb25zZS0+
bGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uCiAgICAgKTsKLSAgICBjYWxs
YmFjayhXZWJHUFU6OlJlbW90ZUFkYXB0ZXJQcm94eTo6Y3JlYXRlKFdURk1vdmUobmFtZSksIFdU
Rk1vdmUocmVzdWx0U3VwcG9ydGVkRmVhdHVyZXMpLCBXVEZNb3ZlKHJlc3VsdFN1cHBvcnRlZExp
bWl0cyksIGlzRmFsbGJhY2tBZGFwdGVyLCAqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dCwgaWRlbnRpZmllcikpOworICAgIGNhbGxiYWNrKFdlYkdQVTo6UmVtb3RlQWRhcHRlclByb3h5
OjpjcmVhdGUoV1RGTW92ZShyZXNwb25zZS0+bmFtZSksIFdURk1vdmUocmVzdWx0U3VwcG9ydGVk
RmVhdHVyZXMpLCBXVEZNb3ZlKHJlc3VsdFN1cHBvcnRlZExpbWl0cyksIHJlc3BvbnNlLT5pc0Zh
bGxiYWNrQWRhcHRlciwgKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZp
ZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHku
aAppbmRleCBiOGQ1N2FiZmMyYzAwNWIyMWExZTI2MTFkM2JjMzE0ZjJiNjVhZmJlLi5hNGZhOGY1
YmI4NDcyYzYwMTQ1MGZlMTc0OTI2OThjOGU3YWY3YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVBy
b3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNs
dWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVS5oPgpAQCAtNDQsMTIgKzQ1LDEyIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
OwogY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIH0KIAotY2xhc3MgUmVt
b3RlR1BVUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkdQVSB7CitjbGFzcyBSZW1v
dGVHUFVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6R1BVLCBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFJlbW90ZUdQVVByb3h5PiBjcmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQor
ICAgIHN0YXRpYyBSZWY8UmVtb3RlR1BVUHJveHk+IGNyZWF0ZShHUFVQcm9jZXNzQ29ubmVjdGlv
biYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIFdlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQm
IGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVHUFVQcm94eShncHVQcm9jZXNzQ29ubmVjdGlv
biwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlR1BVUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyLCByZW5kZXJpbmdCYWNrZW5kKSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB+UmVtb3RlR1BVUHJveHkoKTsKQEAgLTYxLDEzICs2MiwyMSBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHUFU6OkRvd25jYXN0Q29udmVy
dFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVHUFVQcm94eShHUFVQcm9jZXNzQ29ubmVj
dGlvbiYsIFdlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVy
KTsKKyAgICBSZW1vdGVHUFVQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIFdlYkdQVTo6Q29u
dmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVHUFVQcm94eShjb25zdCBSZW1vdGVHUFVQcm94eSYp
ID0gZGVsZXRlOwogICAgIFJlbW90ZUdQVVByb3h5KFJlbW90ZUdQVVByb3h5JiYpID0gZGVsZXRl
OwogICAgIFJlbW90ZUdQVVByb3h5JiBvcGVyYXRvcj0oY29uc3QgUmVtb3RlR1BVUHJveHkmKSA9
IGRlbGV0ZTsKICAgICBSZW1vdGVHUFVQcm94eSYgb3BlcmF0b3I9KFJlbW90ZUdQVVByb3h5JiYp
ID0gZGVsZXRlOwogCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisg
ICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCisgICAgdm9pZCB3YXNDcmVhdGVkKGJvb2wg
ZGlkU3VjY2VlZCwgSVBDOjpTZW1hcGhvcmUmJik7CisKKyAgICB2b2lkIHdhaXRVbnRpbEluaXRp
YWxpemVkKCk7CisKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tpbmc7IH0KICAgICAKICAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRz
IGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CkBAIC04MSwxMyArOTAsMTkgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNl
bmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1
bHRTZW5kVGltZW91dCk7CiAgICAgfQorICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKTsgfQog
CiAgICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBQQUw6OldlYkdQVTo6UmVxdWVzdEFkYXB0
ZXJPcHRpb25zJiwgV1RGOjpGdW5jdGlvbjx2b2lkKFJlZlB0cjxQQUw6OldlYkdQVTo6QWRhcHRl
cj4mJik+JiYpIGZpbmFsOwogCisgICAgdm9pZCBhYmFuZG9uR1BVUHJvY2VzcygpOworCiAgICAg
RGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKFJlZlB0cjxQQUw6OldlYkdQVTo6QWRhcHRlcj4mJik+
PiBtX2NhbGxiYWNrczsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJl
ZjxXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0OworICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwor
ICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbG9zdCB7IGZh
bHNlIH07CiAgICAgSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uIG1fc3RyZWFtQ29ubmVjdGlv
bjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkubWVzc2FnZXMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDAzNWU5NTVlMDZmN2ZlMWY2ZjI4Y2JjZDJjYTlmNDUxOGFiOGJiNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUdQVVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjkgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKwor
bWVzc2FnZXMgLT4gUmVtb3RlR1BVUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgdm9pZCBXYXND
cmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpTZW1hcGhvcmUgc3RyZWFtV2FrZVVwU2VtYXBo
b3JlKQorfQorCisjZW5kaWYK
</data>
<flag name="review"
          id="470507"
          type_id="1"
          status="+"
          setter="kkinnunen"
    />
          </attachment>
      

    </bug>

</bugzilla>