<?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>106144</bug_id>
          
          <creation_ts>2013-01-04 16:18:31 -0800</creation_ts>
          <short_desc>Consolidate process initialization in ChildProcess</short_desc>
          <delta_ts>2013-01-04 19:53:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>menard</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>800715</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-04 16:18:31 -0800</bug_when>
    <thetext>Consolidate process initialization in ChildProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800726</commentid>
    <comment_count>1</comment_count>
      <attachid>181402</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-04 16:29:57 -0800</bug_when>
    <thetext>Created attachment 181402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800733</commentid>
    <comment_count>2</comment_count>
      <attachid>181402</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-04 16:35:20 -0800</bug_when>
    <thetext>Comment on attachment 181402
Patch

Attachment 181402 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15709366</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800737</commentid>
    <comment_count>3</comment_count>
      <attachid>181402</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-04 16:38:20 -0800</bug_when>
    <thetext>Comment on attachment 181402
Patch

Attachment 181402 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15705406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800738</commentid>
    <comment_count>4</comment_count>
      <attachid>181404</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-04 16:41:06 -0800</bug_when>
    <thetext>Created attachment 181404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800743</commentid>
    <comment_count>5</comment_count>
      <attachid>181408</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-04 16:42:37 -0800</bug_when>
    <thetext>Created attachment 181408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800758</commentid>
    <comment_count>6</comment_count>
      <attachid>181408</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-04 17:01:30 -0800</bug_when>
    <thetext>Comment on attachment 181408
Patch

Attachment 181408 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15701407</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800759</commentid>
    <comment_count>7</comment_count>
      <attachid>181408</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-04 17:01:52 -0800</bug_when>
    <thetext>Comment on attachment 181408
Patch

Attachment 181408 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15699418</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800761</commentid>
    <comment_count>8</comment_count>
      <attachid>181408</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-04 17:06:13 -0800</bug_when>
    <thetext>Comment on attachment 181408
Patch

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

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:91
&gt; -    if (m_messageReceiverMap.dispatchMessage(connection, messageID, decoder))
&gt; +    if (messageReceiverMap().dispatchMessage(connection, messageID, decoder))

It&apos;s sad that we have to do this. Direct access to member variables is more transparent.

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:125
&gt; -    return m_uiConnection.get();
&gt; +    return connection();

Can the name be more descriptive? Perhaps parentProcessConnection?

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:169
&gt; +    send(Messages::NetworkProcessProxy::DidCreateNetworkConnectionToWebProcess(clientPort));

I&apos;d say that brevity is not helpful here. NetworkProcess mostly talks to WebProcess, so having a nondescript send() function that talks to an unusual receiver is confusing.

&gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:169
&gt; -    m_connection-&gt;send(Messages::PluginProcessProxy::DidCreateWebProcessConnection(clientPort, m_supportsAsynchronousPluginInitialization), 0);
&gt; +    send(Messages::PluginProcessProxy::DidCreateWebProcessConnection(clientPort, m_supportsAsynchronousPluginInitialization));

Here as well, send() is confusing.

&gt; Source/WebKit2/PluginProcess/PluginProcess.h:45
&gt; -class PluginProcess : ChildProcess {
&gt; +class PluginProcess : public ChildProcess {

I didn&apos;t notice why this is needed.

ChildProcess is an implementation detail of the processes, and hopefully doesn&apos;t need to be exposed as a base class.

&gt; Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:105
&gt; -    WebKit::PluginProcess::shared().initializeConnection(identifier);
&gt; +
&gt; +    WebKit::ChildProcessInitializationParameters parameters;

I don&apos;t understand these namespace prefixes.

&gt; Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:110
&gt; -    WebKit::PluginProcess::shared().initializeConnection(socket);
&gt; +
&gt; +    WebKit::ChildProcessInitializationParameters parameters;

I don&apos;t understand these namespace prefixes.

&gt; Source/WebKit2/Shared/ChildProcess.cpp:43
&gt;      // FIXME: The termination timer should not be scheduled on the main run loop.
&gt;      // It won&apos;t work with the threaded mode, but it&apos;s not really useful anyway as is.

Do we still need this FIXME?

&gt; Source/WebKit2/Shared/ChildProcess.cpp:53
&gt; +    // We use _exit here since the watchdog callback is called from another thread and we don&apos;t want 
&gt; +    // global destructors or atexit handlers to be called from this thread while the main thread is busy

This is a surprising explanation. Do we have global destructors?

&gt; Source/WebKit2/Shared/ChildProcess.cpp:62
&gt; +    static const double watchdogDelay = 10.0;

Coding style: no &quot;.0&quot;. Also, &quot;static&quot; is not useful for C++ constants, especially function local ones.

&gt; Source/WebKit2/Shared/ChildProcess.h:83
&gt; +    uint64_t destinationID() const { return 0; }

How is this used? A dummy non-virtual function is surprising, unless a template makes use of it.

&gt; Source/WebKit2/SharedWorkerProcess/SharedWorkerProcess.h:44
&gt; -class SharedWorkerProcess : ChildProcess {
&gt; +class SharedWorkerProcess : public ChildProcess {

public :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800765</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-04 17:12:59 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 181408 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181408&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:91
&gt; &gt; -    if (m_messageReceiverMap.dispatchMessage(connection, messageID, decoder))
&gt; &gt; +    if (messageReceiverMap().dispatchMessage(connection, messageID, decoder))
&gt; 
&gt; It&apos;s sad that we have to do this. Direct access to member variables is more transparent.

Indeed, but this will be removed relatively soon.

&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:125
&gt; &gt; -    return m_uiConnection.get();
&gt; &gt; +    return connection();
&gt; 
&gt; Can the name be more descriptive? Perhaps parentProcessConnection?

It could be, but we would also need a function called connection() for the MessageSender template, I&apos;ll add it.

&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:169
&gt; &gt; +    send(Messages::NetworkProcessProxy::DidCreateNetworkConnectionToWebProcess(clientPort));
&gt; 
&gt; I&apos;d say that brevity is not helpful here. NetworkProcess mostly talks to WebProcess, so having a nondescript send() function that talks to an unusual receiver is confusing.

Ok, I&apos;ll use the new parentProcessConnection() method to make it clearer.

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/PluginProcess.cpp:169
&gt; &gt; -    m_connection-&gt;send(Messages::PluginProcessProxy::DidCreateWebProcessConnection(clientPort, m_supportsAsynchronousPluginInitialization), 0);
&gt; &gt; +    send(Messages::PluginProcessProxy::DidCreateWebProcessConnection(clientPort, m_supportsAsynchronousPluginInitialization));
&gt; 
&gt; Here as well, send() is confusing.

Ok.

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/PluginProcess.h:45
&gt; &gt; -class PluginProcess : ChildProcess {
&gt; &gt; +class PluginProcess : public ChildProcess {
&gt; 
&gt; I didn&apos;t notice why this is needed.
&gt; 
&gt; ChildProcess is an implementation detail of the processes, and hopefully doesn&apos;t need to be exposed as a base class.

It has the initialization() function on it that is called.  I&apos;ll figure out a way to keep it private.

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp:105
&gt; &gt; -    WebKit::PluginProcess::shared().initializeConnection(identifier);
&gt; &gt; +
&gt; &gt; +    WebKit::ChildProcessInitializationParameters parameters;
&gt; 
&gt; I don&apos;t understand these namespace prefixes.

This is Qt code that isn&apos;t inside the WebKit namespace for some reason, I think (will check).

&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:110
&gt; &gt; -    WebKit::PluginProcess::shared().initializeConnection(socket);
&gt; &gt; +
&gt; &gt; +    WebKit::ChildProcessInitializationParameters parameters;
&gt; 
&gt; I don&apos;t understand these namespace prefixes.

Same.

&gt; 
&gt; &gt; Source/WebKit2/Shared/ChildProcess.cpp:43
&gt; &gt;      // FIXME: The termination timer should not be scheduled on the main run loop.
&gt; &gt;      // It won&apos;t work with the threaded mode, but it&apos;s not really useful anyway as is.
&gt; 
&gt; Do we still need this FIXME?

Probably not, will remove.

&gt; 
&gt; &gt; Source/WebKit2/Shared/ChildProcess.cpp:53
&gt; &gt; +    // We use _exit here since the watchdog callback is called from another thread and we don&apos;t want 
&gt; &gt; +    // global destructors or atexit handlers to be called from this thread while the main thread is busy
&gt; 
&gt; This is a surprising explanation. Do we have global destructors?

I think frameworks we link against might, but I am just guessing, this code that is just being moved.

&gt; 
&gt; &gt; Source/WebKit2/Shared/ChildProcess.cpp:62
&gt; &gt; +    static const double watchdogDelay = 10.0;
&gt; 
&gt; Coding style: no &quot;.0&quot;. Also, &quot;static&quot; is not useful for C++ constants, especially function local ones.

Will fix.

&gt; 
&gt; &gt; Source/WebKit2/Shared/ChildProcess.h:83
&gt; &gt; +    uint64_t destinationID() const { return 0; }
&gt; 
&gt; How is this used? A dummy non-virtual function is surprising, unless a template makes use of it.

Yeah. its for MessageSender, which I am not a huge fan of, but is currently being used.

&gt; 
&gt; &gt; Source/WebKit2/SharedWorkerProcess/SharedWorkerProcess.h:44
&gt; &gt; -class SharedWorkerProcess : ChildProcess {
&gt; &gt; +class SharedWorkerProcess : public ChildProcess {
&gt; 
&gt; public :(

:(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800766</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-04 17:17:44 -0800</bug_when>
    <thetext>Actually, this patch is big enough as is.  Since I got the r+, I&apos;ll do the big clean up in a follow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800767</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-04 17:20:43 -0800</bug_when>
    <thetext>Committed r138868: &lt;http://trac.webkit.org/changeset/138868&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800824</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-04 19:35:54 -0800</bug_when>
    <thetext>This patch appears to have broken WKConnectionTest:

Pass:
http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20WK1%20%28Tests%29/builds/4329

Fail:
http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20WK1%20%28Tests%29/builds/4330</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800826</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-04 19:37:57 -0800</bug_when>
    <thetext>Similarly,

Passed:
http://build.webkit.org/builders/Apple%20Lion%20Debug%20WK1%20%28Tests%29/builds/5681

Failed:
http://build.webkit.org/builders/Apple%20Lion%20Debug%20WK1%20%28Tests%29/builds/5682</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800827</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-04 19:39:28 -0800</bug_when>
    <thetext>Also on WebKit2 bots:

Pass:
http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20WK2%20%28Tests%29/builds/5466

Fail:
http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20WK2%20%28Tests%29/builds/5467</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800833</commentid>
    <comment_count>15</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-04 19:53:43 -0800</bug_when>
    <thetext>Should be fixed in http://trac.webkit.org/changeset/138883.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181402</attachid>
            <date>2013-01-04 16:29:57 -0800</date>
            <delta_ts>2013-01-04 16:41:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106144-20130104162704.patch</filename>
            <type>text/plain</type>
            <size>50736</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4ODQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjI3MjY1MTk5M2QyYmUz
YzI2NjkyYWRiMDkxZTk3NDNkMTQ4ZDcwYS4uZGE4ZTE0YWY2YTU0NTg5NDFjZGNjYmFmZmUxNjNl
MTgxYjJmMDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMSBAQAogMjAxMy0wMS0wNCAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCisgICAgICAgIENvbnNvbGlkYXRlIHByb2Nlc3Mg
aW5pdGlhbGl6YXRpb24gaW4gQ2hpbGRQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYxNDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDb25zb2xpZGF0ZSBtb3JlIGZ1bmN0aW9uYWxpdHkgZG93
biBpbnRvIENoaWxkUHJvY2Vzcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVN
ZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVTeW5j
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFByb3h5
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRl
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3gpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9j
ZXNzSW5pdGlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29y
a1Byb2Nlc3NJbml0aWFsaXphdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZU5l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nl
c3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdv
cmtQcm9jZXNzTWFpbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYWlu
KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmdldFNpdGVzV2l0aERhdGEpOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzOjpjbGVhclNpdGVEYXRhKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNz
L1BsdWdpblByb2Nlc3MuaDoKKyAgICAgICAgKFBsdWdpblByb2Nlc3MpOgorICAgICAgICAqIFBs
dWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6Omlu
aXRpYWxpemVTaGltKToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVz
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2lu
UHJvY2Vzcyk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01haW5N
YWMubW06CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluKToKKyAgICAgICAgKiBQ
bHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzTWFpbik6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Q
cm9jZXNzUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1
Z2luUHJvY2Vzc01haW5Vbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01h
aW5Vbml4KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXgu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVQ
bHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpDaGlsZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
Ojp3YXRjaGRvZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6ZGlkQ2xvc2VPbkNvbm5lY3Rp
b25Xb3JrUXVldWUpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveCk6CisgICAg
ICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6dGVybWluYXRlKToKKyAgICAgICAgKiBTaGFyZWQv
Q2hpbGRQcm9jZXNzLmg6CisgICAgICAgIChDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMpOgorICAgICAgICAoQ2hpbGRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQ
cm9jZXNzOjpjb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpkZXN0
aW5hdGlvbklEKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjptZXNzYWdlUmVjZWl2
ZXJNYXApOgorICAgICAgICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFdvcmtlclByb2Nlc3M6OmluaXRpYWxpemVT
aGFyZWRXb3JrZXJQcm9jZXNzKToKKyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJl
ZFdvcmtlclByb2Nlc3MuaDoKKyAgICAgICAgKFNoYXJlZFdvcmtlclByb2Nlc3MpOgorICAgICAg
ICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlZFdvcmtlclByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVNo
YXJlZFdvcmtlclByb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1No
YXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkb3dubG9hZFByb3h5Q29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6dGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZW1vdmVX
ZWJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NNYWluRWZsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NNYWluR3RrKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6Omlu
aXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNz
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWluTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzTWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2Vi
UHJvY2Vzc1NlcnZpY2VFbnRyeVBvaW50cy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1NlcnZpY2VFdmVudEhhbmRsZXIpOgorICAgICAgICAoaW5pdGlhbGl6ZVdlYlByb2Nlc3NGb3JX
ZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL3F0L1dlYlByb2Nlc3NNYWluUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
TWFpblF0KToKKworMjAxMy0wMS0wNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCiAg
ICAgICAgIE1ha2UgcHJvY2VzcyBpbml0aWFsaXphdGlvbiBtb3JlIHVuaWZvcm0gYnkgcmVuYW1p
bmcgaW5pdGlhbGl6YXRpb24gbWV0aG9kcyBhbmQgcmVtb3ZpbmcgZXh0cmFuZW91cyBwYXJhbWV0
ZXJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYx
MjAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCmluZGV4IGZjMTZhNTZhZGEzM2M3ZWRmOTJjOWM1MDFiNWRmNzU2ZDMyZmVkY2EuLmZlOTNm
NjE4ZGRhYjViNTQwYjU3ODU0N2VmOTAwZDMyNjRjMTExYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTcyLDE1ICs3Miw2IEBA
IERvd25sb2FkTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkTWFuYWdlcigpCiAgICAg
cmV0dXJuIGRvd25sb2FkTWFuYWdlcjsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlh
bGl6ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBzZXJ2ZXJJZGVu
dGlmaWVyKQotewotICAgIEFTU0VSVCghbV91aUNvbm5lY3Rpb24pOwotCi0gICAgbV91aUNvbm5l
Y3Rpb24gPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKHNlcnZl
cklkZW50aWZpZXIsIHRoaXMsIFJ1bkxvb3A6Om1haW4oKSk7Ci0gICAgbV91aUNvbm5lY3Rpb24t
PnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soZGlkQ2xvc2VPbkNvbm5l
Y3Rpb25Xb3JrUXVldWUpOwotICAgIG1fdWlDb25uZWN0aW9uLT5vcGVuKCk7Ci19Ci0KIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uKQogewogICAgIHNpemVfdCB2ZWN0
b3JJbmRleCA9IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmZpbmQoY29ubmVjdGlvbik7CkBAIC05
Nyw3ICs4OCw3IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3M6OnNob3VsZFRlcm1pbmF0ZSgpCiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
IGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIGlmIChtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNw
YXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKSkKKyAgICBpZiAobWVz
c2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwg
ZGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vz
c01lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKQEAgLTEwNSw3ICs5Niw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBD
OjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2Rlciwg
T3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewotICAgIG1f
bWVzc2FnZVJlY2VpdmVyTWFwLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2Fn
ZUlELCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRp
c3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyLCByZXBseUVu
Y29kZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZShDb3JlSVBDOjpDb25u
ZWN0aW9uKikKQEAgLTEzMSw3ICsxMjIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWREZXN0
cm95RG93bmxvYWQoKQogCiBDb3JlSVBDOjpDb25uZWN0aW9uKiBOZXR3b3JrUHJvY2Vzczo6ZG93
bmxvYWRQcm94eUNvbm5lY3Rpb24oKQogewotICAgIHJldHVybiBtX3VpQ29ubmVjdGlvbi5nZXQo
KTsKKyAgICByZXR1cm4gY29ubmVjdGlvbigpOwogfQogCiBBdXRoZW50aWNhdGlvbk1hbmFnZXIm
IE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIoKQpAQCAtMTQ2
LDcgKzEzNyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1lCiAgICAgV2ViS2l0Ojppbml0aWFs
aXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOwogI2VuZGlmIC8vICFMT0dfRElTQUJMRUQKIAot
ICAgIHBsYXRmb3JtSW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKKyAgICBwbGF0Zm9ybUluaXRpYWxp
emVOZXR3b3JrUHJvY2VzcyhwYXJhbWV0ZXJzKTsKIAogICAgIHNldENhY2hlTW9kZWwoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHBhcmFtZXRlcnMuY2FjaGVNb2RlbCkpOwogCkBAIC0xNzUsNyArMTY2
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKQogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJl
bGVhc2UoKSk7CiAKICAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5n
UG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwotICAgIG1fdWlDb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhjbGllbnRQb3J0KSwgMCk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY2xp
ZW50UG9ydCkpOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkBAIC0yMTIs
NiArMjAzLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTW9kZWwodWludDMyX3Qg
Y20pCiAgICAgfQogfQogCisjaWYgIVBMQVRGT1JNKE1BQykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmluaXRpYWxpemVTYW5kYm94KGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllcikKK3sKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCAwYzgzODdlMjZmYzNlZWUxYWNjOGZjNzVjNGQyMmVjNmQ4NGNjMjYzLi42
NzM1MmY1NGJlNmM2MzlhNGEyYmVjZWI5MWMxMjFjN2NkM2FhNjJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTY0LDkgKzY0LDYgQEAg
cHVibGljOgogICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBu
ZXcgVCh0aGlzKSk7CiAgICAgfQogCi0gICAgdm9pZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBT
dHJpbmcmIGNsaWVudElkZW50aWZpZXIpOwotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb24o
Q29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7Ci0KICAgICB2b2lkIHJlbW92ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKik7
CiAKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyJiBuZXR3b3JrUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyKCkgeyByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOyB9CkBA
IC03NywxMiArNzQsMTEgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2VzcygpOwogICAgIH5O
ZXR3b3JrUHJvY2VzcygpOwogCi0gICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Jik7CiAKICAgICAvLyBDaGlsZFByb2Nlc3MKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVGVybWlu
YXRlKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0
aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV91aUNvbm5lY3Rpb24uZ2V0KCk7IH0KLSAg
ICB2aXJ0dWFsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0IFN0cmluZyYg
Y2xpZW50SWRlbnRpZmllcikgT1ZFUlJJREU7CiAKICAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9u
OjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKSBP
VkVSUklERTsKQEAgLTExMSw5ICsxMDcsNiBAQCBwcml2YXRlOgogICAgIC8vIFBsYXRmb3JtIEhl
bHBlcnMKICAgICB2b2lkIHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKTsKIAotICAg
IC8vIFRoZSBjb25uZWN0aW9uIHRvIHRoZSBVSSBwcm9jZXNzLgotICAgIFJlZlB0cjxDb3JlSVBD
OjpDb25uZWN0aW9uPiBtX3VpQ29ubmVjdGlvbjsKLQogICAgIC8vIENvbm5lY3Rpb25zIHRvIFdl
YlByb2Nlc3Nlcy4KICAgICBWZWN0b3I8UmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzPiA+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NJbml0aWFsaXphdGlvbi5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzSW5pdGlhbGl6
YXRpb24uaAppbmRleCBiNWRmMGU4ZDFkOWEzNmM3MWQxMDk0ZmY3NGNkMGZiYmJkMGM1Mjg4Li43
NDhmZmE1YTgzN2M0NzRiYjYwZDhhMmRjZDA0ZWVlZTBkYmIwYWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NJbml0aWFsaXphdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vz
c0luaXRpYWxpemF0aW9uLmgKQEAgLTI2LDE5ICsyNiwxMSBAQAogI2lmbmRlZiBOZXR3b3JrUHJv
Y2Vzc0luaXRpYWxpemF0aW9uX2gKICNkZWZpbmUgTmV0d29ya1Byb2Nlc3NJbml0aWFsaXphdGlv
bl9oCiAKLSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1zdHJ1Y3QgTmV0d29ya1Byb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgewotICAgIFN0
cmluZyB1aVByb2Nlc3NOYW1lOwotCi0gICAgU3RyaW5nIGNsaWVudElkZW50aWZpZXI7Ci0gICAg
Q29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcjsKLX07
Ci0KLXZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7Cit2b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhj
b25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0KaW5kZXggYjI5
OTg4ZWYxZTkxZWFlN2E3Yjk4ZDY5N2I2YjU1NTg2ZDQ0NDdjYy4uZjQyMWQwYzk2ZmI3ODdjYTFj
Yjk4ZTJmYzc1ODQzMDkyMjJmOWMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzSW5pdGlhbGl6YXRpb24u
bW0KQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi12b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3Jr
UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3ZvaWQgaW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgSW5p
dFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKQEAgLTUxLDkgKzUxLDcgQEAgdm9pZCBpbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMmIHBhcmEKICAgICAgICAgICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFtZSgoQ0ZT
dHJpbmdSZWYpYXBwbGljYXRpb25OYW1lKTsKICAgICAgICAgfQogCi0gICAgICAgIE5ldHdvcmtQ
cm9jZXNzJiBuZXR3b3JrUHJvY2VzcyA9IE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKTsKLSAgICAg
ICAgbmV0d29ya1Byb2Nlc3MuaW5pdGlhbGl6ZVNhbmRib3gocGFyYW1ldGVycy5jbGllbnRJZGVu
dGlmaWVyKTsKLSAgICAgICAgbmV0d29ya1Byb2Nlc3MuaW5pdGlhbGl6ZUNvbm5lY3Rpb24ocGFy
YW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgICAgIE5ldHdvcmtQcm9jZXNzOjpz
aGFyZWQoKS5pbml0aWFsaXplKHBhcmFtZXRlcnMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCmlu
ZGV4IDMzMzNjMmFlMzQ3Y2FmNDcyMGNhZTNlNWJjZmU4YWNmOGJlMWY3ODcuLmMxNDE1MjRmZmQ1
MzAyNjA5YjMyYjM3YWI4YmQxYWQyZDNkNWI2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KQEAgLTUxLDcgKzUx
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5n
JikKICAgICAvLyBGSVhNRTogSW5pdGlhbGl6ZSB0aGUgc2FuZGJveC4KIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgbV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBwYXJhbWV0
ZXJzLmRpc2tDYWNoZURpcmVjdG9yeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0KaW5kZXggOGM5ODFi
ZDhkNjFkMzkwZDAzN2ZlMmYyZjhlMTVjNDhjOWNhNTNlZC4uYjQ1YjYxMDY1NDcxMGNmZDllZDY3
NjdmMzRjMjFmYWQ3NzNjYzE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1tCkBAIC04MCw3ICs4MCw3
IEBAIGludCBOZXR3b3JrUHJvY2Vzc01haW4oY29uc3QgQ29tbWFuZExpbmUmIGNvbW1hbmRMaW5l
KQogICAgIC8vIG9uIHRoZSBvdXRlciBtb3N0IHJ1bmxvb3AgYmVpbmcgYW4gQXBwS2l0IHJ1bmxv
b3AuCiAgICAgW05TQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dOwogCi0gICAgTmV0d29y
a1Byb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBDaGlsZFBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJz
LnVpUHJvY2Vzc05hbWUgPSBjb21tYW5kTGluZVsidWktcHJvY2Vzcy1uYW1lIl07CiAgICAgcGFy
YW1ldGVycy5jbGllbnRJZGVudGlmaWVyID0gY29tbWFuZExpbmVbImNsaWVudC1pZGVudGlmaWVy
Il07CiAgICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHNlcnZlclBvcnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAppbmRleCBi
NjM4OWU4NmI1ZTIwZWFlZTRiZGZiY2EwNGNlMWM5MGYzMTVkNzUzLi42M2ZjNGNjOTAzNjljYjFk
NDM1M2U0NjBjMGI4NTQ4ZDU5ODViODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKQEAgLTc4LDIzICs3OCwxMyBAQCBQbHVnaW5Qcm9jZXNz
OjpQbHVnaW5Qcm9jZXNzKCkKICAgICAsIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KE1B
Q0hfUE9SVF9OVUxMKQogI2VuZGlmCiB7CisgICAgTmV0c2NhcGVQbHVnaW46OnNldFNldEV4Y2Vw
dGlvbkZ1bmN0aW9uKFdlYlByb2Nlc3NDb25uZWN0aW9uOjpzZXRHbG9iYWxFeGNlcHRpb24pOwog
fQogCiBQbHVnaW5Qcm9jZXNzOjp+UGx1Z2luUHJvY2VzcygpCiB7CiB9CiAKLXZvaWQgUGx1Z2lu
UHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllciBzZXJ2ZXJJZGVudGlmaWVyKQotewotICAgIEFTU0VSVCghbV9jb25uZWN0aW9uKTsKLQot
ICAgIG1fY29ubmVjdGlvbiA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5l
Y3Rpb24oc2VydmVySWRlbnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKLSAgICBtX2Nv
bm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soZGlkQ2xv
c2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUpOwotICAgIG1fY29ubmVjdGlvbi0+b3BlbigpOwotCi0g
ICAgTmV0c2NhcGVQbHVnaW46OnNldFNldEV4Y2VwdGlvbkZ1bmN0aW9uKFdlYlByb2Nlc3NDb25u
ZWN0aW9uOjpzZXRHbG9iYWxFeGNlcHRpb24pOwotfQotCiB2b2lkIFBsdWdpblByb2Nlc3M6OnJl
bW92ZVdlYlByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NDb25uZWN0aW9uKiB3ZWJQcm9jZXNz
Q29ubmVjdGlvbikKIHsKICAgICBzaXplX3QgdmVjdG9ySW5kZXggPSBtX3dlYlByb2Nlc3NDb25u
ZWN0aW9ucy5maW5kKHdlYlByb2Nlc3NDb25uZWN0aW9uKTsKQEAgLTE1OSw3ICsxNDksNyBAQCB2
b2lkIFBsdWdpblByb2Nlc3M6OmluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcgogICAgIHNldE1pbmltdW1MaWZldGltZShwYXJhbWV0ZXJz
Lm1pbmltdW1MaWZldGltZSk7CiAgICAgc2V0VGVybWluYXRpb25UaW1lb3V0KHBhcmFtZXRlcnMu
dGVybWluYXRpb25UaW1lb3V0KTsKIAotICAgIHBsYXRmb3JtSW5pdGlhbGl6ZShwYXJhbWV0ZXJz
KTsKKyAgICBwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKHBhcmFtZXRlcnMpOwogfQog
CiB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKQEAgLTE3
Niw3ICsxNjYsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKCkKICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxl
YXNlKCkpOwogCiAgICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1Bv
cnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24o
Y2xpZW50UG9ydCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwg
MCk7CisgICAgc2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQ
cm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb24pKTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIGlu
dCBzb2NrZXRzWzJdOwogICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAw
LCBzb2NrZXRzKSA9PSAtMSkgewpAQCAtMjA4LDcgKzE5OCw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vz
czo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rp
b25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKICAgICBDb3JlSVBDOjpBdHRhY2ht
ZW50IGNsaWVudFNvY2tldChzb2NrZXRzWzBdKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24o
Y2xpZW50U29ja2V0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24p
LCAwKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdl
YlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFNvY2tldCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uKSk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5k
aWYKQEAgLTIzMiw3ICsyMjIsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmdldFNpdGVzV2l0aERh
dGEodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBpZiAoTmV0c2NhcGVQbHVnaW5Nb2R1bGUqIG1v
ZHVsZSA9IG5ldHNjYXBlUGx1Z2luTW9kdWxlKCkpCiAgICAgICAgIHNpdGVzID0gbW9kdWxlLT5z
aXRlc1dpdGhEYXRhKCk7CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlBsdWdp
blByb2Nlc3NQcm94eTo6RGlkR2V0U2l0ZXNXaXRoRGF0YShzaXRlcywgY2FsbGJhY2tJRCksIDAp
OworICAgIHNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkR2V0U2l0ZXNXaXRo
RGF0YShzaXRlcywgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3M6OmNsZWFy
U2l0ZURhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWlu
dDY0X3QgbWF4QWdlSW5TZWNvbmRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQpAQCAtMjQ5LDcgKzIz
OSw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y2xlYXJTaXRlRGF0YShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGZsYWdzLCB1CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ2xlYXJT
aXRlRGF0YShjYWxsYmFja0lEKSwgMCk7CisgICAgc2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vz
c1Byb3h5OjpEaWRDbGVhclNpdGVEYXRhKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBQbHVnaW5Q
cm9jZXNzOjpzZXRNaW5pbXVtTGlmZXRpbWUoZG91YmxlIGxpZmV0aW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaAppbmRleCBjYWU5MjIyMmU2MTkwZDg0
MzgxOWY0NDY1NDI4ZWFjMTBhMGRjYjI0Li41ZWVlYzRkZjlkYjVmODQzOThjNTFmMzlmZjczOGFh
YzUxMTkxYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
blByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nl
c3MuaApAQCAtNDIsMTAgKzQyLDkgQEAgY2xhc3MgTmV0c2NhcGVQbHVnaW5Nb2R1bGU7CiBjbGFz
cyBXZWJQcm9jZXNzQ29ubmVjdGlvbjsKIHN0cnVjdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOwogICAgICAgICAKLWNsYXNzIFBsdWdpblByb2Nlc3MgOiBDaGlsZFByb2Nlc3Mgewor
Y2xhc3MgUGx1Z2luUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFBsdWdpblByb2Nlc3MpOwogcHVibGljOgotCiAgICAgZW51bSBUeXBlIHsK
ICAgICAgICAgLy8gU3RhcnQgd2l0aCB2YWx1ZSBvbmUgc2luY2UgZGVmYXVsdCBIYXNoVHJhaXRz
PD4gZGlzYWxsb3dzIHplcm8gYXMga2V5LgogICAgICAgICBUeXBlUmVndWxhclByb2Nlc3MgPSAx
LApAQCAtNTQsOCArNTMsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGx1Z2luUHJvY2VzcyYg
c2hhcmVkKCk7CiAKLSAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIpOwotCiAgICAgdm9pZCByZW1vdmVXZWJQcm9jZXNzQ29ubmVjdGlv
bihXZWJQcm9jZXNzQ29ubmVjdGlvbiopOwogCiAgICAgTmV0c2NhcGVQbHVnaW5Nb2R1bGUqIG5l
dHNjYXBlUGx1Z2luTW9kdWxlKCk7CkBAIC02Myw5ICs2MCw2IEBAIHB1YmxpYzoKICAgICBjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpblBhdGg7IH0KIAog
I2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGluaXRpYWxpemVTaGltKCk7Ci0gICAgdm9pZCBp
bml0aWFsaXplQ29jb2FPdmVycmlkZXMoKTsKLQogICAgIHZvaWQgc2V0TW9kYWxXaW5kb3dJc1No
b3dpbmcoYm9vbCk7CiAgICAgdm9pZCBzZXRGdWxsc2NyZWVuV2luZG93SXNTaG93aW5nKGJvb2wp
OwogCkBAIC03OSw5ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgflBsdWdpblByb2Nlc3MoKTsKIAog
ICAgIC8vIENoaWxkUHJvY2VzcwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUZXJtaW5hdGUoKTsK
LSAgICB2aXJ0dWFsIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVh
bCBib29sIHNob3VsZFRlcm1pbmF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemUoKSBPVkVSUklERTsKIAogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246
OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9W
RVJSSURFOwpAQCAtOTUsNyArODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0U2l0ZXNXaXRo
RGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGNsZWFyU2l0ZURhdGEoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWludDY0X3QgbWF4QWdlSW5T
ZWNvbmRzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKIAotICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyYpOwogICAgIAogICAgIHZvaWQgc2V0TWluaW11bUxpZmV0aW1lKGRvdWJsZSk7
CiAgICAgdm9pZCBtaW5pbXVtTGlmZXRpbWVUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCA1OTZh
M2FmOTQwZDg5YTdlN2JiNjdjNjkwMmVmZjlmYjA5ZDlkNDBlLi40ZTRhMDJkOTlkMzk5ZDdmNmYx
ZjY0ZDdhNGZkYjA2ZThlNDE4ZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTQ0LDggKzQ0LDYgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBwdGhyZWFkX29uY2VfdCBzaG91bGRDYWxsUmVhbERl
YnVnZ2VyT25jZSA9IFBUSFJFQURfT05DRV9JTklUOwotCiBjbGFzcyBGdWxsc2NyZWVuV2luZG93
VHJhY2tlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnVsbHNjcmVlbldpbmRvd1RyYWNr
ZXIpOwogCkBAIC0xMjcsNiArMTI1LDkgQEAgc3RhdGljIEZ1bGxzY3JlZW5XaW5kb3dUcmFja2Vy
JiBmdWxsc2NyZWVuV2luZG93VHJhY2tlcigpCiAgICAgcmV0dXJuIGZ1bGxzY3JlZW5XaW5kb3dU
cmFja2VyOwogfQogCisjaWYgZGVmaW5lZChfX2kzODZfXykKKworc3RhdGljIHB0aHJlYWRfb25j
ZV90IHNob3VsZENhbGxSZWFsRGVidWdnZXJPbmNlID0gUFRIUkVBRF9PTkNFX0lOSVQ7CiBzdGF0
aWMgYm9vbCBpc1VzZXJicmVha1NldCA9IGZhbHNlOwogCiBzdGF0aWMgdm9pZCBpbml0U2hvdWxk
Q2FsbFJlYWxEZWJ1Z2dlcigpCkBAIC0xNzksNiArMTgwLDggQEAgc3RhdGljIHZvaWQgY2FyYm9u
V2luZG93SGlkZGVuKFdpbmRvd1JlZiB3aW5kb3cpCiAjZW5kaWYKIH0KIAorI2VuZGlmCisKIHN0
YXRpYyB2b2lkIHNldE1vZGFsKGJvb2wgbW9kYWxXaW5kb3dJc1Nob3dpbmcpCiB7CiAgICAgUGx1
Z2luUHJvY2Vzczo6c2hhcmVkKCkuc2V0TW9kYWxXaW5kb3dJc1Nob3dpbmcobW9kYWxXaW5kb3dJ
c1Nob3dpbmcpOwpAQCAtMjIxLDggKzIyNCwxMCBAQCBzdGF0aWMgTlNJbnRlZ2VyIHJlcGxhY2Vk
UnVuTW9kYWxGb3JXaW5kb3coaWQgc2VsZiwgU0VMIF9jbWQsIE5TV2luZG93KiB3aW5kb3cpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXplU2hp
bSgpCisjaWYgZGVmaW5lZChfX2kzODZfXykKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVTaGltKCkK
IHsKKyAgICAvLyBJbml0aWFsaXplIHRoZSBzaGltIGZvciAzMi1iaXQgb25seS4KICAgICBjb25z
dCBQbHVnaW5Qcm9jZXNzU2hpbUNhbGxiYWNrcyBjYWxsYmFja3MgPSB7CiAgICAgICAgIHNob3Vs
ZENhbGxSZWFsRGVidWdnZXIsCiAgICAgICAgIGlzV2luZG93QWN0aXZlLApAQCAtMjM3LDggKzI0
Miw5IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVNoaW0oKQogICAgIFBsdWdpblBy
b2Nlc3NTaGltSW5pdGlhbGl6ZUZ1bmMgaW5pdEZ1bmMgPSByZWludGVycHJldF9jYXN0PFBsdWdp
blByb2Nlc3NTaGltSW5pdGlhbGl6ZUZ1bmM+KGRsc3ltKFJUTERfREVGQVVMVCwgIldlYktpdFBs
dWdpblByb2Nlc3NTaGltSW5pdGlhbGl6ZSIpKTsKICAgICBpbml0RnVuYyhjYWxsYmFja3MpOwog
fQorI2VuZGlmCiAKLXZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVz
KCkKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVDb2NvYU92ZXJyaWRlcygpCiB7CiAgICAgLy8gT3Zl
cnJpZGUgLVtOU0FwcGxpY2F0aW9uIHJ1bk1vZGFsRm9yV2luZG93Ol0KICAgICBNZXRob2QgcnVu
TW9kYWxGb3JXaW5kb3dNZXRob2QgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChvYmpjX2dldENs
YXNzKCJOU0FwcGxpY2F0aW9uIiksIEBzZWxlY3RvcihydW5Nb2RhbEZvcldpbmRvdzopKTsKQEAg
LTI2Miw2ICsyNjgsMTcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXplQ29jb2FPdmVy
cmlkZXMoKQogICAgIENGUmV0YWluKG9yZGVyT2ZmU2NyZWVuT2JzZXJ2ZXIpOwogfQogCit2b2lk
IFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisjaWYgZGVmaW5lZChfX2kz
ODZfXykKKyAgICAvLyBJbml0aWFsaXplIHRoZSBzaGltLgorICAgIGluaXRpYWxpemVTaGltKCk7
CisjZW5kaWYKKworICAgIC8vIEluaXRpYWxpemUgQ29jb2Egb3ZlcnJpZGVzLgorICAgIGluaXRp
YWxpemVDb2NvYU92ZXJyaWRlcygpOworfQorCiB2b2lkIFBsdWdpblByb2Nlc3M6OnNldE1vZGFs
V2luZG93SXNTaG93aW5nKGJvb2wgbW9kYWxXaW5kb3dJc1Nob3dpbmcpCiB7CiAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OlNldE1vZGFsV2luZG93
SXNTaG93aW5nKG1vZGFsV2luZG93SXNTaG93aW5nKSwgMCk7CkBAIC0zMDksNyArMzI2LDcgQEAg
c3RhdGljIHZvaWQgbXV0ZUF1ZGlvKHZvaWQpCiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCA9PSBub0Vycik7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit2
b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoY29uc3Qg
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX2Nv
bXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydCA9IHBhcmFtZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1BvcnQucG9ydCgpOwogCkBAIC0zMjEsNyArMzM4LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGEKICAgICAKICAgICBXS1NldFZpc2libGVBcHBsaWNhdGlvbk5hbWUoKENGU3RyaW5nUmVm
KWFwcGxpY2F0aW9uTmFtZSk7CiAKLSAgICBpbml0aWFsaXplU2FuZGJveChtX3BsdWdpblBhdGgs
IHBhcmFtZXRlcnMuc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoKTsKKyAgICBXZWJLaXQ6Omlu
aXRpYWxpemVTYW5kYm94KG1fcGx1Z2luUGF0aCwgcGFyYW1ldGVycy5zYW5kYm94UHJvZmlsZURp
cmVjdG9yeVBhdGgpOwogCiAgICAgaWYgKHBhcmFtZXRlcnMucHJvY2Vzc1R5cGUgPT0gVHlwZVNu
YXBzaG90UHJvY2VzcykKICAgICAgICAgbXV0ZUF1ZGlvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFpbk1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1tCmluZGV4
IDQ4MjNiYWFmOTdiYTQ3NDgwMGYzNDE4Nzc3MGU4YzBiNGJkNmIwZTEuLjBjMjFmZDM3NWI4ZTE2
NTMxMzEyMzE4OWZhNzc2NWExMGI5MTU4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1tCkBAIC0xMTgsMTYg
KzExOCwxMSBAQCBpbnQgUGx1Z2luUHJvY2Vzc01haW4oY29uc3QgQ29tbWFuZExpbmUmIGNvbW1h
bmRMaW5lKQogICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgICAgIFJ1
bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCi0jaWYgZGVmaW5lZChfX2kzODZfXykK
LSAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgc2hpbSBmb3IgMzItYml0IG9ubHkuCi0gICAgICAg
IFBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVTaGltKCk7Ci0jZW5kaWYKLQotICAg
ICAgICAvLyBJbml0aWFsaXplIENvY29hIG92ZXJyaWRlcy4KLSAgICAgICAgUGx1Z2luUHJvY2Vz
czo6c2hhcmVkKCkuaW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVzKCk7Ci0KLSAgICAgICAgLy8gSW5p
dGlhbGl6ZSB0aGUgcGx1Zy1pbiBwcm9jZXNzIGNvbm5lY3Rpb24uCi0gICAgICAgIFBsdWdpblBy
b2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIoc2VydmVyUG9ydCkpOworICAgICAgICBDaGlsZFByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NO
YW1lID0gY29tbWFuZExpbmVbInVpLXByb2Nlc3MtbmFtZSJdOworICAgICAgICBwYXJhbWV0ZXJz
LmNsaWVudElkZW50aWZpZXIgPSBjb21tYW5kTGluZVsiY2xpZW50LWlkZW50aWZpZXIiXTsKKyAg
ICAgICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IENvcmVJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIoc2VydmVyUG9ydCk7CisgICAgICAgIFBsdWdpblByb2Nlc3M6OnNoYXJl
ZCgpLmluaXRpYWxpemUocGFyYW1ldGVycyk7CiAKICAgICAgICAgW05TQXBwbGljYXRpb24gc2hh
cmVkQXBwbGljYXRpb25dOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwCmluZGV4IDEzZWM0MmQxZmVmNjJi
NzZjYmY2M2JjZDY5YTkyMTFmNzY4NTAyODMuLjNjYjhlZTc3NTQ5ODVjMGQzMmJlNTI3OTNhZjdi
YzQ5MzhiNDcxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQv
UGx1Z2luUHJvY2Vzc01haW5RdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcApAQCAtMTAxLDcgKzEwMSwxMSBAQCBRX0RFQ0xf
RVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAg
aW50IGlkZW50aWZpZXIgPSBhcHAuYXJndW1lbnRzKCkuYXQoMSkudG9JbnQoJmlzTnVtYmVyLCAx
MCk7CiAgICAgaWYgKCFpc051bWJlcikKICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSAg
ICBXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVDb25uZWN0aW9uKGlk
ZW50aWZpZXIpOworCisgICAgV2ViS2l0OjpDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMgcGFyYW1ldGVyczsKKyAgICBwYXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0g
aWRlbnRpZmllcjsKKworICAgIFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlh
bGl6ZShwYXJhbWV0ZXJzKTsKIAogICAgIFJ1bkxvb3A6OnJ1bigpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NRdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NRdC5jcHAKaW5kZXggNjlm
ODQwMjVmMmY4YzYyNTAzMDAwMDliZGMxYWNiMDI4YjY4NDYwYy4uY2U5NDQ2ZGY5YTIwNjc1ZDM5
MjgwODhkMDg0YThmZTdmMzFiYjg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc1F0LmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotdm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUo
Y29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3ZvaWQg
UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vzcyhjb25zdCBQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3Vu
aXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCmluZGV4IDgyYzhiZGFjNGVkN2MwZDdm
YTBlMTcxMmYyN2QxYjhiNDNmZDdjMjguLjNjNTk1ZjljYjhmNWY0OWM5NDI3N2RkY2EwYmMxZjRl
MGI4MTQ1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9Q
bHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCkBAIC0xMDYsNyArMTA2LDEyIEBAIFdL
X0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5Vbml4KGludCBhcmdjLCBjaGFyKiBhcmd2W10p
CiAjZW5kaWYKIAogICAgIGludCBzb2NrZXQgPSBhdG9pKGFyZ3ZbMV0pOwotICAgIFdlYktpdDo6
UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZUNvbm5lY3Rpb24oc29ja2V0KTsKKwor
ICAgIFdlYktpdDo6Q2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7CisgICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHNvY2tldDsKKworICAg
IFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsK
KwogICAgIFJ1bkxvb3A6OnJ1bigpOwogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwIGIvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcAppbmRl
eCA1MGRhYTAyYWFiY2NlYTc3Mjg3OTg1OGJmNjNkNWMzYjFkN2YwYjM4Li5mMTIwYTExNWY2N2Y4
NjU3ZmQ0OWIxOWYwYzFmNDdmZmM5NGQyZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzVW5peC5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQordm9p
ZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBs
dWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCmluZGV4IDg2ZDZiM2Q4OTM1
NDk5NzkxMTRiOTRjYTYxY2ZmMGVlMTlhMTk1NGIuLmE0NDBhMWVkNzAyOWJjNjU3NDk1YTA4YjRj
NDg5NWY1NDFkMTI1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCkBA
IC00MSwxNCArNDEsNDkgQEAgQ2hpbGRQcm9jZXNzOjpDaGlsZFByb2Nlc3MoKQogewogICAgIC8v
IEZJWE1FOiBUaGUgdGVybWluYXRpb24gdGltZXIgc2hvdWxkIG5vdCBiZSBzY2hlZHVsZWQgb24g
dGhlIG1haW4gcnVuIGxvb3AuCiAgICAgLy8gSXQgd29uJ3Qgd29yayB3aXRoIHRoZSB0aHJlYWRl
ZCBtb2RlLCBidXQgaXQncyBub3QgcmVhbGx5IHVzZWZ1bCBhbnl3YXkgYXMgaXMuCi0gICAgCi0g
ICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiB9CiAKIENoaWxkUHJvY2Vzczo6fkNoaWxkUHJvY2Vz
cygpCiB7CiB9CiAKK05PX1JFVFVSTiBzdGF0aWMgdm9pZCB3YXRjaGRvZ0NhbGxiYWNrKCkKK3sK
KyAgICAvLyBXZSB1c2UgX2V4aXQgaGVyZSBzaW5jZSB0aGUgd2F0Y2hkb2cgY2FsbGJhY2sgaXMg
Y2FsbGVkIGZyb20gYW5vdGhlciB0aHJlYWQgYW5kIHdlIGRvbid0IHdhbnQgCisgICAgLy8gZ2xv
YmFsIGRlc3RydWN0b3JzIG9yIGF0ZXhpdCBoYW5kbGVycyB0byBiZSBjYWxsZWQgZnJvbSB0aGlz
IHRocmVhZCB3aGlsZSB0aGUgbWFpbiB0aHJlYWQgaXMgYnVzeQorICAgIC8vIGRvaW5nIGl0cyB0
aGluZy4KKyAgICBfZXhpdChFWElUX0ZBSUxVUkUpOworfQorCitzdGF0aWMgdm9pZCBkaWRDbG9z
ZU9uQ29ubmVjdGlvbldvcmtRdWV1ZShXb3JrUXVldWUmIHdvcmtRdWV1ZSwgQ29yZUlQQzo6Q29u
bmVjdGlvbiopCit7CisgICAgLy8gSWYgdGhlIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIGFu
ZCB3ZSBoYXZlbid0IHJlc3BvbmRlZCBpbiB0aGUgbWFpbiB0aHJlYWQgZm9yIDEwIHNlY29uZHMK
KyAgICAvLyB0aGUgcHJvY2VzcyB3aWxsIGV4aXQgZm9yY2libHkuCisgICAgc3RhdGljIGNvbnN0
IGRvdWJsZSB3YXRjaGRvZ0RlbGF5ID0gMTAuMDsKKworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaEFm
dGVyRGVsYXkoYmluZChzdGF0aWNfY2FzdDx2b2lkKCopKCk+KHdhdGNoZG9nQ2FsbGJhY2spKSwg
d2F0Y2hkb2dEZWxheSk7Cit9CisKK3ZvaWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplKGNvbnN0
IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAg
ICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKKworICAgIGluaXRpYWxpemVTYW5kYm94KHBhcmFtZXRl
cnMuY2xpZW50SWRlbnRpZmllcik7CisgICAgCisgICAgbV9jb25uZWN0aW9uID0gQ29yZUlQQzo6
Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihwYXJhbWV0ZXJzLmNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOworICAgIG1fY29ubmVjdGlvbi0+c2V0
RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhkaWRDbG9zZU9uQ29ubmVjdGlv
bldvcmtRdWV1ZSk7CisgICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb24obV9jb25uZWN0aW9uLmdldCgp
KTsKKyAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKTsKK30KKwordm9pZCBDaGlsZFByb2Nlc3M6Omlu
aXRpYWxpemVDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb24qKQoreworfQorCit2b2lkIENo
aWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBjbGllbnRJZGVudGlm
aWVyKQoreworfQorCiB2b2lkIENoaWxkUHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3JlSVBDOjpNZXNzYWdl
UmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5h
ZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZVJlY2VpdmVyKTsK
QEAgLTk2LDI0ICsxMzEsMTAgQEAgdm9pZCBDaGlsZFByb2Nlc3M6OnRlcm1pbmF0aW9uVGltZXJG
aXJlZCgpCiAKIHZvaWQgQ2hpbGRQcm9jZXNzOjp0ZXJtaW5hdGUoKQogewotICAgIFJ1bkxvb3A6
Om1haW4oKS0+c3RvcCgpOwotfQorICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAg
IG1fY29ubmVjdGlvbiA9IG51bGxwdHI7CiAKLU5PX1JFVFVSTiBzdGF0aWMgdm9pZCB3YXRjaGRv
Z0NhbGxiYWNrKCkKLXsKLSAgICAvLyBXZSB1c2UgX2V4aXQgaGVyZSBzaW5jZSB0aGUgd2F0Y2hk
b2cgY2FsbGJhY2sgaXMgY2FsbGVkIGZyb20gYW5vdGhlciB0aHJlYWQgYW5kIHdlIGRvbid0IHdh
bnQgCi0gICAgLy8gZ2xvYmFsIGRlc3RydWN0b3JzIG9yIGF0ZXhpdCBoYW5kbGVycyB0byBiZSBj
YWxsZWQgZnJvbSB0aGlzIHRocmVhZCB3aGlsZSB0aGUgbWFpbiB0aHJlYWQgaXMgYnVzeQotICAg
IC8vIGRvaW5nIGl0cyB0aGluZy4KLSAgICBfZXhpdChFWElUX0ZBSUxVUkUpOwotfQotCi12b2lk
IENoaWxkUHJvY2Vzczo6ZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoV29ya1F1ZXVlJiB3
b3JrUXVldWUsIENvcmVJUEM6OkNvbm5lY3Rpb24qKQotewotICAgIC8vIElmIHRoZSBjb25uZWN0
aW9uIGhhcyBiZWVuIGNsb3NlZCBhbmQgd2UgaGF2ZW4ndCByZXNwb25kZWQgaW4gdGhlIG1haW4g
dGhyZWFkIGZvciAxMCBzZWNvbmRzCi0gICAgLy8gdGhlIHByb2Nlc3Mgd2lsbCBleGl0IGZvcmNp
Ymx5LgotICAgIHN0YXRpYyBjb25zdCBkb3VibGUgd2F0Y2hkb2dEZWxheSA9IDEwLjA7Ci0KLSAg
ICB3b3JrUXVldWUuZGlzcGF0Y2hBZnRlckRlbGF5KGJpbmQoc3RhdGljX2Nhc3Q8dm9pZCgqKSgp
Pih3YXRjaGRvZ0NhbGxiYWNrKSksIHdhdGNoZG9nRGVsYXkpOworICAgIFJ1bkxvb3A6Om1haW4o
KS0+c3RvcCgpOwogfQogCiAjaWYgIVBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGls
ZFByb2Nlc3MuaAppbmRleCBkYzUwNGMzZmVkNTY0ZjQ0YTY1YWMzYTliMzQ2MDkxNjE1ZWVjOGU3
Li4zODQ5Y2QzNzU2MGRmMmRkNmJhYjg2NmM1MjExNzYxNWIzNDc4MWUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0NoaWxkUHJvY2Vzcy5oCkBAIC0zMSwxNyArMzEsMjIgQEAKICNpbmNsdWRlICJNZXNz
YWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotCi0jaWYgUExBVEZPUk0oTUFDKQotT0JKQ19DTEFTUyBOU1N0cmluZzsK
LSNlbmRpZgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAorc3RydWN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyB7Cisg
ICAgU3RyaW5nIHVpUHJvY2Vzc05hbWU7CisgICAgU3RyaW5nIGNsaWVudElkZW50aWZpZXI7Cisg
ICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcjsK
K307CisKIGNsYXNzIENoaWxkUHJvY2VzcyA6IHByb3RlY3RlZCBDb3JlSVBDOjpDb25uZWN0aW9u
OjpDbGllbnQsIHB1YmxpYyBDb3JlSVBDOjpNZXNzYWdlU2VuZGVyPENoaWxkUHJvY2Vzcz4gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENoaWxkUHJvY2Vzcyk7CiAKIHB1YmxpYzoKKyAgICB2
b2lkIGluaXRpYWxpemUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
Jik7CisKICAgICAvLyBkaXNhYmxlIGFuZCBlbmFibGUgdGVybWluYXRpb24gb2YgdGhlIHByb2Nl
c3MuIHdoZW4gZGlzYWJsZVRlcm1pbmF0aW9uIGlzIGNhbGxlZCwgdGhlCiAgICAgLy8gcHJvY2Vz
cyB3b24ndCB0ZXJtaW5hdGUgdW5sZXNzIGEgY29ycmVzcG9uZGluZyBkaXNhYmxlVGVybWluYXRp
b24gY2FsbCBpcyBtYWRlLgogICAgIHZvaWQgZGlzYWJsZVRlcm1pbmF0aW9uKCk7CkBAIC03Mywx
MSArNzgsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJv
b2wpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBkaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtR
dWV1ZShXb3JrUXVldWUmLCBDb3JlSVBDOjpDb25uZWN0aW9uKik7Ci0KICAgICAvLyBVc2VkIGJ5
IENvcmVJUEM6Ok1lc3NhZ2VTZW5kZXIKLSAgICB2aXJ0dWFsIENvcmVJUEM6OkNvbm5lY3Rpb24q
IGNvbm5lY3Rpb24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKCkgY29uc3QgPSAwOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KKyAgICB1aW50NjRfdCBkZXN0aW5h
dGlvbklEKCkgY29uc3QgeyByZXR1cm4gMDsgfQorCisgICAgQ29yZUlQQzo6TWVzc2FnZVJlY2Vp
dmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAoKSB7IHJldHVybiBtX21lc3NhZ2VSZWNlaXZlck1h
cDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2hpbGRQcm9jZXNzKCk7CkBAIC04NSwx
NSArOTAsMTUgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBzZXRUZXJtaW5hdGlvblRpbWVvdXQo
ZG91YmxlIHNlY29uZHMpIHsgbV90ZXJtaW5hdGlvblRpbWVvdXQgPSBzZWNvbmRzOyB9CiAKLSAg
ICBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7Ci0KLXBy
aXZhdGU6Ci0gICAgdm9pZCB0ZXJtaW5hdGlvblRpbWVyRmlyZWQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbiopOworICAgIHZpcnR1
YWwgdm9pZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIp
OworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRUZXJtaW5hdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZSgp
OwogCi0gICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKK3ByaXZhdGU6CisgICAgdm9pZCB0
ZXJtaW5hdGlvblRpbWVyRmlyZWQoKTsKIAogICAgIC8vIFRoZSB0aW1lb3V0LCBpbiBzZWNvbmRz
LCBiZWZvcmUgdGhpcyBwcm9jZXNzIHdpbGwgYmUgdGVybWluYXRlZCBpZiB0ZXJtaW5hdGlvbgog
ICAgIC8vIGhhcyBiZWVuIGVuYWJsZWQuIElmIHRoZSB0aW1lb3V0IGlzIDAgc2Vjb25kcywgdGhl
IHByb2Nlc3Mgd2lsbCBiZSB0ZXJtaW5hdGVkIGltbWVkaWF0ZWx5LgpAQCAtMTA1LDYgKzExMCw5
IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSdW5Mb29wOjpUaW1lcjxDaGlsZFByb2Nlc3M+
IG1fdGVybWluYXRpb25UaW1lcjsKIAorICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiBt
X2Nvbm5lY3Rpb247CisgICAgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyTWFwIG1fbWVzc2FnZVJl
Y2VpdmVyTWFwOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxpZD4gbV9wcm9j
ZXNzVmlzaWJsZUFzc2VydGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAKaW5kZXggZWMy
NzU3NzJlOTQ1NzM3NmZiMzkxMDg2OTkyZmZjYTE0YTk1NWJlOS4uNjRkM2Y1OThhNTNhZjk5N2Iy
ZDYxMTg0ZDRmNTFkMmVjYzhhMjBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
V29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwCkBAIC03NywxNSAr
NzcsNiBAQCBTaGFyZWRXb3JrZXJQcm9jZXNzOjp+U2hhcmVkV29ya2VyUHJvY2VzcygpCiB7CiB9
CiAKLXZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyKQotewotICAgIEFTU0VS
VCghbV9jb25uZWN0aW9uKTsKLQotICAgIG1fY29ubmVjdGlvbiA9IENvcmVJUEM6OkNvbm5lY3Rp
b246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oc2VydmVySWRlbnRpZmllciwgdGhpcywgUnVuTG9v
cDo6bWFpbigpKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29y
a1F1ZXVlQ2FsbGJhY2soZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUpOwotICAgIG1fY29u
bmVjdGlvbi0+b3BlbigpOwotfQotCiB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OnJlbW92ZVdl
YlByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NDb25uZWN0aW9uKiB3ZWJQcm9jZXNzQ29ubmVj
dGlvbikKIHsKICAgICBzaXplX3QgdmVjdG9ySW5kZXggPSBtX3dlYlByb2Nlc3NDb25uZWN0aW9u
cy5maW5kKHdlYlByb2Nlc3NDb25uZWN0aW9uKTsKQEAgLTEyMyw3ICsxMTQsNyBAQCB2b2lkIFNo
YXJlZFdvcmtlclByb2Nlc3M6OmluaXRpYWxpemVTaGFyZWRXb3JrZXJQcm9jZXNzKGNvbnN0IFNo
YXJlZFdvcmtlclByb2NlcwogICAgIHNldE1pbmltdW1MaWZldGltZShwYXJhbWV0ZXJzLm1pbmlt
dW1MaWZldGltZSk7CiAgICAgc2V0VGVybWluYXRpb25UaW1lb3V0KHBhcmFtZXRlcnMudGVybWlu
YXRpb25UaW1lb3V0KTsKIAotICAgIHBsYXRmb3JtSW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKKyAg
ICBwbGF0Zm9ybUluaXRpYWxpemVTaGFyZWRXb3JrZXJQcm9jZXNzKHBhcmFtZXRlcnMpOwogfQog
CiB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29y
a2VyUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRX
b3JrZXJQcm9jZXNzLmgKaW5kZXggOWYyZjU0OTBkYmY3MjU0YTVjYjhmMzgzYzdhZjQyZjU1NTY1
NTc5My4uMjc1NmUzZDI2NzRjNzU3ZmEyY2FmNGVhZGVlNmUzM2FlY2ZjMTMwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQ
cm9jZXNzLmgKQEAgLTQxLDEyICs0MSwxMSBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbk1vZHVsZTsK
IGNsYXNzIFdlYlByb2Nlc3NDb25uZWN0aW9uOwogc3RydWN0IFNoYXJlZFdvcmtlclByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM7CiAKLWNsYXNzIFNoYXJlZFdvcmtlclByb2Nlc3MgOiBDaGlsZFBy
b2Nlc3MgeworY2xhc3MgU2hhcmVkV29ya2VyUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3Mg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYXJlZFdvcmtlclByb2Nlc3MpOwogcHVibGlj
OgogICAgIHN0YXRpYyBTaGFyZWRXb3JrZXJQcm9jZXNzJiBzaGFyZWQoKTsKIAotICAgIHZvaWQg
aW5pdGlhbGl6ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAg
ICAgdm9pZCByZW1vdmVXZWJQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzQ29ubmVjdGlvbiop
OwogCiBwcml2YXRlOgpAQCAtNTQsOSArNTMsNyBAQCBwcml2YXRlOgogICAgIH5TaGFyZWRXb3Jr
ZXJQcm9jZXNzKCk7CiAKICAgICAvLyBDaGlsZFByb2Nlc3MKLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkVGVybWluYXRlKCk7Ci0gICAgdmlydHVhbCBDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0
aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9Ci0gICAg
dmlydHVhbCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
MDsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUZXJtaW5hdGUoKSBPVkVSUklERTsKIAogICAg
IC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3Jl
SVBDOjpNZXNzYWdlRGVjb2RlciYpOwpAQCAtNjgsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgaW5pdGlhbGl6ZVNoYXJlZFdvcmtlclByb2Nlc3MoY29uc3QgU2hhcmVkV29ya2VyUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgY3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oKTsKIAotICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IFNoYXJlZFdvcmtlclBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVNo
YXJlZFdvcmtlclByb2Nlc3MoY29uc3QgU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYpOwogICAgIAogICAgIHZvaWQgc2V0TWluaW11bUxpZmV0aW1lKGRvdWJsZSk7CiAgICAg
dm9pZCBtaW5pbXVtTGlmZXRpbWVUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vz
c01hYy5tbQppbmRleCBjODc1ZmYwMWIxNDdkNDdjMDhhY2ZhNDFjOTdlMDk3YjJkMDEyYzU5Li5j
OGQ0N2VhNmM1Y2MzMjFmOTIyZTc0ZDI0OTAwYjU1NWJhOWExYTVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdv
cmtlclByb2Nlc3NNYWMubW0KQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZVNhbmRib3goKQogICAgIH0KIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjpwbGF0Zm9y
bUluaXRpYWxpemUoY29uc3QgU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKK3ZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
U2hhcmVkV29ya2VyUHJvY2Vzcyhjb25zdCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIE5TU3RyaW5nICphcHBsaWNhdGlvbk5hbWUgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCJTaGFyZWQgV2ViIFdvcmtl
ciAoJUAgSW50ZXJuZXQgcGx1Zy1pbikiLAogICAgICAgICAidmlzaWJsZSBuYW1lIG9mIHRoZSBw
bHVnLWluIGhvc3QgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1l
LiIpLApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OnBsYXRmb3Jt
SW5pdGlhbGl6ZShjb25zdCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYQogICAgIAogICAg
IFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFtZSgoQ0ZTdHJpbmdSZWYpYXBwbGljYXRpb25OYW1l
KTsKIAotICAgIGluaXRpYWxpemVTYW5kYm94KCk7CisgICAgV2ViS2l0Ojppbml0aWFsaXplU2Fu
ZGJveCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2Vy
UHJvY2Vzc01haW5NYWMubW0KaW5kZXggZDNlOTE5MzlhNDE3ZDA2Mjk1ODBiZGNkOWE2MmFiNzEy
Zjg5NmRkMS4uYzEyNjdhNTM2YTMyM2NkNjZiODJmYmQ1ZGMxMGI1MTg2ZmEzZjU4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2Vy
UHJvY2Vzc01haW5NYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vz
cy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW0KQEAgLTk3LDggKzk3LDExIEBAIGlu
dCBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUp
CiAgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKICAgICAgICAgUnVuTG9vcDo6
aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKLSAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgc2hh
cmVkIHdvcmtlciBwcm9jZXNzIGNvbm5lY3Rpb24uCi0gICAgICAgIFNoYXJlZFdvcmtlclByb2Nl
c3M6OnNoYXJlZCgpLmluaXRpYWxpemVDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIoc2VydmVyUG9ydCkpOworICAgICAgICBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlv
blBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NOYW1l
ID0gY29tbWFuZExpbmVbInVpLXByb2Nlc3MtbmFtZSJdOworICAgICAgICBwYXJhbWV0ZXJzLmNs
aWVudElkZW50aWZpZXIgPSBjb21tYW5kTGluZVsiY2xpZW50LWlkZW50aWZpZXIiXTsKKyAgICAg
ICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IENvcmVJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIoc2VydmVyUG9ydCk7CisgICAgICAgIFNoYXJlZFdvcmtlclByb2Nlc3M6OnNo
YXJlZCgpLmluaXRpYWxpemUocGFyYW1ldGVycyk7CiAKICAgICAgICAgW05TQXBwbGljYXRpb24g
c2hhcmVkQXBwbGljYXRpb25dOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDI5MWExYTJhMmQxOGQ2YTM4MGQ1MmExMDJhMDkyNTNhZTVmZDJjOWUu
LmUxOGRiYWY1YWZhZjZjMzg0ZWExZDExMTFlODA3YTAxZWUxMjFjMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMjA0LDE4ICsyMDQsMTEgQEAgV2ViUHJv
Y2Vzczo6V2ViUHJvY2VzcygpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjppbml0aWFs
aXplQ29ubmVjdGlvbihDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIHNlcnZlcklkZW50
aWZpZXIpCit2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKENvcmVJUEM6OkNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOwotCi0g
ICAgbV9jb25uZWN0aW9uID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVj
dGlvbihzZXJ2ZXJJZGVudGlmaWVyLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOwotICAgIG1fY29u
bmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhDaGlsZFBy
b2Nlc3M6OmRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKTsKLSAgICBtX2Nvbm5lY3Rpb24t
PnNldFNob3VsZEV4aXRPblN5bmNNZXNzYWdlU2VuZEZhaWx1cmUodHJ1ZSk7Ci0gICAgbV9jb25u
ZWN0aW9uLT5hZGRRdWV1ZUNsaWVudCgmbV9ldmVudERpc3BhdGNoZXIpOwotICAgIG1fY29ubmVj
dGlvbi0+YWRkUXVldWVDbGllbnQodGhpcyk7Ci0gICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7Ci0K
LSAgICBtX3dlYkNvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmNyZWF0ZSh0
aGlzKTsKKyAgICBjb25uZWN0aW9uLT5zZXRTaG91bGRFeGl0T25TeW5jTWVzc2FnZVNlbmRGYWls
dXJlKHRydWUpOworICAgIGNvbm5lY3Rpb24tPmFkZFF1ZXVlQ2xpZW50KCZtX2V2ZW50RGlzcGF0
Y2hlcik7CisgICAgY29ubmVjdGlvbi0+YWRkUXVldWVDbGllbnQodGhpcyk7CiB9CiAKIHZvaWQg
V2ViUHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQoKQpAQCAtMjMwLDcgKzIyMyw3IEBAIHZvaWQg
V2ViUHJvY2Vzczo6ZGlkRGVzdHJveURvd25sb2FkKCkKIAogQ29yZUlQQzo6Q29ubmVjdGlvbiog
V2ViUHJvY2Vzczo6ZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKQogewotICAgIHJldHVybiBtX2Nv
bm5lY3Rpb24uZ2V0KCk7CisgICAgcmV0dXJuIGNvbm5lY3Rpb24oKTsKIH0KIAogQXV0aGVudGlj
YXRpb25NYW5hZ2VyJiBXZWJQcm9jZXNzOjpkb3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIo
KQpAQCAtMjYxLDYgKzI1NCw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nl
c3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1lCiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICBtX3dlYkNvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6
OmNyZWF0ZSh0aGlzKTsKKwogICAgIFdlYlByb2Nlc3NTdXBwbGVtZW50TWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IG1fc3VwcGxlbWVudHMuYmVnaW4oKTsKICAgICBXZWJQcm9jZXNzU3VwcGxlbWVu
dE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdXBwbGVtZW50cy5lbmQoKTsKICAgICBmb3Ig
KDsgaXQgIT0gZW5kOyArK2l0KQpAQCAtNTcyLDI1ICs1NjcsMjIgQEAgdm9pZCBXZWJQcm9jZXNz
Ojp0ZXJtaW5hdGUoKQogICAgIG1lbW9yeUNhY2hlKCktPnNldERpc2FibGVkKHRydWUpOwogI2Vu
ZGlmCiAKLSAgICAvLyBJbnZhbGlkYXRlIG91ciBjb25uZWN0aW9uLgotICAgIG1fY29ubmVjdGlv
bi0+aW52YWxpZGF0ZSgpOwotICAgIG1fY29ubmVjdGlvbiA9IG51bGxwdHI7Ci0KICAgICBtX3dl
YkNvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKICAgICBtX3dlYkNvbm5lY3Rpb24gPSBudWxscHRy
OwogCiAgICAgcGxhdGZvcm1UZXJtaW5hdGUoKTsKLSAgICBSdW5Mb29wOjptYWluKCktPnN0b3Ao
KTsKKworICAgIENoaWxkUHJvY2Vzczo6dGVybWluYXRlKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24s
IENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBk
ZWNvZGVyLCBPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7
Ci0gICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9u
LCBtZXNzYWdlSUQsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgbWVzc2FnZVJlY2VpdmVy
TWFwKCkuZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRlY29kZXIs
IHJlcGx5RW5jb2Rlcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3Nh
Z2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgaWYgKG1fbWVz
c2FnZVJlY2VpdmVyTWFwLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRl
Y29kZXIpKQorICAgIGlmIChtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29u
bmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJQcm9jZXNzPigpKSB7CkBAIC02
NjIsMTAgKzY1NCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYkZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQpCiAgICAgLy8gV2UgY2FuIGVuZCB1cCBoZXJlIGFmdGVyIG91ciBjb25uZWN0aW9u
IGhhcyBjbG9zZWQgd2hlbiBXZWJDb3JlJ3MgZnJhbWUgbGlmZS1zdXBwb3J0IHRpbWVyCiAgICAg
Ly8gZmlyZXMgd2hlbiB0aGUgYXBwbGljYXRpb24gaXMgc2h1dHRpbmcgZG93bi4gVGhlcmUncyBu
byBuZWVkIChhbmQgbm8gd2F5KSB0byB1cGRhdGUgdGhlIFVJCiAgICAgLy8gcHJvY2VzcyBpbiB0
aGlzIGNhc2UuCi0gICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisgICAgaWYgKCFjb25uZWN0aW9uKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpEaWREZXN0cm95RnJhbWUoZnJhbWVJRCksIDApOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkRGVzdHJveUZyYW1lKGZyYW1lSUQpKTsKIH0KIAog
V2ViUGFnZUdyb3VwUHJveHkqIFdlYlByb2Nlc3M6OndlYlBhZ2VHcm91cCh1aW50NjRfdCBwYWdl
R3JvdXBJRCkKQEAgLTEwNzcsNCArMTA2OSw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkR2V0UGx1
Z2lucyhDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWCiB9
CiAjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCisjaWYgIVBMQVRGT1JNKE1BQykK
K3ZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBjbGllbnRJ
ZGVudGlmaWVyKQoreworfQorI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggNTBjOTE2NWM4OGJkZGM3NTdmZTg0ZGMx
ZmM3N2QxNWM0YzY3MDRkNS4uOGQ2ZWVmNzVhMDljOTA4OTdhMzU5ZjY1YmEzMTM4Yzg5YWQ2NDZk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTEyMCwxMSArMTIw
LDYgQEAgcHVibGljOgogICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFt
ZSgpLCBuZXcgVCh0aGlzKSk7CiAgICAgfQogCi0gICAgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlv
bihDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKLQotICAgIHZpcnR1YWwgQ29yZUlQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY29u
bmVjdGlvbi5nZXQoKTsgfQotICAgIHZpcnR1YWwgdWludDY0X3QgZGVzdGluYXRpb25JRCgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KLQogICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vz
cyogd2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25uZWN0
aW9uLmdldCgpOyB9CiAKICAgICBXZWJQYWdlKiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29u
c3Q7CkBAIC0xNDEsOSArMTM2LDYgQEAgcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlKiBpbmpl
Y3RlZEJ1bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCk7IH0KIAog
I2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGluaXRpYWxpemVTaGltKCk7Ci0gICAgdm9pZCBp
bml0aWFsaXplU2FuZGJveChjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIpOwotCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIG1hY2hfcG9ydF90IGNvbXBvc2l0aW5n
UmVuZGVyU2VydmVyUG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2
ZXJQb3J0OyB9CiAjZW5kaWYKQEAgLTI4Myw4ICsyNzUsMTEgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgLy8gQ2hpbGRQcm9jZXNzCi0gICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1pbmF0ZSgp
OwotICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlh
bGl6ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbiopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVGVybWluYXRlKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHRlcm1pbmF0ZSgpIE9WRVJSSURFOwogCiAgICAgLy8gQ29yZUlQQzo6Q29ubmVj
dGlvbjo6Q2xpZW50CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzczsK
QEAgLTMwNyw3ICszMDIsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkR2V0UGx1Z2lucyhDb3Jl
SVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6UGx1Z2luSW5mbz4mKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbjsKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzPiBt
X3dlYkNvbm5lY3Rpb247CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4g
PiBtX3BhZ2VNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9X
ZWJQcm9jZXNzTWFpbkVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQ
cm9jZXNzTWFpbkVmbC5jcHAKaW5kZXggYTVmYmIzZWUzOWY0OWYyNWU5ZjRhZTJmM2RlZDY5NmEw
NjM0ZmM3YS4uNjIyZGU1MWIwYzcxMTEwY2VhYzkyNmNlMjMxNzM3OGQ4NmQ0MTQ1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNw
cApAQCAtMTE0LDcgKzExNCwxMiBAQCBXS19FWFBPUlQgaW50IFdlYlByb2Nlc3NNYWluRWZsKGlu
dCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgc291cF9jYWNoZV9sb2FkKHNvdXBDYWNoZSk7CiAK
ICAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5pbml0aWFsaXplQ29ubmVjdGlvbihzb2NrZXQpOworCisgICAgQ2hpbGRQcm9jZXNzSW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgcGFyYW1ldGVycy5jb25uZWN0aW9u
SWRlbnRpZmllciA9IHNvY2tldDsKKworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxp
emUocGFyYW1ldGVycyk7CisKICAgICBSdW5Mb29wOjpydW4oKTsKIAogICAgIHNvdXBfY2FjaGVf
Zmx1c2goc291cENhY2hlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Z3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3Rr
L1dlYlByb2Nlc3NNYWluR3RrLmNwcAppbmRleCAxZGI4OGE1YjMzMWNhY2Q5NTFjMTQwYzM5MTZi
OWM5MGY2OWNiYTNhLi44NGZjODc2ZjJmZjJlMWY3ZTQ2YjAzNzI2N2YwNTE4OWQ1YjZjMDBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5H
dGsuY3BwCkBAIC02Myw3ICs2MywxMSBAQCBXS19FWFBPUlQgaW50IFdlYlByb2Nlc3NNYWluR3Rr
KGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1
bkxvb3AoKTsKICAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKLSAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5pbml0aWFsaXplQ29ubmVjdGlvbihzb2NrZXQpOworCisgICAgQ2hpbGRQcm9j
ZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgcGFyYW1ldGVycy5j
b25uZWN0aW9uSWRlbnRpZmllciA9IHNvY2tldDsKKworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LmluaXRpYWxpemUocGFyYW1ldGVycyk7CiAKICAgICAvLyBEZXNwaXRlIHVzaW5nIHN5c3RlbSBD
QXMgdG8gdmFsaWRhdGUgY2VydGlmaWNhdGVzIHdlJ3JlCiAgICAgLy8gYWNjZXB0aW5nIGludmFs
aWQgY2VydGlmaWNhdGVzIGJ5IGRlZmF1bHQuIE5ldyBBUEkgd2lsbCBiZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24u
aAppbmRleCA5MDBlNjQ4NjZlZTE4NzEzMjM0MmUyMjNmMDcyN2FhZmEwOTllYTQ3Li5hNjQyNzEw
MjJjZDI0Y2ZlYTYxZDMxNDY3ZGFhMmZiOGY3ZTgxZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaApAQCAt
MjYsMTkgKzI2LDExIEBACiAjaWZuZGVmIFdlYlByb2Nlc3NJbml0aWFsaXphdGlvbl9oCiAjZGVm
aW5lIFdlYlByb2Nlc3NJbml0aWFsaXphdGlvbl9oCiAKLSNpbmNsdWRlICJDb25uZWN0aW9uLmgi
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNz
LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdHJ1Y3QgV2ViUHJvY2Vzc0luaXRpYWxpemF0
aW9uUGFyYW1ldGVycyB7Ci0gICAgU3RyaW5nIHVpUHJvY2Vzc05hbWU7Ci0KLSAgICBTdHJpbmcg
Y2xpZW50SWRlbnRpZmllcjsKLSAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNv
bm5lY3Rpb25JZGVudGlmaWVyOwotfTsKLQotdm9pZCBpbml0aWFsaXplV2ViUHJvY2Vzcyhjb25z
dCBXZWJQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7Cit2b2lkIGluaXRpYWxpemVX
ZWJQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tCmluZGV4IDY0YjgxZTI3
MGIzZThiZDQ3MDRjNzcyOTFmNTVlMGVjNDcyOGIyNzYuLmNjYTk4MTk4Y2I3OTllYTNmYzliMzM3
ZDAzMTViZGFhMjcyZDY0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
bWFjL1dlYlByb2Nlc3NJbml0aWFsaXphdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0KQEAgLTM4LDcgKzM4LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIGlu
aXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCit2b2lkIGluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IENoaWxkUHJv
Y2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKICAgICAgICAgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKQEAgLTUx
LDEwICs1MSw3IEBAIHZvaWQgaW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0lu
aXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAgICAgICAgIFdLU2V0Vmlz
aWJsZUFwcGxpY2F0aW9uTmFtZSgoQ0ZTdHJpbmdSZWYpYXBwbGljYXRpb25OYW1lKTsKICAgICAg
ICAgfQogCi0gICAgICAgIFdlYlByb2Nlc3MmIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaGFy
ZWQoKTsKLSAgICAgICAgd2ViUHJvY2Vzcy5pbml0aWFsaXplU2hpbSgpOwotICAgICAgICB3ZWJQ
cm9jZXNzLmluaXRpYWxpemVTYW5kYm94KHBhcmFtZXRlcnMuY2xpZW50SWRlbnRpZmllcik7Ci0g
ICAgICAgIHdlYlByb2Nlc3MuaW5pdGlhbGl6ZUNvbm5lY3Rpb24ocGFyYW1ldGVycy5jb25uZWN0
aW9uSWRlbnRpZmllcik7CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUo
cGFyYW1ldGVycyk7CiAgICAgICAgIAogICAgICAgICBXS0FYUmVnaXN0ZXJSZW1vdGVBcHAoKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9j
ZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5t
bQppbmRleCA5ZGU2YmY4ZWFhZTkwNDZkZGM5MjYyMmEyN2MzYjdjZmE3YmRlN2QzLi40ZDRjZmMy
ZGQ5ZDIxN2U3YTk5ODJlN2FhOTliZTBhMjkyNDMyMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lk
IFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycwogICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RU
b1BhdGNoLCAoSU1QKU5TQXBwbGljYXRpb25BY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudCk7
CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNoaW0oKQordm9pZCBXZWJQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewogICAgIGluaXRpYWxpemVTZWNJdGVtU2hpbSgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01h
aW5NYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFpbk1h
Yy5tbQppbmRleCA3MDJjZWEyZDlkNTY2OWMyZjZlMTRmMDU1MWU5Mzk5NDFkZjE4ZTY3Li5mZGZk
OTJmNjI4OTI0NjIxMTAzYTRlMDNjYmE0ODNhNzkwMGNlZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFpbk1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFpbk1hYy5tbQpAQCAtMTc4LDcgKzE3
OCw3IEBAIGludCBXZWJQcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUp
CiAgICAgW1tOU0FwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBfaW5zdGFsbEF1dG9yZWxl
YXNlUG9vbHNPbkN1cnJlbnRUaHJlYWRJZk5lY2Vzc2FyeV07CiAjZW5kaWYKIAotICAgIFdlYlBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBDaGlsZFByb2Nl
c3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLnVp
UHJvY2Vzc05hbWUgPSBjb21tYW5kTGluZVsidWktcHJvY2Vzcy1uYW1lIl07CiAgICAgcGFyYW1l
dGVycy5jbGllbnRJZGVudGlmaWVyID0gY2xpZW50SWRlbnRpZmllcjsKICAgICBwYXJhbWV0ZXJz
LmNvbm5lY3Rpb25JZGVudGlmaWVyID0gc2VydmVyUG9ydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NTZXJ2aWNlRW50cnlQb2ludHMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzU2VydmljZUVudHJ5UG9pbnRz
Lm1tCmluZGV4IDg3NWRkY2E4NWQyMzdkNzg3MmI1MjdlODU5MDcwY2U3ZWJkZDA2ZTMuLjAxNTgw
ZDc3OTgxOTIxYzkwNWRhYzFmOTljOWQxOGNhNWU4OWI4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NTZXJ2aWNlRW50cnlQb2ludHMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1NlcnZpY2VFbnRyeVBv
aW50cy5tbQpAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgdm9pZCBXZWJQcm9jZXNzU2VydmljZUV2
ZW50SGFuZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIpCiAgICAgICAgICAgICAgICAgeHBjX2Nv
bm5lY3Rpb25fc2VuZF9tZXNzYWdlKHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlv
bihldmVudCksIHJlcGx5KTsKICAgICAgICAgICAgICAgICB4cGNfcmVsZWFzZShyZXBseSk7CiAK
LSAgICAgICAgICAgICAgICBXZWJQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFt
ZXRlcnM7CisgICAgICAgICAgICAgICAgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7CiAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NOYW1l
ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgInVpLXByb2Nlc3MtbmFtZSIpOwog
ICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuY2xpZW50SWRlbnRpZmllciA9IHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcoZXZlbnQsICJjbGllbnQtaWRlbnRpZmllciIpOwogICAgICAgICAgICAg
ICAgIHBhcmFtZXRlcnMuY29ubmVjdGlvbklkZW50aWZpZXIgPSB4cGNfZGljdGlvbmFyeV9jb3B5
X21hY2hfc2VuZChldmVudCwgInNlcnZlci1wb3J0Iik7CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQg
aW5pdGlhbGl6ZVdlYlByb2Nlc3NGb3JXZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3Bt
ZW50KGNvbnN0IGNoYXIqIGNsCiAgICAgLy8gdGhlIFdlYlByb2Nlc3MgZG9uJ3QgdHJ5IHRvIGlu
c2VydCB0aGUgc2hpbSBhbmQgY3Jhc2guCiAgICAgV2ViS2l0OjpFbnZpcm9ubWVudFV0aWxpdGll
czo6c3RyaXBWYWx1ZXNFbmRpbmdXaXRoU3RyaW5nKCJEWUxEX0lOU0VSVF9MSUJSQVJJRVMiLCAi
L1dlYlByb2Nlc3NTaGltLmR5bGliIik7CiAKLSAgICBXZWJLaXQ6OldlYlByb2Nlc3NJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBXZWJLaXQ6OkNoaWxkUHJvY2Vzc0lu
aXRpYWxpemF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMudWlQcm9j
ZXNzTmFtZSA9IHVpUHJvY2Vzc05hbWU7CiAgICAgcGFyYW1ldGVycy5jbGllbnRJZGVudGlmaWVy
ID0gY2xpZW50SWRlbnRpZmllcjsKICAgICBwYXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVy
ID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihzZXJ2ZXJQb3J0LCBjb25uZWN0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc01h
aW5RdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NNYWluUXQu
Y3BwCmluZGV4IDgyNGQyMzdiNTc5YWFlNGUyYWY4MjI5ZGI1YWU0MWJkZDVjZmYyMWUuLjg3NTYy
NWQ0ZjAwYjVlMzIwM2RhMDA1Y2ZmNmJkYTdkMTkzNmVhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc01haW5RdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzTWFpblF0LmNwcApAQCAtMTg0LDcgKzE4NCwx
MSBAQCBRX0RFQ0xfRVhQT1JUIGludCBXZWJQcm9jZXNzTWFpblF0KFFHdWlBcHBsaWNhdGlvbiog
YXBwKQogI2VuZGlmCiAjZW5kaWYKIAotICAgIFdlYktpdDo6V2ViUHJvY2Vzczo6c2hhcmVkKCku
aW5pdGlhbGl6ZUNvbm5lY3Rpb24oaWRlbnRpZmllcik7CisKKyAgICBXZWJLaXQ6OkNoaWxkUHJv
Y2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgIHBhcmFtZXRlcnMu
Y29ubmVjdGlvbklkZW50aWZpZXIgPSBpZGVudGlmaWVyOworCisgICAgV2ViS2l0OjpXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKHBhcmFtZXRlcnMpOwogCiAgICAgUnVuTG9vcDo6cnVu
KCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181404</attachid>
            <date>2013-01-04 16:41:06 -0800</date>
            <delta_ts>2013-01-04 16:42:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106144-20130104163812.patch</filename>
            <type>text/plain</type>
            <size>50838</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4ODQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjI3MjY1MTk5M2QyYmUz
YzI2NjkyYWRiMDkxZTk3NDNkMTQ4ZDcwYS4uZGE4ZTE0YWY2YTU0NTg5NDFjZGNjYmFmZmUxNjNl
MTgxYjJmMDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMSBAQAogMjAxMy0wMS0wNCAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCisgICAgICAgIENvbnNvbGlkYXRlIHByb2Nlc3Mg
aW5pdGlhbGl6YXRpb24gaW4gQ2hpbGRQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYxNDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDb25zb2xpZGF0ZSBtb3JlIGZ1bmN0aW9uYWxpdHkgZG93
biBpbnRvIENoaWxkUHJvY2Vzcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVN
ZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVTeW5j
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFByb3h5
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRl
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3gpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9j
ZXNzSW5pdGlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29y
a1Byb2Nlc3NJbml0aWFsaXphdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZU5l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nl
c3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdv
cmtQcm9jZXNzTWFpbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYWlu
KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmdldFNpdGVzV2l0aERhdGEpOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzOjpjbGVhclNpdGVEYXRhKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNz
L1BsdWdpblByb2Nlc3MuaDoKKyAgICAgICAgKFBsdWdpblByb2Nlc3MpOgorICAgICAgICAqIFBs
dWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6Omlu
aXRpYWxpemVTaGltKToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVz
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2lu
UHJvY2Vzcyk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01haW5N
YWMubW06CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluKToKKyAgICAgICAgKiBQ
bHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzTWFpbik6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Q
cm9jZXNzUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1
Z2luUHJvY2Vzc01haW5Vbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01h
aW5Vbml4KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXgu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVQ
bHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpDaGlsZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
Ojp3YXRjaGRvZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6ZGlkQ2xvc2VPbkNvbm5lY3Rp
b25Xb3JrUXVldWUpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveCk6CisgICAg
ICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6dGVybWluYXRlKToKKyAgICAgICAgKiBTaGFyZWQv
Q2hpbGRQcm9jZXNzLmg6CisgICAgICAgIChDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMpOgorICAgICAgICAoQ2hpbGRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQ
cm9jZXNzOjpjb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpkZXN0
aW5hdGlvbklEKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjptZXNzYWdlUmVjZWl2
ZXJNYXApOgorICAgICAgICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFdvcmtlclByb2Nlc3M6OmluaXRpYWxpemVT
aGFyZWRXb3JrZXJQcm9jZXNzKToKKyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJl
ZFdvcmtlclByb2Nlc3MuaDoKKyAgICAgICAgKFNoYXJlZFdvcmtlclByb2Nlc3MpOgorICAgICAg
ICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlZFdvcmtlclByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVNo
YXJlZFdvcmtlclByb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1No
YXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkb3dubG9hZFByb3h5Q29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6dGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZW1vdmVX
ZWJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NNYWluRWZsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NNYWluR3RrKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6Omlu
aXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNz
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWluTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzTWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2Vi
UHJvY2Vzc1NlcnZpY2VFbnRyeVBvaW50cy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1NlcnZpY2VFdmVudEhhbmRsZXIpOgorICAgICAgICAoaW5pdGlhbGl6ZVdlYlByb2Nlc3NGb3JX
ZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL3F0L1dlYlByb2Nlc3NNYWluUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
TWFpblF0KToKKworMjAxMy0wMS0wNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCiAg
ICAgICAgIE1ha2UgcHJvY2VzcyBpbml0aWFsaXphdGlvbiBtb3JlIHVuaWZvcm0gYnkgcmVuYW1p
bmcgaW5pdGlhbGl6YXRpb24gbWV0aG9kcyBhbmQgcmVtb3ZpbmcgZXh0cmFuZW91cyBwYXJhbWV0
ZXJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYx
MjAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCmluZGV4IGZjMTZhNTZhZGEzM2M3ZWRmOTJjOWM1MDFiNWRmNzU2ZDMyZmVkY2EuLmZlOTNm
NjE4ZGRhYjViNTQwYjU3ODU0N2VmOTAwZDMyNjRjMTExYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTcyLDE1ICs3Miw2IEBA
IERvd25sb2FkTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkTWFuYWdlcigpCiAgICAg
cmV0dXJuIGRvd25sb2FkTWFuYWdlcjsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlh
bGl6ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBzZXJ2ZXJJZGVu
dGlmaWVyKQotewotICAgIEFTU0VSVCghbV91aUNvbm5lY3Rpb24pOwotCi0gICAgbV91aUNvbm5l
Y3Rpb24gPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKHNlcnZl
cklkZW50aWZpZXIsIHRoaXMsIFJ1bkxvb3A6Om1haW4oKSk7Ci0gICAgbV91aUNvbm5lY3Rpb24t
PnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soZGlkQ2xvc2VPbkNvbm5l
Y3Rpb25Xb3JrUXVldWUpOwotICAgIG1fdWlDb25uZWN0aW9uLT5vcGVuKCk7Ci19Ci0KIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uKQogewogICAgIHNpemVfdCB2ZWN0
b3JJbmRleCA9IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmZpbmQoY29ubmVjdGlvbik7CkBAIC05
Nyw3ICs4OCw3IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3M6OnNob3VsZFRlcm1pbmF0ZSgpCiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
IGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIGlmIChtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNw
YXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKSkKKyAgICBpZiAobWVz
c2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwg
ZGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vz
c01lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKQEAgLTEwNSw3ICs5Niw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBD
OjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2Rlciwg
T3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewotICAgIG1f
bWVzc2FnZVJlY2VpdmVyTWFwLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2Fn
ZUlELCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRp
c3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyLCByZXBseUVu
Y29kZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZShDb3JlSVBDOjpDb25u
ZWN0aW9uKikKQEAgLTEzMSw3ICsxMjIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWREZXN0
cm95RG93bmxvYWQoKQogCiBDb3JlSVBDOjpDb25uZWN0aW9uKiBOZXR3b3JrUHJvY2Vzczo6ZG93
bmxvYWRQcm94eUNvbm5lY3Rpb24oKQogewotICAgIHJldHVybiBtX3VpQ29ubmVjdGlvbi5nZXQo
KTsKKyAgICByZXR1cm4gY29ubmVjdGlvbigpOwogfQogCiBBdXRoZW50aWNhdGlvbk1hbmFnZXIm
IE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIoKQpAQCAtMTQ2
LDcgKzEzNyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1lCiAgICAgV2ViS2l0Ojppbml0aWFs
aXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOwogI2VuZGlmIC8vICFMT0dfRElTQUJMRUQKIAot
ICAgIHBsYXRmb3JtSW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKKyAgICBwbGF0Zm9ybUluaXRpYWxp
emVOZXR3b3JrUHJvY2VzcyhwYXJhbWV0ZXJzKTsKIAogICAgIHNldENhY2hlTW9kZWwoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHBhcmFtZXRlcnMuY2FjaGVNb2RlbCkpOwogCkBAIC0xNzUsNyArMTY2
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKQogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJl
bGVhc2UoKSk7CiAKICAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5n
UG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwotICAgIG1fdWlDb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhjbGllbnRQb3J0KSwgMCk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY2xp
ZW50UG9ydCkpOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkBAIC0yMTIs
NiArMjAzLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTW9kZWwodWludDMyX3Qg
Y20pCiAgICAgfQogfQogCisjaWYgIVBMQVRGT1JNKE1BQykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmluaXRpYWxpemVTYW5kYm94KGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllcikKK3sKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCAwYzgzODdlMjZmYzNlZWUxYWNjOGZjNzVjNGQyMmVjNmQ4NGNjMjYzLi42
NzM1MmY1NGJlNmM2MzlhNGEyYmVjZWI5MWMxMjFjN2NkM2FhNjJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTY0LDkgKzY0LDYgQEAg
cHVibGljOgogICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBu
ZXcgVCh0aGlzKSk7CiAgICAgfQogCi0gICAgdm9pZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBT
dHJpbmcmIGNsaWVudElkZW50aWZpZXIpOwotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb24o
Q29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7Ci0KICAgICB2b2lkIHJlbW92ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKik7
CiAKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyJiBuZXR3b3JrUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyKCkgeyByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOyB9CkBA
IC03NywxMiArNzQsMTEgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2VzcygpOwogICAgIH5O
ZXR3b3JrUHJvY2VzcygpOwogCi0gICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Jik7CiAKICAgICAvLyBDaGlsZFByb2Nlc3MKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVGVybWlu
YXRlKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0
aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV91aUNvbm5lY3Rpb24uZ2V0KCk7IH0KLSAg
ICB2aXJ0dWFsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0IFN0cmluZyYg
Y2xpZW50SWRlbnRpZmllcikgT1ZFUlJJREU7CiAKICAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9u
OjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKSBP
VkVSUklERTsKQEAgLTExMSw5ICsxMDcsNiBAQCBwcml2YXRlOgogICAgIC8vIFBsYXRmb3JtIEhl
bHBlcnMKICAgICB2b2lkIHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKTsKIAotICAg
IC8vIFRoZSBjb25uZWN0aW9uIHRvIHRoZSBVSSBwcm9jZXNzLgotICAgIFJlZlB0cjxDb3JlSVBD
OjpDb25uZWN0aW9uPiBtX3VpQ29ubmVjdGlvbjsKLQogICAgIC8vIENvbm5lY3Rpb25zIHRvIFdl
YlByb2Nlc3Nlcy4KICAgICBWZWN0b3I8UmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzPiA+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NJbml0aWFsaXphdGlvbi5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzSW5pdGlhbGl6
YXRpb24uaAppbmRleCBiNWRmMGU4ZDFkOWEzNmM3MWQxMDk0ZmY3NGNkMGZiYmJkMGM1Mjg4Li43
NDhmZmE1YTgzN2M0NzRiYjYwZDhhMmRjZDA0ZWVlZTBkYmIwYWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NJbml0aWFsaXphdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vz
c0luaXRpYWxpemF0aW9uLmgKQEAgLTI2LDE5ICsyNiwxMSBAQAogI2lmbmRlZiBOZXR3b3JrUHJv
Y2Vzc0luaXRpYWxpemF0aW9uX2gKICNkZWZpbmUgTmV0d29ya1Byb2Nlc3NJbml0aWFsaXphdGlv
bl9oCiAKLSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1zdHJ1Y3QgTmV0d29ya1Byb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgewotICAgIFN0
cmluZyB1aVByb2Nlc3NOYW1lOwotCi0gICAgU3RyaW5nIGNsaWVudElkZW50aWZpZXI7Ci0gICAg
Q29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcjsKLX07
Ci0KLXZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7Cit2b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhj
b25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0KaW5kZXggYjI5
OTg4ZWYxZTkxZWFlN2E3Yjk4ZDY5N2I2YjU1NTg2ZDQ0NDdjYy4uZjQyMWQwYzk2ZmI3ODdjYTFj
Yjk4ZTJmYzc1ODQzMDkyMjJmOWMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzSW5pdGlhbGl6YXRpb24u
bW0KQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi12b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3Jr
UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3ZvaWQgaW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgSW5p
dFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKQEAgLTUxLDkgKzUxLDcgQEAgdm9pZCBpbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMmIHBhcmEKICAgICAgICAgICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFtZSgoQ0ZT
dHJpbmdSZWYpYXBwbGljYXRpb25OYW1lKTsKICAgICAgICAgfQogCi0gICAgICAgIE5ldHdvcmtQ
cm9jZXNzJiBuZXR3b3JrUHJvY2VzcyA9IE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKTsKLSAgICAg
ICAgbmV0d29ya1Byb2Nlc3MuaW5pdGlhbGl6ZVNhbmRib3gocGFyYW1ldGVycy5jbGllbnRJZGVu
dGlmaWVyKTsKLSAgICAgICAgbmV0d29ya1Byb2Nlc3MuaW5pdGlhbGl6ZUNvbm5lY3Rpb24ocGFy
YW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgICAgIE5ldHdvcmtQcm9jZXNzOjpz
aGFyZWQoKS5pbml0aWFsaXplKHBhcmFtZXRlcnMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCmlu
ZGV4IDMzMzNjMmFlMzQ3Y2FmNDcyMGNhZTNlNWJjZmU4YWNmOGJlMWY3ODcuLmMxNDE1MjRmZmQ1
MzAyNjA5YjMyYjM3YWI4YmQxYWQyZDNkNWI2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KQEAgLTUxLDcgKzUx
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5n
JikKICAgICAvLyBGSVhNRTogSW5pdGlhbGl6ZSB0aGUgc2FuZGJveC4KIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgbV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBwYXJhbWV0
ZXJzLmRpc2tDYWNoZURpcmVjdG9yeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0KaW5kZXggOGM5ODFi
ZDhkNjFkMzkwZDAzN2ZlMmYyZjhlMTVjNDhjOWNhNTNlZC4uYjQ1YjYxMDY1NDcxMGNmZDllZDY3
NjdmMzRjMjFmYWQ3NzNjYzE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1tCkBAIC04MCw3ICs4MCw3
IEBAIGludCBOZXR3b3JrUHJvY2Vzc01haW4oY29uc3QgQ29tbWFuZExpbmUmIGNvbW1hbmRMaW5l
KQogICAgIC8vIG9uIHRoZSBvdXRlciBtb3N0IHJ1bmxvb3AgYmVpbmcgYW4gQXBwS2l0IHJ1bmxv
b3AuCiAgICAgW05TQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dOwogCi0gICAgTmV0d29y
a1Byb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBDaGlsZFBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJz
LnVpUHJvY2Vzc05hbWUgPSBjb21tYW5kTGluZVsidWktcHJvY2Vzcy1uYW1lIl07CiAgICAgcGFy
YW1ldGVycy5jbGllbnRJZGVudGlmaWVyID0gY29tbWFuZExpbmVbImNsaWVudC1pZGVudGlmaWVy
Il07CiAgICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHNlcnZlclBvcnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAppbmRleCBi
NjM4OWU4NmI1ZTIwZWFlZTRiZGZiY2EwNGNlMWM5MGYzMTVkNzUzLi42M2ZjNGNjOTAzNjljYjFk
NDM1M2U0NjBjMGI4NTQ4ZDU5ODViODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKQEAgLTc4LDIzICs3OCwxMyBAQCBQbHVnaW5Qcm9jZXNz
OjpQbHVnaW5Qcm9jZXNzKCkKICAgICAsIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KE1B
Q0hfUE9SVF9OVUxMKQogI2VuZGlmCiB7CisgICAgTmV0c2NhcGVQbHVnaW46OnNldFNldEV4Y2Vw
dGlvbkZ1bmN0aW9uKFdlYlByb2Nlc3NDb25uZWN0aW9uOjpzZXRHbG9iYWxFeGNlcHRpb24pOwog
fQogCiBQbHVnaW5Qcm9jZXNzOjp+UGx1Z2luUHJvY2VzcygpCiB7CiB9CiAKLXZvaWQgUGx1Z2lu
UHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllciBzZXJ2ZXJJZGVudGlmaWVyKQotewotICAgIEFTU0VSVCghbV9jb25uZWN0aW9uKTsKLQot
ICAgIG1fY29ubmVjdGlvbiA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5l
Y3Rpb24oc2VydmVySWRlbnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKLSAgICBtX2Nv
bm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soZGlkQ2xv
c2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUpOwotICAgIG1fY29ubmVjdGlvbi0+b3BlbigpOwotCi0g
ICAgTmV0c2NhcGVQbHVnaW46OnNldFNldEV4Y2VwdGlvbkZ1bmN0aW9uKFdlYlByb2Nlc3NDb25u
ZWN0aW9uOjpzZXRHbG9iYWxFeGNlcHRpb24pOwotfQotCiB2b2lkIFBsdWdpblByb2Nlc3M6OnJl
bW92ZVdlYlByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NDb25uZWN0aW9uKiB3ZWJQcm9jZXNz
Q29ubmVjdGlvbikKIHsKICAgICBzaXplX3QgdmVjdG9ySW5kZXggPSBtX3dlYlByb2Nlc3NDb25u
ZWN0aW9ucy5maW5kKHdlYlByb2Nlc3NDb25uZWN0aW9uKTsKQEAgLTE1OSw3ICsxNDksNyBAQCB2
b2lkIFBsdWdpblByb2Nlc3M6OmluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcgogICAgIHNldE1pbmltdW1MaWZldGltZShwYXJhbWV0ZXJz
Lm1pbmltdW1MaWZldGltZSk7CiAgICAgc2V0VGVybWluYXRpb25UaW1lb3V0KHBhcmFtZXRlcnMu
dGVybWluYXRpb25UaW1lb3V0KTsKIAotICAgIHBsYXRmb3JtSW5pdGlhbGl6ZShwYXJhbWV0ZXJz
KTsKKyAgICBwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKHBhcmFtZXRlcnMpOwogfQog
CiB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKQEAgLTE3
Niw3ICsxNjYsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKCkKICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxl
YXNlKCkpOwogCiAgICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1Bv
cnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24o
Y2xpZW50UG9ydCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwg
MCk7CisgICAgc2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQ
cm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb24pKTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIGlu
dCBzb2NrZXRzWzJdOwogICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAw
LCBzb2NrZXRzKSA9PSAtMSkgewpAQCAtMjA4LDcgKzE5OCw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vz
czo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rp
b25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKICAgICBDb3JlSVBDOjpBdHRhY2ht
ZW50IGNsaWVudFNvY2tldChzb2NrZXRzWzBdKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24o
Y2xpZW50U29ja2V0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24p
LCAwKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdl
YlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFNvY2tldCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uKSk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5k
aWYKQEAgLTIzMiw3ICsyMjIsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmdldFNpdGVzV2l0aERh
dGEodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBpZiAoTmV0c2NhcGVQbHVnaW5Nb2R1bGUqIG1v
ZHVsZSA9IG5ldHNjYXBlUGx1Z2luTW9kdWxlKCkpCiAgICAgICAgIHNpdGVzID0gbW9kdWxlLT5z
aXRlc1dpdGhEYXRhKCk7CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlBsdWdp
blByb2Nlc3NQcm94eTo6RGlkR2V0U2l0ZXNXaXRoRGF0YShzaXRlcywgY2FsbGJhY2tJRCksIDAp
OworICAgIHNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkR2V0U2l0ZXNXaXRo
RGF0YShzaXRlcywgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3M6OmNsZWFy
U2l0ZURhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWlu
dDY0X3QgbWF4QWdlSW5TZWNvbmRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQpAQCAtMjQ5LDcgKzIz
OSw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y2xlYXJTaXRlRGF0YShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGZsYWdzLCB1CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ2xlYXJT
aXRlRGF0YShjYWxsYmFja0lEKSwgMCk7CisgICAgc2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vz
c1Byb3h5OjpEaWRDbGVhclNpdGVEYXRhKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBQbHVnaW5Q
cm9jZXNzOjpzZXRNaW5pbXVtTGlmZXRpbWUoZG91YmxlIGxpZmV0aW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaAppbmRleCBjYWU5MjIyMmU2MTkwZDg0
MzgxOWY0NDY1NDI4ZWFjMTBhMGRjYjI0Li41ZWVlYzRkZjlkYjVmODQzOThjNTFmMzlmZjczOGFh
YzUxMTkxYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
blByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nl
c3MuaApAQCAtNDIsMTAgKzQyLDkgQEAgY2xhc3MgTmV0c2NhcGVQbHVnaW5Nb2R1bGU7CiBjbGFz
cyBXZWJQcm9jZXNzQ29ubmVjdGlvbjsKIHN0cnVjdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOwogICAgICAgICAKLWNsYXNzIFBsdWdpblByb2Nlc3MgOiBDaGlsZFByb2Nlc3Mgewor
Y2xhc3MgUGx1Z2luUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFBsdWdpblByb2Nlc3MpOwogcHVibGljOgotCiAgICAgZW51bSBUeXBlIHsK
ICAgICAgICAgLy8gU3RhcnQgd2l0aCB2YWx1ZSBvbmUgc2luY2UgZGVmYXVsdCBIYXNoVHJhaXRz
PD4gZGlzYWxsb3dzIHplcm8gYXMga2V5LgogICAgICAgICBUeXBlUmVndWxhclByb2Nlc3MgPSAx
LApAQCAtNTQsOCArNTMsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGx1Z2luUHJvY2VzcyYg
c2hhcmVkKCk7CiAKLSAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIpOwotCiAgICAgdm9pZCByZW1vdmVXZWJQcm9jZXNzQ29ubmVjdGlv
bihXZWJQcm9jZXNzQ29ubmVjdGlvbiopOwogCiAgICAgTmV0c2NhcGVQbHVnaW5Nb2R1bGUqIG5l
dHNjYXBlUGx1Z2luTW9kdWxlKCk7CkBAIC02Myw5ICs2MCw2IEBAIHB1YmxpYzoKICAgICBjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpblBhdGg7IH0KIAog
I2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGluaXRpYWxpemVTaGltKCk7Ci0gICAgdm9pZCBp
bml0aWFsaXplQ29jb2FPdmVycmlkZXMoKTsKLQogICAgIHZvaWQgc2V0TW9kYWxXaW5kb3dJc1No
b3dpbmcoYm9vbCk7CiAgICAgdm9pZCBzZXRGdWxsc2NyZWVuV2luZG93SXNTaG93aW5nKGJvb2wp
OwogCkBAIC03OSw5ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgflBsdWdpblByb2Nlc3MoKTsKIAog
ICAgIC8vIENoaWxkUHJvY2VzcwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUZXJtaW5hdGUoKTsK
LSAgICB2aXJ0dWFsIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVh
bCBib29sIHNob3VsZFRlcm1pbmF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemUoKSBPVkVSUklERTsKIAogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246
OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9W
RVJSSURFOwpAQCAtOTUsNyArODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0U2l0ZXNXaXRo
RGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGNsZWFyU2l0ZURhdGEoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWludDY0X3QgbWF4QWdlSW5T
ZWNvbmRzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKIAotICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyYpOwogICAgIAogICAgIHZvaWQgc2V0TWluaW11bUxpZmV0aW1lKGRvdWJsZSk7
CiAgICAgdm9pZCBtaW5pbXVtTGlmZXRpbWVUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCA1OTZh
M2FmOTQwZDg5YTdlN2JiNjdjNjkwMmVmZjlmYjA5ZDlkNDBlLi40ZTRhMDJkOTlkMzk5ZDdmNmYx
ZjY0ZDdhNGZkYjA2ZThlNDE4ZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTQ0LDggKzQ0LDYgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBwdGhyZWFkX29uY2VfdCBzaG91bGRDYWxsUmVhbERl
YnVnZ2VyT25jZSA9IFBUSFJFQURfT05DRV9JTklUOwotCiBjbGFzcyBGdWxsc2NyZWVuV2luZG93
VHJhY2tlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnVsbHNjcmVlbldpbmRvd1RyYWNr
ZXIpOwogCkBAIC0xMjcsNiArMTI1LDkgQEAgc3RhdGljIEZ1bGxzY3JlZW5XaW5kb3dUcmFja2Vy
JiBmdWxsc2NyZWVuV2luZG93VHJhY2tlcigpCiAgICAgcmV0dXJuIGZ1bGxzY3JlZW5XaW5kb3dU
cmFja2VyOwogfQogCisjaWYgZGVmaW5lZChfX2kzODZfXykKKworc3RhdGljIHB0aHJlYWRfb25j
ZV90IHNob3VsZENhbGxSZWFsRGVidWdnZXJPbmNlID0gUFRIUkVBRF9PTkNFX0lOSVQ7CiBzdGF0
aWMgYm9vbCBpc1VzZXJicmVha1NldCA9IGZhbHNlOwogCiBzdGF0aWMgdm9pZCBpbml0U2hvdWxk
Q2FsbFJlYWxEZWJ1Z2dlcigpCkBAIC0xNzksNiArMTgwLDggQEAgc3RhdGljIHZvaWQgY2FyYm9u
V2luZG93SGlkZGVuKFdpbmRvd1JlZiB3aW5kb3cpCiAjZW5kaWYKIH0KIAorI2VuZGlmCisKIHN0
YXRpYyB2b2lkIHNldE1vZGFsKGJvb2wgbW9kYWxXaW5kb3dJc1Nob3dpbmcpCiB7CiAgICAgUGx1
Z2luUHJvY2Vzczo6c2hhcmVkKCkuc2V0TW9kYWxXaW5kb3dJc1Nob3dpbmcobW9kYWxXaW5kb3dJ
c1Nob3dpbmcpOwpAQCAtMjIxLDggKzIyNCwxMCBAQCBzdGF0aWMgTlNJbnRlZ2VyIHJlcGxhY2Vk
UnVuTW9kYWxGb3JXaW5kb3coaWQgc2VsZiwgU0VMIF9jbWQsIE5TV2luZG93KiB3aW5kb3cpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXplU2hp
bSgpCisjaWYgZGVmaW5lZChfX2kzODZfXykKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVTaGltKCkK
IHsKKyAgICAvLyBJbml0aWFsaXplIHRoZSBzaGltIGZvciAzMi1iaXQgb25seS4KICAgICBjb25z
dCBQbHVnaW5Qcm9jZXNzU2hpbUNhbGxiYWNrcyBjYWxsYmFja3MgPSB7CiAgICAgICAgIHNob3Vs
ZENhbGxSZWFsRGVidWdnZXIsCiAgICAgICAgIGlzV2luZG93QWN0aXZlLApAQCAtMjM3LDggKzI0
Miw5IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVNoaW0oKQogICAgIFBsdWdpblBy
b2Nlc3NTaGltSW5pdGlhbGl6ZUZ1bmMgaW5pdEZ1bmMgPSByZWludGVycHJldF9jYXN0PFBsdWdp
blByb2Nlc3NTaGltSW5pdGlhbGl6ZUZ1bmM+KGRsc3ltKFJUTERfREVGQVVMVCwgIldlYktpdFBs
dWdpblByb2Nlc3NTaGltSW5pdGlhbGl6ZSIpKTsKICAgICBpbml0RnVuYyhjYWxsYmFja3MpOwog
fQorI2VuZGlmCiAKLXZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVz
KCkKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVDb2NvYU92ZXJyaWRlcygpCiB7CiAgICAgLy8gT3Zl
cnJpZGUgLVtOU0FwcGxpY2F0aW9uIHJ1bk1vZGFsRm9yV2luZG93Ol0KICAgICBNZXRob2QgcnVu
TW9kYWxGb3JXaW5kb3dNZXRob2QgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChvYmpjX2dldENs
YXNzKCJOU0FwcGxpY2F0aW9uIiksIEBzZWxlY3RvcihydW5Nb2RhbEZvcldpbmRvdzopKTsKQEAg
LTI2Miw2ICsyNjgsMTcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXplQ29jb2FPdmVy
cmlkZXMoKQogICAgIENGUmV0YWluKG9yZGVyT2ZmU2NyZWVuT2JzZXJ2ZXIpOwogfQogCit2b2lk
IFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisjaWYgZGVmaW5lZChfX2kz
ODZfXykKKyAgICAvLyBJbml0aWFsaXplIHRoZSBzaGltLgorICAgIGluaXRpYWxpemVTaGltKCk7
CisjZW5kaWYKKworICAgIC8vIEluaXRpYWxpemUgQ29jb2Egb3ZlcnJpZGVzLgorICAgIGluaXRp
YWxpemVDb2NvYU92ZXJyaWRlcygpOworfQorCiB2b2lkIFBsdWdpblByb2Nlc3M6OnNldE1vZGFs
V2luZG93SXNTaG93aW5nKGJvb2wgbW9kYWxXaW5kb3dJc1Nob3dpbmcpCiB7CiAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OlNldE1vZGFsV2luZG93
SXNTaG93aW5nKG1vZGFsV2luZG93SXNTaG93aW5nKSwgMCk7CkBAIC0zMDksNyArMzI2LDcgQEAg
c3RhdGljIHZvaWQgbXV0ZUF1ZGlvKHZvaWQpCiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCA9PSBub0Vycik7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit2
b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoY29uc3Qg
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX2Nv
bXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydCA9IHBhcmFtZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1BvcnQucG9ydCgpOwogCkBAIC0zMjEsNyArMzM4LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGEKICAgICAKICAgICBXS1NldFZpc2libGVBcHBsaWNhdGlvbk5hbWUoKENGU3RyaW5nUmVm
KWFwcGxpY2F0aW9uTmFtZSk7CiAKLSAgICBpbml0aWFsaXplU2FuZGJveChtX3BsdWdpblBhdGgs
IHBhcmFtZXRlcnMuc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoKTsKKyAgICBXZWJLaXQ6Omlu
aXRpYWxpemVTYW5kYm94KG1fcGx1Z2luUGF0aCwgcGFyYW1ldGVycy5zYW5kYm94UHJvZmlsZURp
cmVjdG9yeVBhdGgpOwogCiAgICAgaWYgKHBhcmFtZXRlcnMucHJvY2Vzc1R5cGUgPT0gVHlwZVNu
YXBzaG90UHJvY2VzcykKICAgICAgICAgbXV0ZUF1ZGlvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFpbk1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1tCmluZGV4
IDQ4MjNiYWFmOTdiYTQ3NDgwMGYzNDE4Nzc3MGU4YzBiNGJkNmIwZTEuLjBjMjFmZDM3NWI4ZTE2
NTMxMzEyMzE4OWZhNzc2NWExMGI5MTU4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1tCkBAIC0xMTgsMTYg
KzExOCwxMSBAQCBpbnQgUGx1Z2luUHJvY2Vzc01haW4oY29uc3QgQ29tbWFuZExpbmUmIGNvbW1h
bmRMaW5lKQogICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgICAgIFJ1
bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCi0jaWYgZGVmaW5lZChfX2kzODZfXykK
LSAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgc2hpbSBmb3IgMzItYml0IG9ubHkuCi0gICAgICAg
IFBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVTaGltKCk7Ci0jZW5kaWYKLQotICAg
ICAgICAvLyBJbml0aWFsaXplIENvY29hIG92ZXJyaWRlcy4KLSAgICAgICAgUGx1Z2luUHJvY2Vz
czo6c2hhcmVkKCkuaW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVzKCk7Ci0KLSAgICAgICAgLy8gSW5p
dGlhbGl6ZSB0aGUgcGx1Zy1pbiBwcm9jZXNzIGNvbm5lY3Rpb24uCi0gICAgICAgIFBsdWdpblBy
b2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIoc2VydmVyUG9ydCkpOworICAgICAgICBDaGlsZFByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NO
YW1lID0gY29tbWFuZExpbmVbInVpLXByb2Nlc3MtbmFtZSJdOworICAgICAgICBwYXJhbWV0ZXJz
LmNsaWVudElkZW50aWZpZXIgPSBjb21tYW5kTGluZVsiY2xpZW50LWlkZW50aWZpZXIiXTsKKyAg
ICAgICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IENvcmVJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIoc2VydmVyUG9ydCk7CisgICAgICAgIFBsdWdpblByb2Nlc3M6OnNoYXJl
ZCgpLmluaXRpYWxpemUocGFyYW1ldGVycyk7CiAKICAgICAgICAgW05TQXBwbGljYXRpb24gc2hh
cmVkQXBwbGljYXRpb25dOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwCmluZGV4IDEzZWM0MmQxZmVmNjJi
NzZjYmY2M2JjZDY5YTkyMTFmNzY4NTAyODMuLjNjYjhlZTc3NTQ5ODVjMGQzMmJlNTI3OTNhZjdi
YzQ5MzhiNDcxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQv
UGx1Z2luUHJvY2Vzc01haW5RdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcApAQCAtMTAxLDcgKzEwMSwxMSBAQCBRX0RFQ0xf
RVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAg
aW50IGlkZW50aWZpZXIgPSBhcHAuYXJndW1lbnRzKCkuYXQoMSkudG9JbnQoJmlzTnVtYmVyLCAx
MCk7CiAgICAgaWYgKCFpc051bWJlcikKICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSAg
ICBXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVDb25uZWN0aW9uKGlk
ZW50aWZpZXIpOworCisgICAgV2ViS2l0OjpDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMgcGFyYW1ldGVyczsKKyAgICBwYXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0g
aWRlbnRpZmllcjsKKworICAgIFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlh
bGl6ZShwYXJhbWV0ZXJzKTsKIAogICAgIFJ1bkxvb3A6OnJ1bigpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NRdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NRdC5jcHAKaW5kZXggNjlm
ODQwMjVmMmY4YzYyNTAzMDAwMDliZGMxYWNiMDI4YjY4NDYwYy4uYTQwNjBiNjdhN2RkYzlmYjYx
OWU3M2Q2MWY4ZDNkYWIxNmNiYTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc1F0LmNwcApAQCAtMzQsNyArMzQsMTEgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
KGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit2b2lk
IFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7Cit9CisKK3ZvaWQgUGx1Z2lu
UHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vzcyhjb25zdCBQbHVnaW5Qcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1
Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5p
eC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCmluZGV4IDgyYzhiZGFjNGVkN2MwZDdmYTBlMTcx
MmYyN2QxYjhiNDNmZDdjMjguLjNjNTk1ZjljYjhmNWY0OWM5NDI3N2RkY2EwYmMxZjRlMGI4MTQ1
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Q
cm9jZXNzTWFpblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5p
eC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCkBAIC0xMDYsNyArMTA2LDEyIEBAIFdLX0VYUE9S
VCBpbnQgUGx1Z2luUHJvY2Vzc01haW5Vbml4KGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAjZW5k
aWYKIAogICAgIGludCBzb2NrZXQgPSBhdG9pKGFyZ3ZbMV0pOwotICAgIFdlYktpdDo6UGx1Z2lu
UHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZUNvbm5lY3Rpb24oc29ja2V0KTsKKworICAgIFdl
YktpdDo6Q2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Cisg
ICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHNvY2tldDsKKworICAgIFdlYktp
dDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKKwogICAg
IFJ1bkxvb3A6OnJ1bigpOwogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwIGIvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcAppbmRleCA1MGRh
YTAyYWFiY2NlYTc3Mjg3OTg1OGJmNjNkNWMzYjFkN2YwYjM4Li4zMDJlNjE4ZTYyYjdiMzI0ZTZi
OTRhMjhhMGU4YjYyNjUyYjg1NGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzVW5peC5jcHAKQEAgLTMzLDcgKzMzLDExIEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5p
dGlhbGl6ZShjb25zdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3ZvaWQgUGx1
Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKK30KKwordm9pZCBQbHVnaW5Qcm9j
ZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCmluZGV4IDg2ZDZiM2Q4OTM1NDk5NzkxMTRiOTRj
YTYxY2ZmMGVlMTlhMTk1NGIuLmE0NDBhMWVkNzAyOWJjNjU3NDk1YTA4YjRjNDg5NWY1NDFkMTI1
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCkBAIC00MSwxNCArNDEs
NDkgQEAgQ2hpbGRQcm9jZXNzOjpDaGlsZFByb2Nlc3MoKQogewogICAgIC8vIEZJWE1FOiBUaGUg
dGVybWluYXRpb24gdGltZXIgc2hvdWxkIG5vdCBiZSBzY2hlZHVsZWQgb24gdGhlIG1haW4gcnVu
IGxvb3AuCiAgICAgLy8gSXQgd29uJ3Qgd29yayB3aXRoIHRoZSB0aHJlYWRlZCBtb2RlLCBidXQg
aXQncyBub3QgcmVhbGx5IHVzZWZ1bCBhbnl3YXkgYXMgaXMuCi0gICAgCi0gICAgcGxhdGZvcm1J
bml0aWFsaXplKCk7CiB9CiAKIENoaWxkUHJvY2Vzczo6fkNoaWxkUHJvY2VzcygpCiB7CiB9CiAK
K05PX1JFVFVSTiBzdGF0aWMgdm9pZCB3YXRjaGRvZ0NhbGxiYWNrKCkKK3sKKyAgICAvLyBXZSB1
c2UgX2V4aXQgaGVyZSBzaW5jZSB0aGUgd2F0Y2hkb2cgY2FsbGJhY2sgaXMgY2FsbGVkIGZyb20g
YW5vdGhlciB0aHJlYWQgYW5kIHdlIGRvbid0IHdhbnQgCisgICAgLy8gZ2xvYmFsIGRlc3RydWN0
b3JzIG9yIGF0ZXhpdCBoYW5kbGVycyB0byBiZSBjYWxsZWQgZnJvbSB0aGlzIHRocmVhZCB3aGls
ZSB0aGUgbWFpbiB0aHJlYWQgaXMgYnVzeQorICAgIC8vIGRvaW5nIGl0cyB0aGluZy4KKyAgICBf
ZXhpdChFWElUX0ZBSUxVUkUpOworfQorCitzdGF0aWMgdm9pZCBkaWRDbG9zZU9uQ29ubmVjdGlv
bldvcmtRdWV1ZShXb3JrUXVldWUmIHdvcmtRdWV1ZSwgQ29yZUlQQzo6Q29ubmVjdGlvbiopCit7
CisgICAgLy8gSWYgdGhlIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIGFuZCB3ZSBoYXZlbid0
IHJlc3BvbmRlZCBpbiB0aGUgbWFpbiB0aHJlYWQgZm9yIDEwIHNlY29uZHMKKyAgICAvLyB0aGUg
cHJvY2VzcyB3aWxsIGV4aXQgZm9yY2libHkuCisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB3YXRj
aGRvZ0RlbGF5ID0gMTAuMDsKKworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaEFmdGVyRGVsYXkoYmlu
ZChzdGF0aWNfY2FzdDx2b2lkKCopKCk+KHdhdGNoZG9nQ2FsbGJhY2spKSwgd2F0Y2hkb2dEZWxh
eSk7Cit9CisKK3ZvaWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplKGNvbnN0IENoaWxkUHJvY2Vz
c0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBwbGF0Zm9ybUlu
aXRpYWxpemUoKTsKKworICAgIGluaXRpYWxpemVTYW5kYm94KHBhcmFtZXRlcnMuY2xpZW50SWRl
bnRpZmllcik7CisgICAgCisgICAgbV9jb25uZWN0aW9uID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6
Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihwYXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyLCB0
aGlzLCBSdW5Mb29wOjptYWluKCkpOworICAgIG1fY29ubmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNv
bm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhkaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSk7
CisgICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb24obV9jb25uZWN0aW9uLmdldCgpKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPm9wZW4oKTsKK30KKwordm9pZCBDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVDb25u
ZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb24qKQoreworfQorCit2b2lkIENoaWxkUHJvY2Vzczo6
aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBjbGllbnRJZGVudGlmaWVyKQoreworfQor
CiB2b2lkIENoaWxkUHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIqIG1l
c3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVj
ZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZVJlY2VpdmVyKTsKQEAgLTk2LDI0ICsx
MzEsMTAgQEAgdm9pZCBDaGlsZFByb2Nlc3M6OnRlcm1pbmF0aW9uVGltZXJGaXJlZCgpCiAKIHZv
aWQgQ2hpbGRQcm9jZXNzOjp0ZXJtaW5hdGUoKQogewotICAgIFJ1bkxvb3A6Om1haW4oKS0+c3Rv
cCgpOwotfQorICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAgIG1fY29ubmVjdGlv
biA9IG51bGxwdHI7CiAKLU5PX1JFVFVSTiBzdGF0aWMgdm9pZCB3YXRjaGRvZ0NhbGxiYWNrKCkK
LXsKLSAgICAvLyBXZSB1c2UgX2V4aXQgaGVyZSBzaW5jZSB0aGUgd2F0Y2hkb2cgY2FsbGJhY2sg
aXMgY2FsbGVkIGZyb20gYW5vdGhlciB0aHJlYWQgYW5kIHdlIGRvbid0IHdhbnQgCi0gICAgLy8g
Z2xvYmFsIGRlc3RydWN0b3JzIG9yIGF0ZXhpdCBoYW5kbGVycyB0byBiZSBjYWxsZWQgZnJvbSB0
aGlzIHRocmVhZCB3aGlsZSB0aGUgbWFpbiB0aHJlYWQgaXMgYnVzeQotICAgIC8vIGRvaW5nIGl0
cyB0aGluZy4KLSAgICBfZXhpdChFWElUX0ZBSUxVUkUpOwotfQotCi12b2lkIENoaWxkUHJvY2Vz
czo6ZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoV29ya1F1ZXVlJiB3b3JrUXVldWUsIENv
cmVJUEM6OkNvbm5lY3Rpb24qKQotewotICAgIC8vIElmIHRoZSBjb25uZWN0aW9uIGhhcyBiZWVu
IGNsb3NlZCBhbmQgd2UgaGF2ZW4ndCByZXNwb25kZWQgaW4gdGhlIG1haW4gdGhyZWFkIGZvciAx
MCBzZWNvbmRzCi0gICAgLy8gdGhlIHByb2Nlc3Mgd2lsbCBleGl0IGZvcmNpYmx5LgotICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgd2F0Y2hkb2dEZWxheSA9IDEwLjA7Ci0KLSAgICB3b3JrUXVldWUu
ZGlzcGF0Y2hBZnRlckRlbGF5KGJpbmQoc3RhdGljX2Nhc3Q8dm9pZCgqKSgpPih3YXRjaGRvZ0Nh
bGxiYWNrKSksIHdhdGNoZG9nRGVsYXkpOworICAgIFJ1bkxvb3A6Om1haW4oKS0+c3RvcCgpOwog
fQogCiAjaWYgIVBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9DaGlsZFByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuaApp
bmRleCBkYzUwNGMzZmVkNTY0ZjQ0YTY1YWMzYTliMzQ2MDkxNjE1ZWVjOGU3Li4zODQ5Y2QzNzU2
MGRmMmRkNmJhYjg2NmM1MjExNzYxNWIzNDc4MWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxk
UHJvY2Vzcy5oCkBAIC0zMSwxNyArMzEsMjIgQEAKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgotCi0jaWYgUExBVEZPUk0oTUFDKQotT0JKQ19DTEFTUyBOU1N0cmluZzsKLSNlbmRpZgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3Ry
dWN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyB7CisgICAgU3RyaW5nIHVp
UHJvY2Vzc05hbWU7CisgICAgU3RyaW5nIGNsaWVudElkZW50aWZpZXI7CisgICAgQ29yZUlQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcjsKK307CisKIGNsYXNz
IENoaWxkUHJvY2VzcyA6IHByb3RlY3RlZCBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIHB1
YmxpYyBDb3JlSVBDOjpNZXNzYWdlU2VuZGVyPENoaWxkUHJvY2Vzcz4gewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENoaWxkUHJvY2Vzcyk7CiAKIHB1YmxpYzoKKyAgICB2b2lkIGluaXRpYWxp
emUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7CisKICAgICAv
LyBkaXNhYmxlIGFuZCBlbmFibGUgdGVybWluYXRpb24gb2YgdGhlIHByb2Nlc3MuIHdoZW4gZGlz
YWJsZVRlcm1pbmF0aW9uIGlzIGNhbGxlZCwgdGhlCiAgICAgLy8gcHJvY2VzcyB3b24ndCB0ZXJt
aW5hdGUgdW5sZXNzIGEgY29ycmVzcG9uZGluZyBkaXNhYmxlVGVybWluYXRpb24gY2FsbCBpcyBt
YWRlLgogICAgIHZvaWQgZGlzYWJsZVRlcm1pbmF0aW9uKCk7CkBAIC03MywxMSArNzgsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wpOwogI2VuZGlm
CiAKLSAgICBzdGF0aWMgdm9pZCBkaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZShXb3JrUXVl
dWUmLCBDb3JlSVBDOjpDb25uZWN0aW9uKik7Ci0KICAgICAvLyBVc2VkIGJ5IENvcmVJUEM6Ok1l
c3NhZ2VTZW5kZXIKLSAgICB2aXJ0dWFsIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24o
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3Qg
PSAwOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KKyAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29u
c3QgeyByZXR1cm4gMDsgfQorCisgICAgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNz
YWdlUmVjZWl2ZXJNYXAoKSB7IHJldHVybiBtX21lc3NhZ2VSZWNlaXZlck1hcDsgfQogCiBwcm90
ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2hpbGRQcm9jZXNzKCk7CkBAIC04NSwxNSArOTAsMTUgQEAg
cHJvdGVjdGVkOgogCiAgICAgdm9pZCBzZXRUZXJtaW5hdGlvblRpbWVvdXQoZG91YmxlIHNlY29u
ZHMpIHsgbV90ZXJtaW5hdGlvblRpbWVvdXQgPSBzZWNvbmRzOyB9CiAKLSAgICBDb3JlSVBDOjpN
ZXNzYWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7Ci0KLXByaXZhdGU6Ci0gICAg
dm9pZCB0ZXJtaW5hdGlvblRpbWVyRmlyZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6
ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbiopOworICAgIHZpcnR1YWwgdm9pZCBpbml0
aWFsaXplU2FuZGJveChjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIpOworICAgIHZpcnR1
YWwgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRU
ZXJtaW5hdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZSgpOwogCi0gICAgdm9p
ZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKK3ByaXZhdGU6CisgICAgdm9pZCB0ZXJtaW5hdGlvblRp
bWVyRmlyZWQoKTsKIAogICAgIC8vIFRoZSB0aW1lb3V0LCBpbiBzZWNvbmRzLCBiZWZvcmUgdGhp
cyBwcm9jZXNzIHdpbGwgYmUgdGVybWluYXRlZCBpZiB0ZXJtaW5hdGlvbgogICAgIC8vIGhhcyBi
ZWVuIGVuYWJsZWQuIElmIHRoZSB0aW1lb3V0IGlzIDAgc2Vjb25kcywgdGhlIHByb2Nlc3Mgd2ls
bCBiZSB0ZXJtaW5hdGVkIGltbWVkaWF0ZWx5LgpAQCAtMTA1LDYgKzExMCw5IEBAIHByaXZhdGU6
CiAKICAgICBXZWJDb3JlOjpSdW5Mb29wOjpUaW1lcjxDaGlsZFByb2Nlc3M+IG1fdGVybWluYXRp
b25UaW1lcjsKIAorICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247
CisgICAgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOwor
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxpZD4gbV9wcm9jZXNzVmlzaWJsZUFz
c2VydGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2Vy
UHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdv
cmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAKaW5kZXggZWMyNzU3NzJlOTQ1NzM3
NmZiMzkxMDg2OTkyZmZjYTE0YTk1NWJlOS4uNjRkM2Y1OThhNTNhZjk5N2IyZDYxMTg0ZDRmNTFk
MmVjYzhhMjBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vz
cy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3Jr
ZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwCkBAIC03NywxNSArNzcsNiBAQCBTaGFy
ZWRXb3JrZXJQcm9jZXNzOjp+U2hhcmVkV29ya2VyUHJvY2VzcygpCiB7CiB9CiAKLXZvaWQgU2hh
cmVkV29ya2VyUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyKQotewotICAgIEFTU0VSVCghbV9jb25uZWN0
aW9uKTsKLQotICAgIG1fY29ubmVjdGlvbiA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNs
aWVudENvbm5lY3Rpb24oc2VydmVySWRlbnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsK
LSAgICBtX2Nvbm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJh
Y2soZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUpOwotICAgIG1fY29ubmVjdGlvbi0+b3Bl
bigpOwotfQotCiB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OnJlbW92ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uKFdlYlByb2Nlc3NDb25uZWN0aW9uKiB3ZWJQcm9jZXNzQ29ubmVjdGlvbikKIHsKICAg
ICBzaXplX3QgdmVjdG9ySW5kZXggPSBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5maW5kKHdlYlBy
b2Nlc3NDb25uZWN0aW9uKTsKQEAgLTEyMyw3ICsxMTQsNyBAQCB2b2lkIFNoYXJlZFdvcmtlclBy
b2Nlc3M6OmluaXRpYWxpemVTaGFyZWRXb3JrZXJQcm9jZXNzKGNvbnN0IFNoYXJlZFdvcmtlclBy
b2NlcwogICAgIHNldE1pbmltdW1MaWZldGltZShwYXJhbWV0ZXJzLm1pbmltdW1MaWZldGltZSk7
CiAgICAgc2V0VGVybWluYXRpb25UaW1lb3V0KHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0
KTsKIAotICAgIHBsYXRmb3JtSW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKKyAgICBwbGF0Zm9ybUlu
aXRpYWxpemVTaGFyZWRXb3JrZXJQcm9jZXNzKHBhcmFtZXRlcnMpOwogfQogCiB2b2lkIFNoYXJl
ZFdvcmtlclByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNz
LmgKaW5kZXggOWYyZjU0OTBkYmY3MjU0YTVjYjhmMzgzYzdhZjQyZjU1NTY1NTc5My4uMjc1NmUz
ZDI2NzRjNzU3ZmEyY2FmNGVhZGVlNmUzM2FlY2ZjMTMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmgKQEAg
LTQxLDEyICs0MSwxMSBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbk1vZHVsZTsKIGNsYXNzIFdlYlBy
b2Nlc3NDb25uZWN0aW9uOwogc3RydWN0IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM7CiAKLWNsYXNzIFNoYXJlZFdvcmtlclByb2Nlc3MgOiBDaGlsZFByb2Nlc3MgeworY2xh
c3MgU2hhcmVkV29ya2VyUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFNoYXJlZFdvcmtlclByb2Nlc3MpOwogcHVibGljOgogICAgIHN0YXRp
YyBTaGFyZWRXb3JrZXJQcm9jZXNzJiBzaGFyZWQoKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZUNv
bm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAgICAgdm9pZCByZW1v
dmVXZWJQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzQ29ubmVjdGlvbiopOwogCiBwcml2YXRl
OgpAQCAtNTQsOSArNTMsNyBAQCBwcml2YXRlOgogICAgIH5TaGFyZWRXb3JrZXJQcm9jZXNzKCk7
CiAKICAgICAvLyBDaGlsZFByb2Nlc3MKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVGVybWluYXRl
KCk7Ci0gICAgdmlydHVhbCBDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9Ci0gICAgdmlydHVhbCB1aW50
NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRUZXJtaW5hdGUoKSBPVkVSUklERTsKIAogICAgIC8vIENvcmVJUEM6
OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdl
RGVjb2RlciYpOwpAQCAtNjgsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6
ZVNoYXJlZFdvcmtlclByb2Nlc3MoY29uc3QgU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYpOwogICAgIHZvaWQgY3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAotICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVNoYXJlZFdvcmtlclBy
b2Nlc3MoY29uc3QgU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogICAg
IAogICAgIHZvaWQgc2V0TWluaW11bUxpZmV0aW1lKGRvdWJsZSk7CiAgICAgdm9pZCBtaW5pbXVt
TGlmZXRpbWVUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRX
b3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbQppbmRl
eCBjODc1ZmYwMWIxNDdkNDdjMDhhY2ZhNDFjOTdlMDk3YjJkMDEyYzU5Li5jOGQ0N2VhNmM1Y2Mz
MjFmOTIyZTc0ZDI0OTAwYjU1NWJhOWExYTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NN
YWMubW0KQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goKQog
ICAgIH0KIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUo
Y29uc3QgU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
K3ZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplU2hhcmVkV29ya2Vy
UHJvY2Vzcyhjb25zdCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogewogICAgIE5TU3RyaW5nICphcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCJTaGFyZWQgV2ViIFdvcmtlciAoJUAgSW50ZXJu
ZXQgcGx1Zy1pbikiLAogICAgICAgICAidmlzaWJsZSBuYW1lIG9mIHRoZSBwbHVnLWluIGhvc3Qg
cHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLApAQCAtNjYs
NyArNjYsNyBAQCB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZShj
b25zdCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYQogICAgIAogICAgIFdLU2V0VmlzaWJs
ZUFwcGxpY2F0aW9uTmFtZSgoQ0ZTdHJpbmdSZWYpYXBwbGljYXRpb25OYW1lKTsKIAotICAgIGlu
aXRpYWxpemVTYW5kYm94KCk7CisgICAgV2ViS2l0Ojppbml0aWFsaXplU2FuZGJveCgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5N
YWMubW0KaW5kZXggZDNlOTE5MzlhNDE3ZDA2Mjk1ODBiZGNkOWE2MmFiNzEyZjg5NmRkMS4uYzEy
NjdhNTM2YTMyM2NkNjZiODJmYmQ1ZGMxMGI1MTg2ZmEzZjU4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5N
YWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVk
V29ya2VyUHJvY2Vzc01haW5NYWMubW0KQEAgLTk3LDggKzk3LDExIEBAIGludCBTaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCiAgICAgICAgIFdU
Rjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKICAgICAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1h
aW5SdW5Mb29wKCk7CiAKLSAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIHdvcmtlciBw
cm9jZXNzIGNvbm5lY3Rpb24uCi0gICAgICAgIFNoYXJlZFdvcmtlclByb2Nlc3M6OnNoYXJlZCgp
LmluaXRpYWxpemVDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoc2Vy
dmVyUG9ydCkpOworICAgICAgICBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMg
cGFyYW1ldGVyczsKKyAgICAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NOYW1lID0gY29tbWFuZExp
bmVbInVpLXByb2Nlc3MtbmFtZSJdOworICAgICAgICBwYXJhbWV0ZXJzLmNsaWVudElkZW50aWZp
ZXIgPSBjb21tYW5kTGluZVsiY2xpZW50LWlkZW50aWZpZXIiXTsKKyAgICAgICAgcGFyYW1ldGVy
cy5jb25uZWN0aW9uSWRlbnRpZmllciA9IENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIo
c2VydmVyUG9ydCk7CisgICAgICAgIFNoYXJlZFdvcmtlclByb2Nlc3M6OnNoYXJlZCgpLmluaXRp
YWxpemUocGFyYW1ldGVycyk7CiAKICAgICAgICAgW05TQXBwbGljYXRpb24gc2hhcmVkQXBwbGlj
YXRpb25dOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IDI5MWExYTJhMmQxOGQ2YTM4MGQ1MmExMDJhMDkyNTNhZTVmZDJjOWUuLmUxOGRiYWY1YWZh
ZjZjMzg0ZWExZDExMTFlODA3YTAxZWUxMjFjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcApAQCAtMjA0LDE4ICsyMDQsMTEgQEAgV2ViUHJvY2Vzczo6V2ViUHJv
Y2VzcygpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlv
bihDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIHNlcnZlcklkZW50aWZpZXIpCit2b2lk
IFdlYlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOwotCi0gICAgbV9jb25uZWN0
aW9uID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihzZXJ2ZXJJ
ZGVudGlmaWVyLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2V0
RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhDaGlsZFByb2Nlc3M6OmRpZENs
b3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNldFNob3VsZEV4
aXRPblN5bmNNZXNzYWdlU2VuZEZhaWx1cmUodHJ1ZSk7Ci0gICAgbV9jb25uZWN0aW9uLT5hZGRR
dWV1ZUNsaWVudCgmbV9ldmVudERpc3BhdGNoZXIpOwotICAgIG1fY29ubmVjdGlvbi0+YWRkUXVl
dWVDbGllbnQodGhpcyk7Ci0gICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7Ci0KLSAgICBtX3dlYkNv
bm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmNyZWF0ZSh0aGlzKTsKKyAgICBj
b25uZWN0aW9uLT5zZXRTaG91bGRFeGl0T25TeW5jTWVzc2FnZVNlbmRGYWlsdXJlKHRydWUpOwor
ICAgIGNvbm5lY3Rpb24tPmFkZFF1ZXVlQ2xpZW50KCZtX2V2ZW50RGlzcGF0Y2hlcik7CisgICAg
Y29ubmVjdGlvbi0+YWRkUXVldWVDbGllbnQodGhpcyk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6
ZGlkQ3JlYXRlRG93bmxvYWQoKQpAQCAtMjMwLDcgKzIyMyw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6
ZGlkRGVzdHJveURvd25sb2FkKCkKIAogQ29yZUlQQzo6Q29ubmVjdGlvbiogV2ViUHJvY2Vzczo6
ZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKQogewotICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0
KCk7CisgICAgcmV0dXJuIGNvbm5lY3Rpb24oKTsKIH0KIAogQXV0aGVudGljYXRpb25NYW5hZ2Vy
JiBXZWJQcm9jZXNzOjpkb3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIoKQpAQCAtMjYxLDYg
KzI1NCw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1lCiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICBtX3dlYkNvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmNyZWF0ZSh0aGlz
KTsKKwogICAgIFdlYlByb2Nlc3NTdXBwbGVtZW50TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1f
c3VwcGxlbWVudHMuYmVnaW4oKTsKICAgICBXZWJQcm9jZXNzU3VwcGxlbWVudE1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbV9zdXBwbGVtZW50cy5lbmQoKTsKICAgICBmb3IgKDsgaXQgIT0gZW5k
OyArK2l0KQpAQCAtNTcyLDI1ICs1NjcsMjIgQEAgdm9pZCBXZWJQcm9jZXNzOjp0ZXJtaW5hdGUo
KQogICAgIG1lbW9yeUNhY2hlKCktPnNldERpc2FibGVkKHRydWUpOwogI2VuZGlmCiAKLSAgICAv
LyBJbnZhbGlkYXRlIG91ciBjb25uZWN0aW9uLgotICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0
ZSgpOwotICAgIG1fY29ubmVjdGlvbiA9IG51bGxwdHI7Ci0KICAgICBtX3dlYkNvbm5lY3Rpb24t
PmludmFsaWRhdGUoKTsKICAgICBtX3dlYkNvbm5lY3Rpb24gPSBudWxscHRyOwogCiAgICAgcGxh
dGZvcm1UZXJtaW5hdGUoKTsKLSAgICBSdW5Mb29wOjptYWluKCktPnN0b3AoKTsKKworICAgIENo
aWxkUHJvY2Vzczo6dGVybWluYXRlKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1l
c3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBPd25Q
dHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7Ci0gICAgbV9tZXNz
YWdlUmVjZWl2ZXJNYXAuZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQs
IGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0
Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRlY29kZXIsIHJlcGx5RW5jb2Rl
cik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgaWYgKG1fbWVzc2FnZVJlY2VpdmVy
TWFwLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRlY29kZXIpKQorICAg
IGlmIChtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVz
c2FnZUlELCBkZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1lc3NhZ2VJRC5p
czxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJQcm9jZXNzPigpKSB7CkBAIC02NjIsMTAgKzY1NCwx
MCBAQCB2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiAg
ICAgLy8gV2UgY2FuIGVuZCB1cCBoZXJlIGFmdGVyIG91ciBjb25uZWN0aW9uIGhhcyBjbG9zZWQg
d2hlbiBXZWJDb3JlJ3MgZnJhbWUgbGlmZS1zdXBwb3J0IHRpbWVyCiAgICAgLy8gZmlyZXMgd2hl
biB0aGUgYXBwbGljYXRpb24gaXMgc2h1dHRpbmcgZG93bi4gVGhlcmUncyBubyBuZWVkIChhbmQg
bm8gd2F5KSB0byB1cGRhdGUgdGhlIFVJCiAgICAgLy8gcHJvY2VzcyBpbiB0aGlzIGNhc2UuCi0g
ICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisgICAgaWYgKCFjb25uZWN0aW9uKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpEaWREZXN0cm95RnJhbWUoZnJhbWVJRCksIDApOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6RGlkRGVzdHJveUZyYW1lKGZyYW1lSUQpKTsKIH0KIAogV2ViUGFnZUdyb3Vw
UHJveHkqIFdlYlByb2Nlc3M6OndlYlBhZ2VHcm91cCh1aW50NjRfdCBwYWdlR3JvdXBJRCkKQEAg
LTEwNzcsNCArMTA2OSw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkR2V0UGx1Z2lucyhDb3JlSVBD
OjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWCiB9CiAjZW5kaWYgLy8g
RU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCisjaWYgIVBMQVRGT1JNKE1BQykKK3ZvaWQgV2ViUHJv
Y2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBjbGllbnRJZGVudGlmaWVyKQor
eworfQorI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKaW5kZXggNTBjOTE2NWM4OGJkZGM3NTdmZTg0ZGMxZmM3N2QxNWM0YzY3
MDRkNS4uOGQ2ZWVmNzVhMDljOTA4OTdhMzU5ZjY1YmEzMTM4Yzg5YWQ2NDZkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTEyMCwxMSArMTIwLDYgQEAgcHVibGlj
OgogICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBuZXcgVCh0
aGlzKSk7CiAgICAgfQogCi0gICAgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbihDb3JlSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyKTsKLQotICAgIHZpcnR1YWwgQ29yZUlQQzo6Q29ubmVjdGlv
biogY29ubmVjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQo
KTsgfQotICAgIHZpcnR1YWwgdWludDY0X3QgZGVzdGluYXRpb25JRCgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIDA7IH0KLQogICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcyogd2ViQ29ubmVj
dGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25uZWN0aW9uLmdldCgpOyB9
CiAKICAgICBXZWJQYWdlKiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CkBAIC0xNDEs
OSArMTM2LDYgQEAgcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlKiBpbmplY3RlZEJ1bmRsZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCk7IH0KIAogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICB2b2lkIGluaXRpYWxpemVTaGltKCk7Ci0gICAgdm9pZCBpbml0aWFsaXplU2Fu
ZGJveChjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIpOwotCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQogICAgIG1hY2hfcG9ydF90IGNvbXBvc2l0aW5nUmVuZGVyU2VydmVy
UG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0OyB9CiAj
ZW5kaWYKQEAgLTI4Myw4ICsyNzUsMTEgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgLy8gQ2hp
bGRQcm9jZXNzCi0gICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1pbmF0ZSgpOwotICAgIHZpcnR1
YWwgdm9pZCB0ZXJtaW5hdGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rp
b24oQ29yZUlQQzo6Q29ubmVjdGlvbiopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbml0
aWFsaXplU2FuZGJveChjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkVGVybWluYXRlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRl
cm1pbmF0ZSgpIE9WRVJSSURFOwogCiAgICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50
CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzczsKQEAgLTMwNyw3ICsz
MDIsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkR2V0UGx1Z2lucyhDb3JlSVBDOjpDb25uZWN0
aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4mKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVj
dGlvbjsKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzPiBtX3dlYkNvbm5lY3Rp
b247CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4gPiBtX3BhZ2VNYXA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFp
bkVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVm
bC5jcHAKaW5kZXggYTVmYmIzZWUzOWY0OWYyNWU5ZjRhZTJmM2RlZDY5NmEwNjM0ZmM3YS4uNjIy
ZGU1MWIwYzcxMTEwY2VhYzkyNmNlMjMxNzM3OGQ4NmQ0MTQ1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcApAQCAtMTE0LDcg
KzExNCwxMiBAQCBXS19FWFBPUlQgaW50IFdlYlByb2Nlc3NNYWluRWZsKGludCBhcmdjLCBjaGFy
KiBhcmd2W10pCiAgICAgc291cF9jYWNoZV9sb2FkKHNvdXBDYWNoZSk7CiAKICAgICBpbnQgc29j
a2V0ID0gYXRvaShhcmd2WzFdKTsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXpl
Q29ubmVjdGlvbihzb2NrZXQpOworCisgICAgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJh
bWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9
IHNvY2tldDsKKworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUocGFyYW1ldGVy
cyk7CisKICAgICBSdW5Mb29wOjpydW4oKTsKIAogICAgIHNvdXBfY2FjaGVfZmx1c2goc291cENh
Y2hlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nl
c3NNYWluR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NN
YWluR3RrLmNwcAppbmRleCAxZGI4OGE1YjMzMWNhY2Q5NTFjMTQwYzM5MTZiOWM5MGY2OWNiYTNh
Li44NGZjODc2ZjJmZjJlMWY3ZTQ2YjAzNzI2N2YwNTE4OWQ1YjZjMDBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCkBAIC02
Myw3ICs2MywxMSBAQCBXS19FWFBPUlQgaW50IFdlYlByb2Nlc3NNYWluR3RrKGludCBhcmdjLCBj
aGFyKiBhcmd2W10pCiAKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKICAg
ICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5p
bml0aWFsaXplQ29ubmVjdGlvbihzb2NrZXQpOworCisgICAgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRl
bnRpZmllciA9IHNvY2tldDsKKworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUo
cGFyYW1ldGVycyk7CiAKICAgICAvLyBEZXNwaXRlIHVzaW5nIHN5c3RlbSBDQXMgdG8gdmFsaWRh
dGUgY2VydGlmaWNhdGVzIHdlJ3JlCiAgICAgLy8gYWNjZXB0aW5nIGludmFsaWQgY2VydGlmaWNh
dGVzIGJ5IGRlZmF1bHQuIE5ldyBBUEkgd2lsbCBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaAppbmRleCA5MDBl
NjQ4NjZlZTE4NzEzMjM0MmUyMjNmMDcyN2FhZmEwOTllYTQ3Li5hNjQyNzEwMjJjZDI0Y2ZlYTYx
ZDMxNDY3ZGFhMmZiOGY3ZTgxZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaApAQCAtMjYsMTkgKzI2LDEx
IEBACiAjaWZuZGVmIFdlYlByb2Nlc3NJbml0aWFsaXphdGlvbl9oCiAjZGVmaW5lIFdlYlByb2Nl
c3NJbml0aWFsaXphdGlvbl9oCiAKLSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1zdHJ1Y3QgV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVy
cyB7Ci0gICAgU3RyaW5nIHVpUHJvY2Vzc05hbWU7Ci0KLSAgICBTdHJpbmcgY2xpZW50SWRlbnRp
ZmllcjsKLSAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVu
dGlmaWVyOwotfTsKLQotdm9pZCBpbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNz
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7Cit2b2lkIGluaXRpYWxpemVXZWJQcm9jZXNzKGNv
bnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMv
V2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9t
YWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tCmluZGV4IDY0YjgxZTI3MGIzZThiZDQ3MDRj
NzcyOTFmNTVlMGVjNDcyOGIyNzYuLmNjYTk4MTk4Y2I3OTllYTNmYzliMzM3ZDAzMTViZGFhMjcy
ZDY0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nl
c3NJbml0aWFsaXphdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9X
ZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0KQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIGluaXRpYWxpemVXZWJQ
cm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCit2b2lkIGluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxp
emF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
ICAgICAgICAgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKQEAgLTUxLDEwICs1MSw3IEBA
IHZvaWQgaW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9u
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAgICAgICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0
aW9uTmFtZSgoQ0ZTdHJpbmdSZWYpYXBwbGljYXRpb25OYW1lKTsKICAgICAgICAgfQogCi0gICAg
ICAgIFdlYlByb2Nlc3MmIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKTsKLSAgICAg
ICAgd2ViUHJvY2Vzcy5pbml0aWFsaXplU2hpbSgpOwotICAgICAgICB3ZWJQcm9jZXNzLmluaXRp
YWxpemVTYW5kYm94KHBhcmFtZXRlcnMuY2xpZW50SWRlbnRpZmllcik7Ci0gICAgICAgIHdlYlBy
b2Nlc3MuaW5pdGlhbGl6ZUNvbm5lY3Rpb24ocGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmll
cik7CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUocGFyYW1ldGVycyk7
CiAgICAgICAgIAogICAgICAgICBXS0FYUmVnaXN0ZXJSZW1vdGVBcHAoKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQppbmRleCA5ZGU2
YmY4ZWFhZTkwNDZkZGM5MjYyMmEyN2MzYjdjZmE3YmRlN2QzLi40ZDRjZmMyZGQ5ZDIxN2U3YTk5
ODJlN2FhOTliZTBhMjkyNDMyMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
bWFjL1dlYlByb2Nlc3NNYWMubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFdlYlByb2Nlc3M6
OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycwogICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1BhdGNoLCAoSU1Q
KU5TQXBwbGljYXRpb25BY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudCk7CiB9CiAKLXZvaWQg
V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNoaW0oKQordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemUoKQogewogICAgIGluaXRpYWxpemVTZWNJdGVtU2hpbSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01haW5NYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFpbk1hYy5tbQppbmRleCA3
MDJjZWEyZDlkNTY2OWMyZjZlMTRmMDU1MWU5Mzk5NDFkZjE4ZTY3Li5mZGZkOTJmNjI4OTI0NjIx
MTAzYTRlMDNjYmE0ODNhNzkwMGNlZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzTWFpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzTWFpbk1hYy5tbQpAQCAtMTc4LDcgKzE3OCw3IEBAIGludCBX
ZWJQcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCiAgICAgW1tOU0Fw
cGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBfaW5zdGFsbEF1dG9yZWxlYXNlUG9vbHNPbkN1
cnJlbnRUaHJlYWRJZk5lY2Vzc2FyeV07CiAjZW5kaWYKIAotICAgIFdlYlByb2Nlc3NJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBDaGlsZFByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc05hbWUg
PSBjb21tYW5kTGluZVsidWktcHJvY2Vzcy1uYW1lIl07CiAgICAgcGFyYW1ldGVycy5jbGllbnRJ
ZGVudGlmaWVyID0gY2xpZW50SWRlbnRpZmllcjsKICAgICBwYXJhbWV0ZXJzLmNvbm5lY3Rpb25J
ZGVudGlmaWVyID0gc2VydmVyUG9ydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvbWFjL1dlYlByb2Nlc3NTZXJ2aWNlRW50cnlQb2ludHMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzU2VydmljZUVudHJ5UG9pbnRzLm1tCmluZGV4IDg3
NWRkY2E4NWQyMzdkNzg3MmI1MjdlODU5MDcwY2U3ZWJkZDA2ZTMuLjAxNTgwZDc3OTgxOTIxYzkw
NWRhYzFmOTljOWQxOGNhNWU4OWI4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvbWFjL1dlYlByb2Nlc3NTZXJ2aWNlRW50cnlQb2ludHMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1NlcnZpY2VFbnRyeVBvaW50cy5tbQpAQCAt
NjAsNyArNjAsNyBAQCBzdGF0aWMgdm9pZCBXZWJQcm9jZXNzU2VydmljZUV2ZW50SGFuZGxlcih4
cGNfY29ubmVjdGlvbl90IHBlZXIpCiAgICAgICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2Vu
ZF9tZXNzYWdlKHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlvbihldmVudCksIHJl
cGx5KTsKICAgICAgICAgICAgICAgICB4cGNfcmVsZWFzZShyZXBseSk7CiAKLSAgICAgICAgICAg
ICAgICBXZWJQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAg
ICAgICAgICAgICAgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7CiAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NOYW1lID0geHBjX2RpY3Rp
b25hcnlfZ2V0X3N0cmluZyhldmVudCwgInVpLXByb2Nlc3MtbmFtZSIpOwogICAgICAgICAgICAg
ICAgIHBhcmFtZXRlcnMuY2xpZW50SWRlbnRpZmllciA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJp
bmcoZXZlbnQsICJjbGllbnQtaWRlbnRpZmllciIpOwogICAgICAgICAgICAgICAgIHBhcmFtZXRl
cnMuY29ubmVjdGlvbklkZW50aWZpZXIgPSB4cGNfZGljdGlvbmFyeV9jb3B5X21hY2hfc2VuZChl
dmVudCwgInNlcnZlci1wb3J0Iik7CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgaW5pdGlhbGl6ZVdl
YlByb2Nlc3NGb3JXZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50KGNvbnN0IGNo
YXIqIGNsCiAgICAgLy8gdGhlIFdlYlByb2Nlc3MgZG9uJ3QgdHJ5IHRvIGluc2VydCB0aGUgc2hp
bSBhbmQgY3Jhc2guCiAgICAgV2ViS2l0OjpFbnZpcm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1
ZXNFbmRpbmdXaXRoU3RyaW5nKCJEWUxEX0lOU0VSVF9MSUJSQVJJRVMiLCAiL1dlYlByb2Nlc3NT
aGltLmR5bGliIik7CiAKLSAgICBXZWJLaXQ6OldlYlByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMgcGFyYW1ldGVyczsKKyAgICBXZWJLaXQ6OkNoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9u
UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzTmFtZSA9IHVp
UHJvY2Vzc05hbWU7CiAgICAgcGFyYW1ldGVycy5jbGllbnRJZGVudGlmaWVyID0gY2xpZW50SWRl
bnRpZmllcjsKICAgICBwYXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0gQ29yZUlQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllcihzZXJ2ZXJQb3J0LCBjb25uZWN0aW9uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc01haW5RdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NNYWluUXQuY3BwCmluZGV4IDgy
NGQyMzdiNTc5YWFlNGUyYWY4MjI5ZGI1YWU0MWJkZDVjZmYyMWUuLjg3NTYyNWQ0ZjAwYjVlMzIw
M2RhMDA1Y2ZmNmJkYTdkMTkzNmVhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvcXQvV2ViUHJvY2Vzc01haW5RdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9xdC9XZWJQcm9jZXNzTWFpblF0LmNwcApAQCAtMTg0LDcgKzE4NCwxMSBAQCBRX0RFQ0xf
RVhQT1JUIGludCBXZWJQcm9jZXNzTWFpblF0KFFHdWlBcHBsaWNhdGlvbiogYXBwKQogI2VuZGlm
CiAjZW5kaWYKIAotICAgIFdlYktpdDo6V2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZUNv
bm5lY3Rpb24oaWRlbnRpZmllcik7CisKKyAgICBXZWJLaXQ6OkNoaWxkUHJvY2Vzc0luaXRpYWxp
emF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgIHBhcmFtZXRlcnMuY29ubmVjdGlvbklk
ZW50aWZpZXIgPSBpZGVudGlmaWVyOworCisgICAgV2ViS2l0OjpXZWJQcm9jZXNzOjpzaGFyZWQo
KS5pbml0aWFsaXplKHBhcmFtZXRlcnMpOwogCiAgICAgUnVuTG9vcDo6cnVuKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181408</attachid>
            <date>2013-01-04 16:42:37 -0800</date>
            <delta_ts>2013-01-04 17:06:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106144-20130104163944.patch</filename>
            <type>text/plain</type>
            <size>50886</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4ODQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjI3MjY1MTk5M2QyYmUz
YzI2NjkyYWRiMDkxZTk3NDNkMTQ4ZDcwYS4uZGE4ZTE0YWY2YTU0NTg5NDFjZGNjYmFmZmUxNjNl
MTgxYjJmMDkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMSBAQAogMjAxMy0wMS0wNCAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCisgICAgICAgIENvbnNvbGlkYXRlIHByb2Nlc3Mg
aW5pdGlhbGl6YXRpb24gaW4gQ2hpbGRQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYxNDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDb25zb2xpZGF0ZSBtb3JlIGZ1bmN0aW9uYWxpdHkgZG93
biBpbnRvIENoaWxkUHJvY2Vzcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVN
ZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVTeW5j
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFByb3h5
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRl
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3gpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9j
ZXNzSW5pdGlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29y
a1Byb2Nlc3NJbml0aWFsaXphdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZU5l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nl
c3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdv
cmtQcm9jZXNzTWFpbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NNYWlu
KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmdldFNpdGVzV2l0aERhdGEpOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzOjpjbGVhclNpdGVEYXRhKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNz
L1BsdWdpblByb2Nlc3MuaDoKKyAgICAgICAgKFBsdWdpblByb2Nlc3MpOgorICAgICAgICAqIFBs
dWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6Omlu
aXRpYWxpemVTaGltKToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVz
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2lu
UHJvY2Vzcyk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01haW5N
YWMubW06CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluKToKKyAgICAgICAgKiBQ
bHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzTWFpbik6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9xdC9QbHVnaW5Q
cm9jZXNzUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1
Z2luUHJvY2Vzc01haW5Vbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01h
aW5Vbml4KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXgu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVQ
bHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKiBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpDaGlsZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
Ojp3YXRjaGRvZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6ZGlkQ2xvc2VPbkNvbm5lY3Rp
b25Xb3JrUXVldWUpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveCk6CisgICAg
ICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6dGVybWluYXRlKToKKyAgICAgICAgKiBTaGFyZWQv
Q2hpbGRQcm9jZXNzLmg6CisgICAgICAgIChDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMpOgorICAgICAgICAoQ2hpbGRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQ
cm9jZXNzOjpjb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpkZXN0
aW5hdGlvbklEKToKKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjptZXNzYWdlUmVjZWl2
ZXJNYXApOgorICAgICAgICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZFdvcmtlclByb2Nlc3M6OmluaXRpYWxpemVT
aGFyZWRXb3JrZXJQcm9jZXNzKToKKyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJl
ZFdvcmtlclByb2Nlc3MuaDoKKyAgICAgICAgKFNoYXJlZFdvcmtlclByb2Nlc3MpOgorICAgICAg
ICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlZFdvcmtlclByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVNo
YXJlZFdvcmtlclByb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1No
YXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkb3dubG9hZFByb3h5Q29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6dGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZW1vdmVX
ZWJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NNYWluRWZsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NNYWluR3RrKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6Omlu
aXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNz
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWluTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzTWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2Vi
UHJvY2Vzc1NlcnZpY2VFbnRyeVBvaW50cy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1NlcnZpY2VFdmVudEhhbmRsZXIpOgorICAgICAgICAoaW5pdGlhbGl6ZVdlYlByb2Nlc3NGb3JX
ZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL3F0L1dlYlByb2Nlc3NNYWluUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
TWFpblF0KToKKworMjAxMy0wMS0wNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCiAg
ICAgICAgIE1ha2UgcHJvY2VzcyBpbml0aWFsaXphdGlvbiBtb3JlIHVuaWZvcm0gYnkgcmVuYW1p
bmcgaW5pdGlhbGl6YXRpb24gbWV0aG9kcyBhbmQgcmVtb3ZpbmcgZXh0cmFuZW91cyBwYXJhbWV0
ZXJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYx
MjAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCmluZGV4IGZjMTZhNTZhZGEzM2M3ZWRmOTJjOWM1MDFiNWRmNzU2ZDMyZmVkY2EuLmZlOTNm
NjE4ZGRhYjViNTQwYjU3ODU0N2VmOTAwZDMyNjRjMTExYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTcyLDE1ICs3Miw2IEBA
IERvd25sb2FkTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkTWFuYWdlcigpCiAgICAg
cmV0dXJuIGRvd25sb2FkTWFuYWdlcjsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlh
bGl6ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBzZXJ2ZXJJZGVu
dGlmaWVyKQotewotICAgIEFTU0VSVCghbV91aUNvbm5lY3Rpb24pOwotCi0gICAgbV91aUNvbm5l
Y3Rpb24gPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKHNlcnZl
cklkZW50aWZpZXIsIHRoaXMsIFJ1bkxvb3A6Om1haW4oKSk7Ci0gICAgbV91aUNvbm5lY3Rpb24t
PnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soZGlkQ2xvc2VPbkNvbm5l
Y3Rpb25Xb3JrUXVldWUpOwotICAgIG1fdWlDb25uZWN0aW9uLT5vcGVuKCk7Ci19Ci0KIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uKQogewogICAgIHNpemVfdCB2ZWN0
b3JJbmRleCA9IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmZpbmQoY29ubmVjdGlvbik7CkBAIC05
Nyw3ICs4OCw3IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3M6OnNob3VsZFRlcm1pbmF0ZSgpCiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
IGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIGlmIChtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNw
YXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKSkKKyAgICBpZiAobWVz
c2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwg
ZGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vz
c01lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKQEAgLTEwNSw3ICs5Niw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBD
OjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2Rlciwg
T3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewotICAgIG1f
bWVzc2FnZVJlY2VpdmVyTWFwLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2Fn
ZUlELCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRp
c3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyLCByZXBseUVu
Y29kZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZShDb3JlSVBDOjpDb25u
ZWN0aW9uKikKQEAgLTEzMSw3ICsxMjIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWREZXN0
cm95RG93bmxvYWQoKQogCiBDb3JlSVBDOjpDb25uZWN0aW9uKiBOZXR3b3JrUHJvY2Vzczo6ZG93
bmxvYWRQcm94eUNvbm5lY3Rpb24oKQogewotICAgIHJldHVybiBtX3VpQ29ubmVjdGlvbi5nZXQo
KTsKKyAgICByZXR1cm4gY29ubmVjdGlvbigpOwogfQogCiBBdXRoZW50aWNhdGlvbk1hbmFnZXIm
IE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIoKQpAQCAtMTQ2
LDcgKzEzNyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1lCiAgICAgV2ViS2l0Ojppbml0aWFs
aXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOwogI2VuZGlmIC8vICFMT0dfRElTQUJMRUQKIAot
ICAgIHBsYXRmb3JtSW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKKyAgICBwbGF0Zm9ybUluaXRpYWxp
emVOZXR3b3JrUHJvY2VzcyhwYXJhbWV0ZXJzKTsKIAogICAgIHNldENhY2hlTW9kZWwoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHBhcmFtZXRlcnMuY2FjaGVNb2RlbCkpOwogCkBAIC0xNzUsNyArMTY2
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKQogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJl
bGVhc2UoKSk7CiAKICAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5n
UG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwotICAgIG1fdWlDb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhjbGllbnRQb3J0KSwgMCk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY2xp
ZW50UG9ydCkpOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkBAIC0yMTIs
NiArMjAzLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTW9kZWwodWludDMyX3Qg
Y20pCiAgICAgfQogfQogCisjaWYgIVBMQVRGT1JNKE1BQykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmluaXRpYWxpemVTYW5kYm94KGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllcikKK3sKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCAwYzgzODdlMjZmYzNlZWUxYWNjOGZjNzVjNGQyMmVjNmQ4NGNjMjYzLi42
NzM1MmY1NGJlNmM2MzlhNGEyYmVjZWI5MWMxMjFjN2NkM2FhNjJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTY0LDkgKzY0LDYgQEAg
cHVibGljOgogICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBu
ZXcgVCh0aGlzKSk7CiAgICAgfQogCi0gICAgdm9pZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBT
dHJpbmcmIGNsaWVudElkZW50aWZpZXIpOwotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb24o
Q29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7Ci0KICAgICB2b2lkIHJlbW92ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKik7
CiAKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyJiBuZXR3b3JrUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyKCkgeyByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOyB9CkBA
IC03NywxMiArNzQsMTEgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2VzcygpOwogICAgIH5O
ZXR3b3JrUHJvY2VzcygpOwogCi0gICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Jik7CiAKICAgICAvLyBDaGlsZFByb2Nlc3MKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVGVybWlu
YXRlKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0
aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV91aUNvbm5lY3Rpb24uZ2V0KCk7IH0KLSAg
ICB2aXJ0dWFsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0IFN0cmluZyYg
Y2xpZW50SWRlbnRpZmllcikgT1ZFUlJJREU7CiAKICAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9u
OjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKSBP
VkVSUklERTsKQEAgLTExMSw5ICsxMDcsNiBAQCBwcml2YXRlOgogICAgIC8vIFBsYXRmb3JtIEhl
bHBlcnMKICAgICB2b2lkIHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKTsKIAotICAg
IC8vIFRoZSBjb25uZWN0aW9uIHRvIHRoZSBVSSBwcm9jZXNzLgotICAgIFJlZlB0cjxDb3JlSVBD
OjpDb25uZWN0aW9uPiBtX3VpQ29ubmVjdGlvbjsKLQogICAgIC8vIENvbm5lY3Rpb25zIHRvIFdl
YlByb2Nlc3Nlcy4KICAgICBWZWN0b3I8UmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzPiA+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NJbml0aWFsaXphdGlvbi5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzSW5pdGlhbGl6
YXRpb24uaAppbmRleCBiNWRmMGU4ZDFkOWEzNmM3MWQxMDk0ZmY3NGNkMGZiYmJkMGM1Mjg4Li43
NDhmZmE1YTgzN2M0NzRiYjYwZDhhMmRjZDA0ZWVlZTBkYmIwYWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NJbml0aWFsaXphdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vz
c0luaXRpYWxpemF0aW9uLmgKQEAgLTI2LDE5ICsyNiwxMSBAQAogI2lmbmRlZiBOZXR3b3JrUHJv
Y2Vzc0luaXRpYWxpemF0aW9uX2gKICNkZWZpbmUgTmV0d29ya1Byb2Nlc3NJbml0aWFsaXphdGlv
bl9oCiAKLSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1zdHJ1Y3QgTmV0d29ya1Byb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgewotICAgIFN0
cmluZyB1aVByb2Nlc3NOYW1lOwotCi0gICAgU3RyaW5nIGNsaWVudElkZW50aWZpZXI7Ci0gICAg
Q29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcjsKLX07
Ci0KLXZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7Cit2b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhj
b25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc0luaXRpYWxpemF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0KaW5kZXggYjI5
OTg4ZWYxZTkxZWFlN2E3Yjk4ZDY5N2I2YjU1NTg2ZDQ0NDdjYy4uZjQyMWQwYzk2ZmI3ODdjYTFj
Yjk4ZTJmYzc1ODQzMDkyMjJmOWMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzSW5pdGlhbGl6YXRpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzSW5pdGlhbGl6YXRpb24u
bW0KQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi12b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3Jr
UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3ZvaWQgaW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgSW5p
dFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKQEAgLTUxLDkgKzUxLDcgQEAgdm9pZCBpbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMmIHBhcmEKICAgICAgICAgICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFtZSgoQ0ZT
dHJpbmdSZWYpYXBwbGljYXRpb25OYW1lKTsKICAgICAgICAgfQogCi0gICAgICAgIE5ldHdvcmtQ
cm9jZXNzJiBuZXR3b3JrUHJvY2VzcyA9IE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKTsKLSAgICAg
ICAgbmV0d29ya1Byb2Nlc3MuaW5pdGlhbGl6ZVNhbmRib3gocGFyYW1ldGVycy5jbGllbnRJZGVu
dGlmaWVyKTsKLSAgICAgICAgbmV0d29ya1Byb2Nlc3MuaW5pdGlhbGl6ZUNvbm5lY3Rpb24ocGFy
YW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgICAgIE5ldHdvcmtQcm9jZXNzOjpz
aGFyZWQoKS5pbml0aWFsaXplKHBhcmFtZXRlcnMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCmlu
ZGV4IDMzMzNjMmFlMzQ3Y2FmNDcyMGNhZTNlNWJjZmU4YWNmOGJlMWY3ODcuLmMxNDE1MjRmZmQ1
MzAyNjA5YjMyYjM3YWI4YmQxYWQyZDNkNWI2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KQEAgLTUxLDcgKzUx
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5n
JikKICAgICAvLyBGSVhNRTogSW5pdGlhbGl6ZSB0aGUgc2FuZGJveC4KIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgbV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBwYXJhbWV0
ZXJzLmRpc2tDYWNoZURpcmVjdG9yeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0KaW5kZXggOGM5ODFi
ZDhkNjFkMzkwZDAzN2ZlMmYyZjhlMTVjNDhjOWNhNTNlZC4uYjQ1YjYxMDY1NDcxMGNmZDllZDY3
NjdmMzRjMjFmYWQ3NzNjYzE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1tCkBAIC04MCw3ICs4MCw3
IEBAIGludCBOZXR3b3JrUHJvY2Vzc01haW4oY29uc3QgQ29tbWFuZExpbmUmIGNvbW1hbmRMaW5l
KQogICAgIC8vIG9uIHRoZSBvdXRlciBtb3N0IHJ1bmxvb3AgYmVpbmcgYW4gQXBwS2l0IHJ1bmxv
b3AuCiAgICAgW05TQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dOwogCi0gICAgTmV0d29y
a1Byb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBDaGlsZFBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJz
LnVpUHJvY2Vzc05hbWUgPSBjb21tYW5kTGluZVsidWktcHJvY2Vzcy1uYW1lIl07CiAgICAgcGFy
YW1ldGVycy5jbGllbnRJZGVudGlmaWVyID0gY29tbWFuZExpbmVbImNsaWVudC1pZGVudGlmaWVy
Il07CiAgICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHNlcnZlclBvcnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAppbmRleCBi
NjM4OWU4NmI1ZTIwZWFlZTRiZGZiY2EwNGNlMWM5MGYzMTVkNzUzLi42M2ZjNGNjOTAzNjljYjFk
NDM1M2U0NjBjMGI4NTQ4ZDU5ODViODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKQEAgLTc4LDIzICs3OCwxMyBAQCBQbHVnaW5Qcm9jZXNz
OjpQbHVnaW5Qcm9jZXNzKCkKICAgICAsIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KE1B
Q0hfUE9SVF9OVUxMKQogI2VuZGlmCiB7CisgICAgTmV0c2NhcGVQbHVnaW46OnNldFNldEV4Y2Vw
dGlvbkZ1bmN0aW9uKFdlYlByb2Nlc3NDb25uZWN0aW9uOjpzZXRHbG9iYWxFeGNlcHRpb24pOwog
fQogCiBQbHVnaW5Qcm9jZXNzOjp+UGx1Z2luUHJvY2VzcygpCiB7CiB9CiAKLXZvaWQgUGx1Z2lu
UHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllciBzZXJ2ZXJJZGVudGlmaWVyKQotewotICAgIEFTU0VSVCghbV9jb25uZWN0aW9uKTsKLQot
ICAgIG1fY29ubmVjdGlvbiA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5l
Y3Rpb24oc2VydmVySWRlbnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsKLSAgICBtX2Nv
bm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2soZGlkQ2xv
c2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUpOwotICAgIG1fY29ubmVjdGlvbi0+b3BlbigpOwotCi0g
ICAgTmV0c2NhcGVQbHVnaW46OnNldFNldEV4Y2VwdGlvbkZ1bmN0aW9uKFdlYlByb2Nlc3NDb25u
ZWN0aW9uOjpzZXRHbG9iYWxFeGNlcHRpb24pOwotfQotCiB2b2lkIFBsdWdpblByb2Nlc3M6OnJl
bW92ZVdlYlByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NDb25uZWN0aW9uKiB3ZWJQcm9jZXNz
Q29ubmVjdGlvbikKIHsKICAgICBzaXplX3QgdmVjdG9ySW5kZXggPSBtX3dlYlByb2Nlc3NDb25u
ZWN0aW9ucy5maW5kKHdlYlByb2Nlc3NDb25uZWN0aW9uKTsKQEAgLTE1OSw3ICsxNDksNyBAQCB2
b2lkIFBsdWdpblByb2Nlc3M6OmluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcgogICAgIHNldE1pbmltdW1MaWZldGltZShwYXJhbWV0ZXJz
Lm1pbmltdW1MaWZldGltZSk7CiAgICAgc2V0VGVybWluYXRpb25UaW1lb3V0KHBhcmFtZXRlcnMu
dGVybWluYXRpb25UaW1lb3V0KTsKIAotICAgIHBsYXRmb3JtSW5pdGlhbGl6ZShwYXJhbWV0ZXJz
KTsKKyAgICBwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKHBhcmFtZXRlcnMpOwogfQog
CiB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKQEAgLTE3
Niw3ICsxNjYsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKCkKICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxl
YXNlKCkpOwogCiAgICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1Bv
cnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24o
Y2xpZW50UG9ydCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwg
MCk7CisgICAgc2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQ
cm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb24pKTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIGlu
dCBzb2NrZXRzWzJdOwogICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAw
LCBzb2NrZXRzKSA9PSAtMSkgewpAQCAtMjA4LDcgKzE5OCw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vz
czo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rp
b25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKICAgICBDb3JlSVBDOjpBdHRhY2ht
ZW50IGNsaWVudFNvY2tldChzb2NrZXRzWzBdKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24o
Y2xpZW50U29ja2V0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24p
LCAwKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdl
YlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFNvY2tldCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uKSk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5k
aWYKQEAgLTIzMiw3ICsyMjIsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmdldFNpdGVzV2l0aERh
dGEodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBpZiAoTmV0c2NhcGVQbHVnaW5Nb2R1bGUqIG1v
ZHVsZSA9IG5ldHNjYXBlUGx1Z2luTW9kdWxlKCkpCiAgICAgICAgIHNpdGVzID0gbW9kdWxlLT5z
aXRlc1dpdGhEYXRhKCk7CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlBsdWdp
blByb2Nlc3NQcm94eTo6RGlkR2V0U2l0ZXNXaXRoRGF0YShzaXRlcywgY2FsbGJhY2tJRCksIDAp
OworICAgIHNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkR2V0U2l0ZXNXaXRo
RGF0YShzaXRlcywgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3M6OmNsZWFy
U2l0ZURhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWlu
dDY0X3QgbWF4QWdlSW5TZWNvbmRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQpAQCAtMjQ5LDcgKzIz
OSw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y2xlYXJTaXRlRGF0YShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGZsYWdzLCB1CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ2xlYXJT
aXRlRGF0YShjYWxsYmFja0lEKSwgMCk7CisgICAgc2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vz
c1Byb3h5OjpEaWRDbGVhclNpdGVEYXRhKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBQbHVnaW5Q
cm9jZXNzOjpzZXRNaW5pbXVtTGlmZXRpbWUoZG91YmxlIGxpZmV0aW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaAppbmRleCBjYWU5MjIyMmU2MTkwZDg0
MzgxOWY0NDY1NDI4ZWFjMTBhMGRjYjI0Li41ZWVlYzRkZjlkYjVmODQzOThjNTFmMzlmZjczOGFh
YzUxMTkxYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
blByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nl
c3MuaApAQCAtNDIsMTAgKzQyLDkgQEAgY2xhc3MgTmV0c2NhcGVQbHVnaW5Nb2R1bGU7CiBjbGFz
cyBXZWJQcm9jZXNzQ29ubmVjdGlvbjsKIHN0cnVjdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOwogICAgICAgICAKLWNsYXNzIFBsdWdpblByb2Nlc3MgOiBDaGlsZFByb2Nlc3Mgewor
Y2xhc3MgUGx1Z2luUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFBsdWdpblByb2Nlc3MpOwogcHVibGljOgotCiAgICAgZW51bSBUeXBlIHsK
ICAgICAgICAgLy8gU3RhcnQgd2l0aCB2YWx1ZSBvbmUgc2luY2UgZGVmYXVsdCBIYXNoVHJhaXRz
PD4gZGlzYWxsb3dzIHplcm8gYXMga2V5LgogICAgICAgICBUeXBlUmVndWxhclByb2Nlc3MgPSAx
LApAQCAtNTQsOCArNTMsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGx1Z2luUHJvY2VzcyYg
c2hhcmVkKCk7CiAKLSAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIpOwotCiAgICAgdm9pZCByZW1vdmVXZWJQcm9jZXNzQ29ubmVjdGlv
bihXZWJQcm9jZXNzQ29ubmVjdGlvbiopOwogCiAgICAgTmV0c2NhcGVQbHVnaW5Nb2R1bGUqIG5l
dHNjYXBlUGx1Z2luTW9kdWxlKCk7CkBAIC02Myw5ICs2MCw2IEBAIHB1YmxpYzoKICAgICBjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpblBhdGg7IH0KIAog
I2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGluaXRpYWxpemVTaGltKCk7Ci0gICAgdm9pZCBp
bml0aWFsaXplQ29jb2FPdmVycmlkZXMoKTsKLQogICAgIHZvaWQgc2V0TW9kYWxXaW5kb3dJc1No
b3dpbmcoYm9vbCk7CiAgICAgdm9pZCBzZXRGdWxsc2NyZWVuV2luZG93SXNTaG93aW5nKGJvb2wp
OwogCkBAIC03OSw5ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgflBsdWdpblByb2Nlc3MoKTsKIAog
ICAgIC8vIENoaWxkUHJvY2VzcwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUZXJtaW5hdGUoKTsK
LSAgICB2aXJ0dWFsIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVh
bCBib29sIHNob3VsZFRlcm1pbmF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemUoKSBPVkVSUklERTsKIAogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246
OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9W
RVJSSURFOwpAQCAtOTUsNyArODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0U2l0ZXNXaXRo
RGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGNsZWFyU2l0ZURhdGEoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWludDY0X3QgbWF4QWdlSW5T
ZWNvbmRzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKIAotICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyYpOwogICAgIAogICAgIHZvaWQgc2V0TWluaW11bUxpZmV0aW1lKGRvdWJsZSk7
CiAgICAgdm9pZCBtaW5pbXVtTGlmZXRpbWVUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCA1OTZh
M2FmOTQwZDg5YTdlN2JiNjdjNjkwMmVmZjlmYjA5ZDlkNDBlLi40ZTRhMDJkOTlkMzk5ZDdmNmYx
ZjY0ZDdhNGZkYjA2ZThlNDE4ZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTQ0LDggKzQ0LDYgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBwdGhyZWFkX29uY2VfdCBzaG91bGRDYWxsUmVhbERl
YnVnZ2VyT25jZSA9IFBUSFJFQURfT05DRV9JTklUOwotCiBjbGFzcyBGdWxsc2NyZWVuV2luZG93
VHJhY2tlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnVsbHNjcmVlbldpbmRvd1RyYWNr
ZXIpOwogCkBAIC0xMjcsNiArMTI1LDkgQEAgc3RhdGljIEZ1bGxzY3JlZW5XaW5kb3dUcmFja2Vy
JiBmdWxsc2NyZWVuV2luZG93VHJhY2tlcigpCiAgICAgcmV0dXJuIGZ1bGxzY3JlZW5XaW5kb3dU
cmFja2VyOwogfQogCisjaWYgZGVmaW5lZChfX2kzODZfXykKKworc3RhdGljIHB0aHJlYWRfb25j
ZV90IHNob3VsZENhbGxSZWFsRGVidWdnZXJPbmNlID0gUFRIUkVBRF9PTkNFX0lOSVQ7CiBzdGF0
aWMgYm9vbCBpc1VzZXJicmVha1NldCA9IGZhbHNlOwogCiBzdGF0aWMgdm9pZCBpbml0U2hvdWxk
Q2FsbFJlYWxEZWJ1Z2dlcigpCkBAIC0xNzksNiArMTgwLDggQEAgc3RhdGljIHZvaWQgY2FyYm9u
V2luZG93SGlkZGVuKFdpbmRvd1JlZiB3aW5kb3cpCiAjZW5kaWYKIH0KIAorI2VuZGlmCisKIHN0
YXRpYyB2b2lkIHNldE1vZGFsKGJvb2wgbW9kYWxXaW5kb3dJc1Nob3dpbmcpCiB7CiAgICAgUGx1
Z2luUHJvY2Vzczo6c2hhcmVkKCkuc2V0TW9kYWxXaW5kb3dJc1Nob3dpbmcobW9kYWxXaW5kb3dJ
c1Nob3dpbmcpOwpAQCAtMjIxLDggKzIyNCwxMCBAQCBzdGF0aWMgTlNJbnRlZ2VyIHJlcGxhY2Vk
UnVuTW9kYWxGb3JXaW5kb3coaWQgc2VsZiwgU0VMIF9jbWQsIE5TV2luZG93KiB3aW5kb3cpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXplU2hp
bSgpCisjaWYgZGVmaW5lZChfX2kzODZfXykKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVTaGltKCkK
IHsKKyAgICAvLyBJbml0aWFsaXplIHRoZSBzaGltIGZvciAzMi1iaXQgb25seS4KICAgICBjb25z
dCBQbHVnaW5Qcm9jZXNzU2hpbUNhbGxiYWNrcyBjYWxsYmFja3MgPSB7CiAgICAgICAgIHNob3Vs
ZENhbGxSZWFsRGVidWdnZXIsCiAgICAgICAgIGlzV2luZG93QWN0aXZlLApAQCAtMjM3LDggKzI0
Miw5IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVNoaW0oKQogICAgIFBsdWdpblBy
b2Nlc3NTaGltSW5pdGlhbGl6ZUZ1bmMgaW5pdEZ1bmMgPSByZWludGVycHJldF9jYXN0PFBsdWdp
blByb2Nlc3NTaGltSW5pdGlhbGl6ZUZ1bmM+KGRsc3ltKFJUTERfREVGQVVMVCwgIldlYktpdFBs
dWdpblByb2Nlc3NTaGltSW5pdGlhbGl6ZSIpKTsKICAgICBpbml0RnVuYyhjYWxsYmFja3MpOwog
fQorI2VuZGlmCiAKLXZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVz
KCkKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVDb2NvYU92ZXJyaWRlcygpCiB7CiAgICAgLy8gT3Zl
cnJpZGUgLVtOU0FwcGxpY2F0aW9uIHJ1bk1vZGFsRm9yV2luZG93Ol0KICAgICBNZXRob2QgcnVu
TW9kYWxGb3JXaW5kb3dNZXRob2QgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChvYmpjX2dldENs
YXNzKCJOU0FwcGxpY2F0aW9uIiksIEBzZWxlY3RvcihydW5Nb2RhbEZvcldpbmRvdzopKTsKQEAg
LTI2Miw2ICsyNjgsMTcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXplQ29jb2FPdmVy
cmlkZXMoKQogICAgIENGUmV0YWluKG9yZGVyT2ZmU2NyZWVuT2JzZXJ2ZXIpOwogfQogCit2b2lk
IFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisjaWYgZGVmaW5lZChfX2kz
ODZfXykKKyAgICAvLyBJbml0aWFsaXplIHRoZSBzaGltLgorICAgIGluaXRpYWxpemVTaGltKCk7
CisjZW5kaWYKKworICAgIC8vIEluaXRpYWxpemUgQ29jb2Egb3ZlcnJpZGVzLgorICAgIGluaXRp
YWxpemVDb2NvYU92ZXJyaWRlcygpOworfQorCiB2b2lkIFBsdWdpblByb2Nlc3M6OnNldE1vZGFs
V2luZG93SXNTaG93aW5nKGJvb2wgbW9kYWxXaW5kb3dJc1Nob3dpbmcpCiB7CiAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OlNldE1vZGFsV2luZG93
SXNTaG93aW5nKG1vZGFsV2luZG93SXNTaG93aW5nKSwgMCk7CkBAIC0zMDksNyArMzI2LDcgQEAg
c3RhdGljIHZvaWQgbXV0ZUF1ZGlvKHZvaWQpCiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCA9PSBub0Vycik7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit2
b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoY29uc3Qg
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX2Nv
bXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydCA9IHBhcmFtZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1BvcnQucG9ydCgpOwogCkBAIC0zMjEsNyArMzM4LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGEKICAgICAKICAgICBXS1NldFZpc2libGVBcHBsaWNhdGlvbk5hbWUoKENGU3RyaW5nUmVm
KWFwcGxpY2F0aW9uTmFtZSk7CiAKLSAgICBpbml0aWFsaXplU2FuZGJveChtX3BsdWdpblBhdGgs
IHBhcmFtZXRlcnMuc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoKTsKKyAgICBXZWJLaXQ6Omlu
aXRpYWxpemVTYW5kYm94KG1fcGx1Z2luUGF0aCwgcGFyYW1ldGVycy5zYW5kYm94UHJvZmlsZURp
cmVjdG9yeVBhdGgpOwogCiAgICAgaWYgKHBhcmFtZXRlcnMucHJvY2Vzc1R5cGUgPT0gVHlwZVNu
YXBzaG90UHJvY2VzcykKICAgICAgICAgbXV0ZUF1ZGlvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFpbk1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1tCmluZGV4
IDQ4MjNiYWFmOTdiYTQ3NDgwMGYzNDE4Nzc3MGU4YzBiNGJkNmIwZTEuLjBjMjFmZDM3NWI4ZTE2
NTMxMzEyMzE4OWZhNzc2NWExMGI5MTU4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1tCkBAIC0xMTgsMTYg
KzExOCwxMSBAQCBpbnQgUGx1Z2luUHJvY2Vzc01haW4oY29uc3QgQ29tbWFuZExpbmUmIGNvbW1h
bmRMaW5lKQogICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgICAgIFJ1
bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCi0jaWYgZGVmaW5lZChfX2kzODZfXykK
LSAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgc2hpbSBmb3IgMzItYml0IG9ubHkuCi0gICAgICAg
IFBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVTaGltKCk7Ci0jZW5kaWYKLQotICAg
ICAgICAvLyBJbml0aWFsaXplIENvY29hIG92ZXJyaWRlcy4KLSAgICAgICAgUGx1Z2luUHJvY2Vz
czo6c2hhcmVkKCkuaW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVzKCk7Ci0KLSAgICAgICAgLy8gSW5p
dGlhbGl6ZSB0aGUgcGx1Zy1pbiBwcm9jZXNzIGNvbm5lY3Rpb24uCi0gICAgICAgIFBsdWdpblBy
b2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIoc2VydmVyUG9ydCkpOworICAgICAgICBDaGlsZFByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NO
YW1lID0gY29tbWFuZExpbmVbInVpLXByb2Nlc3MtbmFtZSJdOworICAgICAgICBwYXJhbWV0ZXJz
LmNsaWVudElkZW50aWZpZXIgPSBjb21tYW5kTGluZVsiY2xpZW50LWlkZW50aWZpZXIiXTsKKyAg
ICAgICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IENvcmVJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIoc2VydmVyUG9ydCk7CisgICAgICAgIFBsdWdpblByb2Nlc3M6OnNoYXJl
ZCgpLmluaXRpYWxpemUocGFyYW1ldGVycyk7CiAKICAgICAgICAgW05TQXBwbGljYXRpb24gc2hh
cmVkQXBwbGljYXRpb25dOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc01haW5RdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NNYWluUXQuY3BwCmluZGV4IDEzZWM0MmQxZmVmNjJi
NzZjYmY2M2JjZDY5YTkyMTFmNzY4NTAyODMuLjNjYjhlZTc3NTQ5ODVjMGQzMmJlNTI3OTNhZjdi
YzQ5MzhiNDcxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvcXQv
UGx1Z2luUHJvY2Vzc01haW5RdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9xdC9QbHVnaW5Qcm9jZXNzTWFpblF0LmNwcApAQCAtMTAxLDcgKzEwMSwxMSBAQCBRX0RFQ0xf
RVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAg
aW50IGlkZW50aWZpZXIgPSBhcHAuYXJndW1lbnRzKCkuYXQoMSkudG9JbnQoJmlzTnVtYmVyLCAx
MCk7CiAgICAgaWYgKCFpc051bWJlcikKICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSAg
ICBXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVDb25uZWN0aW9uKGlk
ZW50aWZpZXIpOworCisgICAgV2ViS2l0OjpDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMgcGFyYW1ldGVyczsKKyAgICBwYXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0g
aWRlbnRpZmllcjsKKworICAgIFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlh
bGl6ZShwYXJhbWV0ZXJzKTsKIAogICAgIFJ1bkxvb3A6OnJ1bigpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NRdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0L1BsdWdpblByb2Nlc3NRdC5jcHAKaW5kZXggNjlm
ODQwMjVmMmY4YzYyNTAzMDAwMDliZGMxYWNiMDI4YjY4NDYwYy4uYTQwNjBiNjdhN2RkYzlmYjYx
OWU3M2Q2MWY4ZDNkYWIxNmNiYTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy9xdC9QbHVnaW5Qcm9jZXNzUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvcXQvUGx1Z2luUHJvY2Vzc1F0LmNwcApAQCAtMzQsNyArMzQsMTEgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
KGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit2b2lk
IFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7Cit9CisKK3ZvaWQgUGx1Z2lu
UHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vzcyhjb25zdCBQbHVnaW5Qcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1
Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5p
eC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCmluZGV4IDgyYzhiZGFjNGVkN2MwZDdmYTBlMTcx
MmYyN2QxYjhiNDNmZDdjMjguLjNjNTk1ZjljYjhmNWY0OWM5NDI3N2RkY2EwYmMxZjRlMGI4MTQ1
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Q
cm9jZXNzTWFpblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5p
eC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCkBAIC0xMDYsNyArMTA2LDEyIEBAIFdLX0VYUE9S
VCBpbnQgUGx1Z2luUHJvY2Vzc01haW5Vbml4KGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAjZW5k
aWYKIAogICAgIGludCBzb2NrZXQgPSBhdG9pKGFyZ3ZbMV0pOwotICAgIFdlYktpdDo6UGx1Z2lu
UHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZUNvbm5lY3Rpb24oc29ja2V0KTsKKworICAgIFdl
YktpdDo6Q2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Cisg
ICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHNvY2tldDsKKworICAgIFdlYktp
dDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKKwogICAg
IFJ1bkxvb3A6OnJ1bigpOwogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwIGIvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcAppbmRleCA1MGRh
YTAyYWFiY2NlYTc3Mjg3OTg1OGJmNjNkNWMzYjFkN2YwYjM4Li4zMDJlNjE4ZTYyYjdiMzI0ZTZi
OTRhMjhhMGU4YjYyNjUyYjg1NGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzVW5peC5jcHAKQEAgLTMzLDcgKzMzLDExIEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5p
dGlhbGl6ZShjb25zdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3ZvaWQgUGx1
Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKK30KKwordm9pZCBQbHVnaW5Qcm9j
ZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCmluZGV4IDg2ZDZiM2Q4OTM1NDk5NzkxMTRiOTRj
YTYxY2ZmMGVlMTlhMTk1NGIuLmE0NDBhMWVkNzAyOWJjNjU3NDk1YTA4YjRjNDg5NWY1NDFkMTI1
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCkBAIC00MSwxNCArNDEs
NDkgQEAgQ2hpbGRQcm9jZXNzOjpDaGlsZFByb2Nlc3MoKQogewogICAgIC8vIEZJWE1FOiBUaGUg
dGVybWluYXRpb24gdGltZXIgc2hvdWxkIG5vdCBiZSBzY2hlZHVsZWQgb24gdGhlIG1haW4gcnVu
IGxvb3AuCiAgICAgLy8gSXQgd29uJ3Qgd29yayB3aXRoIHRoZSB0aHJlYWRlZCBtb2RlLCBidXQg
aXQncyBub3QgcmVhbGx5IHVzZWZ1bCBhbnl3YXkgYXMgaXMuCi0gICAgCi0gICAgcGxhdGZvcm1J
bml0aWFsaXplKCk7CiB9CiAKIENoaWxkUHJvY2Vzczo6fkNoaWxkUHJvY2VzcygpCiB7CiB9CiAK
K05PX1JFVFVSTiBzdGF0aWMgdm9pZCB3YXRjaGRvZ0NhbGxiYWNrKCkKK3sKKyAgICAvLyBXZSB1
c2UgX2V4aXQgaGVyZSBzaW5jZSB0aGUgd2F0Y2hkb2cgY2FsbGJhY2sgaXMgY2FsbGVkIGZyb20g
YW5vdGhlciB0aHJlYWQgYW5kIHdlIGRvbid0IHdhbnQgCisgICAgLy8gZ2xvYmFsIGRlc3RydWN0
b3JzIG9yIGF0ZXhpdCBoYW5kbGVycyB0byBiZSBjYWxsZWQgZnJvbSB0aGlzIHRocmVhZCB3aGls
ZSB0aGUgbWFpbiB0aHJlYWQgaXMgYnVzeQorICAgIC8vIGRvaW5nIGl0cyB0aGluZy4KKyAgICBf
ZXhpdChFWElUX0ZBSUxVUkUpOworfQorCitzdGF0aWMgdm9pZCBkaWRDbG9zZU9uQ29ubmVjdGlv
bldvcmtRdWV1ZShXb3JrUXVldWUmIHdvcmtRdWV1ZSwgQ29yZUlQQzo6Q29ubmVjdGlvbiopCit7
CisgICAgLy8gSWYgdGhlIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIGFuZCB3ZSBoYXZlbid0
IHJlc3BvbmRlZCBpbiB0aGUgbWFpbiB0aHJlYWQgZm9yIDEwIHNlY29uZHMKKyAgICAvLyB0aGUg
cHJvY2VzcyB3aWxsIGV4aXQgZm9yY2libHkuCisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB3YXRj
aGRvZ0RlbGF5ID0gMTAuMDsKKworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaEFmdGVyRGVsYXkoYmlu
ZChzdGF0aWNfY2FzdDx2b2lkKCopKCk+KHdhdGNoZG9nQ2FsbGJhY2spKSwgd2F0Y2hkb2dEZWxh
eSk7Cit9CisKK3ZvaWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplKGNvbnN0IENoaWxkUHJvY2Vz
c0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBwbGF0Zm9ybUlu
aXRpYWxpemUoKTsKKworICAgIGluaXRpYWxpemVTYW5kYm94KHBhcmFtZXRlcnMuY2xpZW50SWRl
bnRpZmllcik7CisgICAgCisgICAgbV9jb25uZWN0aW9uID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6
Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihwYXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyLCB0
aGlzLCBSdW5Mb29wOjptYWluKCkpOworICAgIG1fY29ubmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNv
bm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhkaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSk7
CisgICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb24obV9jb25uZWN0aW9uLmdldCgpKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPm9wZW4oKTsKK30KKwordm9pZCBDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVDb25u
ZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb24qKQoreworfQorCit2b2lkIENoaWxkUHJvY2Vzczo6
aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBjbGllbnRJZGVudGlmaWVyKQoreworfQor
CiB2b2lkIENoaWxkUHJvY2Vzczo6YWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIqIG1l
c3NhZ2VSZWNlaXZlcikKIHsKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVj
ZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZVJlY2VpdmVyKTsKQEAgLTk2LDI0ICsx
MzEsMTAgQEAgdm9pZCBDaGlsZFByb2Nlc3M6OnRlcm1pbmF0aW9uVGltZXJGaXJlZCgpCiAKIHZv
aWQgQ2hpbGRQcm9jZXNzOjp0ZXJtaW5hdGUoKQogewotICAgIFJ1bkxvb3A6Om1haW4oKS0+c3Rv
cCgpOwotfQorICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0ZSgpOworICAgIG1fY29ubmVjdGlv
biA9IG51bGxwdHI7CiAKLU5PX1JFVFVSTiBzdGF0aWMgdm9pZCB3YXRjaGRvZ0NhbGxiYWNrKCkK
LXsKLSAgICAvLyBXZSB1c2UgX2V4aXQgaGVyZSBzaW5jZSB0aGUgd2F0Y2hkb2cgY2FsbGJhY2sg
aXMgY2FsbGVkIGZyb20gYW5vdGhlciB0aHJlYWQgYW5kIHdlIGRvbid0IHdhbnQgCi0gICAgLy8g
Z2xvYmFsIGRlc3RydWN0b3JzIG9yIGF0ZXhpdCBoYW5kbGVycyB0byBiZSBjYWxsZWQgZnJvbSB0
aGlzIHRocmVhZCB3aGlsZSB0aGUgbWFpbiB0aHJlYWQgaXMgYnVzeQotICAgIC8vIGRvaW5nIGl0
cyB0aGluZy4KLSAgICBfZXhpdChFWElUX0ZBSUxVUkUpOwotfQotCi12b2lkIENoaWxkUHJvY2Vz
czo6ZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoV29ya1F1ZXVlJiB3b3JrUXVldWUsIENv
cmVJUEM6OkNvbm5lY3Rpb24qKQotewotICAgIC8vIElmIHRoZSBjb25uZWN0aW9uIGhhcyBiZWVu
IGNsb3NlZCBhbmQgd2UgaGF2ZW4ndCByZXNwb25kZWQgaW4gdGhlIG1haW4gdGhyZWFkIGZvciAx
MCBzZWNvbmRzCi0gICAgLy8gdGhlIHByb2Nlc3Mgd2lsbCBleGl0IGZvcmNpYmx5LgotICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgd2F0Y2hkb2dEZWxheSA9IDEwLjA7Ci0KLSAgICB3b3JrUXVldWUu
ZGlzcGF0Y2hBZnRlckRlbGF5KGJpbmQoc3RhdGljX2Nhc3Q8dm9pZCgqKSgpPih3YXRjaGRvZ0Nh
bGxiYWNrKSksIHdhdGNoZG9nRGVsYXkpOworICAgIFJ1bkxvb3A6Om1haW4oKS0+c3RvcCgpOwog
fQogCiAjaWYgIVBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9DaGlsZFByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuaApp
bmRleCBkYzUwNGMzZmVkNTY0ZjQ0YTY1YWMzYTliMzQ2MDkxNjE1ZWVjOGU3Li4zODQ5Y2QzNzU2
MGRmMmRkNmJhYjg2NmM1MjExNzYxNWIzNDc4MWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxk
UHJvY2Vzcy5oCkBAIC0zMSwxNyArMzEsMjIgQEAKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgotCi0jaWYgUExBVEZPUk0oTUFDKQotT0JKQ19DTEFTUyBOU1N0cmluZzsKLSNlbmRpZgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3Ry
dWN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyB7CisgICAgU3RyaW5nIHVp
UHJvY2Vzc05hbWU7CisgICAgU3RyaW5nIGNsaWVudElkZW50aWZpZXI7CisgICAgQ29yZUlQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcjsKK307CisKIGNsYXNz
IENoaWxkUHJvY2VzcyA6IHByb3RlY3RlZCBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIHB1
YmxpYyBDb3JlSVBDOjpNZXNzYWdlU2VuZGVyPENoaWxkUHJvY2Vzcz4gewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENoaWxkUHJvY2Vzcyk7CiAKIHB1YmxpYzoKKyAgICB2b2lkIGluaXRpYWxp
emUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7CisKICAgICAv
LyBkaXNhYmxlIGFuZCBlbmFibGUgdGVybWluYXRpb24gb2YgdGhlIHByb2Nlc3MuIHdoZW4gZGlz
YWJsZVRlcm1pbmF0aW9uIGlzIGNhbGxlZCwgdGhlCiAgICAgLy8gcHJvY2VzcyB3b24ndCB0ZXJt
aW5hdGUgdW5sZXNzIGEgY29ycmVzcG9uZGluZyBkaXNhYmxlVGVybWluYXRpb24gY2FsbCBpcyBt
YWRlLgogICAgIHZvaWQgZGlzYWJsZVRlcm1pbmF0aW9uKCk7CkBAIC03MywxMSArNzgsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc09jY2x1ZGVkKGJvb2wpOwogI2VuZGlm
CiAKLSAgICBzdGF0aWMgdm9pZCBkaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZShXb3JrUXVl
dWUmLCBDb3JlSVBDOjpDb25uZWN0aW9uKik7Ci0KICAgICAvLyBVc2VkIGJ5IENvcmVJUEM6Ok1l
c3NhZ2VTZW5kZXIKLSAgICB2aXJ0dWFsIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24o
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3Qg
PSAwOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KKyAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29u
c3QgeyByZXR1cm4gMDsgfQorCisgICAgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNz
YWdlUmVjZWl2ZXJNYXAoKSB7IHJldHVybiBtX21lc3NhZ2VSZWNlaXZlck1hcDsgfQogCiBwcm90
ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2hpbGRQcm9jZXNzKCk7CkBAIC04NSwxNSArOTAsMTUgQEAg
cHJvdGVjdGVkOgogCiAgICAgdm9pZCBzZXRUZXJtaW5hdGlvblRpbWVvdXQoZG91YmxlIHNlY29u
ZHMpIHsgbV90ZXJtaW5hdGlvblRpbWVvdXQgPSBzZWNvbmRzOyB9CiAKLSAgICBDb3JlSVBDOjpN
ZXNzYWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7Ci0KLXByaXZhdGU6Ci0gICAg
dm9pZCB0ZXJtaW5hdGlvblRpbWVyRmlyZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6
ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbiopOworICAgIHZpcnR1YWwgdm9pZCBpbml0
aWFsaXplU2FuZGJveChjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIpOworICAgIHZpcnR1
YWwgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRU
ZXJtaW5hdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZSgpOwogCi0gICAgdm9p
ZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKK3ByaXZhdGU6CisgICAgdm9pZCB0ZXJtaW5hdGlvblRp
bWVyRmlyZWQoKTsKIAogICAgIC8vIFRoZSB0aW1lb3V0LCBpbiBzZWNvbmRzLCBiZWZvcmUgdGhp
cyBwcm9jZXNzIHdpbGwgYmUgdGVybWluYXRlZCBpZiB0ZXJtaW5hdGlvbgogICAgIC8vIGhhcyBi
ZWVuIGVuYWJsZWQuIElmIHRoZSB0aW1lb3V0IGlzIDAgc2Vjb25kcywgdGhlIHByb2Nlc3Mgd2ls
bCBiZSB0ZXJtaW5hdGVkIGltbWVkaWF0ZWx5LgpAQCAtMTA1LDYgKzExMCw5IEBAIHByaXZhdGU6
CiAKICAgICBXZWJDb3JlOjpSdW5Mb29wOjpUaW1lcjxDaGlsZFByb2Nlc3M+IG1fdGVybWluYXRp
b25UaW1lcjsKIAorICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247
CisgICAgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOwor
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxpZD4gbV9wcm9jZXNzVmlzaWJsZUFz
c2VydGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2Vy
UHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdv
cmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAKaW5kZXggZWMyNzU3NzJlOTQ1NzM3
NmZiMzkxMDg2OTkyZmZjYTE0YTk1NWJlOS4uNjRkM2Y1OThhNTNhZjk5N2IyZDYxMTg0ZDRmNTFk
MmVjYzhhMjBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vz
cy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3Jr
ZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwCkBAIC03NywxNSArNzcsNiBAQCBTaGFy
ZWRXb3JrZXJQcm9jZXNzOjp+U2hhcmVkV29ya2VyUHJvY2VzcygpCiB7CiB9CiAKLXZvaWQgU2hh
cmVkV29ya2VyUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyKQotewotICAgIEFTU0VSVCghbV9jb25uZWN0
aW9uKTsKLQotICAgIG1fY29ubmVjdGlvbiA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNs
aWVudENvbm5lY3Rpb24oc2VydmVySWRlbnRpZmllciwgdGhpcywgUnVuTG9vcDo6bWFpbigpKTsK
LSAgICBtX2Nvbm5lY3Rpb24tPnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJh
Y2soZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUpOwotICAgIG1fY29ubmVjdGlvbi0+b3Bl
bigpOwotfQotCiB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OnJlbW92ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uKFdlYlByb2Nlc3NDb25uZWN0aW9uKiB3ZWJQcm9jZXNzQ29ubmVjdGlvbikKIHsKICAg
ICBzaXplX3QgdmVjdG9ySW5kZXggPSBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5maW5kKHdlYlBy
b2Nlc3NDb25uZWN0aW9uKTsKQEAgLTEyMyw3ICsxMTQsNyBAQCB2b2lkIFNoYXJlZFdvcmtlclBy
b2Nlc3M6OmluaXRpYWxpemVTaGFyZWRXb3JrZXJQcm9jZXNzKGNvbnN0IFNoYXJlZFdvcmtlclBy
b2NlcwogICAgIHNldE1pbmltdW1MaWZldGltZShwYXJhbWV0ZXJzLm1pbmltdW1MaWZldGltZSk7
CiAgICAgc2V0VGVybWluYXRpb25UaW1lb3V0KHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0
KTsKIAotICAgIHBsYXRmb3JtSW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKKyAgICBwbGF0Zm9ybUlu
aXRpYWxpemVTaGFyZWRXb3JrZXJQcm9jZXNzKHBhcmFtZXRlcnMpOwogfQogCiB2b2lkIFNoYXJl
ZFdvcmtlclByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNz
LmgKaW5kZXggOWYyZjU0OTBkYmY3MjU0YTVjYjhmMzgzYzdhZjQyZjU1NTY1NTc5My4uMjc1NmUz
ZDI2NzRjNzU3ZmEyY2FmNGVhZGVlNmUzM2FlY2ZjMTMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmgKQEAg
LTQxLDEyICs0MSwxMSBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbk1vZHVsZTsKIGNsYXNzIFdlYlBy
b2Nlc3NDb25uZWN0aW9uOwogc3RydWN0IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM7CiAKLWNsYXNzIFNoYXJlZFdvcmtlclByb2Nlc3MgOiBDaGlsZFByb2Nlc3MgeworY2xh
c3MgU2hhcmVkV29ya2VyUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFNoYXJlZFdvcmtlclByb2Nlc3MpOwogcHVibGljOgogICAgIHN0YXRp
YyBTaGFyZWRXb3JrZXJQcm9jZXNzJiBzaGFyZWQoKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZUNv
bm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAgICAgdm9pZCByZW1v
dmVXZWJQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzQ29ubmVjdGlvbiopOwogCiBwcml2YXRl
OgpAQCAtNTQsOSArNTMsNyBAQCBwcml2YXRlOgogICAgIH5TaGFyZWRXb3JrZXJQcm9jZXNzKCk7
CiAKICAgICAvLyBDaGlsZFByb2Nlc3MKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVGVybWluYXRl
KCk7Ci0gICAgdmlydHVhbCBDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9Ci0gICAgdmlydHVhbCB1aW50
NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRUZXJtaW5hdGUoKSBPVkVSUklERTsKIAogICAgIC8vIENvcmVJUEM6
OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdl
RGVjb2RlciYpOwpAQCAtNjgsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6
ZVNoYXJlZFdvcmtlclByb2Nlc3MoY29uc3QgU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYpOwogICAgIHZvaWQgY3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAotICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IFNoYXJlZFdvcmtlclByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVNoYXJlZFdvcmtlclBy
b2Nlc3MoY29uc3QgU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogICAg
IAogICAgIHZvaWQgc2V0TWluaW11bUxpZmV0aW1lKGRvdWJsZSk7CiAgICAgdm9pZCBtaW5pbXVt
TGlmZXRpbWVUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRX
b3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbQppbmRl
eCBjODc1ZmYwMWIxNDdkNDdjMDhhY2ZhNDFjOTdlMDk3YjJkMDEyYzU5Li5jOGQ0N2VhNmM1Y2Mz
MjFmOTIyZTc0ZDI0OTAwYjU1NWJhOWExYTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWRXb3JrZXJQcm9jZXNzL21hYy9TaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NN
YWMubW0KQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goKQog
ICAgIH0KIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUo
Y29uc3QgU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
K3ZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplU2hhcmVkV29ya2Vy
UHJvY2Vzcyhjb25zdCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogewogICAgIE5TU3RyaW5nICphcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCJTaGFyZWQgV2ViIFdvcmtlciAoJUAgSW50ZXJu
ZXQgcGx1Zy1pbikiLAogICAgICAgICAidmlzaWJsZSBuYW1lIG9mIHRoZSBwbHVnLWluIGhvc3Qg
cHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLApAQCAtNjYs
NyArNjYsNyBAQCB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZShj
b25zdCBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYQogICAgIAogICAgIFdLU2V0VmlzaWJs
ZUFwcGxpY2F0aW9uTmFtZSgoQ0ZTdHJpbmdSZWYpYXBwbGljYXRpb25OYW1lKTsKIAotICAgIGlu
aXRpYWxpemVTYW5kYm94KCk7CisgICAgV2ViS2l0Ojppbml0aWFsaXplU2FuZGJveCgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZFdvcmtlclByb2Nlc3MvbWFjL1NoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5N
YWMubW0KaW5kZXggZDNlOTE5MzlhNDE3ZDA2Mjk1ODBiZGNkOWE2MmFiNzEyZjg5NmRkMS4uYzEy
NjdhNTM2YTMyM2NkNjZiODJmYmQ1ZGMxMGI1MTg2ZmEzZjU4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVkV29ya2VyUHJvY2Vzc01haW5N
YWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9tYWMvU2hhcmVk
V29ya2VyUHJvY2Vzc01haW5NYWMubW0KQEAgLTk3LDggKzk3LDExIEBAIGludCBTaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCiAgICAgICAgIFdU
Rjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKICAgICAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1h
aW5SdW5Mb29wKCk7CiAKLSAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIHdvcmtlciBw
cm9jZXNzIGNvbm5lY3Rpb24uCi0gICAgICAgIFNoYXJlZFdvcmtlclByb2Nlc3M6OnNoYXJlZCgp
LmluaXRpYWxpemVDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoc2Vy
dmVyUG9ydCkpOworICAgICAgICBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMg
cGFyYW1ldGVyczsKKyAgICAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NOYW1lID0gY29tbWFuZExp
bmVbInVpLXByb2Nlc3MtbmFtZSJdOworICAgICAgICBwYXJhbWV0ZXJzLmNsaWVudElkZW50aWZp
ZXIgPSBjb21tYW5kTGluZVsiY2xpZW50LWlkZW50aWZpZXIiXTsKKyAgICAgICAgcGFyYW1ldGVy
cy5jb25uZWN0aW9uSWRlbnRpZmllciA9IENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIo
c2VydmVyUG9ydCk7CisgICAgICAgIFNoYXJlZFdvcmtlclByb2Nlc3M6OnNoYXJlZCgpLmluaXRp
YWxpemUocGFyYW1ldGVycyk7CiAKICAgICAgICAgW05TQXBwbGljYXRpb24gc2hhcmVkQXBwbGlj
YXRpb25dOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IDI5MWExYTJhMmQxOGQ2YTM4MGQ1MmExMDJhMDkyNTNhZTVmZDJjOWUuLjcxYjNlZTZhZDFj
ZWMzNTZjNWEzNTQ3ZWNjNDE1OWQ5YzRmODQ4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcApAQCAtMjA0LDE4ICsyMDQsMTEgQEAgV2ViUHJvY2Vzczo6V2ViUHJv
Y2VzcygpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlv
bihDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIHNlcnZlcklkZW50aWZpZXIpCit2b2lk
IFdlYlByb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOwotCi0gICAgbV9jb25uZWN0
aW9uID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihzZXJ2ZXJJ
ZGVudGlmaWVyLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2V0
RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhDaGlsZFByb2Nlc3M6OmRpZENs
b3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNldFNob3VsZEV4
aXRPblN5bmNNZXNzYWdlU2VuZEZhaWx1cmUodHJ1ZSk7Ci0gICAgbV9jb25uZWN0aW9uLT5hZGRR
dWV1ZUNsaWVudCgmbV9ldmVudERpc3BhdGNoZXIpOwotICAgIG1fY29ubmVjdGlvbi0+YWRkUXVl
dWVDbGllbnQodGhpcyk7Ci0gICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7Ci0KLSAgICBtX3dlYkNv
bm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmNyZWF0ZSh0aGlzKTsKKyAgICBj
b25uZWN0aW9uLT5zZXRTaG91bGRFeGl0T25TeW5jTWVzc2FnZVNlbmRGYWlsdXJlKHRydWUpOwor
ICAgIGNvbm5lY3Rpb24tPmFkZFF1ZXVlQ2xpZW50KCZtX2V2ZW50RGlzcGF0Y2hlcik7CisgICAg
Y29ubmVjdGlvbi0+YWRkUXVldWVDbGllbnQodGhpcyk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6
ZGlkQ3JlYXRlRG93bmxvYWQoKQpAQCAtMjMwLDcgKzIyMyw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6
ZGlkRGVzdHJveURvd25sb2FkKCkKIAogQ29yZUlQQzo6Q29ubmVjdGlvbiogV2ViUHJvY2Vzczo6
ZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKQogewotICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0
KCk7CisgICAgcmV0dXJuIGNvbm5lY3Rpb24oKTsKIH0KIAogQXV0aGVudGljYXRpb25NYW5hZ2Vy
JiBXZWJQcm9jZXNzOjpkb3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFnZXIoKQpAQCAtMjYxLDYg
KzI1NCw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1lCiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICBtX3dlYkNvbm5lY3Rpb24gPSBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M6OmNyZWF0ZSh0aGlz
KTsKKwogICAgIFdlYlByb2Nlc3NTdXBwbGVtZW50TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1f
c3VwcGxlbWVudHMuYmVnaW4oKTsKICAgICBXZWJQcm9jZXNzU3VwcGxlbWVudE1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbV9zdXBwbGVtZW50cy5lbmQoKTsKICAgICBmb3IgKDsgaXQgIT0gZW5k
OyArK2l0KQpAQCAtNTcyLDI1ICs1NjcsMjIgQEAgdm9pZCBXZWJQcm9jZXNzOjp0ZXJtaW5hdGUo
KQogICAgIG1lbW9yeUNhY2hlKCktPnNldERpc2FibGVkKHRydWUpOwogI2VuZGlmCiAKLSAgICAv
LyBJbnZhbGlkYXRlIG91ciBjb25uZWN0aW9uLgotICAgIG1fY29ubmVjdGlvbi0+aW52YWxpZGF0
ZSgpOwotICAgIG1fY29ubmVjdGlvbiA9IG51bGxwdHI7Ci0KICAgICBtX3dlYkNvbm5lY3Rpb24t
PmludmFsaWRhdGUoKTsKICAgICBtX3dlYkNvbm5lY3Rpb24gPSBudWxscHRyOwogCiAgICAgcGxh
dGZvcm1UZXJtaW5hdGUoKTsKLSAgICBSdW5Mb29wOjptYWluKCktPnN0b3AoKTsKKworICAgIENo
aWxkUHJvY2Vzczo6dGVybWluYXRlKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1l
c3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBPd25Q
dHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7Ci0gICAgbV9tZXNz
YWdlUmVjZWl2ZXJNYXAuZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQs
IGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0
Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRlY29kZXIsIHJlcGx5RW5jb2Rl
cik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgaWYgKG1fbWVzc2FnZVJlY2VpdmVy
TWFwLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRlY29kZXIpKQorICAg
IGlmIChtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVz
c2FnZUlELCBkZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1lc3NhZ2VJRC5p
czxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJQcm9jZXNzPigpKSB7CkBAIC02NjIsMTAgKzY1NCwx
MCBAQCB2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiAg
ICAgLy8gV2UgY2FuIGVuZCB1cCBoZXJlIGFmdGVyIG91ciBjb25uZWN0aW9uIGhhcyBjbG9zZWQg
d2hlbiBXZWJDb3JlJ3MgZnJhbWUgbGlmZS1zdXBwb3J0IHRpbWVyCiAgICAgLy8gZmlyZXMgd2hl
biB0aGUgYXBwbGljYXRpb24gaXMgc2h1dHRpbmcgZG93bi4gVGhlcmUncyBubyBuZWVkIChhbmQg
bm8gd2F5KSB0byB1cGRhdGUgdGhlIFVJCiAgICAgLy8gcHJvY2VzcyBpbiB0aGlzIGNhc2UuCi0g
ICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisgICAgaWYgKCFjb25uZWN0aW9uKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpEaWREZXN0cm95RnJhbWUoZnJhbWVJRCksIDApOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6RGlkRGVzdHJveUZyYW1lKGZyYW1lSUQpKTsKIH0KIAogV2ViUGFnZUdyb3Vw
UHJveHkqIFdlYlByb2Nlc3M6OndlYlBhZ2VHcm91cCh1aW50NjRfdCBwYWdlR3JvdXBJRCkKQEAg
LTEwNzcsNCArMTA2OSwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZEdldFBsdWdpbnMoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVgogfQogI2VuZGlmIC8v
IEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAorI2lmICFQTEFURk9STShNQUMpCit2b2lkIFdlYlBy
b2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllcikK
K3sKK30KKwordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybWluaXRpYWxpemUoKQoreworfQorI2Vu
ZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKaW5kZXggNTBjOTE2NWM4OGJkZGM3NTdmZTg0ZGMxZmM3N2QxNWM0YzY3MDRkNS4uOGQ2
ZWVmNzVhMDljOTA4OTdhMzU5ZjY1YmEzMTM4Yzg5YWQ2NDZkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTEyMCwxMSArMTIwLDYgQEAgcHVibGljOgogICAgICAg
ICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBuZXcgVCh0aGlzKSk7CiAg
ICAgfQogCi0gICAgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbihDb3JlSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKTsKLQotICAgIHZpcnR1YWwgQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVj
dGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQotICAg
IHZpcnR1YWwgdWludDY0X3QgZGVzdGluYXRpb25JRCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IDA7IH0KLQogICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcyogd2ViQ29ubmVjdGlvblRvVUlQ
cm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25uZWN0aW9uLmdldCgpOyB9CiAKICAgICBX
ZWJQYWdlKiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CkBAIC0xNDEsOSArMTM2LDYg
QEAgcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlKiBpbmplY3RlZEJ1bmRsZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCk7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICB2b2lkIGluaXRpYWxpemVTaGltKCk7Ci0gICAgdm9pZCBpbml0aWFsaXplU2FuZGJveChjb25z
dCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIpOwotCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgIG1hY2hfcG9ydF90IGNvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0OyB9CiAjZW5kaWYKQEAg
LTI4Myw4ICsyNzUsMTEgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgLy8gQ2hpbGRQcm9jZXNz
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1pbmF0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXJtaW5hdGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb24oQ29yZUlQ
Qzo6Q29ubmVjdGlvbiopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplU2Fu
ZGJveChjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkVGVybWluYXRlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZSgp
IE9WRVJSSURFOwogCiAgICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgZnJp
ZW5kIGNsYXNzIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzczsKQEAgLTMwNyw3ICszMDIsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkR2V0UGx1Z2lucyhDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKICNl
bmRpZgogCi0gICAgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAg
ICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4gPiBtX3BhZ2VNYXA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKaW5k
ZXggYTVmYmIzZWUzOWY0OWYyNWU5ZjRhZTJmM2RlZDY5NmEwNjM0ZmM3YS4uNjIyZGU1MWIwYzcx
MTEwY2VhYzkyNmNlMjMxNzM3OGQ4NmQ0MTQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcApAQCAtMTE0LDcgKzExNCwxMiBA
QCBXS19FWFBPUlQgaW50IFdlYlByb2Nlc3NNYWluRWZsKGludCBhcmdjLCBjaGFyKiBhcmd2W10p
CiAgICAgc291cF9jYWNoZV9sb2FkKHNvdXBDYWNoZSk7CiAKICAgICBpbnQgc29ja2V0ID0gYXRv
aShhcmd2WzFdKTsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplQ29ubmVjdGlv
bihzb2NrZXQpOworCisgICAgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBh
cmFtZXRlcnM7CisgICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHNvY2tldDsK
KworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUocGFyYW1ldGVycyk7CisKICAg
ICBSdW5Mb29wOjpydW4oKTsKIAogICAgIHNvdXBfY2FjaGVfZmx1c2goc291cENhY2hlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNw
cAppbmRleCAxZGI4OGE1YjMzMWNhY2Q5NTFjMTQwYzM5MTZiOWM5MGY2OWNiYTNhLi44NGZjODc2
ZjJmZjJlMWY3ZTQ2YjAzNzI2N2YwNTE4OWQ1YjZjMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCkBAIC02Myw3ICs2Mywx
MSBAQCBXS19FWFBPUlQgaW50IFdlYlByb2Nlc3NNYWluR3RrKGludCBhcmdjLCBjaGFyKiBhcmd2
W10pCiAKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKICAgICBpbnQgc29j
a2V0ID0gYXRvaShhcmd2WzFdKTsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXpl
Q29ubmVjdGlvbihzb2NrZXQpOworCisgICAgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJh
bWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9
IHNvY2tldDsKKworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUocGFyYW1ldGVy
cyk7CiAKICAgICAvLyBEZXNwaXRlIHVzaW5nIHN5c3RlbSBDQXMgdG8gdmFsaWRhdGUgY2VydGlm
aWNhdGVzIHdlJ3JlCiAgICAgLy8gYWNjZXB0aW5nIGludmFsaWQgY2VydGlmaWNhdGVzIGJ5IGRl
ZmF1bHQuIE5ldyBBUEkgd2lsbCBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9tYWMvV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaAppbmRleCA5MDBlNjQ4NjZlZTE4
NzEzMjM0MmUyMjNmMDcyN2FhZmEwOTllYTQ3Li5hNjQyNzEwMjJjZDI0Y2ZlYTYxZDMxNDY3ZGFh
MmZiOGY3ZTgxZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9X
ZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L21hYy9XZWJQcm9jZXNzSW5pdGlhbGl6YXRpb24uaApAQCAtMjYsMTkgKzI2LDExIEBACiAjaWZu
ZGVmIFdlYlByb2Nlc3NJbml0aWFsaXphdGlvbl9oCiAjZGVmaW5lIFdlYlByb2Nlc3NJbml0aWFs
aXphdGlvbl9oCiAKLSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1zdHJ1Y3QgV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyB7Ci0gICAg
U3RyaW5nIHVpUHJvY2Vzc05hbWU7Ci0KLSAgICBTdHJpbmcgY2xpZW50SWRlbnRpZmllcjsKLSAg
ICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyOwot
fTsKLQotdm9pZCBpbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzSW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzJik7Cit2b2lkIGluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IENoaWxk
UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vz
c0luaXRpYWxpemF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJv
Y2Vzc0luaXRpYWxpemF0aW9uLm1tCmluZGV4IDY0YjgxZTI3MGIzZThiZDQ3MDRjNzcyOTFmNTVl
MGVjNDcyOGIyNzYuLmNjYTk4MTk4Y2I3OTllYTNmYzliMzM3ZDAzMTViZGFhMjcyZDY0ZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NJbml0aWFs
aXphdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNz
SW5pdGlhbGl6YXRpb24ubW0KQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIGluaXRpYWxpemVXZWJQcm9jZXNzKGNv
bnN0IFdlYlByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit2b2lk
IGluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAg
SW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKQEAgLTUxLDEwICs1MSw3IEBAIHZvaWQgaW5p
dGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKICAgICAgICAgICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFtZSgo
Q0ZTdHJpbmdSZWYpYXBwbGljYXRpb25OYW1lKTsKICAgICAgICAgfQogCi0gICAgICAgIFdlYlBy
b2Nlc3MmIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKTsKLSAgICAgICAgd2ViUHJv
Y2Vzcy5pbml0aWFsaXplU2hpbSgpOwotICAgICAgICB3ZWJQcm9jZXNzLmluaXRpYWxpemVTYW5k
Ym94KHBhcmFtZXRlcnMuY2xpZW50SWRlbnRpZmllcik7Ci0gICAgICAgIHdlYlByb2Nlc3MuaW5p
dGlhbGl6ZUNvbm5lY3Rpb24ocGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAg
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUocGFyYW1ldGVycyk7CiAgICAgICAg
IAogICAgICAgICBXS0FYUmVnaXN0ZXJSZW1vdGVBcHAoKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQppbmRleCA5ZGU2YmY4ZWFhZTkw
NDZkZGM5MjYyMmEyN2MzYjdjZmE3YmRlN2QzLi40ZDRjZmMyZGQ5ZDIxN2U3YTk5ODJlN2FhOTli
ZTBhMjkyNDMyMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9X
ZWJQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlBy
b2Nlc3NNYWMubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycwog
ICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihtZXRob2RUb1BhdGNoLCAoSU1QKU5TQXBwbGlj
YXRpb25BY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
czo6aW5pdGlhbGl6ZVNoaW0oKQordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUo
KQogewogICAgIGluaXRpYWxpemVTZWNJdGVtU2hpbSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01haW5NYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFpbk1hYy5tbQppbmRleCA3MDJjZWEyZDlk
NTY2OWMyZjZlMTRmMDU1MWU5Mzk5NDFkZjE4ZTY3Li5mZGZkOTJmNjI4OTI0NjIxMTAzYTRlMDNj
YmE0ODNhNzkwMGNlZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21h
Yy9XZWJQcm9jZXNzTWFpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21h
Yy9XZWJQcm9jZXNzTWFpbk1hYy5tbQpAQCAtMTc4LDcgKzE3OCw3IEBAIGludCBXZWJQcm9jZXNz
TWFpbihjb25zdCBDb21tYW5kTGluZSYgY29tbWFuZExpbmUpCiAgICAgW1tOU0FwcGxpY2F0aW9u
IHNoYXJlZEFwcGxpY2F0aW9uXSBfaW5zdGFsbEF1dG9yZWxlYXNlUG9vbHNPbkN1cnJlbnRUaHJl
YWRJZk5lY2Vzc2FyeV07CiAjZW5kaWYKIAotICAgIFdlYlByb2Nlc3NJbml0aWFsaXphdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc05hbWUgPSBjb21tYW5k
TGluZVsidWktcHJvY2Vzcy1uYW1lIl07CiAgICAgcGFyYW1ldGVycy5jbGllbnRJZGVudGlmaWVy
ID0gY2xpZW50SWRlbnRpZmllcjsKICAgICBwYXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVy
ID0gc2VydmVyUG9ydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFj
L1dlYlByb2Nlc3NTZXJ2aWNlRW50cnlQb2ludHMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL21hYy9XZWJQcm9jZXNzU2VydmljZUVudHJ5UG9pbnRzLm1tCmluZGV4IDg3NWRkY2E4NWQy
MzdkNzg3MmI1MjdlODU5MDcwY2U3ZWJkZDA2ZTMuLjAxNTgwZDc3OTgxOTIxYzkwNWRhYzFmOTlj
OWQxOGNhNWU4OWI4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFj
L1dlYlByb2Nlc3NTZXJ2aWNlRW50cnlQb2ludHMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1NlcnZpY2VFbnRyeVBvaW50cy5tbQpAQCAtNjAsNyArNjAs
NyBAQCBzdGF0aWMgdm9pZCBXZWJQcm9jZXNzU2VydmljZUV2ZW50SGFuZGxlcih4cGNfY29ubmVj
dGlvbl90IHBlZXIpCiAgICAgICAgICAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdl
KHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlvbihldmVudCksIHJlcGx5KTsKICAg
ICAgICAgICAgICAgICB4cGNfcmVsZWFzZShyZXBseSk7CiAKLSAgICAgICAgICAgICAgICBXZWJQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgICAgICAgICAg
ICAgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAg
ICAgICAgICAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0
X3N0cmluZyhldmVudCwgInVpLXByb2Nlc3MtbmFtZSIpOwogICAgICAgICAgICAgICAgIHBhcmFt
ZXRlcnMuY2xpZW50SWRlbnRpZmllciA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQs
ICJjbGllbnQtaWRlbnRpZmllciIpOwogICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuY29ubmVj
dGlvbklkZW50aWZpZXIgPSB4cGNfZGljdGlvbmFyeV9jb3B5X21hY2hfc2VuZChldmVudCwgInNl
cnZlci1wb3J0Iik7CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgaW5pdGlhbGl6ZVdlYlByb2Nlc3NG
b3JXZWJQcm9jZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50KGNvbnN0IGNoYXIqIGNsCiAg
ICAgLy8gdGhlIFdlYlByb2Nlc3MgZG9uJ3QgdHJ5IHRvIGluc2VydCB0aGUgc2hpbSBhbmQgY3Jh
c2guCiAgICAgV2ViS2l0OjpFbnZpcm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1ZXNFbmRpbmdX
aXRoU3RyaW5nKCJEWUxEX0lOU0VSVF9MSUJSQVJJRVMiLCAiL1dlYlByb2Nlc3NTaGltLmR5bGli
Iik7CiAKLSAgICBXZWJLaXQ6OldlYlByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgcGFy
YW1ldGVyczsKKyAgICBXZWJLaXQ6OkNoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzTmFtZSA9IHVpUHJvY2Vzc05h
bWU7CiAgICAgcGFyYW1ldGVycy5jbGllbnRJZGVudGlmaWVyID0gY2xpZW50SWRlbnRpZmllcjsK
ICAgICBwYXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0gQ29yZUlQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllcihzZXJ2ZXJQb3J0LCBjb25uZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc01haW5RdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NNYWluUXQuY3BwCmluZGV4IDgyNGQyMzdiNTc5
YWFlNGUyYWY4MjI5ZGI1YWU0MWJkZDVjZmYyMWUuLjg3NTYyNWQ0ZjAwYjVlMzIwM2RhMDA1Y2Zm
NmJkYTdkMTkzNmVhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQv
V2ViUHJvY2Vzc01haW5RdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9X
ZWJQcm9jZXNzTWFpblF0LmNwcApAQCAtMTg0LDcgKzE4NCwxMSBAQCBRX0RFQ0xfRVhQT1JUIGlu
dCBXZWJQcm9jZXNzTWFpblF0KFFHdWlBcHBsaWNhdGlvbiogYXBwKQogI2VuZGlmCiAjZW5kaWYK
IAotICAgIFdlYktpdDo6V2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZUNvbm5lY3Rpb24o
aWRlbnRpZmllcik7CisKKyAgICBXZWJLaXQ6OkNoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFy
YW1ldGVycyBwYXJhbWV0ZXJzOworICAgIHBhcmFtZXRlcnMuY29ubmVjdGlvbklkZW50aWZpZXIg
PSBpZGVudGlmaWVyOworCisgICAgV2ViS2l0OjpXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFs
aXplKHBhcmFtZXRlcnMpOwogCiAgICAgUnVuTG9vcDo6cnVuKCk7CiAK
</data>
<flag name="review"
          id="199016"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="199025"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>